You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2015/05/30 12:33:08 UTC

[3/6] camel git commit: CAMEL-8799: Make it possible for JsonPath to suppress PathNotFoundException

CAMEL-8799: Make it possible for JsonPath to suppress PathNotFoundException


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

Branch: refs/heads/master
Commit: 0654622f2a3e3d2e41fec9af4c2edeb0b5c34465
Parents: e6fb2d5
Author: Claus Ibsen <da...@apache.org>
Authored: Sat May 30 10:20:22 2015 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sat May 30 10:20:22 2015 +0200

----------------------------------------------------------------------
 .../apache/camel/jsonpath/JsonPathEngine.java   | 10 +++---
 .../apache/camel/jsonpath/JsonPathLanguage.java | 33 ++++++++++++++++++++
 .../apache/camel/jsonpath/JsonPathBeanTest.java | 10 ++++++
 .../apache/camel/jsonpath/JsonPathCBRTest.java  |  1 -
 .../camel/jsonpath/JsonPathLanguageTest.java    |  5 ++-
 5 files changed, 53 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0654622f/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
index 5ed84b4..f73315e 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java
@@ -40,14 +40,16 @@ public class JsonPathEngine {
     private final Configuration configuration;
 
     public JsonPathEngine(String expression) {
-        Defaults defaults = DefaultsImpl.INSTANCE;
-        this.configuration = Configuration.builder().jsonProvider(defaults.jsonProvider()).build();
-        this.path = JsonPath.compile(expression);
+        this(expression, null);
     }
 
     public JsonPathEngine(String expression, Option[] options) {
         Defaults defaults = DefaultsImpl.INSTANCE;
-        this.configuration = Configuration.builder().jsonProvider(defaults.jsonProvider()).options(options).build();
+        if (options != null) {
+            this.configuration = Configuration.builder().jsonProvider(defaults.jsonProvider()).options(options).build();
+        } else {
+            this.configuration = Configuration.builder().jsonProvider(defaults.jsonProvider()).build();
+        }
         this.path = JsonPath.compile(expression);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/0654622f/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
index 8eb78db..7f25e70 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
@@ -16,15 +16,41 @@
  */
 package org.apache.camel.jsonpath;
 
+import com.jayway.jsonpath.Option;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
 import org.apache.camel.support.LanguageSupport;
 
 public class JsonPathLanguage extends LanguageSupport {
 
+    private Class<?> resultType;
+    private Option[] options;
+
+    public Class<?> getResultType() {
+        return resultType;
+    }
+
+    public void setResultType(Class<?> resultType) {
+        this.resultType = resultType;
+    }
+
+    public Option[] getOptions() {
+        return options;
+    }
+
+    public void setOption(Option option) {
+        this.options = new Option[]{option};
+    }
+
+    public void setOptions(Option[] options) {
+        this.options = options;
+    }
+
     @Override
     public Predicate createPredicate(final String predicate) {
         JsonPathExpression answer = new JsonPathExpression(predicate);
+        answer.setResultType(resultType);
+        answer.setOptions(options);
         answer.init();
         return answer;
     }
@@ -32,8 +58,15 @@ public class JsonPathLanguage extends LanguageSupport {
     @Override
     public Expression createExpression(final String expression) {
         JsonPathExpression answer = new JsonPathExpression(expression);
+        answer.setResultType(resultType);
+        answer.setOptions(options);
         answer.init();
         return answer;
     }
 
+    @Override
+    public boolean isSingleton() {
+        // cannot be singleton due options
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0654622f/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathBeanTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathBeanTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathBeanTest.java
index f53d858..2ef033f 100644
--- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathBeanTest.java
+++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathBeanTest.java
@@ -32,6 +32,16 @@ public class JsonPathBeanTest extends CamelTestSupport {
     }
 
     @Test
+    public void testFullNameTwo() throws Exception {
+        String json = "{\"person\" : {\"firstname\" : \"foo\", \"middlename\" : \"foo2\", \"lastname\" : \"bar\"}}";
+        String json2 = "{\"person\" : {\"firstname\" : \"bar\", \"middlename\" : \"bar2\", \"lastname\" : \"foo\"}}";
+        getMockEndpoint("mock:result").expectedBodiesReceived("foo foo2 bar", "bar bar2 foo");
+        template.sendBody("direct:start", json);
+        template.sendBody("direct:start", json2);
+        assertMockEndpointsSatisfied();
+    }
+
+    @Test
     public void testFirstAndLastName() throws Exception {
         String json = "{\"person\" : {\"firstname\" : \"foo\", \"lastname\" : \"bar\"}}";
         getMockEndpoint("mock:result").expectedBodiesReceived("foo bar");

http://git-wip-us.apache.org/repos/asf/camel/blob/0654622f/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCBRTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCBRTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCBRTest.java
index 2e869a6..4e85260 100644
--- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCBRTest.java
+++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCBRTest.java
@@ -68,7 +68,6 @@ public class JsonPathCBRTest extends CamelTestSupport {
         sendMessageToBicycleRoute("direct:bicycle");
         resetMocks();
         sendMessageToBicycleRoute("direct:bicycle2");
-        
     }
     
     private void sendMessageToBicycleRoute(String startPoint) throws Exception {

http://git-wip-us.apache.org/repos/asf/camel/blob/0654622f/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathLanguageTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathLanguageTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathLanguageTest.java
index 66db4a8..0f10864 100644
--- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathLanguageTest.java
+++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathLanguageTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.jsonpath;
 import java.io.File;
 import java.util.List;
 
+import com.jayway.jsonpath.Option;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
@@ -93,7 +94,9 @@ public class JsonPathLanguageTest extends CamelTestSupport {
         Exchange exchange = new DefaultExchange(context);
         exchange.getIn().setBody(new File("src/test/resources/type.json"));
 
-        Language lan = context.resolveLanguage("jsonpath");
+        JsonPathLanguage lan = (JsonPathLanguage) context.resolveLanguage("jsonpath");
+        lan.setOption(Option.SUPPRESS_EXCEPTIONS);
+
         Expression exp = lan.createExpression("$.foo");
         String nofoo = exp.evaluate(exchange, String.class);