Author: dkulp
Date: Fri Apr 27 19:48:27 2012
New Revision: 1331557
URL: http://svn.apache.org/viewvc?rev=1331557&view=rev
Log:
Merged revisions 1331542 via svnmerge from
https://svn.apache.org/repos/asf/camel/trunk
........
r1331542 | dkulp | 2012-04-27 15:02:33 -0400 (Fri, 27 Apr 2012) | 3 lines
[CAMEL-5016, CAMEL-5228, CAMEL-5227] Update Jetty to use reflection
where needed to allow it to run with Jetty 7.5, 7.6, and 8.1.
Update OSGi version range to match.
........
Modified:
camel/branches/camel-2.9.x/ (props changed)
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
camel/branches/camel-2.9.x/parent/pom.xml
Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Merged /camel/trunk:r1331542
Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java?rev=1331557&r1=1331556&r2=1331557&view=diff
==============================================================================
---
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java
(original)
+++
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelFilterWrapper.java
Fri Apr 27 19:48:27 2012
@@ -16,6 +16,7 @@
*/
package org.apache.camel.component.jetty;
+import java.io.File;
import java.io.IOException;
import javax.servlet.Filter;
@@ -51,6 +52,20 @@ public class CamelFilterWrapper implemen
}
public void init(FilterConfig config) throws ServletException {
+ Object o =
config.getServletContext().getAttribute("javax.servlet.context.tempdir");
+ if (o == null) {
+ //when run in embedded mode, Jetty 8 will forget to set this
property,
+ //but the MultiPartFilter requires it (will NPE if not set) so
we'll
+ //go ahead and set it to the default tmp dir on the system.
+ try {
+ File file = File.createTempFile("camel", "");
+ file.delete();
+
config.getServletContext().setAttribute("javax.servlet.context.tempdir",
+ file.getParentFile());
+ } catch (IOException e) {
+ //ignore
+ }
+ }
wrapped.init(config);
}
Modified:
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
URL:
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java?rev=1331557&r1=1331556&r2=1331557&view=diff
==============================================================================
---
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
(original)
+++
camel/branches/camel-2.9.x/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/JettyHttpComponent.java
Fri Apr 27 19:48:27 2012
@@ -17,6 +17,7 @@
package org.apache.camel.component.jetty;
import java.io.File;
+import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URI;
@@ -370,11 +371,15 @@ public class JettyHttpComponent extends
if (endpoint.isMatchOnUriPrefix()) {
pathSpec = pathSpec.endsWith("/") ? pathSpec + "*" : pathSpec
+ "/*";
}
- context.addFilter(filterHolder, pathSpec, 0);
+ addFilter(context, filterHolder, pathSpec);
}
}
+ private void addFilter(ServletContextHandler context, FilterHolder
filterHolder, String pathSpec) {
+ context.getServletHandler().addFilterWithMapping(filterHolder,
pathSpec, 0);
+ }
+
private void enableMultipartFilter(HttpEndpoint endpoint, Server server,
String connectorKey) throws Exception {
ServletContextHandler context = (ServletContextHandler) server
.getChildHandlerByClass(ServletContextHandler.class);
@@ -404,7 +409,7 @@ public class JettyHttpComponent extends
if (endpoint.isMatchOnUriPrefix()) {
pathSpec = pathSpec.endsWith("/") ? pathSpec + "*" : pathSpec +
"/*";
}
- context.addFilter(filterHolder, pathSpec, 0);
+ addFilter(context, filterHolder, pathSpec);
LOG.debug("using multipart filter implementation " +
filter.getClass().getName() + " for path " + pathSpec);
}
@@ -490,12 +495,7 @@ public class JettyHttpComponent extends
if (endpointSslContextParameters != null) {
SslContextFactory contextFact = new SslContextFactory() {
- /**
- * We are going to provide the context so none of the
configuration options
- * matter in the factory. This method does not account for
this scenario so
- * we short-circuit it here to just let things go when the
context is already
- * provided.
- */
+
// This method is for Jetty 7.0.x ~ 7.4.x
@SuppressWarnings("unused")
public boolean checkConfig() {
@@ -512,7 +512,12 @@ public class JettyHttpComponent extends
};
contextFact.setSslContext(endpointSslContextParameters.createSSLContext());
- answer = new SslSelectChannelConnector(contextFact);
+ for (Constructor<?> c :
SslSelectChannelConnector.class.getConstructors()) {
+ if (c.getParameterTypes().length == 1
+ && c.getParameterTypes()[0].isInstance(contextFact)) {
+ answer =
(SslSelectChannelConnector)c.newInstance(contextFact);
+ }
+ }
} else {
answer = new SslSelectChannelConnector();
// with default null values, jetty ssl system properties
@@ -520,23 +525,23 @@ public class JettyHttpComponent extends
String keystoreProperty = System.getProperty(JETTY_SSL_KEYSTORE);
if (keystoreProperty != null) {
-
answer.getSslContextFactory().setKeyStorePath(keystoreProperty);
+ setKeyStorePath(answer, keystoreProperty);
} else if (sslKeystore != null) {
- answer.getSslContextFactory().setKeyStorePath(sslKeystore);
+ setKeyStorePath(answer, sslKeystore);
}
String keystorePassword =
System.getProperty(JETTY_SSL_KEYPASSWORD);
if (keystorePassword != null) {
-
answer.getSslContextFactory().setKeyManagerPassword(keystorePassword);
+ setKeyManagerPassword(answer, keystorePassword);
} else if (sslKeyPassword != null) {
-
answer.getSslContextFactory().setKeyManagerPassword(sslKeyPassword);
+ setKeyManagerPassword(answer, sslKeyPassword);
}
String password = System.getProperty(JETTY_SSL_PASSWORD);
if (password != null) {
- answer.getSslContextFactory().setKeyStorePassword(password);
+ setKeyStorePassword(answer, password);
} else if (sslPassword != null) {
- answer.getSslContextFactory().setKeyStorePassword(sslPassword);
+ setKeyStorePassword(answer, sslPassword);
}
}
@@ -561,9 +566,30 @@ public class JettyHttpComponent extends
return answer;
}
- protected boolean checkSSLContextFactoryConfig(SslContextFactory instance)
{
+ private void invokeSslContextFactoryMethod(Object connector, String
method, String value) {
+ try {
+ Object factory =
connector.getClass().getMethod("getSslContextFactory").invoke(connector);
+ factory.getClass().getMethod(method, String.class).invoke(factory,
value);
+ } catch (Exception e) {
+ LOG.info("Problem setting " + method, e);
+ }
+ }
+
+ private void setKeyStorePassword(SslSelectChannelConnector answer, String
password) {
+ invokeSslContextFactoryMethod(answer, "setKeyStorePassword", password);
+ }
+
+ private void setKeyManagerPassword(SslSelectChannelConnector answer,
String keystorePassword) {
+ invokeSslContextFactoryMethod(answer, "setKeyManagerPassword",
keystorePassword);
+ }
+
+ private void setKeyStorePath(SslSelectChannelConnector answer, String
keystoreProperty) {
+ invokeSslContextFactoryMethod(answer, "setKeyStorePath",
keystoreProperty);
+ }
+
+ protected boolean checkSSLContextFactoryConfig(Object instance) {
try {
- Method method = SslContextFactory.class.getMethod("checkConfig");
+ Method method = instance.getClass().getMethod("checkConfig");
return (Boolean)method.invoke(instance);
} catch (NoSuchMethodException ex) {
// ignore
Modified: camel/branches/camel-2.9.x/parent/pom.xml
URL:
http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/parent/pom.xml?rev=1331557&r1=1331556&r2=1331557&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/parent/pom.xml (original)
+++ camel/branches/camel-2.9.x/parent/pom.xml Fri Apr 27 19:48:27 2012
@@ -183,7 +183,7 @@
org.apache.commons.httpclient.*;version="[3.1,4.0)",
org.apache.velocity.*;version="[1.6.2,2)",
org.apache.xmlbeans.*;version="[2.4,3)",
- org.eclipse.jetty.*;version="[7.0,8)",
+ org.eclipse.jetty.*;version="[7.4,8.2)",
com.thoughtworks.xstream.*;version="[1.3,2)",
org.antlr.stringtemplate.*;version="[3.0,4)",
org.jivesoftware.smack.*;version="[3.0,4)",