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>


Reply via email to