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 2017/08/04 16:09:59 UTC

[08/19] camel git commit: CAMEL-11556: ServiceNow : add annotations on the model to customize sysparms

CAMEL-11556: ServiceNow : add annotations on the model to customize sysparms


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/05aa433e
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/05aa433e
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/05aa433e

Branch: refs/heads/master
Commit: 05aa433ec8b59cdee7cfb929689b6455a9fc30ae
Parents: 79172c3
Author: lburgazzoli <lb...@gmail.com>
Authored: Tue Aug 1 19:50:17 2017 +0200
Committer: lburgazzoli <lb...@gmail.com>
Committed: Fri Aug 4 18:09:05 2017 +0200

----------------------------------------------------------------------
 .../component/servicenow/ServiceNowClient.java  | 29 ++++++++-
 .../annotations/ServiceNowSysParm.java          | 32 ++++++++++
 .../annotations/ServiceNowSysParms.java         | 28 +++++++++
 .../fuji/FujiServiceNowAggregateProcessor.java  |  5 +-
 .../fuji/FujiServiceNowImportSetProcessor.java  |  8 ++-
 .../fuji/FujiServiceNowTableProcessor.java      |  6 ++
 .../HelsinkiServiceNowAggregateProcessor.java   |  1 +
 .../HelsinkiServiceNowAttachmentProcessor.java  |  2 +
 .../HelsinkiServiceNowImportSetProcessor.java   |  2 +
 .../HelsinkiServiceNowMiscProcessor.java        |  2 +
 .../HelsinkiServiceNowScorecardProcessor.java   |  1 +
 ...iServiceNowServiceCatalogCartsProcessor.java |  6 ++
 ...iceNowServiceCatalogCategoriesProcessor.java |  1 +
 ...iServiceNowServiceCatalogItemsProcessor.java |  6 ++
 ...lsinkiServiceNowServiceCatalogProcessor.java |  3 +
 .../HelsinkiServiceNowTableProcessor.java       |  9 +++
 .../servicenow/ServiceNowTableTest.java         | 33 ++++++++++
 .../servicenow/model/IncidentWithParms.java     | 64 ++++++++++++++++++++
 18 files changed, 232 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java
index 6157ecf..5128797 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java
@@ -26,15 +26,21 @@ import javax.ws.rs.core.Response;
 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Message;
+import org.apache.camel.component.servicenow.annotations.ServiceNowSysParm;
 import org.apache.camel.component.servicenow.auth.AuthenticationRequestFilter;
