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 <lburgazz...@gmail.com> Authored: Tue Aug 1 19:50:17 2017 +0200 Committer: lburgazzoli <lburgazz...@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; + } +}