Implement GPathConverter methods
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/c9e26a52 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/c9e26a52 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/c9e26a52 Branch: refs/heads/master Commit: c9e26a52222a1e01b324ade199e731d7a96d9811 Parents: bc7a50c Author: Dominik Adam Przybysz <alien11...@gmail.com> Authored: Sun Aug 17 22:33:59 2014 +0200 Committer: Dominik Adam Przybysz <alien11...@gmail.com> Committed: Sun Aug 17 22:33:59 2014 +0200 ---------------------------------------------------------------------- .../groovy/converter/GPathResultConverter.java | 33 ++++++++++++++++++++ .../converter/GPathResultConverterTest.groovy | 9 ++++-- 2 files changed, 40 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/c9e26a52/components/camel-groovy/src/main/java/org/apache/camel/groovy/converter/GPathResultConverter.java ---------------------------------------------------------------------- diff --git a/components/camel-groovy/src/main/java/org/apache/camel/groovy/converter/GPathResultConverter.java b/components/camel-groovy/src/main/java/org/apache/camel/groovy/converter/GPathResultConverter.java index 12802e3..e5008a8 100644 --- a/components/camel-groovy/src/main/java/org/apache/camel/groovy/converter/GPathResultConverter.java +++ b/components/camel-groovy/src/main/java/org/apache/camel/groovy/converter/GPathResultConverter.java @@ -1,8 +1,41 @@ package org.apache.camel.groovy.converter; +import groovy.util.XmlSlurper; +import groovy.util.slurpersupport.GPathResult; +import groovy.xml.StreamingMarkupBuilder; import org.apache.camel.Converter; +import org.apache.camel.StringSource; +import org.w3c.dom.Node; +import org.xml.sax.SAXException; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.IOException; +import java.io.StringWriter; @Converter public class GPathResultConverter { + @Converter + public static GPathResult fromString(String input) throws ParserConfigurationException, SAXException, IOException { + return new XmlSlurper().parseText(input); + } + + @Converter + public static GPathResult fromStringSource(StringSource input) throws IOException, SAXException, ParserConfigurationException { + return fromString(input.getText()); + } + + @Converter + public static GPathResult fromNode(Node input) throws IOException, SAXException, ParserConfigurationException, TransformerException { + StringWriter writer = new StringWriter(); + Transformer t = TransformerFactory.newInstance().newTransformer(); + t.transform(new DOMSource(input), new StreamResult(writer)); + return fromString(writer.toString()); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/c9e26a52/components/camel-groovy/src/test/groovy/org/apache/camel/groovy/converter/GPathResultConverterTest.groovy ---------------------------------------------------------------------- diff --git a/components/camel-groovy/src/test/groovy/org/apache/camel/groovy/converter/GPathResultConverterTest.groovy b/components/camel-groovy/src/test/groovy/org/apache/camel/groovy/converter/GPathResultConverterTest.groovy index 22daa5e..c17feb8 100644 --- a/components/camel-groovy/src/test/groovy/org/apache/camel/groovy/converter/GPathResultConverterTest.groovy +++ b/components/camel-groovy/src/test/groovy/org/apache/camel/groovy/converter/GPathResultConverterTest.groovy @@ -8,8 +8,11 @@ import org.apache.camel.impl.DefaultCamelContext import org.apache.camel.impl.DefaultExchange import org.junit.Test import org.w3c.dom.Node +import javax.xml.parsers.DocumentBuilderFactory +import org.xml.sax.InputSource import static org.junit.Assert.assertEquals +import static org.junit.Assert.assertNotNull public class GPathResultConverterTest { String xml = "<test><elem1>This is test</elem1></test>" @@ -34,7 +37,8 @@ public class GPathResultConverterTest { @Test void "should convert node to GPathResult"() { - Node node = new XmlParser().parseText(xml) + Node node = DocumentBuilderFactory.newInstance().newDocumentBuilder() + .parse(new InputSource(new StringReader(xml))) Exchange exchange = new DefaultExchange(context) exchange.in.setBody(node, Node) GPathResult result = exchange.in.getBody(GPathResult) @@ -42,7 +46,8 @@ public class GPathResultConverterTest { } private void checkGPathResult(GPathResult gPathResult) { + assertNotNull(gPathResult) assertEquals(gPathResult.name(), "test") assertEquals(gPathResult.elem1.text(), "This is test") } -} \ No newline at end of file +}