|
Apache CXF example source code file (RequestPreprocessor.java)
The Apache CXF RequestPreprocessor.java source code/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.cxf.jaxrs.impl; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; import org.apache.cxf.jaxrs.ext.RequestHandler; import org.apache.cxf.jaxrs.ext.codegen.CodeGeneratorProvider; import org.apache.cxf.jaxrs.model.ProviderInfo; import org.apache.cxf.jaxrs.model.wadl.WadlGenerator; import org.apache.cxf.jaxrs.provider.ProviderFactory; import org.apache.cxf.jaxrs.utils.HttpUtils; import org.apache.cxf.jaxrs.utils.InjectionUtils; import org.apache.cxf.message.Message; public class RequestPreprocessor { private static final String ACCEPT_QUERY = "_type"; private static final String METHOD_QUERY = "_method"; private static final String METHOD_HEADER = "X-HTTP-Method-Override"; private static final Map<String, String> SHORTCUTS; static { SHORTCUTS = new HashMap<String, String>(); SHORTCUTS.put("json", "application/json"); SHORTCUTS.put("text", "text/*"); SHORTCUTS.put("xml", "application/xml"); SHORTCUTS.put("atom", "application/atom+xml"); // more to come } private Map<Object, Object> languageMappings; private Map<Object, Object> extensionMappings; public RequestPreprocessor() { this(null, null); } public RequestPreprocessor(Map<Object, Object> languageMappings, Map<Object, Object> extensionMappings) { this.languageMappings = languageMappings == null ? Collections.emptyMap() : languageMappings; this.extensionMappings = extensionMappings == null ? Collections.emptyMap() : extensionMappings; } public String preprocess(Message m, UriInfo u) { handleExtensionMappings(m, u); handleLanguageMappings(m, u); MultivaluedMap<String, String> queries = u.getQueryParameters(); handleTypeQuery(m, queries); handleMethod(m, queries, new HttpHeadersImpl(m)); Response r = checkMetadataRequest(m); if (r == null) { r = checkCodeRequest(m); } if (r != null) { m.getExchange().put(Response.class, r); } return new UriInfoImpl(m, null).getPath(); } private void handleLanguageMappings(Message m, UriInfo uriInfo) { String path = uriInfo.getPath(false); for (Map.Entry<?, ?> entry : languageMappings.entrySet()) { if (path.endsWith("." + entry.getKey())) { updateAcceptLanguageHeader(m, entry.getValue().toString()); updatePath(m, path, entry.getKey().toString()); break; } } } private void handleExtensionMappings(Message m, UriInfo uriInfo) { String path = uriInfo.getPath(false); for (Map.Entry<?, ?> entry : extensionMappings.entrySet()) { if (path.endsWith("." + entry.getKey().toString())) { updateAcceptTypeHeader(m, entry.getValue().toString()); updatePath(m, path, entry.getKey().toString()); break; } } } @SuppressWarnings("unchecked") private void updateAcceptLanguageHeader(Message m, String anotherValue) { List<String> acceptLanguage = ((Map<String, List Other Apache CXF examples (source code examples)Here is a short list of links related to this Apache CXF RequestPreprocessor.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.