Repository: camel
Updated Branches:
  refs/heads/camel-2.18.x 629f0815b -> fd41114dd


CAMEL-10467: camel-servicenow : ServiceNowConstants not backward-compatible 
(2.18.0 --> 2.18.1)


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

Branch: refs/heads/camel-2.18.x
Commit: fd41114ddeaf752d809791cdcac2322bc9feec15
Parents: 629f081
Author: lburgazzoli <[email protected]>
Authored: Thu Nov 10 18:20:20 2016 +0100
Committer: lburgazzoli <[email protected]>
Committed: Thu Nov 10 18:20:20 2016 +0100

----------------------------------------------------------------------
 .../servicenow/ServiceNowConstants.java         |  91 ++++++
 ...viceNowTableWithDeprecatedConstantsTest.java | 323 +++++++++++++++++++
 .../ServiceNowTestWithDeprecatedConstants.java  | 111 +++++++
 3 files changed, 525 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/fd41114d/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowConstants.java
 
b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowConstants.java
index e699dd7..e5f93c3 100644
--- 
a/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowConstants.java
+++ 
b/components/camel-servicenow/src/main/java/org/apache/camel/component/servicenow/ServiceNowConstants.java
@@ -69,6 +69,97 @@ public final class ServiceNowConstants {
     public static final String LINK_FIRST = "first";
     public static final String LINK_LAST = "last";
 
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.PARAM_TABLE_NAME
+     */
+    public static final String TABLE = "CamelServiceNowTable";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.PARAM_SYS_ID
+     */
+    public static final String SYSPARM_ID = "CamelServiceNowSysId";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_QUERY
+     */
+    public static final String SYSPARM_QUERY = "CamelServiceNowQuery";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_DISPLAY_VALUE
+     */
+    public static final String SYSPARM_DISPLAY_VALUE = 
"CamelServiceNowDisplayValue";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_INPUT_DISPLAY_VALUE
+     */
+    public static final String SYSPARM_INPUT_DISPLAY_VALUE = 
"CamelServiceNowInputDisplayValue";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_EXCLUDE_REFERENCE_LINK
+     */
+    public static final String SYSPARM_EXCLUDE_REFERENCE_LINK = 
"CamelServiceNowExcludeReferenceLink";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_FIELDS
+     */
+    public static final String SYSPARM_FIELDS = "CamelServiceNowFields";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_MIN_FIELDS
+     */
+    public static final String SYSPARM_MIN_FIELDS = "CamelServiceNowMinFields";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_MAX_FIELDS
+     */
+    public static final String SYSPARM_MAX_FIELDS = "CamelServiceNowMaxFields";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_SUM_FIELDS
+     */
+    public static final String SYSPARM_SUM_FIELDS = "CamelServiceNowSumFields";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_AVG_FIELDS
+     */
+    public static final String SYSPARM_AVG_FIELDS = "CamelServiceNowAvgFields";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_LIMIT
+     */
+    public static final String SYSPARM_LIMIT = "CamelServiceNowLimit";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_VIEW
+     */
+    public static final String SYSPARM_VIEW = "CamelServiceNowView";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_SUPPRESS_AUTO_SYS_FIELD
+     */
+    public static final String SYSPARM_SUPPRESS_AUTO_SYS_FIELD = 
"CamelServiceNowSuppressAutoSysField";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_COUNT
+     */
+    public static final String SYSPARM_COUNT = "CamelServiceNowCount";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_GROUP_BY
+     */
+    public static final String SYSPARM_GROUP_BY = "CamelServiceNowGroupBy";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_ORDER_BY
+     */
+    public static final String SYSPARM_ORDER_BY = "CamelServiceNowOrderBy";
+
+    /**
+     * @deprecated As of release 2.18.1, replaced by 
ServiceNowParams.SYSPARM_HAVING
+     */
+    public static final String SYSPARM_HAVING = "CamelServiceNowHaving";
+
     private ServiceNowConstants() {
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/fd41114d/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableWithDeprecatedConstantsTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableWithDeprecatedConstantsTest.java
 
b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableWithDeprecatedConstantsTest.java
new file mode 100644
index 0000000..2f26810
--- /dev/null
+++ 
b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTableWithDeprecatedConstantsTest.java
@@ -0,0 +1,323 @@
+/**
+ * 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;
+
+import java.util.List;
+
+import org.apache.camel.CamelExecutionException;
+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.junit.Test;
+
+public class ServiceNowTableWithDeprecatedConstantsTest extends 
ServiceNowTestSupport {
+
+    @Test
+    public void testRetrieveSome() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:servicenow");
+        mock.expectedMessageCount(1);
+
+        template().sendBodyAndHeaders(
+            "direct:servicenow",
+            null,
+            new KVBuilder()
+                .put(ServiceNowConstants.RESOURCE, "table")
+                .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                .put(ServiceNowConstants.SYSPARM_LIMIT, "10")
+                .put(ServiceNowConstants.TABLE, "incident")
+                .build()
+        );
+
+        mock.assertIsSatisfied();
+
+        Exchange exchange = mock.getExchanges().get(0);
+        List<Incident> items = exchange.getIn().getBody(List.class);
+
+        assertNotNull(items);
+        assertTrue(items.size() <= 10);
+    }
+
+    @Test
+    public void testRetrieveSomeWithDefaults() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:servicenow-defaults");
+        mock.expectedMessageCount(1);
+
+        template().sendBodyAndHeaders(
+            "direct:servicenow-defaults",
+            null,
+            new KVBuilder()
+                .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                .put(ServiceNowConstants.SYSPARM_LIMIT, "10")
+                .build()
+        );
+
+        mock.assertIsSatisfied();
+
+        Exchange exchange = mock.getExchanges().get(0);
+        List<Incident> items = exchange.getIn().getBody(List.class);
+
+        assertNotNull(items);
+        assertTrue(items.size() <= 10);
+    }
+
+    @Test
+    public void testIncidentWorkflow() throws Exception {
+
+        Incident incident = null;
+        String sysId;
+        String number;
+        MockEndpoint mock = getMockEndpoint("mock:servicenow");
+
+        // ************************
+        // Create incident
+        // ************************
+
+        {
+            mock.reset();
+            mock.expectedMessageCount(1);
+
+            incident = new Incident();
+            incident.setDescription("my incident");
+            incident.setShortDescription("An incident");
+            incident.setSeverity(1);
+            incident.setImpact(1);
+
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                incident,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_CREATE)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .build()
+            );
+
+            mock.assertIsSatisfied();
+
+            incident = 
mock.getExchanges().get(0).getIn().getBody(Incident.class);
+            sysId = incident.getId();
+            number = incident.getNumber();
+
+            
LOGGER.info("****************************************************");
+            LOGGER.info("* Incident created");
+            LOGGER.info("*  sysid  = {}", sysId);
+            LOGGER.info("*  number = {}", number);
+            
LOGGER.info("****************************************************");
+        }
+
+        // ************************
+        // Search for the incident
+        // ************************
+
+        {
+            mock.reset();
+            mock.expectedMessageCount(1);
+
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                null,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .put(ServiceNowConstants.SYSPARM_QUERY, "number=" + number)
+                    .build()
+            );
+
+            mock.assertIsSatisfied();
+
+            List<Incident> incidents = 
mock.getExchanges().get(0).getIn().getBody(List.class);
+            assertEquals(1, incidents.size());
+            assertEquals(number, incidents.get(0).getNumber());
+            assertEquals(sysId, incidents.get(0).getId());
+        }
+
+        // ************************
+        // Modify the incident
+        // ************************
+
+        {
+            mock.reset();
+            mock.expectedMessageCount(1);
+
+            incident = new Incident();
+            incident.setDescription("my incident");
+            incident.setShortDescription("The incident");
+            incident.setSeverity(2);
+            incident.setImpact(3);
+
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                incident,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_MODIFY)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .put(ServiceNowConstants.SYSPARM_ID, sysId)
+                    .build()
+            );
+
+            mock.assertIsSatisfied();
+
+            incident = 
mock.getExchanges().get(0).getIn().getBody(Incident.class);
+            assertEquals(number, incident.getNumber());
+            assertEquals(2, incident.getSeverity());
+            assertEquals(3, incident.getImpact());
+            assertEquals("The incident", incident.getShortDescription());
+        }
+
+        // ************************
+        // Retrieve it via query
+        // ************************
+
+        {
+            mock.reset();
+            mock.expectedMessageCount(1);
+
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                null,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .put(ServiceNowConstants.SYSPARM_QUERY, "number=" + number)
+                    .build()
+            );
+
+            mock.assertIsSatisfied();
+
+            List<Incident> incidents = 
mock.getExchanges().get(0).getIn().getBody(List.class);
+            assertEquals(1, incidents.size());
+            assertEquals(number, incidents.get(0).getNumber());
+            assertEquals(sysId, incidents.get(0).getId());
+            assertEquals(2, incidents.get(0).getSeverity());
+            assertEquals(3, incidents.get(0).getImpact());
+            assertEquals("The incident", 
incidents.get(0).getShortDescription());
+        }
+
+        // ************************
+        // Retrieve by sys id
+        // ************************
+
+        {
+            mock.reset();
+            mock.expectedMessageCount(1);
+
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                null,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .put(ServiceNowConstants.SYSPARM_ID, sysId)
+                    .build()
+            );
+
+            mock.assertIsSatisfied();
+
+            incident = 
mock.getExchanges().get(0).getIn().getBody(Incident.class);
+            assertEquals(2, incident.getSeverity());
+            assertEquals(3, incident.getImpact());
+            assertEquals("The incident", incident.getShortDescription());
+            assertEquals(number, incident.getNumber());
+        }
+
+        // ************************
+        // Delete it
+        // ************************
+
+        {
+            mock.reset();
+            mock.expectedMessageCount(1);
+
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                null,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_DELETE)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .put(ServiceNowConstants.SYSPARM_ID, sysId)
+                    .build()
+            );
+
+            mock.assertIsSatisfied();
+        }
+
+        // ************************
+        // Retrieve by id, should fail
+        // ************************
+
+        {
+            LOGGER.info("Find the record {}, should fail", sysId);
+
+            try {
+                template().sendBodyAndHeaders(
+                    "direct:servicenow",
+                    null,
+                    new KVBuilder()
+                        .put(ServiceNowConstants.RESOURCE, "table")
+                        .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                        .put(ServiceNowConstants.SYSPARM_ID, sysId)
+                        .put(ServiceNowConstants.TABLE, "incident")
+                        .build()
+                );
+
+                fail("Record " + number + " should have been deleted");
+            } catch (CamelExecutionException e) {
+                assertTrue(e.getCause() instanceof ServiceNowException);
+                // we are good
+            }
+        }
+    }
+
+    // 
*************************************************************************
+    //
+    // 
*************************************************************************
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from("direct:servicenow")
+                    .to("servicenow:{{env:SERVICENOW_INSTANCE}}"
+                        + "?userName={{env:SERVICENOW_USERNAME}}"
+                        + "&password={{env:SERVICENOW_PASSWORD}}"
+                        //+ 
"&oauthClientId={{env:SERVICENOW_OAUTH2_CLIENT_ID}}"
+                        //+ 
"&oauthClientSecret={{env:SERVICENOW_OAUTH2_CLIENT_SECRET}}"
+                        + 
"&model.incident=org.apache.camel.component.servicenow.model.Incident")
+                    
.to("log:org.apache.camel.component.servicenow?level=INFO&showAll=true")
+                    .to("mock:servicenow");
+                from("direct:servicenow-defaults")
+                    .to("servicenow:{{env:SERVICENOW_INSTANCE}}"
+                        + "?userName={{env:SERVICENOW_USERNAME}}"
+                        + "&password={{env:SERVICENOW_PASSWORD}}"
+                        //+ 
"&oauthClientId={{env:SERVICENOW_OAUTH2_CLIENT_ID}}"
+                        //+ 
"&oauthClientSecret={{env:SERVICENOW_OAUTH2_CLIENT_SECRET}}"
+                        + 
"&model.incident=org.apache.camel.component.servicenow.model.Incident"
+                        + "&resource=table"
+                        + "&table=incident")
+                    
.to("log:org.apache.camel.component.servicenow?level=INFO&showAll=true")
+                    .to("mock:servicenow-defaults");
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/fd41114d/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTestWithDeprecatedConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTestWithDeprecatedConstants.java
 
b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTestWithDeprecatedConstants.java
new file mode 100644
index 0000000..793bdf0
--- /dev/null
+++ 
b/components/camel-servicenow/src/test/java/org/apache/camel/component/servicenow/ServiceNowTestWithDeprecatedConstants.java
@@ -0,0 +1,111 @@
+/**
+ * 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;
+
+import java.util.UUID;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.builder.RouteBuilder;
+import org.junit.Test;
+
+public class ServiceNowTestWithDeprecatedConstants extends 
ServiceNowTestSupport {
+
+    @Test
+    public void testExceptions() throws Exception {
+        // 404
+        try {
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                null,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                    .put(ServiceNowConstants.SYSPARM_QUERY, "number=" + 
UUID.randomUUID().toString())
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .build()
+            );
+        } catch (CamelExecutionException e) {
+            assertTrue(e.getCause() instanceof ServiceNowException);
+
+            ServiceNowException sne = (ServiceNowException)e.getCause();
+            assertEquals("failure", sne.getStatus());
+            assertTrue(sne.getMessage().contains("No Record found"));
+            assertTrue(sne.getDetail().contains("Records matching query not 
found"));
+        }
+
+        // 400
+        try {
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                null,
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_RETRIEVE)
+                    .put(ServiceNowConstants.SYSPARM_QUERY, "number=" + 
UUID.randomUUID().toString())
+                    .put(ServiceNowConstants.TABLE, "notExistingTable")
+                    .build()
+            );
+        } catch (CamelExecutionException e) {
+            assertTrue(e.getCause() instanceof ServiceNowException);
+
+            ServiceNowException sne = (ServiceNowException)e.getCause();
+            assertEquals("failure", sne.getStatus());
+            assertTrue(sne.getMessage().contains("Invalid table 
notExistingTable"));
+            assertNull(sne.getDetail());
+        }
+    }
+
+    @Test
+    public void testBodyMismatch() throws Exception {
+        try {
+            template().sendBodyAndHeaders(
+                "direct:servicenow",
+                "NotAnIncidentObject",
+                new KVBuilder()
+                    .put(ServiceNowConstants.RESOURCE, "table")
+                    .put(ServiceNowConstants.ACTION, 
ServiceNowConstants.ACTION_CREATE)
+                    .put(ServiceNowConstants.TABLE, "incident")
+                    .build()
+            );
+
+            fail("Should fail as body is not compatible with model defined in 
route for table incident");
+        } catch (CamelExecutionException e) {
+            assertTrue(e.getCause() instanceof IllegalArgumentException);
+        }
+    }
+
+    // 
*************************************************************************
+    //
+    // 
*************************************************************************
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                from("direct:servicenow")
+                    .to("servicenow:{{env:SERVICENOW_INSTANCE}}"
+                        + "?userName={{env:SERVICENOW_USERNAME}}"
+                        + "&password={{env:SERVICENOW_PASSWORD}}"
+                        //+ 
"&oauthClientId={{env:SERVICENOW_OAUTH2_CLIENT_ID}}"
+                        //+ 
"&oauthClientSecret={{env:SERVICENOW_OAUTH2_CLIENT_SECRET}}"
+                        + 
"&model.incident=org.apache.camel.component.servicenow.model.Incident")
+                    
.to("log:org.apache.camel.component.servicenow?level=INFO&showAll=true")
+                    .to("mock:servicenow");
+            }
+        };
+    }
+}

Reply via email to