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 2013/10/06 16:28:52 UTC
git commit: CAMEL-6238: camel-jsonpath component.
Updated Branches:
refs/heads/master 969d88146 -> 7817d1434
CAMEL-6238: camel-jsonpath component.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/7817d143
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/7817d143
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/7817d143
Branch: refs/heads/master
Commit: 7817d14343e2e7e6a19f3ad82492726224f3e492
Parents: 969d881
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Oct 6 16:28:46 2013 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Oct 6 16:28:46 2013 +0200
----------------------------------------------------------------------
.../apache/camel/jsonpath/JSonPathEngine.java | 37 ++++++++++++++++++--
.../apache/camel/jsonpath/JsonPathLanguage.java | 20 ++++++-----
2 files changed, 46 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/7817d143/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 48bde5c..745ce0e 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
@@ -16,22 +16,55 @@
*/
package org.apache.camel.jsonpath;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URL;
+import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.JsonPath;
+import org.apache.camel.Exchange;
+import org.apache.camel.InvalidPayloadException;
+import org.apache.camel.WrappedFile;
public class JSonPathEngine {
private final String expression;
private final JsonPath path;
+ private final Configuration configuration;
public JSonPathEngine(String expression) {
this.expression = expression;
+ this.configuration = Configuration.defaultConfiguration();
this.path = JsonPath.compile(expression);
}
- public Object read(InputStream json) throws IOException {
- return path.read(json);
+ public Object read(Exchange exchange) throws IOException, InvalidPayloadException {
+ Object json = exchange.getIn().getBody();
+
+ if (json instanceof WrappedFile) {
+ json = ((WrappedFile) json).getFile();
+ }
+
+ // the message body type should use the suitable read method
+ if (configuration.getProvider().isContainer(json)) {
+ return path.read(json);
+ } else if (json instanceof String) {
+ String str = (String) json;
+ return path.read(str);
+ } else if (json instanceof InputStream) {
+ InputStream is = (InputStream) json;
+ return path.read(is);
+ } else if (json instanceof File) {
+ File file = (File) json;
+ return path.read(file);
+ } else if (json instanceof URL) {
+ URL url = (URL) json;
+ return path.read(url);
+ }
+
+ // fallback as input stream
+ InputStream is = exchange.getIn().getMandatoryBody(InputStream.class);
+ return path.read(is);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/7817d143/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 9776f77..b53ce36 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,8 +16,6 @@
*/
package org.apache.camel.jsonpath;
-import java.io.InputStream;
-
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.ExpressionEvaluationException;
@@ -25,7 +23,6 @@ import org.apache.camel.ExpressionIllegalSyntaxException;
import org.apache.camel.Predicate;
import org.apache.camel.support.ExpressionAdapter;
import org.apache.camel.support.LanguageSupport;
-import org.apache.camel.util.IOHelper;
public class JsonPathLanguage extends LanguageSupport {
@@ -47,6 +44,11 @@ public class JsonPathLanguage extends LanguageSupport {
throw new ExpressionEvaluationException(this, exchange, e);
}
}
+
+ @Override
+ public String toString() {
+ return "jsonpath[" + predicate + "]";
+ }
};
}
@@ -68,16 +70,16 @@ public class JsonPathLanguage extends LanguageSupport {
throw new ExpressionEvaluationException(this, exchange, e);
}
}
+
+ @Override
+ public String toString() {
+ return "jsonpath[" + expression + "]";
+ }
};
}
private Object evaluateJsonPath(Exchange exchange, JSonPathEngine engine) throws Exception {
- InputStream is = exchange.getIn().getMandatoryBody(InputStream.class);
- try {
- return engine.read(is);
- } finally {
- IOHelper.close(is);
- }
+ return engine.read(exchange);
}
}