Author: dkulp Date: Mon Sep 19 21:32:28 2011 New Revision: 1172849 URL: http://svn.apache.org/viewvc?rev=1172849&view=rev Log: Merged revisions 1161022 via svnmerge from https://svn.apache.org/repos/asf/camel/trunk
........ r1161022 | ningjiang | 2011-08-24 05:03:17 -0400 (Wed, 24 Aug 2011) | 1 line CAMEL-4372 Add FiltersRef option for the Jetty component ........ Added: camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java - copied unchanged from r1161022, camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java camel/branches/camel-2.8.x/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java - copied unchanged from r1161022, camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/CustomFiltersTest.java Modified: camel/branches/camel-2.8.x/ (props changed) camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelMultipartFilter.java camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java Propchange: camel/branches/camel-2.8.x/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelMultipartFilter.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelMultipartFilter.java?rev=1172849&r1=1172848&r2=1172849&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelMultipartFilter.java (original) +++ camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelMultipartFilter.java Mon Sep 19 21:32:28 2011 @@ -24,31 +24,14 @@ import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; - /** - * A multipart filter that processes only initially dispatched requests. - * Re-dispatched requests are ignored. + * Please use the CamelFilterWrapper instead of using this classs */ -class CamelMultipartFilter implements Filter { - private Filter wrapped; - - public CamelMultipartFilter(Filter wrapped) { - this.wrapped = wrapped; - } +@Deprecated +class CamelMultipartFilter extends CamelFilterWrapper { - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - if (request.getAttribute(CamelContinuationServlet.EXCHANGE_ATTRIBUTE_NAME) == null) { - wrapped.doFilter(request, response, chain); - } else { - chain.doFilter(request, response); - } - } - - public void destroy() { - wrapped.destroy(); - } - - public void init(FilterConfig config) throws ServletException { - wrapped.init(config); + public CamelMultipartFilter(Filter wrapped) { + super(wrapped); } + } Modified: camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java?rev=1172849&r1=1172848&r2=1172849&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java (original) +++ camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java Mon Sep 19 21:32:28 2011 @@ -143,6 +143,7 @@ public class JettyHttpComponent extends Boolean enableMultipartFilter = getAndRemoveParameter(parameters, "enableMultipartFilter", Boolean.class, true); Filter multipartFilter = resolveAndRemoveReferenceParameter(parameters, "multipartFilterRef", Filter.class); + List<Filter> filters = resolveAndRemoveReferenceListParameter(parameters, "filtersRef", Filter.class); Long continuationTimeout = getAndRemoveParameter(parameters, "continuationTimeout", Long.class); Boolean useContinuation = getAndRemoveParameter(parameters, "useContinuation", Boolean.class); SSLContextParameters sslContextParameters = resolveAndRemoveReferenceParameter(parameters, "sslContextParametersRef", SSLContextParameters.class); @@ -234,7 +235,6 @@ public class JettyHttpComponent extends if (matchOnUriPrefix != null) { endpoint.setMatchOnUriPrefix(matchOnUriPrefix); } - if (enableJmx != null) { endpoint.setEnableJmx(enableJmx); } else { @@ -248,6 +248,10 @@ public class JettyHttpComponent extends endpoint.setMultipartFilter(multipartFilter); endpoint.setEnableMultipartFilter(true); } + + if (filters != null) { + endpoint.setFilters(filters); + } if (continuationTimeout != null) { endpoint.setContinuationTimeout(continuationTimeout); @@ -316,10 +320,15 @@ public class JettyHttpComponent extends if (endpoint.isEnableMultipartFilter()) { enableMultipartFilter(endpoint, connectorRef.server, connectorKey); } + + if (endpoint.getFilters() != null && endpoint.getFilters().size() > 0) { + setFilters(endpoint, connectorRef.server, connectorKey); + } connectorRef.servlet.connect(consumer); } } + private void enableJmx(Server server) { MBeanContainer containerToRegister = getMbContainer(); if (containerToRegister != null) { @@ -343,6 +352,25 @@ public class JettyHttpComponent extends } } + private void setFilters(JettyHttpEndpoint endpoint, Server server, String connectorKey) { + ServletContextHandler context = (ServletContextHandler) server + .getChildHandlerByClass(ServletContextHandler.class); + List<Filter> filters = endpoint.getFilters(); + for (Filter filter : filters) { + FilterHolder filterHolder = new FilterHolder(); + filterHolder.setFilter(new CamelFilterWrapper(filter)); + String pathSpec = endpoint.getPath(); + if (pathSpec == null || "".equals(pathSpec)) { + pathSpec = "/"; + } + if (endpoint.isMatchOnUriPrefix()) { + pathSpec = pathSpec.endsWith("/") ? pathSpec + "*" : pathSpec + "/*"; + } + context.addFilter(filterHolder, pathSpec, 0); + } + + } + private void enableMultipartFilter(HttpEndpoint endpoint, Server server, String connectorKey) throws Exception { ServletContextHandler context = (ServletContextHandler) server .getChildHandlerByClass(ServletContextHandler.class); @@ -364,7 +392,7 @@ public class JettyHttpComponent extends // if no filter ref was provided, use the default filter filter = new MultiPartFilter(); } - filterHolder.setFilter(new CamelMultipartFilter(filter)); + filterHolder.setFilter(new CamelFilterWrapper(filter)); String pathSpec = endpoint.getPath(); if (pathSpec == null || "".equals(pathSpec)) { pathSpec = "/"; Modified: camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java?rev=1172849&r1=1172848&r2=1172849&view=diff ============================================================================== --- camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java (original) +++ camel/branches/camel-2.8.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpEndpoint.java Mon Sep 19 21:32:28 2011 @@ -44,6 +44,7 @@ public class JettyHttpEndpoint extends H private boolean enableJmx; private boolean enableMultipartFilter; private Filter multipartFilter; + private List<Filter> filters; private Long continuationTimeout; private Boolean useContinuation; private SSLContextParameters sslContextParameters; @@ -137,6 +138,14 @@ public class JettyHttpEndpoint extends H public Filter getMultipartFilter() { return multipartFilter; } + + public void setFilters(List<Filter> filterList) { + this.filters = filterList; + } + + public List<Filter> getFilters() { + return filters; + } public Long getContinuationTimeout() { return continuationTimeout;