Fixed CamelCatalog to construct endpoint uris for timer endpoints

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/999fe637
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/999fe637
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/999fe637

Branch: refs/heads/camel-2.16.x
Commit: 999fe637b9794ce9a56a1bbf45ab105e29066518
Parents: 8e16955
Author: Claus Ibsen <davscl...@apache.org>
Authored: Tue Nov 3 15:57:58 2015 +0100
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Tue Nov 3 15:58:41 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/catalog/DefaultCamelCatalog.java   | 16 +++++++++++-----
 .../org/apache/camel/catalog/CamelCatalogTest.java  | 10 ++++++++++
 2 files changed, 21 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/999fe637/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
----------------------------------------------------------------------
diff --git 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
index 59e2ded..5374194 100644
--- 
a/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
+++ 
b/platforms/catalog/src/main/java/org/apache/camel/catalog/DefaultCamelCatalog.java
@@ -720,14 +720,17 @@ public class DefaultCamelCatalog implements CamelCatalog {
         for (int i = 0; i < options.size(); i++) {
             String key = options.get(i);
             String key2 = options2.get(i);
-            String token = tokens[i];
+            String token = null;
+            if (tokens.length > i) {
+                token = tokens[i];
+            }
 
             // was the option provided?
             if (properties.containsKey(key)) {
-                if (!first) {
+                if (!first && token != null) {
                     sb.append(token);
                 }
-                hasQuestionmark |= token.contains("?") || key.contains("?");
+                hasQuestionmark |= key.contains("?") || (token != null && 
token.contains("?"));
                 sb.append(key2);
                 first = false;
             }
@@ -735,11 +738,14 @@ public class DefaultCamelCatalog implements CamelCatalog {
         }
         // append any extra options that was in surplus for the last
         while (range < options2.size()) {
-            String token = tokens[range];
+            String token = null;
+            if (tokens.length > range) {
+                token = tokens[range];
+            }
             String key2 = options2.get(range);
             sb.append(token);
             sb.append(key2);
-            hasQuestionmark |= token.contains("?") || key2.contains("?");
+            hasQuestionmark |= key2.contains("?") || (token != null && 
token.contains("?"));
             range++;
         }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/999fe637/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
----------------------------------------------------------------------
diff --git 
a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 5f0b6bb..4b8dc31 100644
--- 
a/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/platforms/catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -170,6 +170,16 @@ public class CamelCatalogTest extends TestCase {
     }
 
     @Test
+    public void testAsEndpointUriTimer() throws Exception {
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("timerName", "foo");
+        map.put("period", "5000");
+
+        String uri = catalog.asEndpointUri("timer", map);
+        assertEquals("timer:foo?period=5000", uri);
+    }
+
+    @Test
     public void testAsEndpointUriMapJmsRequiredOnly() throws Exception {
         Map<String, String> map = new HashMap<String, String>();
         map.put("destinationName", "foo");

Reply via email to