Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save martinweiler/8901420e08e1ccfea88de309904dd8a2 to your computer and use it in GitHub Desktop.
Save martinweiler/8901420e08e1ccfea88de309904dd8a2 to your computer and use it in GitHub Desktop.
Camel-Xml-JSON test
[camel-xmljson]$ git diff
diff --git a/components/camel-xmljson/src/test/java/org/apache/camel/dataformat/xmljson/XmlJsonDataFormatTest.java b/components/camel-xmljson/src/test/java/org/apache/camel/dataformat/xmljson/XmlJsonDataFormatTest.java
index d2749e93fd..a7c9dbe3c8 100644
--- a/components/camel-xmljson/src/test/java/org/apache/camel/dataformat/xmljson/XmlJsonDataFormatTest.java
+++ b/components/camel-xmljson/src/test/java/org/apache/camel/dataformat/xmljson/XmlJsonDataFormatTest.java
@@ -41,6 +41,66 @@ import org.junit.Test;
*/
public class XmlJsonDataFormatTest extends AbstractJsonTestSupport {
+
+ @Test
+ public void testCase02095505() throws Exception {
+ String in = "<Account>" +
+" <AccountId>d45ab57b-d55d-e811-a841-000d3a2a3148</AccountId>" +
+" <SiteAccount>" +
+" <StatusReason>1</StatusReason>" +
+" </SiteAccount>" +
+"</Account>";
+
+ MockEndpoint mockJSON = getMockEndpoint("mock:json");
+ mockJSON.expectedMessageCount(1);
+ mockJSON.message(0).body().isInstanceOf(byte[].class);
+
+ MockEndpoint mockXML = getMockEndpoint("mock:xml");
+ mockXML.expectedMessageCount(1);
+ mockXML.message(0).body().isInstanceOf(String.class);
+
+ Object json = template.requestBody("direct:marshal", in);
+ String jsonString = context.getTypeConverter().convertTo(String.class, json);
+ JSONObject obj = (JSONObject) JSONSerializer.toJSON(jsonString);
+ System.out.println("JSON->" + jsonString);
+ assertTrue("JSON string does not contain the 'StatusReason' element", jsonString.contains("StatusReason"));
+
+ template.sendBody("direct:unmarshal", jsonString);
+
+ mockJSON.assertIsSatisfied();
+ mockXML.assertIsSatisfied();
+ }
+
+
+ @Test
+ public void testCase02095505WithAdditionalElement() throws Exception {
+ String in = "<Account>" +
+" <AccountId>d45ab57b-d55d-e811-a841-000d3a2a3148</AccountId>" +
+" <SiteAccount>" +
+" <StatusReason>1</StatusReason>" +
+" <a>b</a>" +
+" </SiteAccount>" +
+"</Account>";
+
+ MockEndpoint mockJSON = getMockEndpoint("mock:json");
+ mockJSON.expectedMessageCount(1);
+ mockJSON.message(0).body().isInstanceOf(byte[].class);
+
+ MockEndpoint mockXML = getMockEndpoint("mock:xml");
+ mockXML.expectedMessageCount(1);
+ mockXML.message(0).body().isInstanceOf(String.class);
+
+ Object json = template.requestBody("direct:marshal", in);
+ String jsonString = context.getTypeConverter().convertTo(String.class, json);
+ JSONObject obj = (JSONObject) JSONSerializer.toJSON(jsonString);
+ System.out.println("JSON->" + jsonString);
+ assertTrue("JSON string does not contain the 'StatusReason' element", jsonString.contains("StatusReason"));
+
+ template.sendBody("direct:unmarshal", jsonString);
+
+ mockJSON.assertIsSatisfied();
+ mockXML.assertIsSatisfied();
+ }
@Test
public void testMarshalAndUnmarshal() throws Exception {
InputStream inStream = getClass().getResourceAsStream("testMessage1.xml");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment