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 2020/02/25 15:24:28 UTC
[streams] branch master updated: Resolves STREAMS-654 (#496)
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 611f68c Resolves STREAMS-654 (#496)
611f68c is described below
commit 611f68c339eeb3f68f8c7792345e2ca69270035e
Author: Brian Hodge <br...@peoplepattern.com>
AuthorDate: Tue Feb 25 09:24:21 2020 -0600
Resolves STREAMS-654 (#496)
* STREAMS-654 Processor module for api.thedatagroup.com
* STREAMS-654 Processor module for api.thedatagroup.com
* STREAMS-654 Processor module for api.thedatagroup.com
* STREAMS-654 Processor module for api.thedatagroup.com
Co-authored-by: Steve Blackmon <sb...@apache.org>
---
streams-contrib/pom.xml | 1 +
.../streams-processor-thedatagroup/README.md | 8 +
.../streams-processor-thedatagroup/pom.xml | 152 ++++++++++++
.../apache/streams/thedatagroup/SyncAppend.java | 44 ++++
.../apache/streams/thedatagroup/SyncLookup.java | 44 ++++
.../apache/streams/thedatagroup/TheDataGroup.java | 267 +++++++++++++++++++++
.../streams/thedatagroup/api/AppendRequest.json | 39 +++
.../api/DemographicsAppendResponse.json | 36 +++
.../api/DemographicsAppendResponseAddress.json | 41 ++++
.../DemographicsAppendResponseDemographics.json | 31 +++
...mographicsAppendResponseDemographicsFamily.json | 26 ++
...csAppendResponseDemographicsFamilyChildren.json | 31 +++
...mographicsAppendResponseDemographicsPerson.json | 54 +++++
...sAppendResponseDemographicsPersonEducation.json | 23 ++
...csAppendResponseDemographicsPersonFinances.json | 44 ++++
...csAppendResponseDemographicsPersonLanguage.json | 20 ++
...aphicsAppendResponseDemographicsPersonRace.json | 23 ++
...AppendResponseDemographicsPersonWorkerType.json | 20 ++
...raphicsAppendResponseDemographicsResidence.json | 76 ++++++
...ppendResponseDemographicsResidenceDwelling.json | 24 ++
...ographicsAppendResponseDemographicsVehicle.json | 23 ++
.../api/DemographicsAppendResponseLifeStyles.json | 32 +++
...emographicsAppendResponseLifeStylesApparel.json | 28 +++
.../DemographicsAppendResponseLifeStylesBook.json | 17 ++
...ographicsAppendResponseLifeStylesInterests.json | 116 +++++++++
.../api/DemographicsAppendResponsePhones.json | 14 ++
.../thedatagroup/api/EmailAppendResponse.json | 23 ++
.../thedatagroup/api/EmailLookupRequest.json | 14 ++
.../streams/thedatagroup/api/IpLookupRequest.json | 14 ++
.../streams/thedatagroup/api/LookupResponse.json | 20 ++
.../thedatagroup/api/MobileAppendResponse.json | 23 ++
.../thedatagroup/api/PhoneAppendResponse.json | 23 ++
.../thedatagroup/api/PhoneAppendResponseItem.json | 17 ++
.../thedatagroup/api/PhoneLookupRequest.json | 14 ++
.../thedatagroup/api/VehicleAppendResponse.json | 26 ++
.../api/VehicleAppendResponseItem.json | 20 ++
.../config/TheDataGroupConfiguration.json | 21 ++
.../streams/thedatagroup/test/TheDataGroupIT.java | 76 ++++++
.../resources/TheDataGroupIT/TheDataGroupIT.conf | 27 +++
39 files changed, 1552 insertions(+)
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 5478aa3..b974a54 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -56,6 +56,7 @@
<module>streams-processor-peoplepattern</module>
<module>streams-processor-pipl</module>
<module>streams-processor-regex</module>
+ <module>streams-processor-thedatagroup</module>
<module>streams-processor-urls</module>
<module>streams-provider-facebook</module>
<module>streams-provider-google</module>
diff --git a/streams-contrib/streams-processor-thedatagroup/README.md b/streams-contrib/streams-processor-thedatagroup/README.md
new file mode 100644
index 0000000..2f93226
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/README.md
@@ -0,0 +1,8 @@
+Apache Streams
+Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
+--------------------------------------------------------------------------------
+
+org.apache.streams:streams-processor-thedatagroup
+===========================================
+
+Integration library for api.thedatagroup.com
diff --git a/streams-contrib/streams-processor-thedatagroup/pom.xml b/streams-contrib/streams-processor-thedatagroup/pom.xml
new file mode 100644
index 0000000..943172e
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/pom.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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
+ ~
+ ~ 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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-contrib</artifactId>
+ <version>0.6.1-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>streams-processor-thedatagroup</artifactId>
+ <name>${project.artifactId}</name>
+
+ <description>TheDataGroup API Processors</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-config</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.typesafe</groupId>
+ <artifactId>config</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-pojo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-http</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.juneau</groupId>
+ <artifactId>juneau-rest-client</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-testing</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src/main/java</sourceDirectory>
+ <testSourceDirectory>src/test/java</testSourceDirectory>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.jsonschema2pojo</groupId>
+ <artifactId>jsonschema2pojo-maven-plugin</artifactId>
+ <version>1.0.1</version>
+ <executions>
+ <execution>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <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>
+ <propertyWordDelimiters></propertyWordDelimiters>
+ <removeOldOutput>true</removeOldOutput>
+ <serializable>true</serializable>
+ <sourcePaths>
+ <sourcePath>${project.basedir}/src/main/jsonschema</sourcePath>
+ </sourcePaths>
+ <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>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/generated-sources/pojo</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/SyncAppend.java b/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/SyncAppend.java
new file mode 100644
index 0000000..7949914
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/SyncAppend.java
@@ -0,0 +1,44 @@
+/*
+ * 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
+ *
+ * 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.streams.thedatagroup;
+
+import org.apache.juneau.http.annotation.Body;
+import org.apache.juneau.remote.RemoteInterface;
+import org.apache.juneau.rest.client.remote.RemoteMethod;
+import org.apache.streams.thedatagroup.api.*;
+
+@RemoteInterface(path = "https://api.thedatagroup.com/v3/sync/append")
+public interface SyncAppend {
+
+ @RemoteMethod(method ="POST", path="/demographics")
+ public DemographicsAppendResponse appendDemographics(@Body AppendRequest request);
+
+ @RemoteMethod(method ="POST", path="/email")
+ public EmailAppendResponse appendEmail(@Body AppendRequest request);
+
+ @RemoteMethod(method ="POST", path="/mobile")
+ public MobileAppendResponse appendMobile(@Body AppendRequest request);
+
+ @RemoteMethod(method ="POST", path="/phone")
+ public PhoneAppendResponse appendPhone(@Body AppendRequest request);
+
+ @RemoteMethod(method ="POST", path="/vehicle")
+ public VehicleAppendResponse appendVehicle(@Body AppendRequest request);
+
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/SyncLookup.java b/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/SyncLookup.java
new file mode 100644
index 0000000..a6bcfaf
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/SyncLookup.java
@@ -0,0 +1,44 @@
+/*
+ * 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
+ *
+ * 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.streams.thedatagroup;
+
+import org.apache.juneau.http.annotation.Body;
+import org.apache.juneau.remote.RemoteInterface;
+import org.apache.juneau.rest.client.remote.RemoteMethod;
+import org.apache.streams.thedatagroup.api.EmailLookupRequest;
+import org.apache.streams.thedatagroup.api.IpLookupRequest;
+import org.apache.streams.thedatagroup.api.LookupResponse;
+import org.apache.streams.thedatagroup.api.PhoneLookupRequest;
+
+@RemoteInterface(path = "https://api.thedatagroup.com/v3/sync/lookup")
+public interface SyncLookup {
+
+ @RemoteMethod(method ="POST", path="/email")
+ public LookupResponse lookupEmail(@Body EmailLookupRequest request);
+
+ @RemoteMethod(method ="POST", path="/mobile")
+ public LookupResponse lookupMobile(@Body PhoneLookupRequest request);
+
+ @RemoteMethod(method ="POST", path="/ip")
+ public LookupResponse lookupIp(@Body IpLookupRequest request);
+
+ @RemoteMethod(method ="POST", path="/phone")
+ public LookupResponse lookupPhone(@Body PhoneLookupRequest request);
+
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/TheDataGroup.java b/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/TheDataGroup.java
new file mode 100755
index 0000000..e59771d
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/java/org/apache/streams/thedatagroup/TheDataGroup.java
@@ -0,0 +1,267 @@
+/*
+ * 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
+ *
+ * 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.streams.thedatagroup;
+
+import com.google.common.util.concurrent.Uninterruptibles;
+import org.apache.juneau.json.JsonParser;
+import org.apache.juneau.json.JsonSerializer;
+import org.apache.juneau.rest.client.RestCall;
+import org.apache.juneau.rest.client.RestClient;
+import org.apache.juneau.rest.client.RestClientBuilder;
+import org.apache.streams.config.ComponentConfigurator;
+import org.apache.streams.thedatagroup.api.AppendRequest;
+import org.apache.streams.thedatagroup.api.DemographicsAppendResponse;
+import org.apache.streams.thedatagroup.api.EmailAppendResponse;
+import org.apache.streams.thedatagroup.api.EmailLookupRequest;
+import org.apache.streams.thedatagroup.api.IpLookupRequest;
+import org.apache.streams.thedatagroup.api.LookupResponse;
+import org.apache.streams.thedatagroup.api.MobileAppendResponse;
+import org.apache.streams.thedatagroup.api.PhoneAppendResponse;
+import org.apache.streams.thedatagroup.api.PhoneLookupRequest;
+import org.apache.streams.thedatagroup.api.VehicleAppendResponse;
+import org.apache.streams.thedatagroup.config.TheDataGroupConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Implementation of api.pipl.com interfaces using juneau.
+ */
+public class TheDataGroup implements SyncAppend, SyncLookup {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TheDataGroup.class);
+
+ private TheDataGroupConfiguration configuration;
+
+ JsonParser parser;
+ JsonSerializer serializer;
+
+ RestClientBuilder restClientBuilder;
+ RestClient restClient;
+
+ private static Map<TheDataGroupConfiguration, TheDataGroup> INSTANCE_MAP = new ConcurrentHashMap<>();
+
+ public static TheDataGroup getInstance() throws InstantiationException {
+ return getInstance(new ComponentConfigurator<>(TheDataGroupConfiguration.class).detectConfiguration());
+ }
+
+ public static TheDataGroup getInstance(TheDataGroupConfiguration configuration) throws InstantiationException {
+ if (INSTANCE_MAP.containsKey(configuration) && INSTANCE_MAP.get(configuration) != null) {
+ return INSTANCE_MAP.get(configuration);
+ } else {
+ TheDataGroup tdg = new TheDataGroup(configuration);
+ INSTANCE_MAP.put(configuration, tdg);
+ return INSTANCE_MAP.get(configuration);
+ }
+ }
+
+ private TheDataGroup(TheDataGroupConfiguration configuration) {
+ this.configuration = configuration;
+ this.parser = JsonParser.DEFAULT.builder()
+ .ignoreUnknownBeanProperties(true)
+ .build();
+ this.serializer = JsonSerializer.DEFAULT.builder()
+ .trimEmptyCollections(true)
+ .trimEmptyMaps(true)
+ .build();
+ this.restClientBuilder = RestClient.create()
+ .accept("application/json")
+ .contentType("application/json")
+ .disableCookieManagement()
+ .disableRedirectHandling()
+ .header("AuthorizationToken", configuration.getAuthorizationToken())
+ .header("x-api-key", configuration.getxApiKey())
+ .parser(parser)
+ .serializer(serializer)
+ .rootUrl(baseUrl());
+ if(configuration.getDebug() == true) {
+ this.restClientBuilder.debug();
+ }
+ this.restClient = restClientBuilder.build();
+ }
+
+ private String baseUrl() {
+ return "https://api.thedatagroup.com/v3/";
+ }
+
+ @Override
+ public DemographicsAppendResponse appendDemographics(AppendRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/append/demographics")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ DemographicsAppendResponse response = parser.parse(responseJson, DemographicsAppendResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new DemographicsAppendResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public EmailAppendResponse appendEmail(AppendRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/append/email")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ EmailAppendResponse response = parser.parse(responseJson, EmailAppendResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new EmailAppendResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public PhoneAppendResponse appendPhone(AppendRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/append/phone")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ PhoneAppendResponse response = parser.parse(responseJson, PhoneAppendResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new PhoneAppendResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public MobileAppendResponse appendMobile(AppendRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/append/mobile")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ MobileAppendResponse response = parser.parse(responseJson, MobileAppendResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new MobileAppendResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public VehicleAppendResponse appendVehicle(AppendRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/append/vehicle")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ VehicleAppendResponse response = parser.parse(responseJson, VehicleAppendResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new VehicleAppendResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public LookupResponse lookupEmail(EmailLookupRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/lookup/email")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ LookupResponse response = parser.parse(responseJson, LookupResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new LookupResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public LookupResponse lookupMobile(PhoneLookupRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/lookup/mobile")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ LookupResponse response = parser.parse(responseJson, LookupResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new LookupResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public LookupResponse lookupIp(IpLookupRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/lookup/ip")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ LookupResponse response = parser.parse(responseJson, LookupResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new LookupResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+
+ @Override
+ public LookupResponse lookupPhone(PhoneLookupRequest request) {
+ try {
+ RestCall call = restClient
+ .doPost(baseUrl() + "sync/lookup/phone")
+ .body(request)
+ .ignoreErrors();
+ String responseJson = call.getResponseAsString();
+ LookupResponse response = parser.parse(responseJson, LookupResponse.class);
+ return response;
+ } catch( Exception e ) {
+ LOGGER.error("Exception", e);
+ return new LookupResponse();
+ } finally {
+ Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/AppendRequest.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/AppendRequest.json
new file mode 100644
index 0000000..71eedec
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/AppendRequest.json
@@ -0,0 +1,39 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.AppendRequest",
+ "properties": {
+ "address_1": {
+ "type": "string",
+ "description": "The address to use in the request."
+ },
+ "address_2": {
+ "type": "string",
+ "description": "The address to use in the request."
+ },
+ "first_name": {
+ "type": "string",
+ "description": "The first name to use in the request."
+ },
+ "last_name": {
+ "type": "string",
+ "description": "The last name to use in the request."
+ },
+ "city": {
+ "type": "string",
+ "description": "The city to use in the request. You must provider either both the city and state, or the zipcode."
+ },
+ "state": {
+ "type": "string",
+ "description": "The state to use in the request, abbreviated. You must provider either both the city and state, or the zipcode."
+ },
+ "zipcode": {
+ "type": "string",
+ "description": "The zipcode to use in the request. You must provider either the zipcode, or both the city and state."
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponse.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponse.json
new file mode 100644
index 0000000..41b06e4
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponse.json
@@ -0,0 +1,36 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponse",
+ "properties": {
+ "address": {
+ "$ref" : "./DemographicsAppendResponseAddress.json"
+ },
+ "phones": {
+ "type": "array",
+ "items": {
+ "$ref" : "./DemographicsAppendResponsePhones.json"
+ }
+ },
+ "category_match": {
+ "type": "string",
+ "values": [
+ "ADDRESS",
+ "HOUSEHOLD",
+ "INDIVIDUAL",
+ "NAME_AND_ZIP",
+ "NONE"
+ ]
+ },
+ "life_styles": {
+ "$ref" : "./DemographicsAppendResponseLifeStyles.json"
+ },
+ "demographics": {
+ "$ref" : "./DemographicsAppendResponseDemographics.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseAddress.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseAddress.json
new file mode 100644
index 0000000..48f0bb9
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseAddress.json
@@ -0,0 +1,41 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseAddress",
+ "properties": {
+ "zipcode": {
+ "type" : "string"
+ },
+ "unit_number": {
+ "type" : "string"
+ },
+ "city": {
+ "type" : "string"
+ },
+ "post_direction": {
+ "type" : "string"
+ },
+ "street_number": {
+ "type" : "string"
+ },
+ "pre_direction": {
+ "type" : "string"
+ },
+ "street_type": {
+ "type" : "string"
+ },
+ "state": {
+ "type" : "string"
+ },
+ "unit_type": {
+ "type" : "string"
+ },
+ "street_name": {
+ "type" : "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographics.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographics.json
new file mode 100644
index 0000000..050f874
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographics.json
@@ -0,0 +1,31 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographics",
+ "properties": {
+ "level": {
+ "type" : "string",
+ "values": [
+ "ZIP_9",
+ "ZIP_7",
+ "ZIP_5"
+ ]
+ },
+ "person": {
+ "$ref" : "./DemographicsAppendResponseDemographicsPerson.json"
+ },
+ "residence": {
+ "$ref" : "./DemographicsAppendResponseDemographicsResidence.json"
+ },
+ "family": {
+ "$ref" : "./DemographicsAppendResponseDemographicsFamily.json"
+ },
+ "vehicle": {
+ "$ref" : "./DemographicsAppendResponseDemographicsVehicle.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsFamily.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsFamily.json
new file mode 100644
index 0000000..73945bb
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsFamily.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.thedatagroup.api.DemographicsAppendResponseDemographicsFamily",
+ "properties": {
+ "is_single_parent": {
+ "type" : "boolean"
+ },
+ "children": {
+ "$ref" : "./DemographicsAppendResponseDemographicsFamilyChildren.json"
+ },
+ "married": {
+ "type": "string",
+ "values": [
+ "INFERRED_MARRIED",
+ "INFERRED_SINGLE",
+ "SINGLE",
+ "MARRIED"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsFamilyChildren.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsFamilyChildren.json
new file mode 100644
index 0000000..293f242
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsFamilyChildren.json
@@ -0,0 +1,31 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographicsFamilyChildren",
+ "properties": {
+ "has_children": {
+ "type" : "boolean"
+ },
+ "number_children": {
+ "type": "string",
+ "values": [
+ "A",
+ "B",
+ "C"
+ ]
+ },
+ "children_age": {
+ "type": "string",
+ "values": [
+ "A",
+ "B",
+ "C",
+ "D"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPerson.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPerson.json
new file mode 100644
index 0000000..f2b3b8b
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPerson.json
@@ -0,0 +1,54 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponsePhones",
+ "properties": {
+ "education": {
+ "$ref" : "./DemographicsAppendResponseDemographicsPersonEducation.json"
+ },
+ "gender": {
+ "type": "string",
+ "values": [
+ "M",
+ "F",
+ "U"
+ ]
+ },
+ "ethnicity": {
+ "type": "string",
+ "values": [
+ "ASIAN",
+ "AFRICAN_AMERICAN",
+ "HISPANIC"
+ ]
+ },
+ "race": {
+ "$ref" : "./DemographicsAppendResponseDemographicsPersonRace.json"
+ },
+ "date_of_birth": {
+ "type" : "string"
+ },
+ "worker_type": {
+ "$ref" : "./DemographicsAppendResponseDemographicsPersonWorkerType.json"
+ },
+ "percent_mail_order_respondent": {
+ "type" : "integer"
+ },
+ "language": {
+ "$ref" : "./DemographicsAppendResponseDemographicsPersonLanguage.json"
+ },
+ "finances": {
+ "$ref" : "./DemographicsAppendResponseDemographicsPersonFinances.json"
+ },
+ "is_senior": {
+ "type" : "boolean"
+ },
+ "age": {
+ "type" : "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonEducation.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonEducation.json
new file mode 100644
index 0000000..05aa9d5
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonEducation.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.thedatagroup.api.DemographicsAppendResponseDemographicsPersonEducation",
+ "properties": {
+ "level": {
+ "type": "string",
+ "values": [
+ "HIGH_SCHOOL",
+ "COLLEGE",
+ "GRADUATE_SCHOOL",
+ "VOCATIONAL_OR_TECHNICAL"
+ ]
+ },
+ "median_years_schooling": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonFinances.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonFinances.json
new file mode 100644
index 0000000..805214d
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonFinances.json
@@ -0,0 +1,44 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographicsPersonFinances",
+ "properties": {
+ "estimated_income": {
+ "type": "string",
+ "values": [
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I"
+ ]
+ },
+ "estimated_net_worth": {
+ "type": "string",
+ "values": [
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H"
+ ]
+ },
+ "is_charity_donar": {
+ "type": "boolean"
+ },
+ "uses_credit_card": {
+ "type": "boolean"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonLanguage.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonLanguage.json
new file mode 100644
index 0000000..bb7e894
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonLanguage.json
@@ -0,0 +1,20 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographicsPersonRace",
+ "properties": {
+ "percent_spanish_speaker": {
+ "type": "integer"
+ },
+ "percent_asian_speaker": {
+ "type": "integer"
+ },
+ "percent_english_speaker": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonRace.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonRace.json
new file mode 100644
index 0000000..47f7b76
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonRace.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.thedatagroup.api.DemographicsAppendResponseDemographicsPersonRace",
+ "properties": {
+ "percent_hispanic": {
+ "type": "integer"
+ },
+ "percent_black": {
+ "type": "integer"
+ },
+ "percent_white": {
+ "type": "integer"
+ },
+ "percent_asian": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonWorkerType.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonWorkerType.json
new file mode 100644
index 0000000..d3b95e8
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsPersonWorkerType.json
@@ -0,0 +1,20 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographicsPersonRace",
+ "properties": {
+ "percent_white_collar": {
+ "type": "integer"
+ },
+ "percent_blue_collar": {
+ "type": "integer"
+ },
+ "percent_other": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsResidence.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsResidence.json
new file mode 100644
index 0000000..8a0dd6c
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsResidence.json
@@ -0,0 +1,76 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographicsResidence",
+ "properties": {
+ "homeowner": {
+ "type": "string",
+ "values": [
+ "TENANT",
+ "OWNER",
+ "SINGLE",
+ "MARRIED"
+ ]
+ },
+ "has_pool": {
+ "type" : "boolean"
+ },
+ "estimated_market_value": {
+ "type": "string",
+ "values": [
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S"
+ ]
+ },
+ "length_of_residence": {
+ "type": "integer"
+ },
+ "year_home_built": {
+ "type": "integer"
+ },
+ "median_house_value": {
+ "type": "string",
+ "values": [
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I"
+ ]
+ },
+ "dwelling": {
+ "$ref": "./DemographicsAppendResponseDemographicsResidenceDwelling.json"
+ },
+ "is_mobile_home": {
+ "type": "integer"
+ },
+ "has_fireplace": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsResidenceDwelling.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsResidenceDwelling.json
new file mode 100644
index 0000000..dbd240e
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsResidenceDwelling.json
@@ -0,0 +1,24 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseDemographicsResidence",
+ "properties": {
+ "percent_single_family": {
+ "type": "integer"
+ },
+ "type": {
+ "type": "string",
+ "values": [
+ "SINGLE_FAMILY",
+ "MULTIPLE_FAMILY"
+ ]
+ },
+ "percent_multiple_family": {
+ "type": "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsVehicle.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsVehicle.json
new file mode 100644
index 0000000..e177532
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseDemographicsVehicle.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.thedatagroup.api.DemographicsAppendResponseDemographicsVehicle",
+ "properties": {
+ "owns_suv_vehicle": {
+ "type" : "boolean"
+ },
+ "owns_luxury_vehicle": {
+ "type" : "boolean"
+ },
+ "owns_pickup_vehicle": {
+ "type" : "boolean"
+ },
+ "percent_vehicle_owner": {
+ "type" : "boolean"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStyles.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStyles.json
new file mode 100644
index 0000000..efdf634
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStyles.json
@@ -0,0 +1,32 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseLifeStyles",
+ "properties": {
+ "book": {
+ "$ref": "./DemographicsAppendResponseLifeStylesBook.json"
+ },
+ "apparel": {
+ "$ref": "./DemographicsAppendResponseLifeStylesApparel.json"
+ },
+ "value_shopper": {
+ "type": "boolean"
+ },
+ "interests": {
+ "$ref": "./DemographicsAppendResponseLifeStylesInterests.json"
+ },
+ "pet": {
+ "type": "string",
+ "values": [
+ "HAS_PETS",
+ "EQUESTRIAN",
+ "CAT",
+ "DOG"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesApparel.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesApparel.json
new file mode 100644
index 0000000..fed1961
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesApparel.json
@@ -0,0 +1,28 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseLifeStylesApparel",
+ "properties": {
+ "men": {
+ "type": "string",
+ "values": [
+ "PURCHASED",
+ "PURCHASED_BIG_AND_TALL"
+ ]
+ },
+ "women": {
+ "type": "string",
+ "values": [
+ "PURCHASED",
+ "PURCHASED_PLUS_SIZE"
+ ]
+ },
+ "child": {
+ "type": "boolean"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesBook.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesBook.json
new file mode 100644
index 0000000..a20d0cb
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesBook.json
@@ -0,0 +1,17 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseLifeStylesBook",
+ "properties": {
+ "reader": {
+ "type": "boolean"
+ },
+ "buyer": {
+ "type": "boolean"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesInterests.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesInterests.json
new file mode 100644
index 0000000..aa1103f
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponseLifeStylesInterests.json
@@ -0,0 +1,116 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponseLifeStylesInterests",
+ "properties": {
+ "home_and_garden": {
+ "type": "string",
+ "values": [
+ "SEWING_AND_KNITTING",
+ "WOODWORKING",
+ "PHOTOGRAPHY",
+ "HOME_AND_GARDEN"
+ ]
+ },
+ "motercycling": {
+ "type": "boolean"
+ },
+ "sports": {
+ "type": "string",
+ "values": [
+ "GENERAL_INTEREST",
+ "BASEBALL",
+ "FOOTBALL",
+ "GOLF",
+ "TENNIS",
+ "RACING"
+ ]
+ },
+ "self_improvement": {
+ "type": "string",
+ "values": [
+ "HEALTH_AND_MEDICAL",
+ "DIETING_WEIGHT_LOSS",
+ "SELF_IMPROVEMENT"
+ ]
+ },
+ "gambling": {
+ "type": "boolean"
+ },
+ "collectibles": {
+ "type": "string",
+ "values": [
+ "GENERAL_INTEREST",
+ "ANTIQUES_INTEREST",
+ "SPORTS_INTEREST"
+ ]
+ },
+ "technology": {
+ "type": "boolean"
+ },
+ "outdoors": {
+ "type": "string",
+ "values": [
+ "GENERAL_INTEREST",
+ "SNOW_SPORTS",
+ "WATER_SPORTS",
+ "HUNTING_AND_FISHING"
+ ]
+ },
+ "fitness": {
+ "type": "string",
+ "values": [
+ "HEALTH_EXERCISE",
+ "RUNNING",
+ "WALKING",
+ "AEROBICS"
+ ]
+ },
+ "home_improvement": {
+ "type": "string",
+ "values": [
+ "GENERAL_INTEREST",
+ "DIY_INTEREST"
+ ]
+ },
+ "cooking": {
+ "type": "string",
+ "values": [
+ "GOURMET_FOOD_AND_WINE",
+ "COOKING",
+ "NATURAL_FOODS"
+ ]
+ },
+ "auto_parts": {
+ "type": "boolean"
+ },
+ "investing": {
+ "type": "boolean"
+ },
+ "boating": {
+ "type": "boolean"
+ },
+ "travel": {
+ "type": "string",
+ "values": [
+ "TRAVEL",
+ "DOMESTIC",
+ "INTERNATIONAL",
+ "CRUISE"
+ ]
+ },
+ "arts": {
+ "type": "string",
+ "values": [
+ "ARTS_INTEREST",
+ "AVID_MUSIC_LISTENER",
+ "ANTIQUES_INTEREST",
+ "PERFORMING_ARTS_INTEREST"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponsePhones.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponsePhones.json
new file mode 100644
index 0000000..0632c16
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/DemographicsAppendResponsePhones.json
@@ -0,0 +1,14 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.DemographicsAppendResponsePhones",
+ "properties": {
+ "phone": {
+ "type" : "integer"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/EmailAppendResponse.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/EmailAppendResponse.json
new file mode 100644
index 0000000..d268260
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/EmailAppendResponse.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.thedatagroup.api.EmailAppendResponse",
+ "properties": {
+ "address": {
+ "$ref" : "./DemographicsAppendResponseAddress.json"
+ },
+ "first_name": {
+ "type": "string"
+ },
+ "last_name": {
+ "type": "string"
+ },
+ "email": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/EmailLookupRequest.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/EmailLookupRequest.json
new file mode 100644
index 0000000..54902b6
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/EmailLookupRequest.json
@@ -0,0 +1,14 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.EmailLookupRequest",
+ "properties": {
+ "email": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/IpLookupRequest.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/IpLookupRequest.json
new file mode 100644
index 0000000..1ce8f19
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/IpLookupRequest.json
@@ -0,0 +1,14 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.IpLookupRequest",
+ "properties": {
+ "phone": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/LookupResponse.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/LookupResponse.json
new file mode 100644
index 0000000..d3cbcad
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/LookupResponse.json
@@ -0,0 +1,20 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.LookupResponse",
+ "properties": {
+ "address": {
+ "$ref" : "./DemographicsAppendResponseAddress.json"
+ },
+ "first_name": {
+ "type": "string"
+ },
+ "last_name": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/MobileAppendResponse.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/MobileAppendResponse.json
new file mode 100644
index 0000000..d3ae950
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/MobileAppendResponse.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.thedatagroup.api.MobileAppendResponse",
+ "properties": {
+ "address": {
+ "$ref" : "./DemographicsAppendResponseAddress.json"
+ },
+ "first_name": {
+ "type": "string"
+ },
+ "last_name": {
+ "type": "string"
+ },
+ "phone": {
+ "$ref" : "./PhoneAppendResponseItem.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneAppendResponse.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneAppendResponse.json
new file mode 100644
index 0000000..273b85a
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneAppendResponse.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.thedatagroup.api.PhoneAppendResponse",
+ "properties": {
+ "address": {
+ "$ref" : "./DemographicsAppendResponseAddress.json"
+ },
+ "first_name": {
+ "type": "string"
+ },
+ "last_name": {
+ "type": "string"
+ },
+ "phone": {
+ "$ref" : "./PhoneAppendResponseItem.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneAppendResponseItem.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneAppendResponseItem.json
new file mode 100644
index 0000000..13600a8
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneAppendResponseItem.json
@@ -0,0 +1,17 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.PhoneAppendResponseItem",
+ "properties": {
+ "phone_type": {
+ "type" : "string"
+ },
+ "phone": {
+ "type" : "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneLookupRequest.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneLookupRequest.json
new file mode 100644
index 0000000..855e221
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/PhoneLookupRequest.json
@@ -0,0 +1,14 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.PhoneLookupRequest",
+ "properties": {
+ "phone": {
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/VehicleAppendResponse.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/VehicleAppendResponse.json
new file mode 100644
index 0000000..8913366
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/VehicleAppendResponse.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.thedatagroup.api.VehicleAppendResponse",
+ "properties": {
+ "address": {
+ "$ref" : "./DemographicsAppendResponseAddress.json"
+ },
+ "first_name": {
+ "type": "string"
+ },
+ "last_name": {
+ "type": "string"
+ },
+ "vehicles": {
+ "type": "array",
+ "items": {
+ "$ref" : "./VehicleAppendResponseItem.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/VehicleAppendResponseItem.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/VehicleAppendResponseItem.json
new file mode 100644
index 0000000..76b80c0
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/api/VehicleAppendResponseItem.json
@@ -0,0 +1,20 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaType": "org.apache.streams.thedatagroup.api.VehicleAppendResponseItem",
+ "properties": {
+ "year": {
+ "type" : "string"
+ },
+ "make": {
+ "type" : "string"
+ },
+ "model": {
+ "type" : "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/config/TheDataGroupConfiguration.json b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/config/TheDataGroupConfiguration.json
new file mode 100755
index 0000000..c3ecc25
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/main/jsonschema/org/apache/streams/thedatagroup/config/TheDataGroupConfiguration.json
@@ -0,0 +1,21 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "$license": [
+ "http://www.apache.org/licenses/LICENSE-2.0"
+ ],
+ "id": "#",
+ "javaInterfaces": ["java.io.Serializable"],
+ "javaType": "org.apache.streams.thedatagroup.config.TheDataGroupConfiguration",
+ "properties": {
+ "debug": {
+ "type": "boolean"
+ },
+ "AuthorizationToken": {
+ "type": "string"
+ },
+ "x-api-key": {
+ "type": "string"
+ }
+ }
+}
diff --git a/streams-contrib/streams-processor-thedatagroup/src/test/java/org/apache/streams/thedatagroup/test/TheDataGroupIT.java b/streams-contrib/streams-processor-thedatagroup/src/test/java/org/apache/streams/thedatagroup/test/TheDataGroupIT.java
new file mode 100644
index 0000000..33a5a8e
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/test/java/org/apache/streams/thedatagroup/test/TheDataGroupIT.java
@@ -0,0 +1,76 @@
+/*
+ * 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
+ *
+ * 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.streams.thedatagroup.test;
+
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigFactory;
+import com.typesafe.config.ConfigRenderOptions;
+import org.apache.juneau.json.JsonParser;
+import org.apache.streams.config.ComponentConfigurator;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.thedatagroup.SyncAppend;
+import org.apache.streams.thedatagroup.TheDataGroup;
+import org.apache.streams.thedatagroup.api.AppendRequest;
+import org.apache.streams.thedatagroup.api.DemographicsAppendResponse;
+import org.apache.streams.thedatagroup.config.TheDataGroupConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import java.io.File;
+
+import static java.util.Objects.nonNull;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Integration Tests for all implemented thedatagroup.com endpoints.
+ */
+public class TheDataGroupIT {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(TheDataGroupIT.class);
+
+ private static String configfile = "target/test-classes/TheDataGroupIT/TheDataGroupIT.conf";
+
+ private static TheDataGroupConfiguration config;
+
+ private static Config testsconfig;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws Exception {
+ File conf = new File(configfile);
+ Assert.assertTrue (conf.exists());
+ Assert.assertTrue (conf.canRead());
+ Assert.assertTrue (conf.isFile());
+ StreamsConfigurator.addConfig(ConfigFactory.parseFileAnySyntax(conf));
+ config = new ComponentConfigurator<>(TheDataGroupConfiguration.class).detectConfiguration();
+ testsconfig = StreamsConfigurator.getConfig().getConfig("org.apache.streams.thedatagroup.test.TheDataGroupIT");
+ }
+
+ @Test
+ public void testDemographicsAppend() throws Exception {
+ SyncAppend syncAppend = TheDataGroup.getInstance(config);
+ Config requestConfig = StreamsConfigurator.getConfig().getConfig("org.apache.streams.thedatagroup.test.TheDataGroupIT.testAppendDemographics");
+ AppendRequest req = JsonParser.DEFAULT.parse(requestConfig.root().render(ConfigRenderOptions.concise()), AppendRequest.class);
+ DemographicsAppendResponse response = syncAppend.appendDemographics(req);
+ nonNull(response);
+ }
+
+}
\ No newline at end of file
diff --git a/streams-contrib/streams-processor-thedatagroup/src/test/resources/TheDataGroupIT/TheDataGroupIT.conf b/streams-contrib/streams-processor-thedatagroup/src/test/resources/TheDataGroupIT/TheDataGroupIT.conf
new file mode 100644
index 0000000..c99057b
--- /dev/null
+++ b/streams-contrib/streams-processor-thedatagroup/src/test/resources/TheDataGroupIT/TheDataGroupIT.conf
@@ -0,0 +1,27 @@
+# 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.
+include "../../../../../thedatagroup.conf"
+org.apache.streams.thedatagroup.test.TheDataGroupIT {
+ testAppendDemographics {
+ first_name="Steve"
+ last_name="Blackmon"
+ address_1="555 E 5th St #2701"
+ city="Austin"
+ state="TX"
+ zipcode="78701"
+ }
+}
\ No newline at end of file