You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streams.apache.org by sb...@apache.org on 2019/07/16 16:32:16 UTC

[streams] branch master updated: STREAMS-646 support new Multi-Field requests in streams-processor-fullcontact

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

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


The following commit(s) were added to refs/heads/master by this push:
     new e6fce17  STREAMS-646 support new Multi-Field requests in streams-processor-fullcontact
     new 700bc22  Merge pull request #484 from steveblackmon/STREAMS-646
e6fce17 is described below

commit e6fce17a75a788f7b3fa74a01d22c1834f57a867
Author: Steve Blackmon <sb...@apache.org>
AuthorDate: Thu Jul 11 16:43:41 2019 -0500

    STREAMS-646 support new Multi-Field requests in streams-processor-fullcontact
---
 .../streams-processor-fullcontact/pom.xml          | 24 +++++++-------
 .../apache/streams/fullcontact/FullContact.java    | 24 ++++++++++----
 .../fullcontact/api/EnrichPersonRequest.json       | 37 ++++++++++++++++++----
 .../streams/fullcontact/api/LocationQuery.json     | 35 ++++++++++++++++++++
 .../apache/streams/fullcontact/api/NameQuery.json  | 23 ++++++++++++++
 .../streams/fullcontact/api/ProfileQuery.json      | 26 +++++++++++++++
 .../config/FullContactConfiguration.json           |  3 ++
 7 files changed, 145 insertions(+), 27 deletions(-)

diff --git a/streams-contrib/streams-processor-fullcontact/pom.xml b/streams-contrib/streams-processor-fullcontact/pom.xml
index dc9440c..5a0c6cd 100644
--- a/streams-contrib/streams-processor-fullcontact/pom.xml
+++ b/streams-contrib/streams-processor-fullcontact/pom.xml
@@ -87,20 +87,10 @@
             </testResource>
         </testResources>
         <plugins>
-            <!--<plugin>-->
-                <!--<groupId>org.apache.streams.plugins</groupId>-->
-                <!--<artifactId>streams-plugin-pojo</artifactId>-->
-                <!--<version>${project.version}</version>-->
-                <!--<configuration>-->
-                    <!--<sourcePaths>-->
-                        <!--<sourcePath>${project.basedir}/src/main/jsonschema</sourcePath>-->
-                    <!--</sourcePaths>-->
-                <!--</configuration>-->
-            <!--</plugin>-->
             <plugin>
                 <groupId>org.jsonschema2pojo</groupId>
                 <artifactId>jsonschema2pojo-maven-plugin</artifactId>
-                <version>0.5.1</version>
+                <version>1.0.1</version>
                 <executions>
                     <execution>
                         <phase>generate-sources</phase>
@@ -110,7 +100,9 @@
                     </execution>
                 </executions>
                 <configuration>
-                    <annotationStyle>none</annotationStyle>
+                    <annotationStyle>jackson2</annotationStyle>
+                    <customAnnotator>org.apache.streams.plugins.JuneauPojoAnnotator</customAnnotator>
+                    <generateBuilders>true</generateBuilders>
                     <includeAdditionalProperties>false</includeAdditionalProperties>
                     <includeHashcodeAndEquals>true</includeHashcodeAndEquals>
                     <outputDirectory>${project.basedir}/target/generated-sources/pojo</outputDirectory>
@@ -120,10 +112,16 @@
                     <sourcePaths>
                         <sourcePath>${project.basedir}/src/main/jsonschema</sourcePath>
                     </sourcePaths>
-                    <useCommonsLang3>true</useCommonsLang3>
                     <useDoubleNumbers>true</useDoubleNumbers>
                     <useLongIntegers>true</useLongIntegers>
                 </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.streams.plugins</groupId>
+                        <artifactId>streams-plugin-pojo</artifactId>
+                        <version>${project.version}</version>
+                    </dependency>
+                </dependencies>
             </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
