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);