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 2014/11/16 01:56:26 UTC
[08/10] incubator-streams git commit: improved configuration scheme
improved configuration scheme
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/a24b3be7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/a24b3be7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/a24b3be7
Branch: refs/heads/STREAMS-68,218
Commit: a24b3be723dbc7ccca7f34cc0f58ae8bb8838470
Parents: 93026a7
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Sat Nov 15 18:34:32 2014 -0600
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Sat Nov 15 18:34:32 2014 -0600
----------------------------------------------------------------------
streams-components/streams-converters/pom.xml | 54 ++++++++++++++++++++
.../converter/ActivityConverterProcessor.java | 50 +++++++++++++-----
.../streams/twitter/test/FullTweetTest.java | 14 ++---
.../streams/data/ActivityConverterResolver.java | 5 ++
.../apache/streams/data/DocumentClassifier.java | 9 ++--
5 files changed, 108 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/a24b3be7/streams-components/streams-converters/pom.xml
----------------------------------------------------------------------
diff --git a/streams-components/streams-converters/pom.xml b/streams-components/streams-converters/pom.xml
index cf990cb..78f42b9 100644
--- a/streams-components/streams-converters/pom.xml
+++ b/streams-components/streams-converters/pom.xml
@@ -80,6 +80,60 @@
</testResources>
<plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.8</version>
+ <executions>
+ <execution>
+ <id>add-source</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/generated-sources/jsonschema2pojo</source>
+ </sources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>add-source-jaxb2</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>target/generated-sources/jaxb2</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.jsonschema2pojo</groupId>
+ <artifactId>jsonschema2pojo-maven-plugin</artifactId>
+ <configuration>
+ <addCompileSourceRoot>true</addCompileSourceRoot>
+ <generateBuilders>true</generateBuilders>
+ <sourcePaths>
+ <sourcePath>src/main/jsonschema</sourcePath>
+ </sourcePaths>
+ <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+ <targetPackage>org.apache.streams.converter</targetPackage>
+ <useLongIntegers>true</useLongIntegers>
+ <useJodaDates>true</useJodaDates>
+ <includeJsr303Annotations>true</includeJsr303Annotations>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/a24b3be7/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java
----------------------------------------------------------------------
diff --git a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java
index 629f979..521c906 100644
--- a/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java
+++ b/streams-components/streams-converters/src/main/java/org/apache/streams/converter/ActivityConverterProcessor.java
@@ -38,21 +38,22 @@ public class ActivityConverterProcessor extends TypeConverterProcessor {
private final static Logger LOGGER = LoggerFactory.getLogger(ActivityConverterProcessor.class);
+ protected ActivityConverterProcessorConfiguration configuration;
+
private List<DocumentClassifier> classifiers;
private List<ActivityConverterResolver> resolvers;
public ActivityConverterProcessor() {
super(Activity.class);
- this.classifiers = Lists.newArrayList((DocumentClassifier)BaseDocumentClassifier.getInstance());
- this.resolvers = Lists.newArrayList((ActivityConverterResolver) BaseActivityConverterResolver.getInstance());
+ this.classifiers = Lists.newArrayList();
+ this.resolvers = Lists.newArrayList();
}
- public ActivityConverterProcessor(List<DocumentClassifier> classifiers, List<ActivityConverterResolver> factories) {
+ public ActivityConverterProcessor(ActivityConverterProcessorConfiguration configuration) {
super(Activity.class);
- this.classifiers = classifiers;
- this.resolvers = factories;
- this.classifiers.add(BaseDocumentClassifier.getInstance());
- this.resolvers.add(BaseActivityConverterResolver.getInstance());
+ this.configuration = configuration;
+ this.classifiers = Lists.newArrayList();
+ this.resolvers = Lists.newArrayList();
}
@Override
@@ -75,7 +76,12 @@ public class ActivityConverterProcessor extends TypeConverterProcessor {
}
//Preconditions.checkNotNull(datumClass);
- if( datumClass == null) return result;
+ if( datumClass == null) {
+ LOGGER.warn("Unable to classify");
+ return result;
+ } else {
+ LOGGER.debug("Classifies document as " + datumClass.getSimpleName());
+ }
// This implementation is primitive, greedy, takes first it can resolve
Class converterClass = null;
@@ -86,7 +92,13 @@ public class ActivityConverterProcessor extends TypeConverterProcessor {
}
//Preconditions.checkNotNull(converterClass);
- if( converterClass == null) return result;
+ if( converterClass == null) {
+ LOGGER.warn("Unable to resolve converterClass");
+ return result;
+ }
+ else {
+ LOGGER.debug("Resolved converter: " + converterClass.getSimpleName());
+ }
ActivityConverter converter = ActivityConverterFactory.getInstance(converterClass);
@@ -100,12 +112,18 @@ public class ActivityConverterProcessor extends TypeConverterProcessor {
typedDoc = TypeConverterUtil.convert(inDoc, datumClass, mapper);
//Preconditions.checkNotNull(typedDoc);
- if( typedDoc == null) return result;
+ if( typedDoc == null) {
+ LOGGER.warn("Unable to convert " + inDoc.getClass().getSimpleName() + " to " + datumClass.getSimpleName());
+ return result;
+ }
Activity activity = converter.deserialize(typedDoc);
//Preconditions.checkNotNull(activity);
- if( activity == null) return result;
+ if( activity == null) {
+ LOGGER.warn("Unable to convert " + datumClass.getClass().getCanonicalName() + " to Activity");
+ return result;
+ }
entry.setDocument(activity);
@@ -123,8 +141,14 @@ public class ActivityConverterProcessor extends TypeConverterProcessor {
@Override
public void prepare(Object configurationObject) {
super.prepare(configurationObject);
- Preconditions.checkArgument(classifiers.size() > 0);
- Preconditions.checkArgument(resolvers.size() > 0);
+ if( configuration != null ) {
+ if (configuration.getClassifiers() != null && configuration.getClassifiers().size() > 0)
+ this.classifiers.addAll(configuration.getClassifiers());
+ if (configuration.getResolvers() != null && configuration.getResolvers().size() > 0)
+ this.resolvers.addAll(configuration.getResolvers());
+ }
+ this.classifiers.add(BaseDocumentClassifier.getInstance());
+ this.resolvers.add(BaseActivityConverterResolver.getInstance());
}
};
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/a24b3be7/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/FullTweetTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/FullTweetTest.java b/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/FullTweetTest.java
index a661f2c..63dcf51 100644
--- a/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/FullTweetTest.java
+++ b/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/FullTweetTest.java
@@ -23,18 +23,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.Lists;
import org.apache.streams.converter.ActivityConverterProcessor;
+import org.apache.streams.converter.ActivityConverterProcessorConfiguration;
import org.apache.streams.core.StreamsDatum;
import org.apache.streams.data.ActivityConverterResolver;
import org.apache.streams.data.DocumentClassifier;
-import org.apache.streams.exceptions.ActivitySerializerException;
import org.apache.streams.jackson.StreamsJacksonMapper;
import org.apache.streams.pojo.json.Activity;
import org.apache.streams.twitter.pojo.Retweet;
-import org.apache.streams.twitter.pojo.Tweet;
import org.apache.streams.twitter.serializer.StreamsTwitterMapper;
import org.apache.streams.twitter.serializer.TwitterConverterResolver;
import org.apache.streams.twitter.serializer.TwitterDocumentClassifier;
-import org.apache.streams.twitter.serializer.TwitterJsonActivityConverter;
import org.junit.Assert;
import org.junit.Test;
import org.slf4j.Logger;
@@ -95,10 +93,12 @@ public class FullTweetTest {
Activity activity = null;
try {
- ActivityConverterProcessor converter = new ActivityConverterProcessor(
- Lists.newArrayList((DocumentClassifier)TwitterDocumentClassifier.getInstance()),
- Lists.newArrayList((ActivityConverterResolver)TwitterConverterResolver.getInstance()));
- converter.prepare(null);
+ ActivityConverterProcessorConfiguration converterProcessorConfiguration = new ActivityConverterProcessorConfiguration()
+ .withClassifiers(Lists.newArrayList((DocumentClassifier)TwitterDocumentClassifier.getInstance()))
+ .withResolvers(Lists.newArrayList((ActivityConverterResolver)TwitterConverterResolver.getInstance()));
+
+ ActivityConverterProcessor converter = new ActivityConverterProcessor(converterProcessorConfiguration);
+ converter.prepare(converterProcessorConfiguration);
List<StreamsDatum> result = converter.process(new StreamsDatum(TWITTER_JSON));
activity = (Activity)result.get(0).getDocument();
} catch (Throwable e) {
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/a24b3be7/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverterResolver.java
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverterResolver.java b/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverterResolver.java
index f4d7a92..84f098a 100644
--- a/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverterResolver.java
+++ b/streams-pojo/src/main/java/org/apache/streams/data/ActivityConverterResolver.java
@@ -27,6 +27,11 @@ import java.io.Serializable;
*/
public interface ActivityConverterResolver extends Serializable {
+ /*
+ Every implementing class should have a static getInstance() method
+ But java 7 does not allow the interface to require that
+ */
+
/**
* Identifies a class that con convert this document to an activity
*
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/a24b3be7/streams-pojo/src/main/java/org/apache/streams/data/DocumentClassifier.java
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/java/org/apache/streams/data/DocumentClassifier.java b/streams-pojo/src/main/java/org/apache/streams/data/DocumentClassifier.java
index ea0055f..3c6b5e5 100644
--- a/streams-pojo/src/main/java/org/apache/streams/data/DocumentClassifier.java
+++ b/streams-pojo/src/main/java/org/apache/streams/data/DocumentClassifier.java
@@ -18,17 +18,18 @@
package org.apache.streams.data;
-import org.apache.streams.exceptions.ActivitySerializerException;
-import org.apache.streams.pojo.json.Activity;
-
import java.io.Serializable;
-import java.util.List;
/**
* Serializes and deserializes Activities
*/
public interface DocumentClassifier extends Serializable {
+ /*
+ Every implementing class should have a static getInstance() method
+ But java 7 does not allow the interface to require that
+ */
+
/**
* Gets the supported content type that can be deserialized/serialized
*