http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java deleted file mode 100644 index e5c4be4..0000000 --- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/UrlRewrite.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * 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.camel.component.http4; - -import org.apache.camel.Producer; - -/** - * Allows to plugin custom strategy for rewriting url. - * <p/> - * This allows for example to proxy http services and plugin a url rewrite - * strategy such as the <a href="http://camel.apache.org/urlrewrite">url-rewrite</a> component. - */ -public interface UrlRewrite { - - /** - * Rewrite the url. - * - * @param url the absolute url (eg with scheme://host:port/path?query) - * @param relativeUrl optional relative url, if bridging endpoints, which then would be without the base path from the - * endpoint from the given producer. - * @param producer the producer to use the rewritten url - * @return the rewritten url, or <tt>null</tt> to use the original url - * @throws Exception is thrown if error rewriting the url - */ - String rewrite(String url, String relativeUrl, Producer producer) throws Exception; - -}
http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java deleted file mode 100644 index c85e975..0000000 --- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/CamelFileDataSource.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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.camel.component.http4.helper; - -import java.io.File; - -import javax.activation.FileDataSource; -import javax.activation.FileTypeMap; - -public class CamelFileDataSource extends FileDataSource { - private final String fileName; - private FileTypeMap typeMap; - - public CamelFileDataSource(File file, String fileName) { - super(file); - this.fileName = fileName; - } - - public String getContentType() { - if (typeMap == null) { - return FileTypeMap.getDefaultFileTypeMap().getContentType(fileName); - } else { - return typeMap.getContentType(fileName); - } - } - - public void setFileTypeMap(FileTypeMap map) { - typeMap = map; - } - - public String getName() { - if (fileName != null) { - return fileName; - } else { - return super.getName(); - } - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java deleted file mode 100644 index d1996bc..0000000 --- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpHelper.java +++ /dev/null @@ -1,498 +0,0 @@ -/** - * 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.camel.component.http4.helper; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; - -import org.apache.camel.CamelContext; -import org.apache.camel.Exchange; -import org.apache.camel.Producer; -import org.apache.camel.RuntimeExchangeException; -import org.apache.camel.component.http4.HttpConstants; -import org.apache.camel.component.http4.HttpConverter; -import org.apache.camel.component.http4.HttpEndpoint; -import org.apache.camel.component.http4.HttpMessage; -import org.apache.camel.component.http4.HttpMethods; -import org.apache.camel.component.http4.HttpServletUrlRewrite; -import org.apache.camel.converter.stream.CachedOutputStream; -import org.apache.camel.impl.DefaultCamelContext; -import org.apache.camel.util.CamelObjectInputStream; -import org.apache.camel.util.IOHelper; -import org.apache.camel.util.ObjectHelper; -import org.apache.camel.util.URISupport; -import org.apache.camel.util.UnsafeUriCharactersEncoder; -import org.apache.http.HttpVersion; -import org.apache.http.ProtocolException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public final class HttpHelper { - - private static final Logger LOG = LoggerFactory.getLogger(HttpHelper.class); - - private HttpHelper() { - // Helper class - } - - public static void setCharsetFromContentType(String contentType, Exchange exchange) { - if (contentType != null) { - // find the charset and set it to the Exchange - int index = contentType.indexOf("charset="); - if (index > 0) { - String charset = contentType.substring(index + 8); - exchange.setProperty(Exchange.CHARSET_NAME, IOHelper.normalizeCharset(charset)); - } - } - } - - /** - * Writes the given object as response body to the servlet response - * <p/> - * The content type will be set to {@link HttpConstants#CONTENT_TYPE_JAVA_SERIALIZED_OBJECT} - * - * @param response servlet response - * @param target object to write - * @throws IOException is thrown if error writing - */ - public static void writeObjectToServletResponse(ServletResponse response, Object target) throws IOException { - response.setContentType(HttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT); - writeObjectToStream(response.getOutputStream(), target); - } - - /** - * Writes the given object as response body to the output stream - * - * @param stream output stream - * @param target object to write - * @throws IOException is thrown if error writing - */ - public static void writeObjectToStream(OutputStream stream, Object target) throws IOException { - ObjectOutputStream oos = new ObjectOutputStream(stream); - oos.writeObject(target); - oos.flush(); - IOHelper.close(oos); - } - - /** - * Deserializes the input stream to a Java object - * - * @param is input stream for the Java object - * @return the java object, or <tt>null</tt> if input stream was <tt>null</tt> - * @throws ClassNotFoundException is thrown if class not found - * @throws IOException can be thrown - * @deprecated Camel 3.0 - * Please use the one which has the parameter of camel context - */ - @Deprecated - public static Object deserializeJavaObjectFromStream(InputStream is) throws ClassNotFoundException, IOException { - return deserializeJavaObjectFromStream(is, null); - } - - /** - * Deserializes the input stream to a Java object - * - * @param is input stream for the Java object - * @param context the camel context which could help us to apply the customer classloader - * @return the java object, or <tt>null</tt> if input stream was <tt>null</tt> - * @throws ClassNotFoundException is thrown if class not found - * @throws IOException can be thrown - */ - public static Object deserializeJavaObjectFromStream(InputStream is, CamelContext context) throws ClassNotFoundException, IOException { - if (is == null) { - return null; - } - - Object answer = null; - ObjectInputStream ois = new CamelObjectInputStream(is, context); - try { - answer = ois.readObject(); - } finally { - IOHelper.close(ois); - } - - return answer; - } - - /** - * Reads the request body from the given http servlet request. - * - * @param request http servlet request - * @param exchange the exchange - * @return the request body, can be <tt>null</tt> if no body - * @throws IOException is thrown if error reading request body - */ - public static Object readRequestBodyFromServletRequest(HttpServletRequest request, Exchange exchange) throws IOException { - InputStream is = HttpConverter.toInputStream(request, exchange); - return readRequestBodyFromInputStream(is, exchange); - } - - /** - * Reads the request body from the given input stream. - * - * @param is the input stream - * @param exchange the exchange - * @return the request body, can be <tt>null</tt> if no body - * @throws IOException is thrown if error reading request body - */ - public static Object readRequestBodyFromInputStream(InputStream is, Exchange exchange) throws IOException { - if (is == null) { - return null; - } - - boolean disableStreamCaching = false; - // Just take the consideration of the setting of Camel Context StreamCaching - if (exchange.getContext() instanceof DefaultCamelContext) { - DefaultCamelContext context = (DefaultCamelContext) exchange.getContext(); - disableStreamCaching = !context.isStreamCaching(); - } - if (disableStreamCaching) { - return is; - } else { - CachedOutputStream cos = new CachedOutputStream(exchange); - IOHelper.copyAndCloseInput(is, cos); - return cos.newStreamCache(); - } - } - - /** - * Reads the response body from the given input stream. - * - * @param is the input stream - * @param exchange the exchange - * @return the response body, can be <tt>null</tt> if no body - * @throws IOException is thrown if error reading response body - */ - public static Object readResponseBodyFromInputStream(InputStream is, Exchange exchange) throws IOException { - if (is == null) { - return null; - } - - // convert the input stream to StreamCache if the stream cache is not disabled - if (exchange.getProperty(Exchange.DISABLE_HTTP_STREAM_CACHE, Boolean.FALSE, Boolean.class)) { - return is; - } else { - CachedOutputStream cos = new CachedOutputStream(exchange); - IOHelper.copyAndCloseInput(is, cos); - return cos.newStreamCache(); - } - } - - /** - * Creates the URL to invoke. - * - * @param exchange the exchange - * @param endpoint the endpoint - * @return the URL to invoke - */ - public static String createURL(Exchange exchange, HttpEndpoint endpoint) { - String uri = null; - if (!(endpoint.isBridgeEndpoint())) { - uri = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class); - } - if (uri == null) { - uri = endpoint.getHttpUri().toASCIIString(); - } - - // resolve placeholders in uri - try { - uri = exchange.getContext().resolvePropertyPlaceholders(uri); - } catch (Exception e) { - throw new RuntimeExchangeException("Cannot resolve property placeholders with uri: " + uri, exchange, e); - } - - // append HTTP_PATH to HTTP_URI if it is provided in the header - String path = exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class); - // NOW the HTTP_PATH is just related path, we don't need to trim it - if (path != null) { - if (path.startsWith("/")) { - path = path.substring(1); - } - if (path.length() > 0) { - // make sure that there is exactly one "/" between HTTP_URI and - // HTTP_PATH - if (!uri.endsWith("/")) { - uri = uri + "/"; - } - uri = uri.concat(path); - } - } - - // ensure uri is encoded to be valid - uri = UnsafeUriCharactersEncoder.encodeHttpURI(uri); - - return uri; - } - - /** - * Creates the URI to invoke. - * - * @param exchange the exchange - * @param url the url to invoke - * @param endpoint the endpoint - * @return the URI to invoke - */ - public static URI createURI(Exchange exchange, String url, HttpEndpoint endpoint) throws URISyntaxException { - URI uri = new URI(url); - // is a query string provided in the endpoint URI or in a header (header overrules endpoint) - String queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class); - if (queryString == null) { - queryString = endpoint.getHttpUri().getRawQuery(); - } - // We should user the query string from the HTTP_URI header - if (queryString == null) { - queryString = uri.getQuery(); - } - if (queryString != null) { - // need to encode query string - queryString = UnsafeUriCharactersEncoder.encodeHttpURI(queryString); - uri = URISupport.createURIWithQuery(uri, queryString); - } - return uri; - } - - /** - * Creates the HttpMethod to use to call the remote server, often either its GET or POST. - * - * @param exchange the exchange - * @return the created method - * @throws URISyntaxException - */ - public static HttpMethods createMethod(Exchange exchange, HttpEndpoint endpoint, boolean hasPayload) throws URISyntaxException { - // is a query string provided in the endpoint URI or in a header (header - // overrules endpoint) - String queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class); - // We need also check the HTTP_URI header query part - String uriString = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class); - // resolve placeholders in uriString - try { - uriString = exchange.getContext().resolvePropertyPlaceholders(uriString); - } catch (Exception e) { - throw new RuntimeExchangeException("Cannot resolve property placeholders with uri: " + uriString, exchange, e); - } - if (uriString != null) { - URI uri = new URI(uriString); - queryString = uri.getQuery(); - } - if (queryString == null) { - queryString = endpoint.getHttpUri().getRawQuery(); - } - - // compute what method to use either GET or POST - HttpMethods answer; - HttpMethods m = exchange.getIn().getHeader(Exchange.HTTP_METHOD, HttpMethods.class); - if (m != null) { - // always use what end-user provides in a header - answer = m; - } else if (queryString != null) { - // if a query string is provided then use GET - answer = HttpMethods.GET; - } else { - // fallback to POST if we have payload, otherwise GET - answer = hasPayload ? HttpMethods.POST : HttpMethods.GET; - } - - return answer; - } - - public static HttpVersion parserHttpVersion(String s) throws ProtocolException { - int major; - int minor; - if (s == null) { - throw new IllegalArgumentException("String may not be null"); - } - if (!s.startsWith("HTTP/")) { - throw new ProtocolException("Invalid HTTP version string: " + s); - } - int i1 = "HTTP/".length(); - int i2 = s.indexOf(".", i1); - if (i2 == -1) { - throw new ProtocolException("Invalid HTTP version number: " + s); - } - try { - major = Integer.parseInt(s.substring(i1, i2)); - } catch (NumberFormatException e) { - throw new ProtocolException("Invalid HTTP major version number: " + s); - } - i1 = i2 + 1; - i2 = s.length(); - try { - minor = Integer.parseInt(s.substring(i1, i2)); - } catch (NumberFormatException e) { - throw new ProtocolException("Invalid HTTP minor version number: " + s); - } - return new HttpVersion(major, minor); - } - - public static boolean isSecureConnection(String uri) { - return uri.startsWith("https"); - } - - /** - * Appends the key/value to the headers. - * <p/> - * This implementation supports keys with multiple values. In such situations the value - * will be a {@link java.util.List} that contains the multiple values. - * - * @param headers headers - * @param key the key - * @param value the value - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - public static void appendHeader(Map<String, Object> headers, String key, Object value) { - if (headers.containsKey(key)) { - Object existing = headers.get(key); - List<Object> list; - if (existing instanceof List) { - list = (List) existing; - } else { - list = new ArrayList<Object>(); - list.add(existing); - } - list.add(value); - value = list; - } - - headers.put(key, value); - } - - /** - * Extracts the parameter value. - * <p/> - * This implementation supports HTTP multi value parameters which - * is based on the syntax of <tt>[value1, value2, value3]</tt> by returning - * a {@link List} containing the values. - * <p/> - * If the value is not a HTTP mulit value the value is returned as is. - * - * @param value the parameter value - * @return the extracted parameter value, see more details in javadoc. - */ - public static Object extractHttpParameterValue(String value) { - if (value == null || ObjectHelper.isEmpty(value)) { - return value; - } - - // trim value before checking for multiple parameters - String trimmed = value.trim(); - - if (trimmed.startsWith("[") && trimmed.endsWith("]")) { - // remove the [ ] markers - trimmed = trimmed.substring(1, trimmed.length() - 1); - List<String> list = new ArrayList<String>(); - String[] values = trimmed.split(","); - for (String s : values) { - list.add(s.trim()); - } - return list; - } - - return value; - } - - /** - * Processes any custom {@link org.apache.camel.component.http4.UrlRewrite}. - * - * @param exchange the exchange - * @param url the url - * @param endpoint the http endpoint - * @param producer the producer - * @return the rewritten url, or <tt>null</tt> to use original url - * @throws Exception is thrown if any error during rewriting url - */ - public static String urlRewrite(Exchange exchange, String url, HttpEndpoint endpoint, Producer producer) throws Exception { - String answer = null; - - String relativeUrl; - if (endpoint.getUrlRewrite() != null) { - // we should use the relative path if possible - String baseUrl; - relativeUrl = endpoint.getHttpUri().toASCIIString(); - if (url.startsWith(relativeUrl)) { - baseUrl = url.substring(0, relativeUrl.length()); - relativeUrl = url.substring(relativeUrl.length()); - } else { - baseUrl = null; - relativeUrl = url; - } - // mark it as null if its empty - if (ObjectHelper.isEmpty(relativeUrl)) { - relativeUrl = null; - } - - String newUrl; - if (endpoint.getUrlRewrite() instanceof HttpServletUrlRewrite) { - // its servlet based, so we need the servlet request - HttpServletRequest request = exchange.getIn().getBody(HttpServletRequest.class); - if (request == null) { - HttpMessage msg = exchange.getIn(HttpMessage.class); - if (msg != null) { - request = msg.getRequest(); - } - } - if (request == null) { - throw new IllegalArgumentException("UrlRewrite " + endpoint.getUrlRewrite() + " requires the message body to be a" - + "HttpServletRequest instance, but was: " + ObjectHelper.className(exchange.getIn().getBody())); - } - // we need to adapt the context-path to be the path from the endpoint, if it came from a http based endpoint - // as eg camel-jetty have hardcoded context-path as / for all its servlets/endpoints - // we have the actual context-path stored as a header with the key CamelServletContextPath - String contextPath = exchange.getIn().getHeader("CamelServletContextPath", String.class); - request = new UrlRewriteHttpServletRequestAdapter(request, contextPath); - newUrl = ((HttpServletUrlRewrite) endpoint.getUrlRewrite()).rewrite(url, relativeUrl, producer, request); - } else { - newUrl = endpoint.getUrlRewrite().rewrite(url, relativeUrl, producer); - } - - if (ObjectHelper.isNotEmpty(newUrl) && !newUrl.equals(url)) { - // we got a new url back, that can either be a new absolute url - // or a new relative url - if (newUrl.startsWith("http:") || newUrl.startsWith("https:")) { - answer = newUrl; - } else if (baseUrl != null) { - // avoid double // when adding the urls - if (baseUrl.endsWith("/") && newUrl.startsWith("/")) { - answer = baseUrl + newUrl.substring(1); - } else { - answer = baseUrl + newUrl; - } - } else { - // use the new url as is - answer = newUrl; - } - if (LOG.isDebugEnabled()) { - LOG.debug("Using url rewrite to rewrite from url {} to {} -> {}", - new Object[]{relativeUrl != null ? relativeUrl : url, newUrl, answer}); - } - } - } - - return answer; - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java new file mode 100644 index 0000000..ac37192 --- /dev/null +++ b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java @@ -0,0 +1,82 @@ +/** + * 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.camel.component.http4.helper; + +import java.net.URI; +import java.net.URISyntaxException; + +import org.apache.camel.Exchange; +import org.apache.camel.RuntimeExchangeException; +import org.apache.camel.component.http4.HttpEndpoint; +import org.apache.camel.component.http4.HttpMethods; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class HttpMethodHelper { + + private static final Logger LOG = LoggerFactory.getLogger(HttpMethodHelper.class); + + private HttpMethodHelper() { + // Helper class + } + + /** + * Creates the HttpMethod to use to call the remote server, often either its GET or POST. + * + * @param exchange the exchange + * @return the created method + * @throws URISyntaxException + */ + @Deprecated + public static HttpMethods createMethod(Exchange exchange, HttpEndpoint endpoint, boolean hasPayload) throws URISyntaxException { + // is a query string provided in the endpoint URI or in a header (header + // overrules endpoint) + String queryString = exchange.getIn().getHeader(Exchange.HTTP_QUERY, String.class); + // We need also check the HTTP_URI header query part + String uriString = exchange.getIn().getHeader(Exchange.HTTP_URI, String.class); + // resolve placeholders in uriString + try { + uriString = exchange.getContext().resolvePropertyPlaceholders(uriString); + } catch (Exception e) { + throw new RuntimeExchangeException("Cannot resolve property placeholders with uri: " + uriString, exchange, e); + } + if (uriString != null) { + URI uri = new URI(uriString); + queryString = uri.getQuery(); + } + if (queryString == null) { + queryString = endpoint.getHttpUri().getRawQuery(); + } + + // compute what method to use either GET or POST + HttpMethods answer; + HttpMethods m = exchange.getIn().getHeader(Exchange.HTTP_METHOD, HttpMethods.class); + if (m != null) { + // always use what end-user provides in a header + answer = m; + } else if (queryString != null) { + // if a query string is provided then use GET + answer = HttpMethods.GET; + } else { + // fallback to POST if we have payload, otherwise GET + answer = hasPayload ? HttpMethods.POST : HttpMethods.GET; + } + + return answer; + } + +} http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java b/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java deleted file mode 100644 index e4c5765..0000000 --- a/components/camel-http4/src/main/java/org/apache/camel/component/http4/helper/UrlRewriteHttpServletRequestAdapter.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * 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.camel.component.http4.helper; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; - -/** - * Special adapter when {@link org.apache.camel.component.http4.HttpServletUrlRewrite} is in use, - * and the route started from came-jetty/camel-serlvet. - * <p/> - * This adapter ensures that we can control the context-path returned from the - * {@link javax.servlet.http.HttpServletRequest#getContextPath()} method. - * This allows us to ensure the context-path is based on the endpoint path, as the - * camel-jetty/camel-servlet server implementation uses the root ("/") context-path - * for all the servlets/endpoints. - */ -public final class UrlRewriteHttpServletRequestAdapter extends HttpServletRequestWrapper { - - private final String contextPath; - - /** - * Creates this adapter - * @param delegate the real http servlet request to delegate. - * @param contextPath use to override and return this context-path - */ - public UrlRewriteHttpServletRequestAdapter(HttpServletRequest delegate, String contextPath) { - super(delegate); - this.contextPath = contextPath; - } - - public String getContextPath() { - return contextPath != null ? contextPath : super.getContextPath(); - } - -} http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter index de0d742..bbb63c3 100644 --- a/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter +++ b/components/camel-http4/src/main/resources/META-INF/services/org/apache/camel/TypeConverter @@ -15,5 +15,4 @@ # limitations under the License. # -org.apache.camel.component.http4.HttpConverter org.apache.camel.component.http4.HttpEntityConverter http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java index ef5e3a8..6d52b54 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java @@ -17,6 +17,7 @@ package org.apache.camel.component.http4; import org.apache.camel.Producer; +import org.apache.camel.http.common.UrlRewrite; // START SNIPPET: e1 /** http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java index 7ddf4b1..3af54f7 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java @@ -17,6 +17,8 @@ package org.apache.camel.component.http4; import org.apache.camel.CamelContext; +import org.apache.camel.http.common.DefaultHttpBinding; +import org.apache.camel.http.common.HttpHeaderFilterStrategy; import org.apache.camel.impl.JndiRegistry; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; @@ -57,15 +59,15 @@ public class HttpEndpointOptionsNotChangeComponentTest extends CamelTestSupport public void testDoNotMessWithComponent() throws Exception { // get default HttpEndpoint end = context.getEndpoint("http4://www.google.com", HttpEndpoint.class); - assertIsInstanceOf(MyBinding.class, end.getHttpBinding()); + assertIsInstanceOf(MyBinding.class, end.getBinding()); // use a endpoint specific binding HttpEndpoint end2 = context.getEndpoint("http4://www.google.com?httpBinding=#other", HttpEndpoint.class); - assertIsInstanceOf(MyOtherBinding.class, end2.getHttpBinding()); + assertIsInstanceOf(MyOtherBinding.class, end2.getBinding()); // and the default option has not been messed with HttpEndpoint end3 = context.getEndpoint("http4://www.google.com", HttpEndpoint.class); - assertIsInstanceOf(MyBinding.class, end3.getHttpBinding()); + assertIsInstanceOf(MyBinding.class, end3.getBinding()); // test the headerFilterStrategy HttpEndpoint end4 = context.getEndpoint("http4://www.google.com?headerFilterStrategy=#myStrategy", HttpEndpoint.class); http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java index 0c69b2a..05ca837 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpHeaderFilterStrategyTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.http4; import org.apache.camel.Exchange; +import org.apache.camel.http.common.HttpHeaderFilterStrategy; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultExchange; import org.apache.camel.test.junit4.CamelTestSupport; http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java index ffb8f84..6a40340 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java @@ -21,6 +21,7 @@ import java.io.IOException; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.component.http4.handler.BasicValidationHandler; +import org.apache.camel.http.common.HttpOperationFailedException; import org.apache.http.HttpException; import org.apache.http.HttpRequest; import org.apache.http.HttpResponse; http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java index 8b323b9..c750a4d 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.http4; import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.http.common.DefaultHttpBinding; import org.apache.camel.impl.JndiRegistry; import org.apache.camel.test.junit4.CamelTestSupport; import org.apache.http.impl.client.HttpClientBuilder; @@ -53,8 +54,8 @@ public class HttpReferenceParameterTest extends CamelTestSupport { @Test public void testHttpBindingRef() { - assertSame(testBinding, endpoint1.getHttpBinding()); - assertSame(testBinding, endpoint2.getHttpBinding()); + assertSame(testBinding, endpoint1.getBinding()); + assertSame(testBinding, endpoint2.getBinding()); } @Test http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java index 1ec73f5..00d9530 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java @@ -22,6 +22,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.Processor; import org.apache.camel.component.http4.handler.BasicValidationHandler; +import org.apache.camel.http.common.HttpOperationFailedException; import org.apache.http.HttpStatus; import org.apache.http.impl.bootstrap.HttpServer; import org.apache.http.impl.bootstrap.ServerBootstrap; http://git-wip-us.apache.org/repos/asf/camel/blob/be77f1a0/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java ---------------------------------------------------------------------- diff --git a/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java b/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java index 08d97f4..be9168a 100644 --- a/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java +++ b/components/camel-http4/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java @@ -27,6 +27,7 @@ import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.component.http4.HttpEndpoint; import org.apache.camel.component.http4.HttpMethods; +import org.apache.camel.http.common.HttpHelper; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultExchange; import org.junit.Test; @@ -113,7 +114,7 @@ public class HttpHelperTest { @Test public void createMethodAlwaysUseUserChoosenMethod() throws URISyntaxException { - HttpMethods method = HttpHelper.createMethod( + HttpMethods method = HttpMethodHelper.createMethod( createExchangeWithOptionalHttpQueryAndHttpMethodHeader("q=camel", HttpMethods.POST), createHttpEndpoint(true, "http://www.google.com/search"), false); @@ -123,7 +124,7 @@ public class HttpHelperTest { @Test public void createMethodUseGETIfQueryIsProvidedInHeader() throws URISyntaxException { - HttpMethods method = HttpHelper.createMethod( + HttpMethods method = HttpMethodHelper.createMethod( createExchangeWithOptionalHttpQueryAndHttpMethodHeader("q=camel", null), createHttpEndpoint(true, "http://www.google.com/search"), false); @@ -133,7 +134,7 @@ public class HttpHelperTest { @Test public void createMethodUseGETIfQueryIsProvidedInEndpointURI() throws URISyntaxException { - HttpMethods method = HttpHelper.createMethod( + HttpMethods method = HttpMethodHelper.createMethod( createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, null), createHttpEndpoint(true, "http://www.google.com/search?q=test"), false); @@ -143,7 +144,7 @@ public class HttpHelperTest { @Test public void createMethodUseGETIfNoneQueryOrPayloadIsProvided() throws URISyntaxException { - HttpMethods method = HttpHelper.createMethod( + HttpMethods method = HttpMethodHelper.createMethod( createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, null), createHttpEndpoint(true, "http://www.google.com/search"), false); @@ -153,7 +154,7 @@ public class HttpHelperTest { @Test public void createMethodUsePOSTIfNoneQueryButPayloadIsProvided() throws URISyntaxException { - HttpMethods method = HttpHelper.createMethod( + HttpMethods method = HttpMethodHelper.createMethod( createExchangeWithOptionalHttpQueryAndHttpMethodHeader(null, null), createHttpEndpoint(true, "http://www.google.com/search"), true);