Author: raulk
Date: Sun Oct 21 22:28:25 2012
New Revision: 1400734
URL: http://svn.apache.org/viewvc?rev=1400734&view=rev
Log:
CAMEL-5722 Now also correcting the TCCL on Jetty consumers with disabled
continuations
Modified:
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jetty/OSGiJettyCamelContextsClassloaderTest.java
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext1.xml
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext2.xml
Modified:
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java?rev=1400734&r1=1400733&r2=1400734&view=diff
==============================================================================
---
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
(original)
+++
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
Sun Oct 21 22:28:25 2012
@@ -93,6 +93,9 @@ public class CamelServlet extends HttpSe
exchange.setProperty(Exchange.DISABLE_HTTP_STREAM_CACHE,
Boolean.TRUE);
}
+ // we override the classloader before building the HttpMessage just in
case the binding
+ // does some class resolution
+ ClassLoader oldTccl = overrideTccl(exchange);
HttpHelper.setCharsetFromContentType(request.getContentType(),
exchange);
exchange.setIn(new HttpMessage(exchange, request, response));
@@ -115,6 +118,8 @@ public class CamelServlet extends HttpSe
} catch (Exception e) {
log.error("Error processing request", e);
throw new ServletException(e);
+ } finally {
+ restoreTccl(exchange, oldTccl);
}
}
Modified:
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jetty/OSGiJettyCamelContextsClassloaderTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jetty/OSGiJettyCamelContextsClassloaderTest.java?rev=1400734&r1=1400733&r2=1400734&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jetty/OSGiJettyCamelContextsClassloaderTest.java
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/java/org/apache/camel/itest/osgi/jetty/OSGiJettyCamelContextsClassloaderTest.java
Sun Oct 21 22:28:25 2012
@@ -41,13 +41,13 @@ public class OSGiJettyCamelContextsClass
// Wait a while to let all the service started
Thread.sleep(3000);
// test context 1
- String endpointURI1 = "http://localhost:9010/camel-context-1/";
+ String endpointURI1 =
"http://localhost:9010/camel-context-1/continuation/";
String response1 = template.requestBody(endpointURI1, "Hello World",
String.class);
System.out.println("Response from Context 1: " + response1);
assertEquals("Camel Context 1 classloaders unequal", "true",
response1.split(" --- ")[0]);
// test context 2
- String endpointURI2 = "http://localhost:9010/camel-context-2/";
+ String endpointURI2 =
"http://localhost:9010/camel-context-2/continuation/";
String response2 = template.requestBody(endpointURI2, "Hello World",
String.class);
System.out.println("Response from Context 2: " + response2);
assertEquals("Camel Context 2 classloaders unequal", "true",
response2.split(" --- ")[0]);
@@ -57,6 +57,25 @@ public class OSGiJettyCamelContextsClass
assertTrue(response1.matches(".*CamelContextBundle1.*CamelContextBundle1.*"));
assertTrue(response2.matches(".*CamelContextBundle2.*CamelContextBundle2.*"));
+ // Wait a while to let all the service started
+ Thread.sleep(3000);
+ // test context 1
+ endpointURI1 = "http://localhost:9010/camel-context-1/noContinuation/";
+ response1 = template.requestBody(endpointURI1, "Hello World",
String.class);
+ System.out.println("Response from Context 1: " + response1);
+ assertEquals("Camel Context 1 classloaders unequal", "true",
response1.split(" --- ")[0]);
+
+ // test context 2
+ endpointURI2 = "http://localhost:9010/camel-context-2/noContinuation/";
+ response2 = template.requestBody(endpointURI2, "Hello World",
String.class);
+ System.out.println("Response from Context 2: " + response2);
+ assertEquals("Camel Context 2 classloaders unequal", "true",
response2.split(" --- ")[0]);
+
+ // contexts's both classloaders toString() representation must contain
the bundle symbolic ID
+ // definition of "both classloaders": the Camel Context classloader
and the Thread classloader during processing
+
assertTrue(response1.matches(".*CamelContextBundle1.*CamelContextBundle1.*"));
+
assertTrue(response2.matches(".*CamelContextBundle2.*CamelContextBundle2.*"));
+
}
@Configuration
Modified:
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext1.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext1.xml?rev=1400734&r1=1400733&r2=1400734&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext1.xml
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext1.xml
Sun Oct 21 22:28:25 2012
@@ -27,7 +27,12 @@
<camelContext id="camelContext1"
xmlns="http://camel.apache.org/schema/spring">
<camel:route>
- <camel:from uri="jetty:http://0.0.0.0:9010/camel-context-1/"/>
+ <camel:from
uri="jetty:http://0.0.0.0:9010/camel-context-1/continuation/?useContinuation=true"/>
+ <camel:process ref="jettyProcessor"/>
+ </camel:route>
+
+ <camel:route>
+ <camel:from
uri="jetty:http://0.0.0.0:9010/camel-context-1/noContinuation/?useContinuation=false"/>
<camel:process ref="jettyProcessor"/>
</camel:route>
</camelContext>
Modified:
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext2.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext2.xml?rev=1400734&r1=1400733&r2=1400734&view=diff
==============================================================================
---
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext2.xml
(original)
+++
camel/trunk/tests/camel-itest-osgi/src/test/resources/org/apache/camel/itest/osgi/jetty/Classloader-CamelContext2.xml
Sun Oct 21 22:28:25 2012
@@ -27,7 +27,12 @@
<camelContext id="camelContext2"
xmlns="http://camel.apache.org/schema/spring">
<camel:route>
- <camel:from uri="jetty:http://0.0.0.0:9010/camel-context-2/"/>
+ <camel:from
uri="jetty:http://0.0.0.0:9010/camel-context-2/continuation/?useContinuation=true"/>
+ <camel:process ref="jettyProcessor"/>
+ </camel:route>
+
+ <camel:route>
+ <camel:from
uri="jetty:http://0.0.0.0:9010/camel-context-2/noContinuation/?useContinuation=false"/>
<camel:process ref="jettyProcessor"/>
</camel:route>
</camelContext>