You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2018/07/31 13:44:14 UTC

[camel] branch camel-2.22.x updated: CAMEL-12701: servicenow: meta data serivce ignores tables without parent when retrieving table list

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

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


The following commit(s) were added to refs/heads/camel-2.22.x by this push:
     new 6cc15c7  CAMEL-12701: servicenow: meta data serivce ignores tables without parent when retrieving table list
6cc15c7 is described below

commit 6cc15c78272bdb97ee178ca0c3dea83e70b8ec52
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Tue Jul 31 14:04:56 2018 +0200

    CAMEL-12701: servicenow: meta data serivce ignores tables without parent when retrieving table list
---
 .../servicenow/ServiceNowMetaDataExtension.java    | 51 ++++++++++++----------
 1 file changed, 28 insertions(+), 23 deletions(-)

diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java
index 6f3f5de..9912442 100644
--- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java
+++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java
@@ -233,38 +233,43 @@ final class ServiceNowMetaDataExtension extends AbstractMetaDataExtension {
             final JsonNode node = response.get();
             final JsonNode sysId = node.findValue("sys_id");
 
-            if (sysId == null) {
-                response = context.getClient().reset()
-                    .types(MediaType.APPLICATION_JSON_TYPE)
-                    .path("now")
-                    .path(context.getConfiguration().getApiVersion())
-                    .path("table")
-                    .path("sys_db_object")
-                    .query("sysparm_exclude_reference_link", "true")
-                    .query("sysparm_fields", "name%2Csys_name")
-                    .trasform(HttpMethod.GET, this::findResultNode);
-            } else {
-                response = context.getClient().reset()
-                    .types(MediaType.APPLICATION_JSON_TYPE)
-                    .path("now")
-                    .path(context.getConfiguration().getApiVersion())
-                    .path("table")
-                    .path("sys_db_object")
-                    .query("sysparm_exclude_reference_link", "true")
-                    .query("sysparm_fields", "name%2Csys_name")
-                    .queryF("sysparm_query", "super_class!=%s", sysId.textValue())
-                    .trasform(HttpMethod.GET, this::findResultNode);
-            }
+            response = context.getClient().reset()
+                .types(MediaType.APPLICATION_JSON_TYPE)
+                .path("now")
+                .path(context.getConfiguration().getApiVersion())
+                .path("table")
+                .path("sys_db_object")
+                .query("sysparm_exclude_reference_link", "true")
+                .query("sysparm_fields", "name%2Csys_name%2Csuper_class")
+                .trasform(HttpMethod.GET, this::findResultNode);
 
             if (response.isPresent()) {
                 final ObjectNode root = context.getConfiguration().getOrCreateMapper().createObjectNode();
 
                 processResult(response.get(), n -> {
+                    final JsonNode superClass = n.findValue("super_class");
                     final JsonNode name = n.findValue("name");
                     final JsonNode label = n.findValue("sys_name");
 
+                    if (superClass != null) {
+                        final String impId = sysId != null ? sysId.textValue() : null;
+                        final String superId = superClass.textValue();
+
+                        if (impId != null && superId != null && ObjectHelper.equal(impId, superId)) {
+                            LOGGER.debug("skip table: name={}, label={} because it refers to an import set", name, label);
+                            return;
+                        }
+                    }
+
                     if (name != null && label != null) {
-                        root.put(name.textValue(), label.textValue());
+                        String key = name.textValue();
+                        String val = label.textValue();
+
+                        if (ObjectHelper.isEmpty(val)) {
+                            val = key;
+                        }
+
+                        root.put(key, val);
                     }
                 });