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/10/25 21:01:23 UTC
[1/5] git commit: blueprints, first commit
Repository: incubator-streams
Updated Branches:
refs/heads/blueprints [created] 2d61837df
blueprints, first commit
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/4217ac49
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/4217ac49
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/4217ac49
Branch: refs/heads/blueprints
Commit: 4217ac499570b72b61178f5b144886d4fa1be4c8
Parents: eec3aa9
Author: sblackmon <sb...@apache.org>
Authored: Fri Oct 24 12:02:10 2014 -0500
Committer: sblackmon <sb...@apache.org>
Committed: Fri Oct 24 12:02:10 2014 -0500
----------------------------------------------------------------------
.../streams-persist-blueprints/README.md | 16 ++++
.../streams-persist-blueprints/pom.xml | 95 ++++++++++++++++++++
.../BlueprintsEdgeWriterConfiguration.json | 24 +++++
.../BlueprintsVertexWriterConfiguration.json | 23 +++++
.../BlueprintsWriterConfiguration.json | 28 ++++++
streams-pojo/pom.xml | 36 --------
6 files changed, 186 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4217ac49/streams-contrib/streams-persist-blueprints/README.md
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/README.md b/streams-contrib/streams-persist-blueprints/README.md
new file mode 100644
index 0000000..57d18c7
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/README.md
@@ -0,0 +1,16 @@
+streams-persist-mongo
+=====================
+
+Read and write to MongoDB
+
+Example configuration:
+
+ {
+ "mongo": {
+ "host": "localhost",
+ "port": 27017,
+ "db": "local",
+ "collection": "startup_log"
+ }
+ }
+
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4217ac49/streams-contrib/streams-persist-blueprints/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/pom.xml b/streams-contrib/streams-persist-blueprints/pom.xml
new file mode 100644
index 0000000..aae9183
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/pom.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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">
+ <parent>
+ <artifactId>streams-contrib</artifactId>
+ <groupId>org.apache.streams</groupId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>streams-persist-mongo</artifactId>
+
+ <properties>
+ <mongo-driver.version>2.12.0-rc0</mongo-driver.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-config</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-pojo</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streams</groupId>
+ <artifactId>streams-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mongodb</groupId>
+ <artifactId>mongo-java-driver</artifactId>
+ <version>${mongo-driver.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <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/jsonschema2pojo</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/org/apache/streams/mongo/MongoConfiguration.json</sourcePath>
+ </sourcePaths>
+ <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+ <targetPackage>org.apache.streams.mongo.pojo</targetPackage>
+ <useLongIntegers>true</useLongIntegers>
+ <useJodaDates>true</useJodaDates>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4217ac49/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
new file mode 100644
index 0000000..0061868
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
@@ -0,0 +1,24 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "id": "#",
+ "javaType" : "org.apache.streams.blueprints.BlueprintsVertexWriterConfiguration",
+ "extends": {"$ref":"BlueprintsWriterConfiguration.json"},
+ "javaInterfaces": ["java.io.Serializable"],
+ "properties": {
+ "verbs": {
+ "type": "array",
+ "required": false,
+ "items": {
+ "type": "string"
+ }
+ },
+ "objectTypes": {
+ "type": "array",
+ "required": false,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4217ac49/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsVertexWriterConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsVertexWriterConfiguration.json b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsVertexWriterConfiguration.json
new file mode 100644
index 0000000..441d4ba
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsVertexWriterConfiguration.json
@@ -0,0 +1,23 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "id": "#",
+ "javaType" : "org.apache.streams.blueprints.BlueprintsVertexWriterConfiguration",
+ "javaInterfaces": ["java.io.Serializable"],
+ "properties": {
+ "verbs": {
+ "type": "array",
+ "required": false,
+ "items": {
+ "type": "string"
+ }
+ },
+ "objectTypes": {
+ "type": "array",
+ "required": false,
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4217ac49/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsWriterConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsWriterConfiguration.json b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsWriterConfiguration.json
new file mode 100644
index 0000000..0dbd6be
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsWriterConfiguration.json
@@ -0,0 +1,28 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "id": "#",
+ "javaType" : "org.apache.streams.blueprints.BlueprintsWriterConfiguration",
+ "extends": {"$ref":"BlueprintsConfiguration.json"},
+ "javaInterfaces": ["java.io.Serializable"],
+ "properties": {
+ "bulk": {
+ "type": "boolean",
+ "description": "Index in large or small batches",
+ "default": "false"
+ },
+ "batchSize": {
+ "type": "integer",
+ "description": "Item Count before flush",
+ "default": 100
+ },
+ "vertices": {
+ "type": "object",
+ "$ref": "./BlueprintsVertexWriterConfiguration.json"
+ },
+ "edges": {
+ "type": "object",
+ "$ref": "./BlueprintsEdgeWriterConfiguration.json"
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4217ac49/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml
index 2fc9a69..d8ba083 100644
--- a/streams-pojo/pom.xml
+++ b/streams-pojo/pom.xml
@@ -148,42 +148,6 @@
<sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/collection.json</sourcePath>
<sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/media_link.json</sourcePath>
<sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/object.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/article.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/audio.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/bookmark.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/comment.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/event.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/file.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/folder.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/group.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/list.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/note.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/person.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo-album.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/place.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/playlist.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/product.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/property.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/review.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/service.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/song.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/status.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/video.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/favorite.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/follow.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/join.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/like.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/make-friend.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/play.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/post.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-maybe.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-no.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-yes.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/save.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/share.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/tag.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/update.json</sourcePath>
</sourcePaths>
<outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
<targetPackage>org.apache.streams.pojo.json</targetPackage>
[5/5] git commit: Merge branch 'STREAMS-57' into blueprints
Posted by sb...@apache.org.
Merge branch 'STREAMS-57' into blueprints
Conflicts:
streams-pojo/pom.xml
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/2d61837d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/2d61837d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/2d61837d
Branch: refs/heads/blueprints
Commit: 2d61837df1e43c079d4fc661f8ff77c3c8cfb91c
Parents: 4b59608 efa59fb
Author: sblackmon <sb...@apache.org>
Authored: Sat Oct 25 12:52:14 2014 -0500
Committer: sblackmon <sb...@apache.org>
Committed: Sat Oct 25 12:52:14 2014 -0500
----------------------------------------------------------------------
.../twitter/processor/TwitterTypeConverter.java | 1 +
.../provider/TwitterEventClassifier.java | 2 +-
.../TwitterJsonActivitySerializer.java | 4 ++
...erJsonUserstreameventActivitySerializer.java | 40 +++++++++++++++++---
.../test/TwitterEventClassifierTest.java | 14 +++++++
streams-pojo/pom.xml | 2 +
.../streams/pojo/json/verbs/stop-following.json | 16 ++++++++
.../apache/streams/pojo/json/verbs/unlike.json | 16 ++++++++
8 files changed, 88 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
[2/5] git commit: blueprints, second commit
Posted by sb...@apache.org.
blueprints, second commit
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/7b210841
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/7b210841
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/7b210841
Branch: refs/heads/blueprints
Commit: 7b210841e7d01c5eb4b8755bc06cf53168b51b8a
Parents: 4217ac4
Author: sblackmon <sb...@apache.org>
Authored: Fri Oct 24 12:04:15 2014 -0500
Committer: sblackmon <sb...@apache.org>
Committed: Fri Oct 24 12:04:15 2014 -0500
----------------------------------------------------------------------
streams-contrib/pom.xml | 1 +
.../streams-persist-blueprints/pom.xml | 30 ++++++++++++--------
.../BlueprintsEdgeWriterConfiguration.json | 3 +-
3 files changed, 20 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b210841/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index e290466..b33d7be 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -37,6 +37,7 @@
</properties>
<modules>
+ <module>streams-persist-blueprints</module>
<module>streams-persist-cassandra</module>
<module>streams-persist-console</module>
<module>streams-persist-elasticsearch</module>
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b210841/streams-contrib/streams-persist-blueprints/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/pom.xml b/streams-contrib/streams-persist-blueprints/pom.xml
index aae9183..d8989f8 100644
--- a/streams-contrib/streams-persist-blueprints/pom.xml
+++ b/streams-contrib/streams-persist-blueprints/pom.xml
@@ -9,10 +9,10 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>streams-persist-mongo</artifactId>
+ <artifactId>streams-persist-blueprints</artifactId>
<properties>
- <mongo-driver.version>2.12.0-rc0</mongo-driver.version>
+ <tinkerpop.version>2.6.0</tinkerpop.version>
</properties>
<dependencies>
@@ -37,15 +37,21 @@
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongo-java-driver</artifactId>
- <version>${mongo-driver.version}</version>
- <exclusions>
- <exclusion>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </exclusion>
- </exclusions>
+ <groupId>com.tinkerpop.blueprints</groupId>
+ <artifactId>blueprints-core</artifactId>
+ <version>${tinkerpop.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.tinkerpop.blueprints</groupId>
+ <artifactId>blueprints-rexster-graph</artifactId>
+ <version>${tinkerpop.version}</version>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>com.tinkerpop.rexster</groupId>
+ <artifactId>rexster-protocol</artifactId>
+ <version>${tinkerpop.version}</version>
+ <optional>true</optional>
</dependency>
</dependencies>
<build>
@@ -75,7 +81,7 @@
<addCompileSourceRoot>true</addCompileSourceRoot>
<generateBuilders>true</generateBuilders>
<sourcePaths>
- <sourcePath>src/main/jsonschema/org/apache/streams/mongo/MongoConfiguration.json</sourcePath>
+ <sourcePath>src/main/jsonschema</sourcePath>
</sourcePaths>
<outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
<targetPackage>org.apache.streams.mongo.pojo</targetPackage>
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/7b210841/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
index 0061868..e9b7997 100644
--- a/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
+++ b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsEdgeWriterConfiguration.json
@@ -2,8 +2,7 @@
"type": "object",
"$schema": "http://json-schema.org/draft-03/schema",
"id": "#",
- "javaType" : "org.apache.streams.blueprints.BlueprintsVertexWriterConfiguration",
- "extends": {"$ref":"BlueprintsWriterConfiguration.json"},
+ "javaType" : "org.apache.streams.blueprints.BlueprintsEdgeWriterConfiguration",
"javaInterfaces": ["java.io.Serializable"],
"properties": {
"verbs": {
[4/5] git commit: adds support for follow events
Posted by sb...@apache.org.
adds support for follow events
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/efa59fba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/efa59fba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/efa59fba
Branch: refs/heads/blueprints
Commit: efa59fba8aa2c1685aeb26af7872a860824b0db9
Parents: eec3aa9
Author: sblackmon <sb...@apache.org>
Authored: Sat Oct 25 12:51:22 2014 -0500
Committer: sblackmon <sb...@apache.org>
Committed: Sat Oct 25 12:51:22 2014 -0500
----------------------------------------------------------------------
.../twitter/processor/TwitterTypeConverter.java | 1 +
.../provider/TwitterEventClassifier.java | 2 +-
.../TwitterJsonActivitySerializer.java | 4 ++
...erJsonUserstreameventActivitySerializer.java | 40 +++++++++++++++++---
.../test/TwitterEventClassifierTest.java | 14 +++++++
streams-pojo/pom.xml | 38 +------------------
.../streams/pojo/json/verbs/stop-following.json | 16 ++++++++
.../apache/streams/pojo/json/verbs/unlike.json | 16 ++++++++
8 files changed, 88 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterTypeConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterTypeConverter.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterTypeConverter.java
index 74cce27..871dee8 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterTypeConverter.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterTypeConverter.java
@@ -31,6 +31,7 @@ import org.apache.streams.pojo.json.Activity;
import org.apache.streams.twitter.pojo.Delete;
import org.apache.streams.twitter.pojo.Retweet;
import org.apache.streams.twitter.pojo.Tweet;
+import org.apache.streams.twitter.pojo.UserstreamEvent;
import org.apache.streams.twitter.provider.TwitterEventClassifier;
import org.apache.streams.twitter.serializer.*;
import org.slf4j.Logger;
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
index 432a047..c639176 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
@@ -65,7 +65,7 @@ public class TwitterEventClassifier {
else if( objectNode.findValue("friends") != null ||
objectNode.findValue("friends_str") != null )
return FriendList.class;
- else if( objectNode.findValue("target_object") != null )
+ else if( objectNode.findValue("event") != null )
return UserstreamEvent.class;
else if ( objectNode.findValue("location") != null && objectNode.findValue("user") == null)
return User.class;
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonActivitySerializer.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonActivitySerializer.java
index 5b5be96..e0f1017 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonActivitySerializer.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonActivitySerializer.java
@@ -39,6 +39,7 @@ public class TwitterJsonActivitySerializer implements ActivitySerializer<String>
TwitterJsonRetweetActivitySerializer retweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
TwitterJsonDeleteActivitySerializer deleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
TwitterJsonUserActivitySerializer userActivitySerializer = new TwitterJsonUserActivitySerializer();
+ TwitterJsonUserstreameventActivitySerializer userstreameventActivitySerializer = new TwitterJsonUserstreameventActivitySerializer();
@Override
public String serializationFormat() {
@@ -64,6 +65,9 @@ public class TwitterJsonActivitySerializer implements ActivitySerializer<String>
activity = deleteActivitySerializer.deserialize(serialized);
else if( documentSubType == User.class )
activity = userActivitySerializer.deserialize(serialized);
+ else if( documentSubType == UserstreamEvent.class )
+ activity = userstreameventActivitySerializer.deserialize(serialized);
+
else throw new ActivitySerializerException("unrecognized type");
return activity;
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonUserstreameventActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonUserstreameventActivitySerializer.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonUserstreameventActivitySerializer.java
index edaec01..8c39a89 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonUserstreameventActivitySerializer.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonUserstreameventActivitySerializer.java
@@ -24,12 +24,21 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Strings;
import org.apache.commons.lang.NotImplementedException;
import org.apache.streams.data.ActivitySerializer;
+import org.apache.streams.data.util.ActivityUtil;
import org.apache.streams.exceptions.ActivitySerializerException;
import org.apache.streams.pojo.json.Activity;
import org.apache.streams.pojo.json.ActivityObject;
import org.apache.streams.pojo.json.Actor;
+import org.apache.streams.pojo.json.Favorite;
+import org.apache.streams.pojo.json.Follow;
+import org.apache.streams.pojo.json.Like;
+import org.apache.streams.pojo.json.StopFollowing;
+import org.apache.streams.pojo.json.Unlike;
+import org.apache.streams.twitter.pojo.Tweet;
import org.apache.streams.twitter.pojo.UserstreamEvent;
+import org.apache.streams.twitter.serializer.util.TwitterActivityUtil;
+import java.io.IOException;
import java.util.List;
import static org.apache.streams.twitter.serializer.util.TwitterActivityUtil.*;
@@ -56,7 +65,17 @@ public class TwitterJsonUserstreameventActivitySerializer implements ActivitySer
@Override
public Activity deserialize(String serialized) throws ActivitySerializerException {
- return null;
+
+ ObjectMapper mapper = StreamsTwitterMapper.getInstance();
+ ObjectNode objectNode = null;
+ try {
+ objectNode = mapper.readValue(serialized, ObjectNode.class);
+ } catch (JsonProcessingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return convert(objectNode);
}
@Override
@@ -78,7 +97,7 @@ public class TwitterJsonUserstreameventActivitySerializer implements ActivitySer
activity.setActor(buildActor(event));
activity.setVerb(detectVerb(event));
activity.setObject(buildActivityObject(event));
- activity.setId(formatId(activity.getVerb()));
+ activity.setId(ActivityUtil.getActivityId("twitter", activity.getVerb()));
if(Strings.isNullOrEmpty(activity.getId()))
throw new ActivitySerializerException("Unable to determine activity id");
activity.setProvider(getProvider());
@@ -87,19 +106,28 @@ public class TwitterJsonUserstreameventActivitySerializer implements ActivitySer
public Actor buildActor(UserstreamEvent event) {
Actor actor = new Actor();
- //actor.setId(formatId(delete.getDelete().getStatus().getUserIdStr()));
+ actor.setId(ActivityUtil.getObjectId("twitter", "page", event.getSource()));
+ actor.setObjectType("page");
return actor;
}
public ActivityObject buildActivityObject(UserstreamEvent event) {
ActivityObject actObj = new ActivityObject();
- //actObj.setId(formatId(delete.getDelete().getStatus().getIdStr()));
- //actObj.setObjectType("tweet");
+ actObj.setId(ActivityUtil.getObjectId("twitter", "page", event.getTarget()));
+ actObj.setObjectType("page");
return actObj;
}
public String detectVerb(UserstreamEvent event) {
- return null;
+ if( event.getEventType().equals(UserstreamEvent.EventType.FOLLOW))
+ return (new Follow()).getVerb();
+ if( event.getEventType().equals(UserstreamEvent.EventType.UNFOLLOW))
+ return (new StopFollowing()).getVerb();
+ if( event.getEventType().equals(UserstreamEvent.EventType.FAVORITE))
+ return (new Like()).getVerb();
+ if( event.getEventType().equals(UserstreamEvent.EventType.UNFAVORITE))
+ return (new Unlike()).getVerb();
+ else return null;
}
public ActivityObject buildTarget(UserstreamEvent event) {
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java b/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
index e416ec7..b7bed6a 100644
--- a/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
+++ b/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
@@ -22,6 +22,7 @@ import org.apache.streams.twitter.pojo.Delete;
import org.apache.streams.twitter.pojo.Retweet;
import org.apache.streams.twitter.pojo.Tweet;
import org.apache.streams.twitter.pojo.User;
+import org.apache.streams.twitter.pojo.UserstreamEvent;
import org.apache.streams.twitter.provider.TwitterEventClassifier;
import org.junit.Assert;
import org.junit.Test;
@@ -35,6 +36,12 @@ public class TwitterEventClassifierTest {
private String retweet = "{\"created_at\":\"Wed Dec 11 22:27:34 +0000 2013\",\"id\":410898682385797121,\"id_str\":\"410898682385797121\",\"text\":\"RT @hemocional: Cuando te acarici\\u00e9 me di cuenta que hab\\u00eda vivido toda mi vida con las manos vac\\u00edas.\\nALEJANDRO JODOROWSKY.\",\"source\":\"web\",\"truncated\":false,\"in_reply_to_status_id\":null,\"in_reply_to_status_id_str\":null,\"in_reply_to_user_id\":null,\"in_reply_to_user_id_str\":null,\"in_reply_to_screen_name\":null,\"user\":{\"id\":163149656,\"id_str\":\"163149656\",\"name\":\"Carolina\",\"screen_name\":\"_titinaok\",\"location\":\"Montevideo\",\"url\":\"http:\\/\\/www.youtube.com\\/watch?v=N3v5vZ-tU1E\",\"description\":\"Tantas veces me defin\\u00ed ...Soy nada y todo a la vez\",\"protected\":false,\"followers_count\":41,\"friends_count\":75,\"listed_count\":2,\"created_at\":\"Mon Jul 05 17:35:49 +0000 2010\",\"favourites_count\":4697,\"utc_offset\":-10800,\"time_zone\":\"Buenos Aires\",\"geo_enabled\":fal
se,\"verified\":false,\"statuses_count\":5257,\"lang\":\"es\",\"contributors_enabled\":false,\"is_translator\":false,\"profile_background_color\":\"C4A64B\",\"profile_background_image_url\":\"http:\\/\\/a0.twimg.com\\/profile_background_images\\/378800000096791690\\/f64a07abbaa735b39ad7655fdaa2f416.jpeg\",\"profile_background_image_url_https\":\"https:\\/\\/si0.twimg.com\\/profile_background_images\\/378800000096791690\\/f64a07abbaa735b39ad7655fdaa2f416.jpeg\",\"profile_background_tile\":true,\"profile_image_url\":\"http:\\/\\/pbs.twimg.com\\/profile_images\\/378800000799213504\\/496d008f457390005825d2eb4ca50a63_normal.jpeg\",\"profile_image_url_https\":\"https:\\/\\/pbs.twimg.com\\/profile_images\\/378800000799213504\\/496d008f457390005825d2eb4ca50a63_normal.jpeg\",\"profile_banner_url\":\"https:\\/\\/pbs.twimg.com\\/profile_banners\\/163149656\\/1379722210\",\"profile_link_color\":\"BF415A\",\"profile_sidebar_border_color\":\"000000\",\"profile_sidebar_fill_color\":\"B17CED\",\"pr
ofile_text_color\":\"3D1957\",\"profile_use_background_image\":true,\"default_profile\":false,\"default_profile_image\":false,\"following\":null,\"follow_request_sent\":null,\"notifications\":null},\"geo\":null,\"coordinates\":null,\"place\":null,\"contributors\":null,\"retweeted_status\":{\"created_at\":\"Wed Dec 11 22:25:06 +0000 2013\",\"id\":410898060206960640,\"id_str\":\"410898060206960640\",\"text\":\"Cuando te acarici\\u00e9 me di cuenta que hab\\u00eda vivido toda mi vida con las manos vac\\u00edas.\\nALEJANDRO JODOROWSKY.\",\"source\":\"\\u003ca href=\\\"http:\\/\\/bufferapp.com\\\" rel=\\\"nofollow\\\"\\u003eBuffer\\u003c\\/a\\u003e\",\"truncated\":false,\"in_reply_to_status_id\":null,\"in_reply_to_status_id_str\":null,\"in_reply_to_user_id\":null,\"in_reply_to_user_id_str\":null,\"in_reply_to_screen_name\":null,\"user\":{\"id\":552929456,\"id_str\":\"552929456\",\"name\":\"Habilidad emocional\",\"screen_name\":\"hemocional\",\"location\":\"\",\"url\":\"http:\\/\\/www.hab
ilidademocional.com\",\"description\":\"Pensamientos y reflexiones para ayudar a mirar la vida de una manera m\\u00e1s saludable y a crecer interiormente cada d\\u00eda m\\u00e1s. #InteligenciaEmocional #Psicolog\\u00eda\",\"protected\":false,\"followers_count\":34307,\"friends_count\":325,\"listed_count\":361,\"created_at\":\"Fri Apr 13 19:00:11 +0000 2012\",\"favourites_count\":44956,\"utc_offset\":3600,\"time_zone\":\"Madrid\",\"geo_enabled\":false,\"verified\":false,\"statuses_count\":24011,\"lang\":\"es\",\"contributors_enabled\":false,\"is_translator\":false,\"profile_background_color\":\"000000\",\"profile_background_image_url\":\"http:\\/\\/a0.twimg.com\\/profile_background_images\\/378800000123681920\\/aab7226ae139f0ff93b04a08a8541477.jpeg\",\"profile_background_image_url_https\":\"https:\\/\\/si0.twimg.com\\/profile_background_images\\/378800000123681920\\/aab7226ae139f0ff93b04a08a8541477.jpeg\",\"profile_background_tile\":false,\"profile_image_url\":\"http:\\/\\/pbs.twimg
.com\\/profile_images\\/2430091220\\/zdkea46xhe3g4e65nuwl_normal.gif\",\"profile_image_url_https\":\"https:\\/\\/pbs.twimg.com\\/profile_images\\/2430091220\\/zdkea46xhe3g4e65nuwl_normal.gif\",\"profile_banner_url\":\"https:\\/\\/pbs.twimg.com\\/profile_banners\\/552929456\\/1383180255\",\"profile_link_color\":\"FF00E1\",\"profile_sidebar_border_color\":\"FFFFFF\",\"profile_sidebar_fill_color\":\"F3F3F3\",\"profile_text_color\":\"333333\",\"profile_use_background_image\":true,\"default_profile\":false,\"default_profile_image\":false,\"following\":null,\"follow_request_sent\":null,\"notifications\":null},\"geo\":null,\"coordinates\":null,\"place\":null,\"contributors\":null,\"retweet_count\":9,\"favorite_count\":6,\"entities\":{\"hashtags\":[],\"symbols\":[],\"urls\":[],\"user_mentions\":[]},\"favorited\":false,\"retweeted\":false,\"lang\":\"es\"},\"retweet_count\":0,\"favorite_count\":0,\"entities\":{\"hashtags\":[],\"symbols\":[],\"urls\":[],\"user_mentions\":[{\"screen_name\":\"he
mocional\",\"name\":\"Habilidad emocional\",\"id\":552929456,\"id_str\":\"552929456\",\"indices\":[3,14]}]},\"favorited\":false,\"retweeted\":false,\"filter_level\":\"medium\",\"lang\":\"es\"}\n";
private String delete = "{\"delete\":{\"status\":{\"id\":377518972486553600,\"user_id\":1249045572,\"id_str\":\"377518972486553600\",\"user_id_str\":\"1249045572\"}}}\n";
private String user = "{\"location\":\"\",\"default_profile\":true,\"profile_background_tile\":false,\"statuses_count\":1,\"lang\":\"en\",\"profile_link_color\":\"0084B4\",\"id\":32386852,\"following\":false,\"protected\":false,\"favourites_count\":0,\"profile_text_color\":\"333333\",\"description\":\"\",\"verified\":false,\"contributors_enabled\":false,\"profile_sidebar_border_color\":\"C0DEED\",\"name\":\"Fred Gilkey\",\"profile_background_color\":\"C0DEED\",\"created_at\":\"Fri Apr 17 12:35:56 +0000 2009\",\"is_translation_enabled\":false,\"default_profile_image\":true,\"followers_count\":2,\"profile_image_url_https\":\"https://abs.twimg.com/sticky/default_profile_images/default_profile_1_normal.png\",\"geo_enabled\":false,\"status\":{\"contributors\":null,\"text\":\"Working\",\"geo\":null,\"retweeted\":false,\"in_reply_to_screen_name\":null,\"truncated\":false,\"lang\":\"en\",\"entities\":{\"symbols\":[],\"urls\":[],\"hashtags\":[],\"user_mentions\":[]},\"in_reply_to_status_
id_str\":null,\"id\":1541596700,\"source\":\"web\",\"in_reply_to_user_id_str\":null,\"favorited\":false,\"in_reply_to_status_id\":null,\"retweet_count\":0,\"created_at\":\"Fri Apr 17 12:37:54 +0000 2009\",\"in_reply_to_user_id\":null,\"favorite_count\":0,\"id_str\":\"1541596700\",\"place\":null,\"coordinates\":null},\"profile_background_image_url\":\"http://abs.twimg.com/images/themes/theme1/bg.png\",\"profile_background_image_url_https\":\"https://abs.twimg.com/images/themes/theme1/bg.png\",\"follow_request_sent\":false,\"entities\":{\"description\":{\"urls\":[]}},\"url\":null,\"utc_offset\":null,\"time_zone\":null,\"notifications\":false,\"profile_use_background_image\":true,\"friends_count\":1,\"profile_sidebar_fill_color\":\"DDEEF6\",\"screen_name\":\"4TYLove\",\"id_str\":\"32386852\",\"profile_image_url\":\"http://abs.twimg.com/sticky/default_profile_images/default_profile_1_normal.png\",\"listed_count\":0,\"is_translator\":false}";
+ private String follow = "{\n" +
+ " \"target\": 123456789,\n" +
+ " \"source\": 987654321,\n" +
+ " \"event\":\"follow\",\n" +
+ " \"created_at\": \"Sat Sep 4 16:10:54 +0000 2010\"\n" +
+ "}";
@Test
public void testDetectTweet() {
@@ -63,4 +70,11 @@ public class TwitterEventClassifierTest {
if( !result.equals(User.class) )
Assert.fail();
}
+
+ @Test
+ public void testDetectUserstreamevent() {
+ Class result = TwitterEventClassifier.detectClass(follow);
+ if( !result.equals(UserstreamEvent.class) )
+ Assert.fail();
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml
index 2fc9a69..f3d2ca2 100644
--- a/streams-pojo/pom.xml
+++ b/streams-pojo/pom.xml
@@ -148,42 +148,8 @@
<sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/collection.json</sourcePath>
<sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/media_link.json</sourcePath>
<sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/object.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/article.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/audio.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/bookmark.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/comment.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/event.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/file.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/folder.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/group.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/list.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/note.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/person.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo-album.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/place.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/playlist.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/product.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/property.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/review.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/service.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/song.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/status.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/video.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/favorite.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/follow.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/join.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/like.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/make-friend.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/play.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/post.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-maybe.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-no.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-yes.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/save.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/share.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/tag.json</sourcePath>
- <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs/update.json</sourcePath>
+ <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/objectTypes</sourcePath>
+ <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/verbs</sourcePath>
</sourcePaths>
<outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
<targetPackage>org.apache.streams.pojo.json</targetPackage>
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/stop-following.json
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/stop-following.json b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/stop-following.json
new file mode 100644
index 0000000..972da75
--- /dev/null
+++ b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/stop-following.json
@@ -0,0 +1,16 @@
+{
+ "type" : "object",
+ "title" : "Follow",
+ "description" : "To stop following an object",
+ "extends": {"$ref":"../activity.json"},
+ "properties" :{
+ "verb" :{
+ "type" : "string",
+ "default" : "stop-following"
+ },
+ "title" : {
+ "type" : "string",
+ "default" : "{actor.displayName} stopped following {object.displayName}"
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/efa59fba/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/unlike.json
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/unlike.json b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/unlike.json
new file mode 100644
index 0000000..fac7919
--- /dev/null
+++ b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/unlike.json
@@ -0,0 +1,16 @@
+{
+ "type" : "object",
+ "title" : "Follow",
+ "description" : "To remove an object from collection of liked items",
+ "extends": {"$ref":"../activity.json"},
+ "properties" :{
+ "verb" :{
+ "type" : "string",
+ "default" : "unlike"
+ },
+ "title" : {
+ "type" : "string",
+ "default" : "{actor.displayName} unliked {object.displayName}"
+ }
+ }
+}
[3/5] git commit: Configs and untested writer
Posted by sb...@apache.org.
Configs and untested writer
Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/4b596083
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/4b596083
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/4b596083
Branch: refs/heads/blueprints
Commit: 4b59608350c292053dae6c063c1c414c38f99861
Parents: 7b21084
Author: sblackmon <sb...@apache.org>
Authored: Fri Oct 24 14:15:21 2014 -0500
Committer: sblackmon <sb...@apache.org>
Committed: Fri Oct 24 14:15:21 2014 -0500
----------------------------------------------------------------------
.../blueprints/BlueprintsConfigurator.java | 62 ++++++
.../blueprints/BlueprintsPersistWriter.java | 202 +++++++++++++++++++
.../blueprints/BlueprintsConfiguration.json | 26 +++
3 files changed, 290 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4b596083/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsConfigurator.java b/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsConfigurator.java
new file mode 100644
index 0000000..a9d2dd8
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsConfigurator.java
@@ -0,0 +1,62 @@
+/*
+ * 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.blueprints;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigRenderOptions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class BlueprintsConfigurator {
+
+ private final static Logger LOGGER = LoggerFactory.getLogger(BlueprintsConfigurator.class);
+
+ private final static ObjectMapper mapper = new ObjectMapper();
+
+ public static BlueprintsConfiguration detectConfiguration(Config blueprints) {
+
+ BlueprintsConfiguration blueprintsConfiguration = new BlueprintsConfiguration();
+
+ try {
+ blueprintsConfiguration = mapper.readValue(blueprints.root().render(ConfigRenderOptions.concise()), BlueprintsConfiguration.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOGGER.warn("Could not parse BlueprintsConfiguration");
+ }
+ return blueprintsConfiguration;
+ }
+
+ public static BlueprintsWriterConfiguration detectWriterConfiguration(Config blueprints) {
+
+ BlueprintsWriterConfiguration blueprintsConfiguration = new BlueprintsWriterConfiguration();
+
+ try {
+ blueprintsConfiguration = mapper.readValue(blueprints.root().render(ConfigRenderOptions.concise()), BlueprintsWriterConfiguration.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+ LOGGER.warn("Could not parse BlueprintsConfiguration");
+ }
+ return blueprintsConfiguration;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4b596083/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsPersistWriter.java b/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsPersistWriter.java
new file mode 100644
index 0000000..4a68afc
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/src/main/java/org/apache/streams/blueprints/BlueprintsPersistWriter.java
@@ -0,0 +1,202 @@
+/*
+ * 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.blueprints;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
+import com.google.common.collect.Lists;
+import com.tinkerpop.blueprints.Edge;
+import com.tinkerpop.blueprints.Element;
+import com.tinkerpop.blueprints.Graph;
+import com.tinkerpop.blueprints.Vertex;
+import com.tinkerpop.blueprints.impls.rexster.RexsterGraph;
+import com.tinkerpop.rexster.client.RexsterClient;
+import com.tinkerpop.rexster.client.RexsterClientFactory;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+import org.apache.streams.jackson.StreamsJacksonMapper;
+import org.apache.streams.pojo.json.Activity;
+import org.apache.streams.pojo.json.ActivityObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Queue;
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+public class BlueprintsPersistWriter implements StreamsPersistWriter {
+
+ private final static Logger LOGGER = LoggerFactory.getLogger(BlueprintsPersistWriter.class);
+ private final static long MAX_WRITE_LATENCY = 1000;
+
+ private BlueprintsWriterConfiguration configuration;
+
+ protected RexsterClient client;
+ protected RexsterGraph graph;
+ private ObjectMapper mapper = StreamsJacksonMapper.getInstance();
+ private volatile AtomicLong lastWrite = new AtomicLong(System.currentTimeMillis());
+ private ScheduledExecutorService backgroundFlushTask = Executors.newSingleThreadScheduledExecutor();
+
+ protected final ReadWriteLock lock = new ReentrantReadWriteLock();
+
+ public BlueprintsPersistWriter() {
+ this(BlueprintsConfigurator.detectWriterConfiguration(StreamsConfigurator.config.getConfig("blueprints")));
+ }
+
+ public BlueprintsPersistWriter(BlueprintsWriterConfiguration configuration) {
+ this.configuration = configuration;
+ }
+
+ @Override
+ public void write(StreamsDatum streamsDatum) {
+
+ }
+
+ @Override
+ public void prepare(Object configurationObject) {
+
+ connectToGraph();
+
+ Preconditions.checkNotNull(client);
+
+ Preconditions.checkNotNull(graph);
+ Preconditions.checkNotNull(graph.getGraphURI());
+
+ }
+
+ @Override
+ public void cleanUp() {
+
+ graph.shutdown();
+
+ try {
+ client.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ client = null;
+ }
+
+ }
+
+ protected List<Element> persistElements(StreamsDatum streamsDatum) {
+ List<Element> elements = Lists.newArrayList();
+ Activity activity = null;
+ if (streamsDatum.getDocument() instanceof Activity) {
+ activity = (Activity) streamsDatum.getDocument();
+ } else if (streamsDatum.getDocument() instanceof ObjectNode) {
+ activity = mapper.convertValue(streamsDatum.getDocument(), Activity.class);
+ } else if (streamsDatum.getDocument() instanceof String) {
+ try {
+ activity = mapper.readValue((String) streamsDatum.getDocument(), Activity.class);
+ } catch (Throwable e) {
+ LOGGER.warn(e.getMessage());
+ return elements;
+ }
+ } else {
+ return elements;
+ }
+
+ // what gets persisted is configurable
+ // we may add vertices and/or edges
+
+ // always add vertices first
+ // what types of verbs are relevant for adding vertices?
+ if( configuration.getVertices().getVerbs().contains(activity.getVerb().toString())) {
+
+ // what objectTypes are relevant for adding vertices?
+ if( configuration.getVertices().getObjectTypes().contains(activity.getActor().getObjectType())) {
+ elements.add(persistVertex(activity.getActor()));
+ }
+
+ if( configuration.getVertices().getObjectTypes().contains(activity.getObject().getObjectType())) {
+ elements.add(persistVertex(activity.getObject()));
+ }
+
+ }
+
+ // always add edges last
+ // what types of verbs are relevant for adding edges?
+ if( configuration.getEdges().getVerbs().contains(activity.getVerb().toString())) {
+
+ // what objectTypes are relevant for adding edges?
+ if( configuration.getEdges().getObjectTypes().contains(activity.getActor().getObjectType())
+ &&
+ configuration.getEdges().getObjectTypes().contains(activity.getObject().getObjectType())) {
+ elements.add(persistEdge(activity));
+ }
+
+ }
+ return elements;
+ }
+
+ private synchronized void connectToGraph() {
+
+ if( configuration.getType().equals(BlueprintsConfiguration.Type.REXSTER)) {
+ try {
+ client = RexsterClientFactory.open(
+ configuration.getHost(),
+ configuration.getGraph());
+ StringBuilder uri = new StringBuilder()
+ .append("http://")
+ .append(configuration.getHost())
+ .append(":")
+ .append(configuration.getPort())
+ .append("/graphs/")
+ .append(configuration.getGraph());
+ graph = new RexsterGraph(uri.toString());
+ } catch (Exception e) {
+ LOGGER.error("ERROR: ", e.getMessage());
+ }
+ return;
+
+ }
+ }
+
+ protected Vertex persistVertex(ActivityObject object) {
+ Iterator<Vertex> existing = graph.query().limit(1).has("id", object.getId()).vertices().iterator();
+ if( !existing.hasNext()) {
+ Vertex vertex = graph.addVertex(object);
+ return vertex;
+ } else {
+ return existing.next();
+ }
+ }
+
+ protected Edge persistEdge(Activity activity) {
+ Iterator<Edge> existing = graph.query().limit(1).has("id", activity.getId()).edges().iterator();
+ if( !existing.hasNext()) {
+ Vertex s = persistVertex(activity.getActor());
+ Vertex d = persistVertex(activity.getObject());
+ Edge edge = graph.addEdge(activity, s, d, activity.getVerb());
+ return edge;
+ } else {
+ return existing.next();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4b596083/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsConfiguration.json b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsConfiguration.json
new file mode 100644
index 0000000..fa60a78
--- /dev/null
+++ b/streams-contrib/streams-persist-blueprints/src/main/jsonschema/org/apache/streams/blueprints/BlueprintsConfiguration.json
@@ -0,0 +1,26 @@
+{
+ "type": "object",
+ "$schema": "http://json-schema.org/draft-03/schema",
+ "id": "#",
+ "javaType" : "org.apache.streams.blueprints.BlueprintsConfiguration",
+ "javaInterfaces": ["java.io.Serializable"],
+ "properties": {
+ "type": {
+ "type": "string",
+ "description": "Blueprint DB type",
+ "enum" : ["tinkergraph", "rexster"]
+ },
+ "host": {
+ "type": "string",
+ "description": "Blueprint DB host"
+ },
+ "port": {
+ "type": "integer",
+ "description": "Blueprint DB Port"
+ },
+ "graph": {
+ "type": "string",
+ "description": "Blueprint DB Graph ID"
+ }
+ }
+}
\ No newline at end of file