diff --git a/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java
index e153825..0d0eff8 100644
--- a/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java
+++ b/streams-contrib/streams-processor-fullcontact/src/main/java/org/apache/streams/fullcontact/FullContact.java
@@ -34,6 +34,7 @@ import org.apache.juneau.rest.client.RestClientBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.StringReader;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
@@ -47,11 +48,11 @@ public class FullContact implements CompanyEnrichment, PersonEnrichment {
 
   private FullContactConfiguration configuration;
 
-  JsonParser parser;
-  JsonSerializer serializer;
+  protected JsonParser parser;
+  protected JsonSerializer serializer;
 
-  RestClientBuilder restClientBuilder;
-  RestClient restClient;
+  protected RestClientBuilder restClientBuilder;
+  protected RestClient restClient;
 
   private static Map<FullContactConfiguration, FullContact> INSTANCE_MAP = new ConcurrentHashMap<>();
 
@@ -88,6 +89,9 @@ public class FullContact implements CompanyEnrichment, PersonEnrichment {
       .parser(parser)
       .serializer(serializer)
       .rootUrl(baseUrl());
+    if(configuration.getDebug() == true) {
+      this.restClientBuilder.debug();
+    }
     this.restClient = restClientBuilder.build();
   }
 
@@ -98,9 +102,12 @@ public class FullContact implements CompanyEnrichment, PersonEnrichment {
   @Override
   public CompanySummary enrichCompany(EnrichCompanyRequest request) {
     try {
+      String requestJson = serializer.serialize(request);
       RestCall call = restClient
         .doPost(baseUrl() + "company.enrich")
-        .input(request);
+        .accept("application/json")
+        .contentType("application/json")
+        .body(new StringReader(requestJson));
       String responseJson = call.getResponseAsString();
       CompanySummary result = parser.parse(responseJson, CompanySummary.class);
       return result;
@@ -115,9 +122,12 @@ public class FullContact implements CompanyEnrichment, PersonEnrichment {
   @Override
   public PersonSummary enrichPerson(EnrichPersonRequest request) {
     try {
+      String requestJson = serializer.serialize(request);
       RestCall call = restClient
-        .doPost(baseUrl() + "company.enrich")
-        .input(request);
+        .doPost(baseUrl() + "person.enrich")
+        .accept("application/json")
+        .contentType("application/json")
+        .body(new StringReader(requestJson));
       String responseJson = call.getResponseAsString();
       PersonSummary result = parser.parse(responseJson, PersonSummary.class);
       return result;
diff --git a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json
index 1e7d2a9..b4862c2 100644
--- a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json
+++ b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/EnrichPersonRequest.json
@@ -9,19 +9,42 @@
   "properties": {
     "email": {
       "type": "string",
-      "description": "The email address of the contact. (Queryable)"
+      "description": "One email addresses of the contact. Can accept cleartext, an MD5 or SHA-256 hash representation of the email address to query. Be certain to lowercase and trim the email address prior to hashing. There is a limit of 10 hashed emails (Queryable)"
     },
-    "emailHash": {
+    "emails": {
+      "type": "array",
+      "description": "One or many email addresses of the contact. Can accept cleartext, an MD5 or SHA-256 hash representation of the email address to query. Be certain to lowercase and trim the email address prior to hashing. (Queryable)",
+      "items": {
+        "type": "string"
+      }
+    },
+    "phone": {
       "type": "string",
-      "description": "Either an MD5 or SHA-256 hash representation of the email address to query. Be certain to lowercase and trim the email address prior to hashing. (Queryable)"
+      "description": "Phone number of the contact. (Queryable)"
+    },
+    "phones": {
+      "type": "array",
+      "description": "One or many phone numbers of the contact. (Queryable)",
+      "items": {
+        "type": "string"
+      }
+    },
+    "location": {
+      "$ref": "./LocationQuery.json"
+    },
+    "name": {
+      "$ref": "./NameQuery.json"
+    },
+    "profiles": {
+      "type": "array",
+      "description": "URLs, IDs and usernames to the profiles on the social platform. (Queryable)",
+      "items": {
+        "$ref": "./ProfileQuery.json"
+      }
     },
     "twitter": {
       "type": "string",
       "description": "Twitter handle of the contact. Acceptable formats include handle (with or without \"@\"), as well as the URL to the profile. (Queryable)"
-    },
-    "phone": {
-      "type": "string",
-      "description": "Phone number of the contact. (Queryable)"
     }
   }
 }
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/LocationQuery.json b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/LocationQuery.json
new file mode 100644
index 0000000..7143ee6
--- /dev/null
+++ b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/LocationQuery.json
@@ -0,0 +1,35 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema",
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0"
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.LocationQuery",
+  "properties": {
+    "addressLine1": {
+      "type": "string",
+      "description": "The first address line for each location. Only queryable when provided in conjunction with name."
+    },
+    "addressLine2": {
+      "type": "string",
+      "description": "The second address line for each location. Only queryable when provided in conjunction with name."
+    },
+    "city": {
+      "type": "string",
+      "description": "The city of each location. Only queryable when provided in conjunction with name."
+    },
+    "region": {
+      "type": "string",
+      "description": "The region of each location. This is often the state or province. Only queryable when provided in conjunction with name."
+    },
+    "regionCode": {
+      "type": "string",
+      "description": "The region code of each location. Only queryable when provided in conjunction with name."
+    },
+    "postalCode": {
+      "type": "string",
+      "description": "The postal or ZIP code for each location. Can accept Zip + 4 or Zip. Only queryable when provided in conjunction with name."
+    }
+  }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/NameQuery.json b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/NameQuery.json
new file mode 100644
index 0000000..d8ce3fe
--- /dev/null
+++ b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/NameQuery.json
@@ -0,0 +1,23 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema",
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0"
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.NameQuery",
+  "properties": {
+    "full": {
+      "type": "string",
+      "description": "Full name of the contact (givenName, familyName). Only queryable when provided in conjunction with postal address."
+    },
+    "given": {
+      "type": "string",
+      "description": "The given name (first name) of the individual. Only queryable when provided in conjunction with postal address."
+    },
+    "family": {
+      "type": "string",
+      "description": "The family name (last name) of the individual. Only queryable when provided in conjunction with postal address."
+    }
+  }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/ProfileQuery.json b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/ProfileQuery.json
new file mode 100644
index 0000000..404ebbc
--- /dev/null
+++ b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/api/ProfileQuery.json
@@ -0,0 +1,26 @@
+{
+  "type": "object",
+  "$schema": "http://json-schema.org/draft-03/schema",
+  "$license": [
+    "http://www.apache.org/licenses/LICENSE-2.0"
+  ],
+  "id": "#",
+  "javaType": "org.apache.streams.fullcontact.api.ProfileQuery",
+  "properties": {
+    "service": {
+      "type": "string"
+    },
+    "url": {
+      "type": "string",
+      "description": "URL to the profile on the social platform."
+    },
+    "userid": {
+      "type": "string",
+      "description": "User ID associated with the profile."
+    },
+    "username": {
+      "type": "string",
+      "description": "Displayable username of the profile."
+    }
+  }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json
index 7ca3ac6..075e7d7 100644
--- a/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json
+++ b/streams-contrib/streams-processor-fullcontact/src/main/jsonschema/org/apache/streams/fullcontact/config/FullContactConfiguration.json
@@ -8,6 +8,9 @@
   "javaInterfaces": ["java.io.Serializable"],
   "javaType": "org.apache.streams.fullcontact.config.FullContactConfiguration",
   "properties": {
+    "debug": {
+      "type": "boolean"
+    },
     "token": {
       "type": "string"
     }