You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2018/06/25 10:45:23 UTC

[camel] 02/02: CAMEL-12580: camel-servicenow: suport java.lang.String as output model

This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4aeadf86e833dd52c165aec089401f418ded80cc
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Mon Jun 25 12:42:03 2018 +0200

    CAMEL-12580: camel-servicenow: suport java.lang.String as output model
---
 .../servicenow/AbstractServiceNowProcessor.java    |  8 +++++-
 .../camel/component/servicenow/ServiceNowTest.java | 32 ++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java
index 366c532..348b368 100644
--- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java
+++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java
@@ -158,7 +158,13 @@ public abstract class AbstractServiceNowProcessor implements Processor {
     }
 
     protected Object unwrap(JsonNode node, Class<?> model) throws IOException {
-        Object result;
+        if (model == String.class) {
+            // If the model is a String, let's just serialize it as
+            // a json string
+            return mapper.writeValueAsString(node);
+        }
+
+        final Object result;
 
         if (node.isArray()) {
             if (model.isInstance(Map.class)) {
diff --git a/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowTest.java b/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowTest.java
index fc46ce3..45524ba 100644
--- a/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowTest.java
+++ b/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowTest.java
@@ -130,6 +130,38 @@ public class ServiceNowTest extends ServiceNowTestSupport {
     }
 
     @Test
+    public void testRequestResponseAsString() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:servicenow");
+
+        mock.reset();
+        mock.expectedMessageCount(1);
+
+        Incident incident = new Incident();
+        incident.setDescription("my incident");
+        incident.setShortDescription("An incident");
+        incident.setSeverity(1);
+        incident.setImpact(1);
+
+        template().sendBodyAndHeaders(
+            "direct:servicenow",
+            incident,
+            kvBuilder()
+                .put(ServiceNowConstants.RESOURCE, ServiceNowConstants.RESOURCE_TABLE)
+                .put(ServiceNowConstants.ACTION, ServiceNowConstants.ACTION_CREATE)
+                .put(ServiceNowConstants.REQUEST_MODEL, Incident.class)
+                .put(ServiceNowConstants.RESPONSE_MODEL, String.class)
+                .put(ServiceNowParams.PARAM_TABLE_NAME, "incident")
+                .build()
+        );
+
+        mock.assertIsSatisfied();
+
+        Object body = mock.getExchanges().get(0).getIn().getBody();
+        assertNotNull(body);
+        assertTrue(body instanceof String);
+    }
+
+    @Test
     public void testVersionedApiRequest() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:servicenow");