Author: davsclaus
Date: Tue Aug 31 13:44:48 2010
New Revision: 991189

URL: http://svn.apache.org/viewvc?rev=991189&view=rev
Log:
CAMEL-3091: Fixed uri parameter mapping bug when value had question mark, such 
as cron expression from quartz.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitParallelTimeoutTest.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java
    
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java?rev=991189&r1=991188&r2=991189&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java 
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/URISupport.java 
Tue Aug 31 13:44:48 2010
@@ -75,7 +75,7 @@ public final class URISupport {
         String query = uri.getQuery();
         if (query == null) {
             String schemeSpecificPart = uri.getSchemeSpecificPart();
-            int idx = schemeSpecificPart.lastIndexOf('?');
+            int idx = schemeSpecificPart.indexOf('?');
             if (idx < 0) {
                 // return an empty map
                 return new LinkedHashMap<String, Object>(0);

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitParallelTimeoutTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitParallelTimeoutTest.java?rev=991189&r1=991188&r2=991189&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitParallelTimeoutTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitParallelTimeoutTest.java
 Tue Aug 31 13:44:48 2010
@@ -29,8 +29,8 @@ public class SplitParallelTimeoutTest ex
 
     public void testSplitParallelTimeout() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
-        // A will timeout so we only get B and C
-        mock.expectedBodiesReceived("BC");
+        // A will timeout so we only get B and/or C
+        mock.message(0).body().not(body().contains("A"));
 
         template.sendBody("direct:start", "A,B,C");
 
@@ -44,7 +44,7 @@ public class SplitParallelTimeoutTest ex
             public void configure() throws Exception {
                 from("direct:start")
                     .split(body().tokenize(","), new MyAggregationStrategy())
-                        .parallelProcessing().timeout(2000)
+                        .parallelProcessing().timeout(1000)
                         .choice()
                             .when(body().isEqualTo("A")).to("direct:a")
                             .when(body().isEqualTo("B")).to("direct:b")
@@ -53,7 +53,7 @@ public class SplitParallelTimeoutTest ex
                     .end() // end split
                     .to("mock:result");
 
-                from("direct:a").delay(3000).setBody(constant("A"));
+                from("direct:a").delay(5000).setBody(constant("A"));
 
                 from("direct:b").setBody(constant("B"));
 
@@ -65,7 +65,7 @@ public class SplitParallelTimeoutTest ex
     private class MyAggregationStrategy implements 
TimeoutAwareAggregationStrategy {
 
         public void timeout(Exchange oldExchange, int index, int total, long 
timeout) {
-            assertEquals(2000, timeout);
+            assertEquals(1000, timeout);
             assertEquals(3, total);
             assertEquals(0, index);
             assertNotNull(oldExchange);

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java?rev=991189&r1=991188&r2=991189&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java 
(original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/util/URISupportTest.java 
Tue Aug 31 13:44:48 2010
@@ -112,4 +112,17 @@ public class URISupportTest extends Cont
         
assertEquals("jms://queue:foo?foo=bar&selector=somekey%3D%27somevalue%27", out);
     }
 
+    public void testParseParameters() throws Exception {
+        URI u = new URI("quartz:myGroup/myTimerName?cron=0+0+*+*+*+?");
+        Map<String, Object> params = URISupport.parseParameters(u);
+        assertEquals(1, params.size());
+        assertEquals("0 0 * * * ?", params.get("cron"));
+
+        u = new URI("quartz:myGroup/myTimerName?cron=0+0+*+*+*+?&bar=123");
+        params = URISupport.parseParameters(u);
+        assertEquals(2, params.size());
+        assertEquals("0 0 * * * ?", params.get("cron"));
+        assertEquals("123", params.get("bar"));
+    }
+
 }

Modified: 
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java?rev=991189&r1=991188&r2=991189&view=diff
==============================================================================
--- 
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java
 (original)
+++ 
camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/component/quartz/QuartzEndpointConfigureTest.java
 Tue Aug 31 13:44:48 2010
@@ -18,7 +18,6 @@ package org.apache.camel.component.quart
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-
 import org.junit.Test;
 import org.quartz.CronTrigger;
 import org.quartz.SimpleTrigger;
@@ -88,7 +87,7 @@ public class QuartzEndpointConfigureTest
         assertEquals("getGroup()", "myGroup", trigger.getGroup());
     }
 
-    // FIXME (CAMEL-3091): @Test
+    @Test
     public void testConfigureNoDoubleSlashQuestionCron() throws Exception {
         QuartzEndpoint endpoint = 
resolveMandatoryEndpoint("quartz:myGroup/myTimerName?cron=0+0+*+*+*+?");
         CronTrigger trigger = assertIsInstanceOf(CronTrigger.class, 
endpoint.getTrigger());


Reply via email to