+import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.jsse.SSLContextParameters;
 import org.apache.cxf.configuration.jsse.TLSClientParameters;
 import org.apache.cxf.configuration.security.ProxyAuthorizationPolicy;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.transport.http.HTTPConduit;
 import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public final class ServiceNowClient {
+    private static final Logger LOGGER = LoggerFactory.getLogger(ServiceNowClient.class);
+
     private final CamelContext camelContext;
     private final ServiceNowConfiguration configuration;
     private final WebClient client;
@@ -68,7 +74,7 @@ public final class ServiceNowClient {
     }
 
     public ServiceNowClient path(Object path) {
-        if (path != null) {
+        if (ObjectHelper.isNotEmpty(path)) {
             client.path(path);
         }
 
@@ -114,6 +120,27 @@ public final class ServiceNowClient {
         return this;
     }
 
+    public ServiceNowClient query(Class<?> model) {
+        if (model != null) {
+            String name;
+            String value;
+
+            for (ServiceNowSysParm parm : model.getAnnotationsByType(ServiceNowSysParm.class)) {
+                name = parm.name();
+                value = parm.value();
+
+                // SysParms defined on model have precedence and replace query param
+                // with same name set via Message headers.
+                if (ObjectHelper.isNotEmpty(name) && ObjectHelper.isNotEmpty(value)) {
+                    LOGGER.debug("Replace query param {} with value {}", name, value);
+                    client.replaceQueryParam(name, value);
+                }
+            }
+        }
+
+        return this;
+    }
+
     public Response invoke(String httpMethod) throws Exception {
         return invoke(client, httpMethod, null);
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParm.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParm.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParm.java
new file mode 100644
index 0000000..361e741
--- /dev/null
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParm.java
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.servicenow.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Repeatable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(ServiceNowSysParms.class)
+public @interface ServiceNowSysParm {
+    String name();
+
+    String value();
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParms.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParms.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParms.java
new file mode 100644
index 0000000..236ba8b
--- /dev/null
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/annotations/ServiceNowSysParms.java
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.servicenow.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ServiceNowSysParms {
+    ServiceNowSysParm[] value();
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowAggregateProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowAggregateProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowAggregateProcessor.java
index 0b4f32a..7fe9352 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowAggregateProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowAggregateProcessor.java
@@ -38,7 +38,7 @@ class FujiServiceNowAggregateProcessor extends FujiServiceNowProcessor {
     protected void doProcess(Exchange exchange, Class<?> requestModel, Class<?> responseModel, String action, String apiVersion, String tableName, String sysId) throws Exception {
         Response response;
         if (ObjectHelper.equal(ServiceNowConstants.ACTION_RETRIEVE, action, true)) {
-            response = retrieveStats(exchange.getIn(), tableName);
+            response = retrieveStats(exchange.getIn(), requestModel, responseModel, tableName);
         } else {
             throw new IllegalArgumentException("Unknown action " + action);
         }
@@ -46,7 +46,7 @@ class FujiServiceNowAggregateProcessor extends FujiServiceNowProcessor {
         setBodyAndHeaders(exchange.getIn(), responseModel, response);
     }
 
-    private Response retrieveStats(Message in, String tableName) throws Exception {
+    private Response retrieveStats(Message in, Class<?> requestModel, Class<?> responseModel, String tableName) throws Exception {
         final String apiVersion = getApiVersion(in);
 
         return client.reset()
@@ -66,6 +66,7 @@ class FujiServiceNowAggregateProcessor extends FujiServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_ORDER_BY, in)
             .query(ServiceNowParams.SYSPARM_HAVING, in)
             .query(ServiceNowParams.SYSPARM_DISPLAY_VALUE, in)
+            .query(responseModel)
             .invoke(HttpMethod.GET);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowImportSetProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowImportSetProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowImportSetProcessor.java
index 2f09d3e..4bace68 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowImportSetProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowImportSetProcessor.java
@@ -37,7 +37,7 @@ class FujiServiceNowImportSetProcessor extends FujiServiceNowProcessor {
     protected void doProcess(Exchange exchange, Class<?> requestModel, Class<?> responseModel, String action, String apiVersion, String tableName, String sysId) throws Exception {
         Response response;
         if (ObjectHelper.equal(ServiceNowConstants.ACTION_RETRIEVE, action, true)) {
-            response = retrieveRecord(exchange.getIn(), apiVersion, tableName, sysId);
+            response = retrieveRecord(exchange.getIn(), requestModel, responseModel, apiVersion, tableName, sysId);
         } else if (ObjectHelper.equal(ServiceNowConstants.ACTION_CREATE, action, true)) {
             response = createRecord(exchange.getIn(), requestModel, responseModel, apiVersion, tableName);
         } else {
@@ -51,7 +51,7 @@ class FujiServiceNowImportSetProcessor extends FujiServiceNowProcessor {
      * GET
      * https://instance.service-now.com/api/now/import/{tableName}/{sys_id}
      */
-    private Response retrieveRecord(Message in, String apiVersion, String tableName, String sysId) throws Exception {
+    private Response retrieveRecord(Message in, Class<?> requestModel, Class<?> responseModel, String apiVersion, String tableName, String sysId) throws Exception {
         return client.reset()
             .types(MediaType.APPLICATION_JSON_TYPE)
             .path("now")
@@ -59,6 +59,7 @@ class FujiServiceNowImportSetProcessor extends FujiServiceNowProcessor {
             .path("import")
             .path(tableName)
             .path(ObjectHelper.notNull(sysId, "sysId"))
+            .query(responseModel)
             .invoke(HttpMethod.GET);
     }
 
@@ -66,7 +67,7 @@ class FujiServiceNowImportSetProcessor extends FujiServiceNowProcessor {
      * POST
      * https://instance.service-now.com/api/now/import/{tableName}
      */
-    private Response createRecord(Message in, Class<?> requestModel, Class<?> responseModell, String apiVersion, String tableName) throws Exception {
+    private Response createRecord(Message in, Class<?> requestModel, Class<?> responseModel, String apiVersion, String tableName) throws Exception {
         validateBody(in, requestModel);
         return client.reset()
             .types(MediaType.APPLICATION_JSON_TYPE)
@@ -74,6 +75,7 @@ class FujiServiceNowImportSetProcessor extends FujiServiceNowProcessor {
             .path(apiVersion)
             .path("import")
             .path(tableName)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowTableProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowTableProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowTableProcessor.java
index 7fb7c2a..0781811 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowTableProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/fuji/FujiServiceNowTableProcessor.java
@@ -72,6 +72,7 @@ class FujiServiceNowTableProcessor extends FujiServiceNowProcessor {
                 .query(ServiceNowParams.SYSPARM_FIELDS, in)
                 .query(ServiceNowParams.SYSPARM_LIMIT, in)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET)
             : client.reset()
                 .types(MediaType.APPLICATION_JSON_TYPE)
@@ -84,6 +85,7 @@ class FujiServiceNowTableProcessor extends FujiServiceNowProcessor {
                 .query(ServiceNowParams.SYSPARM_EXCLUDE_REFERENCE_LINK, in)
                 .query(ServiceNowParams.SYSPARM_FIELDS, in)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET);
     }
 
@@ -105,6 +107,7 @@ class FujiServiceNowTableProcessor extends FujiServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE, in)
             .query(ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
     }
 
@@ -127,6 +130,7 @@ class FujiServiceNowTableProcessor extends FujiServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE, in)
             .query(ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.PUT, in.getMandatoryBody());
     }
 
@@ -142,6 +146,7 @@ class FujiServiceNowTableProcessor extends FujiServiceNowProcessor {
             .path("table")
             .path(tableName)
             .path(ObjectHelper.notNull(sysId, "sysId"))
+            .query(responseModel)
             .invoke(HttpMethod.DELETE);
     }
 
@@ -164,6 +169,7 @@ class FujiServiceNowTableProcessor extends FujiServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE, in)
             .query(ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke("PATCH", in.getMandatoryBody());
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAggregateProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAggregateProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAggregateProcessor.java
index be47129..d895718 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAggregateProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAggregateProcessor.java
@@ -69,6 +69,7 @@ class HelsinkiServiceNowAggregateProcessor extends AbstractServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_ORDER_BY, in)
             .query(ServiceNowParams.SYSPARM_HAVING, in)
             .query(ServiceNowParams.SYSPARM_DISPLAY_VALUE, in)
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAttachmentProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAttachmentProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAttachmentProcessor.java
index b57fe4a..b25bcc0 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAttachmentProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowAttachmentProcessor.java
@@ -143,6 +143,7 @@ public class HelsinkiServiceNowAttachmentProcessor extends AbstractServiceNowPro
             .query(ServiceNowParams.PARAM_TABLE_NAME, in)
             .query(ServiceNowParams.PARAM_TABLE_SYS_ID, in)
             .query(ServiceNowParams.PARAM_ENCRYPTION_CONTEXT, in)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody(InputStream.class));
 
         setBodyAndHeaders(in, responseModel, response);
@@ -170,6 +171,7 @@ public class HelsinkiServiceNowAttachmentProcessor extends AbstractServiceNowPro
             .path(apiVersion)
             .path("attachment")
             .path(ObjectHelper.notNull(sysId, "sysId"))
+            .query(responseModel)
             .invoke(HttpMethod.DELETE);
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowImportSetProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowImportSetProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowImportSetProcessor.java
index 61dcf92..c49f228 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowImportSetProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowImportSetProcessor.java
@@ -56,6 +56,7 @@ class HelsinkiServiceNowImportSetProcessor extends AbstractServiceNowProcessor {
             .path("import")
             .path(ObjectHelper.notNull(tableName, "tableName"))
             .path(ObjectHelper.notNull(sysId, "sysId"))
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -79,6 +80,7 @@ class HelsinkiServiceNowImportSetProcessor extends AbstractServiceNowProcessor {
             .path(apiVersion)
             .path("import")
             .path(tableName)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowMiscProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowMiscProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowMiscProcessor.java
index 5947532..c4e9d1b 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowMiscProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowMiscProcessor.java
@@ -60,6 +60,7 @@ class HelsinkiServiceNowMiscProcessor extends AbstractServiceNowProcessor {
             .path("global")
             .path("user_role_inheritance")
             .query(ServiceNowParams.PARAM_USER_SYS_ID, in)
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -85,6 +86,7 @@ class HelsinkiServiceNowMiscProcessor extends AbstractServiceNowProcessor {
             .path(apiVersion)
             .path("identifyreconcile")
             .query(ServiceNowParams.SYSPARM_DATA_SOURCE, in)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowScorecardProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowScorecardProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowScorecardProcessor.java
index cae4cd0..78cace8 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowScorecardProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowScorecardProcessor.java
@@ -79,6 +79,7 @@ class HelsinkiServiceNowScorecardProcessor extends AbstractServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_ELEMENTS_FILTER, in)
             .query(ServiceNowParams.SYSPARM_BREAKDOWN_RELATION, in)
             .query(ServiceNowParams.SYSPARM_INCLUDE_SCORE_NOTES, in)
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCartsProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCartsProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCartsProcessor.java
index 99b1d52..d890172 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCartsProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCartsProcessor.java
@@ -67,6 +67,7 @@ class HelsinkiServiceNowServiceCatalogCartsProcessor extends AbstractServiceNowP
             .path(apiVersion)
             .path("servicecatalog")
             .path("cart")
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -94,6 +95,7 @@ class HelsinkiServiceNowServiceCatalogCartsProcessor extends AbstractServiceNowP
             .path("cart")
             .path("delivery_address")
             .path(getMandatoryRequestParamFromHeader(ServiceNowParams.PARAM_USER_ID, in))
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -120,6 +122,7 @@ class HelsinkiServiceNowServiceCatalogCartsProcessor extends AbstractServiceNowP
             .path("servicecatalog")
             .path("cart")
             .path(getMandatoryRequestParamFromHeader(ServiceNowParams.PARAM_CART_ITEM_ID, in))
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(in, responseModel, response);
@@ -148,6 +151,7 @@ class HelsinkiServiceNowServiceCatalogCartsProcessor extends AbstractServiceNowP
             .path("cart")
             .path(getMandatoryRequestParamFromHeader(ServiceNowParams.PARAM_SYS_ID, in))
             .path("empty")
+            .query(responseModel)
             .invoke(HttpMethod.DELETE);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -178,6 +182,7 @@ class HelsinkiServiceNowServiceCatalogCartsProcessor extends AbstractServiceNowP
             .path("servicecatalog")
             .path("cart")
             .path("checkout")
+            .query(responseModel)
             .invoke(HttpMethod.POST);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -205,6 +210,7 @@ class HelsinkiServiceNowServiceCatalogCartsProcessor extends AbstractServiceNowP
             .path("servicecatalog")
             .path("cart")
             .path("submit_order")
+            .query(responseModel)
             .invoke(HttpMethod.POST);
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCategoriesProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCategoriesProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCategoriesProcessor.java
index e81ef73..bd5e905 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCategoriesProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogCategoriesProcessor.java
@@ -61,6 +61,7 @@ class HelsinkiServiceNowServiceCatalogCategoriesProcessor extends AbstractServic
             .path("categories")
             .path(ObjectHelper.notNull(sysId, "sysId"))
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogItemsProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogItemsProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogItemsProcessor.java
index f8824ed..c0520c1 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogItemsProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogItemsProcessor.java
@@ -78,6 +78,7 @@ class HelsinkiServiceNowServiceCatalogItemsProcessor extends AbstractServiceNowP
                 .query(ServiceNowParams.SYSPARM_OFFSET, in)
                 .query(ServiceNowParams.SYSPARM_CATALOG, in)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET)
             : client.reset()
                 .types(MediaType.APPLICATION_JSON_TYPE)
@@ -87,6 +88,7 @@ class HelsinkiServiceNowServiceCatalogItemsProcessor extends AbstractServiceNowP
                 .path("items")
                 .path(sysId)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -117,6 +119,7 @@ class HelsinkiServiceNowServiceCatalogItemsProcessor extends AbstractServiceNowP
             .path(ObjectHelper.notNull(sysId, "sysId"))
             .path("submit_guide")
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(in, responseModel, response);
@@ -145,6 +148,7 @@ class HelsinkiServiceNowServiceCatalogItemsProcessor extends AbstractServiceNowP
             .path("items")
             .path(ObjectHelper.notNull(sysId, "sysId"))
             .path("submit_guide")
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(in, responseModel, response);
@@ -173,6 +177,7 @@ class HelsinkiServiceNowServiceCatalogItemsProcessor extends AbstractServiceNowP
             .path("items")
             .path(ObjectHelper.notNull(sysId, "sysId"))
             .path("add_to_cart")
+            .query(responseModel)
             .invoke(HttpMethod.POST);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -203,6 +208,7 @@ class HelsinkiServiceNowServiceCatalogItemsProcessor extends AbstractServiceNowP
             .path(ObjectHelper.notNull(sysId, "sysId"))
             .path("submit_producer")
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogProcessor.java
index 47d52b1..42b5da3 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowServiceCatalogProcessor.java
@@ -67,6 +67,7 @@ class HelsinkiServiceNowServiceCatalogProcessor extends AbstractServiceNowProces
                 .query(ServiceNowParams.SYSPARM_LIMIT, in)
                 .query(ServiceNowParams.SYSPARM_QUERY, in)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET)
             : client.reset()
                 .types(MediaType.APPLICATION_JSON_TYPE)
@@ -76,6 +77,7 @@ class HelsinkiServiceNowServiceCatalogProcessor extends AbstractServiceNowProces
                 .path("catalogs")
                 .path(sysId)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);
@@ -108,6 +110,7 @@ class HelsinkiServiceNowServiceCatalogProcessor extends AbstractServiceNowProces
             .query(ServiceNowParams.SYSPARM_LIMIT, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
             .query(ServiceNowParams.SYSPARM_OFFSET, in)
+            .query(responseModel)
             .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(in, responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowTableProcessor.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowTableProcessor.java b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowTableProcessor.java
index 05be850..8e62408 100644
--- a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowTableProcessor.java
+++ b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/releases/helsinki/HelsinkiServiceNowTableProcessor.java
@@ -71,6 +71,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
                 .query(ServiceNowParams.SYSPARM_LIMIT, in)
                 .query(ServiceNowParams.SYSPARM_OFFSET, in)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET)
             : client.reset()
                 .types(MediaType.APPLICATION_JSON_TYPE)
@@ -83,6 +84,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
                 .query(ServiceNowParams.SYSPARM_EXCLUDE_REFERENCE_LINK, in)
                 .query(ServiceNowParams.SYSPARM_FIELDS, in)
                 .query(ServiceNowParams.SYSPARM_VIEW, in)
+                .query(responseModel)
                 .invoke(HttpMethod.GET);
 
         setBodyAndHeaders(exchange.getIn(), responseModel, response);
@@ -101,6 +103,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
         final String sysId = getSysID(in);
 
         validateBody(in, requestModel);
+
         Response response = client.reset()
             .types(MediaType.APPLICATION_JSON_TYPE)
             .path("now")
@@ -113,6 +116,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE, in)
             .query(ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.POST, in.getMandatoryBody());
 
         setBodyAndHeaders(exchange.getIn(), responseModel, response);
@@ -131,6 +135,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
         final String sysId = getSysID(in);
 
         validateBody(in, requestModel);
+
         Response response = client.reset()
             .types(MediaType.APPLICATION_JSON_TYPE)
             .path("now")
@@ -144,6 +149,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE, in)
             .query(ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke(HttpMethod.PUT, in.getMandatoryBody());
 
         setBodyAndHeaders(exchange.getIn(), responseModel, response);
@@ -167,6 +173,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
             .path("table")
             .path(tableName)
             .path(ObjectHelper.notNull(sysId, "sysId"))
+            .query(responseModel)
             .invoke(HttpMethod.DELETE, null);
 
         setBodyAndHeaders(exchange.getIn(), responseModel, response);
@@ -185,6 +192,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
         final String sysId = getSysID(in);
 
         validateBody(in, requestModel);
+
         Response response = client.reset()
             .types(MediaType.APPLICATION_JSON_TYPE)
             .path("now")
@@ -198,6 +206,7 @@ class HelsinkiServiceNowTableProcessor extends AbstractServiceNowProcessor {
             .query(ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE, in)
             .query(ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD, in)
             .query(ServiceNowParams.SYSPARM_VIEW, in)
+            .query(responseModel)
             .invoke("PATCH", in.getMandatoryBody());
 
         setBodyAndHeaders(exchange.getIn(), responseModel, response);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableTest.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableTest.java b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableTest.java
index 62ba190..e775e85 100644
--- a/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableTest.java
+++ b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableTest.java
@@ -23,6 +23,7 @@ import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.component.servicenow.model.Incident;
+import org.apache.camel.component.servicenow.model.IncidentWithParms;
 import org.junit.Test;
 
 public class ServiceNowTableTest extends ServiceNowTestSupport {
@@ -57,6 +58,38 @@ public class ServiceNowTableTest extends ServiceNowTestSupport {
     }
 
     @Test
+    public void testRetrieveSomeWithParams() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:servicenow");
+        mock.expectedMessageCount(1);
+
+        template().sendBodyAndHeaders(
+            "direct:servicenow",
+            null,
+            kvBuilder()
+                .put(ServiceNowConstants.RESOURCE, "table")
+                .put(ServiceNowConstants.ACTION, ServiceNowConstants.ACTION_RETRIEVE)
+                .put(ServiceNowParams.SYSPARM_LIMIT, 10)
+                .put(ServiceNowParams.SYSPARM_EXCLUDE_REFERENCE_LINK, false)
+                .put(ServiceNowParams.PARAM_TABLE_NAME, "incident")
+                .put(ServiceNowConstants.MODEL, IncidentWithParms.class)
+                .build()
+        );
+
+        mock.assertIsSatisfied();
+
+        Exchange exchange = mock.getExchanges().get(0);
+        List<Incident> items = exchange.getIn().getBody(List.class);
+
+        assertNotNull(items);
+        assertFalse(items.isEmpty());
+        assertTrue(items.size() <= 10);
+        assertNotNull(exchange.getIn().getHeader(ServiceNowConstants.RESPONSE_TYPE));
+        assertNotNull(exchange.getIn().getHeader(ServiceNowConstants.OFFSET_FIRST));
+        assertNotNull(exchange.getIn().getHeader(ServiceNowConstants.OFFSET_NEXT));
+        assertNotNull(exchange.getIn().getHeader(ServiceNowConstants.OFFSET_LAST));
+    }
+
+    @Test
     public void testRetrieveSomeWithDefaults() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:servicenow-defaults");
         mock.expectedMessageCount(1);

http://git-wip-us.apache.org/repos/asf/camel/blob/05aa433e/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/model/IncidentWithParms.java
----------------------------------------------------------------------
diff --git a/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/model/IncidentWithParms.java b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/model/IncidentWithParms.java
new file mode 100644
index 0000000..03ff9ff
--- /dev/null
+++ b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/model/IncidentWithParms.java
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.component.servicenow.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.apache.camel.component.servicenow.annotations.ServiceNowSysParm;
+
+@ServiceNowSysParm(name = "sysparm_exclude_reference_link", value = "true")
+@ServiceNowSysParm(name = "sysparm_fields", value = "id%2Cnumber%2Ccaller_id")
+@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class IncidentWithParms {
+    @JsonProperty("sys_id")
+    private String id;
+    @JsonProperty("number")
+    private String number;
+    @JsonProperty("caller_id")
+    private String callerId;
+
+    public IncidentWithParms() {
+    }
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
+
+    public String getCallerId() {
+        return callerId;
+    }
+
+    public void setCallerId(String callerId) {
+        this.callerId = callerId;
+    }
+}