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/01/09 18:27:58 UTC

svn commit: r1556893 [16/25] - in /incubator/streams/branches/sblackmon: ./ streams-config-graph/ streams-config-graph/src/ streams-config-graph/src/main/ streams-config-graph/src/main/java/ streams-config-graph/src/main/java/org/ streams-config-graph/...

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json Thu Jan  9 17:27:50 2014
@@ -0,0 +1,811 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "javaType": "com.gnip.pojo.Gnip",
+    "id": "#",
+    "properties": {
+        "profileLocations": {
+            "properties": {
+                "geo": {
+                    "properties": {
+                        "type": {
+                            "type": "string"
+                        },
+                        "coordinates": {
+                            "type": "double"
+                        }
+                    }
+                },
+                "address": {
+                    "properties": {
+                        "region": {
+                            "type": "string"
+                        },
+                        "countryCode": {
+                            "type": "string"
+                        },
+                        "locality": {
+                            "type": "string"
+                        },
+                        "country": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "displayName": {
+                    "type": "string"
+                },
+                "objectType": {
+                    "type": "string"
+                }
+            }
+        },
+        "klout_score": {
+            "type": "long"
+        },
+        "urls": {
+            "properties": {
+                "expanded_url": {
+                    "type": "string"
+                },
+                "url": {
+                    "type": "string"
+                }
+            }
+        },
+        "language": {
+            "properties": {
+                "value": {
+                    "type": "string"
+                }
+            }
+        },
+        "body": {
+            "type": "string"
+        },
+        "inReplyTo": {
+            "properties": {
+                "content": {
+                    "type": "string"
+                },
+                "author": {
+                    "properties": {
+                        "link": {
+                            "type": "string"
+                        },
+                        "displayName": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "link": {
+                    "type": "string"
+                }
+            }
+        },
+        "tumblrRebloggedRoot": {
+            "properties": {
+                "author": {
+                    "properties": {
+                        "link": {
+                            "type": "string"
+                        },
+                        "displayName": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "link": {
+                    "type": "string"
+                }
+            }
+        },
+        "favoritesCount": {
+            "type": "long"
+        },
+        "geo": {
+            "properties": {
+                "type": {
+                    "type": "string"
+                },
+                "coordinates": {
+                    "type": "double"
+                }
+            }
+        },
+        "location": {
+            "javaType": "com.gnip.config.Location",
+            "properties": {
+                "geo": {
+                    "properties": {
+                        "type": {
+                            "type": "string"
+                        },
+                        "coordinates": {
+                            "type": "double"
+                        }
+                    }
+                },
+                "name": {
+                    "type": "string"
+                },
+                "link": {
+                    "type": "string"
+                },
+                "twitter_country_code": {
+                    "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
+                },
+                "objectType": {
+                    "type": "string"
+                },
+                "country_code": {
+                    "type": "string"
+                }
+            }
+        },
+        "link": {
+            "type": "string"
+        },
+        "twitter_lang": {
+            "type": "string"
+        },
+        "retweetCount": {
+            "type": "long"
+        },
+        "postedTime": {
+            "type": "string"
+        },
+        "provider": {
+            "javaType": "com.gnip.config.Provider",
+            "properties": {
+                "link": {
+                    "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
+                },
+                "objectType": {
+                    "type": "string"
+                }
+            }
+        },
+        "actor": {
+            "javaType": "com.gnip.config.Actor",
+            "properties": {
+                "twitterTimeZone": {
+                    "type": "string"
+                },
+                "summary": {
+                    "type": "string"
+                },
+                "friendsCount": {
+                    "type": "long"
+                },
+                "favoritesCount": {
+                    "type": "long"
+                },
+                "location": {
+                    "properties": {
+                        "displayName": {
+                            "type": "string"
+                        },
+                        "objectType": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "link": {
+                    "type": "string"
+                },
+                "image": {
+                    "type": "string"
+                },
+                "postedTime": {
+                    "type": "string"
+                },
+                "links": {
+                    "properties": {
+                        "rel": {
+                            "type": "string"
+                        },
+                        "href": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "listedCount": {
+                    "type": "long"
+                },
+                "id": {
+                    "type": "string"
+                },
+                "languages": {
+                    "type": "string"
+                },
+                "verified": {
+                    "type": "boolean"
+                },
+                "utcOffset": {
+                    "type": "string"
+                },
+                "followersCount": {
+                    "type": "long"
+                },
+                "statusesCount": {
+                    "type": "long"
+                },
+                "preferredUsername": {
+                    "type": "string"
+                },
+                "displayName": {
+                    "type": "string"
+                },
+                "objectType": {
+                    "type": "string"
+                }
+            },
+            "object": {
+                "javaType": "com.gnip.config.Object",
+                "properties": {
+                    "summary": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "link": {
+                        "type": "string"
+                    },
+                    "postedTime": {
+                        "type": "string"
+                    },
+                    "objectType": {
+                        "type": "string"
+                    }
+                }
+            },
+            "actor": {
+                "properties": {
+                    "twitterTimeZone": {
+                        "type": "string"
+                    },
+                    "summary": {
+                        "type": "string"
+                    },
+                    "friendsCount": {
+                        "type": "long"
+                    },
+                    "favoritesCount": {
+                        "type": "long"
+                    },
+                    "location": {
+                        "properties": {
+                            "displayName": {
+                                "type": "string"
+                            },
+                            "objectType": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "link": {
+                        "type": "string"
+                    },
+                    "image": {
+                        "type": "string"
+                    },
+                    "postedTime": {
+                        "type": "string"
+                    },
+                    "links": {
+                        "properties": {
+                            "rel": {
+                                "type": "string"
+                            },
+                            "href": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "listedCount": {
+                        "type": "long"
+                    },
+                    "i": {
+                        "type": "string"
+                    },
+                    "languages": {
+                        "type": "string"
+                    },
+                    "verified": {
+                        "type": "boolean"
+                    },
+                    "utcOffset": {
+                        "type": "string"
+                    },
+                    "followersCount": {
+                        "type": "long"
+                    },
+                    "statusesCount": {
+                        "type": "long"
+                    },
+                    "preferredUsername": {
+                        "type": "string"
+                    },
+                    "displayName": {
+                        "type": "string"
+                    },
+                    "objectType": {
+                        "type": "string"
+                    }
+                }
+            },
+            "tumblrFormat": {
+                "type": "string"
+            },
+            "embedCode": {
+                "type": "string"
+            },
+            "id": {
+                "type": "string"
+            },
+            "quoteSource": {
+                "type": "string"
+            },
+            "verb": {
+                "type": "string"
+            },
+            "tumblrReblogKey": {
+                "type": "string"
+            },
+            "tumblrType": {
+                "type": "string"
+            },
+            "generator": {
+                "properties": {
+                    "link": {
+                        "type": "string"
+                    },
+                    "displayName": {
+                        "type": "string"
+                    }
+                }
+            },
+            "year": {
+                "type": "long"
+            },
+            "artist": {
+                "type": "string"
+            },
+            "albumArt": {
+                "type": "string"
+            },
+            "tags": {
+                "properties": {
+                    "displayName": {
+                        "type": "string"
+                    }
+                }
+            },
+            "inReplyTo": {
+                "properties": {
+                    "link": {
+                        "type": "string"
+                    }
+                }
+            },
+            "geo": {
+                "properties": {
+                    "type": {
+                        "type": "string"
+                    },
+                    "coordinates": {
+                        "type": "double"
+                    }
+                }
+            },
+            "favoritesCount": {
+                "type": "long"
+            },
+            "twitter_lang": {
+                "type": "string"
+            },
+            "image": {
+                "properties": {
+                    "height": {
+                        "type": "long"
+                    },
+                    "width": {
+                        "type": "long"
+                    },
+                    "link": {
+                        "type": "string"
+                    }
+                }
+            },
+            "provider": {
+                "properties": {
+                    "link": {
+                        "type": "string"
+                    },
+                    "displayName": {
+                        "type": "string"
+                    },
+                    "objectType": {
+                        "type": "string"
+                    }
+                }
+            },
+            "trackNumber": {
+                "type": "string"
+            },
+            "twitter_entities": {
+                "properties": {
+                    "urls": {
+                        "properties": {
+                            "expanded_url": {
+                                "type": "string"
+                            },
+                            "indices": {
+                                "type": "long"
+                            },
+                            "display_url": {
+                                "type": "string"
+                            },
+                            "url": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "hashtags": {
+                        "properties": {
+                            "text": {
+                                "type": "string"
+                            },
+                            "indices": {
+                                "type": "long"
+                            }
+                        }
+                    },
+                    "media": {
+                        "properties": {
+                            "sizes": {
+                                "properties": {
+                                    "thumb": {
+                                        "properties": {
+                                            "w": {
+                                                "type": "long"
+                                            },
+                                            "resize": {
+                                                "type": "string"
+                                            },
+                                            "h": {
+                                                "type": "long"
+                                            }
+                                        }
+                                    },
+                                    "small": {
+                                        "properties": {
+                                            "w": {
+                                                "type": "long"
+                                            },
+                                            "resize": {
+                                                "type": "string"
+                                            },
+                                            "h": {
+                                                "type": "long"
+                                            }
+                                        }
+                                    },
+                                    "medium": {
+                                        "properties": {
+                                            "w": {
+                                                "type": "long"
+                                            },
+                                            "resize": {
+                                                "type": "string"
+                                            },
+                                            "h": {
+                                                "type": "long"
+                                            }
+                                        }
+                                    },
+                                    "large": {
+                                        "properties": {
+                                            "w": {
+                                                "type": "long"
+                                            },
+                                            "resize": {
+                                                "type": "string"
+                                            },
+                                            "h": {
+                                                "type": "long"
+                                            }
+                                        }
+                                    }
+                                }
+                            },
+                            "id": {
+                                "type": "long"
+                            },
+                            "media_url_https": {
+                                "type": "string"
+                            },
+                            "media_url": {
+                                "type": "string"
+                            },
+                            "expanded_url": {
+                                "type": "string"
+                            },
+                            "source_status_id_str": {
+                                "type": "string"
+                            },
+                            "indices": {
+                                "type": "long"
+                            },
+                            "source_status_id": {
+                                "type": "long"
+                            },
+                            "id_str": {
+                                "type": "string"
+                            },
+                            "type": {
+                                "type": "string"
+                            },
+                            "display_url": {
+                                "type": "string"
+                            },
+                            "url": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "user_mentions": {
+                        "properties": {
+                            "id": {
+                                "type": "long"
+                            },
+                            "name": {
+                                "type": "string"
+                            },
+                            "indices": {
+                                "type": "long"
+                            },
+                            "screen_name": {
+                                "type": "string"
+                            },
+                            "id_str": {
+                                "type": "string"
+                            }
+                        }
+                    }
+                }
+            },
+            "targetUrl": {
+                "type": "string"
+            },
+            "content": {
+                "type": "string"
+            },
+            "source": {
+                "properties": {
+                    "link": {
+                        "type": "string"
+                    },
+                    "displayName": {
+                        "type": "string"
+                    }
+                }
+            },
+            "items": {
+                "properties": {
+                    "summary": {
+                        "type": "string"
+                    },
+                    "image": {
+                        "properties": {
+                            "height": {
+                                "type": "long"
+                            },
+                            "width": {
+                                "type": "long"
+                            },
+                            "link": {
+                                "type": "string"
+                            }
+                        }
+                    },
+                    "objectType": {
+                        "type": "string"
+                    },
+                    "fullImage": {
+                        "properties": {
+                            "height": {
+                                "type": "long"
+                            },
+                            "width": {
+                                "type": "long"
+                            },
+                            "link": {
+                                "type": "string"
+                            }
+                        }
+                    }
+                }
+            },
+            "totalItems": {
+                "type": "long"
+            },
+            "displayName": {
+                "type": "string"
+            },
+            "objectType": {
+                "type": "string"
+            }
+        }
+    },
+    "twitter_entities": {
+        "properties": {
+            "urls": {
+                "properties": {
+                    "expanded_url": {
+                        "type": "string"
+                    },
+                    "indices": {
+                        "type": "long"
+                    },
+                    "display_url": {
+                        "type": "string"
+                    },
+                    "url": {
+                        "type": "string"
+                    }
+                }
+            },
+            "hashtags": {
+                "properties": {
+                    "text": {
+                        "type": "string"
+                    },
+                    "indices": {
+                        "type": "long"
+                    }
+                }
+            },
+            "media": {
+                "properties": {
+                    "sizes": {
+                        "properties": {
+                            "thumb": {
+                                "properties": {
+                                    "w": {
+                                        "type": "long"
+                                    },
+                                    "resize": {
+                                        "type": "string"
+                                    },
+                                    "h": {
+                                        "type": "long"
+                                    }
+                                }
+                            },
+                            "small": {
+                                "properties": {
+                                    "w": {
+                                        "type": "long"
+                                    },
+                                    "resize": {
+                                        "type": "string"
+                                    },
+                                    "h": {
+                                        "type": "long"
+                                    }
+                                }
+                            },
+                            "medium": {
+                                "properties": {
+                                    "w": {
+                                        "type": "long"
+                                    },
+                                    "resize": {
+                                        "type": "string"
+                                    },
+                                    "h": {
+                                        "type": "long"
+                                    }
+                                }
+                            },
+                            "large": {
+                                "properties": {
+                                    "w": {
+                                        "type": "long"
+                                    },
+                                    "resize": {
+                                        "type": "string"
+                                    },
+                                    "h": {
+                                        "type": "long"
+                                    }
+                                }
+                            }
+                        }
+                    },
+                    "id": {
+                        "type": "long"
+                    },
+                    "media_url_https": {
+                        "type": "string"
+                    },
+                    "media_url": {
+                        "type": "string"
+                    },
+                    "expanded_url": {
+                        "type": "string"
+                    },
+                    "source_status_id_str": {
+                        "type": "string"
+                    },
+                    "indices": {
+                        "type": "long"
+                    },
+                    "source_status_id": {
+                        "type": "long"
+                    },
+                    "id_str": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "display_url": {
+                        "type": "string"
+                    },
+                    "url": {
+                        "type": "string"
+                    }
+                }
+            },
+            "user_mentions": {
+                "properties": {
+                    "id": {
+                        "type": "long"
+                    },
+                    "name": {
+                        "type": "string"
+                    },
+                    "indices": {
+                        "type": "long"
+                    },
+                    "screen_name": {
+                        "type": "string"
+                    },
+                    "id_str": {
+                        "type": "string"
+                    }
+                }
+            }
+        },
+        "tumblrRebloggedFrom": {
+            "properties": {
+                "author": {
+                    "properties": {
+                        "link": {
+                            "type": "string"
+                        },
+                        "displayName": {
+                            "type": "string"
+                        }
+                    }
+                },
+                "link": {
+                    "type": "string"
+                }
+            }
+        },
+        "twitter_filter_level": {
+            "type": "string"
+        }
+    }
+}
\ No newline at end of file

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb Thu Jan  9 17:27:50 2014
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+               xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
+               version="2.1">
+    <jaxb:globalBindings>
+        <!-- Use java.util.Calendar instead of javax.xml.datatype.XMLGregorianCalendar for xs:dateTime -->
+        <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
+                       parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
+                       printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
+
+        <!-- Force all classes implements Serializable -->
+        <xjc:serializable uid="1" />
+    </jaxb:globalBindings>
+
+</jaxb:bindings>
\ No newline at end of file

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd Thu Jan  9 17:27:50 2014
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="entry" type="entry"/>
+
+    <xs:complexType name="entry">
+        <xs:sequence>
+            <xs:element name="title" type="xs:string" minOccurs="0"/>
+            <xs:element name="id" type="xs:string" minOccurs="0"/>
+            <!--<xs:element name="fb:id" type="xs:positiveInteger" minOccurs="0"/>-->
+            <xs:element name="link" minOccurs="0">
+                <xs:complexType>
+                    <xs:attribute name="rel" type="xs:string"/>
+                    <xs:attribute name="type" type="xs:string"/>
+                    <xs:attribute name="href" type="xs:string"/>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="published" type="xs:string" minOccurs="0"/>
+            <xs:element name="updated" type="xs:string" minOccurs="0"/>
+            <xs:element name="author" type="author" minOccurs="0"/>
+            <xs:element name="category" minOccurs="0">
+                <xs:complexType>
+                    <xs:attribute name="term" type="xs:string"/>
+                    <xs:attribute name="label" type="xs:string"/>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="articles" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="article" type="article" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="article">
+        <xs:sequence>
+            <xs:element name="sequenceId" type="xs:string" minOccurs="0"/>
+            <xs:element name="id" type="xs:string"/>
+            <xs:element name="language" type="xs:string"/>
+            <xs:element name="title" type="xs:string"/>
+            <xs:element name="subTitle" type="xs:string" minOccurs="0"/>
+            <xs:element name="content" type="xs:string" minOccurs="0"/>
+            <xs:element name="contentWithMarkup" type="xs:string" minOccurs="0"/>
+            <xs:element name="tags" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="tag" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="publishedDate" type="xs:string"/>
+            <xs:element name="harvestDate" type="xs:string"/>
+            <xs:element name="embargoDate" type="xs:string" minOccurs="0"/>
+            <xs:element name="licenseEndDate" type="xs:string"/>
+            <xs:element name="url" type="xs:string"/>
+            <xs:element name="originalUrl" type="xs:string" minOccurs="0"/>
+            <xs:element name="commentsUrl" type="xs:string"/>
+            <xs:element name="outboundUrls" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="outboundUrl" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="wordCount" type="xs:string" minOccurs="0"/>
+            <xs:element name="dataFormat" type="xs:string"/>
+            <xs:element name="copyright" type="xs:string"/>
+            <xs:element name="loginStatus" type="xs:string"/>
+            <xs:element name="duplicateGroupId" type="xs:string"/>
+            <xs:element name="contentGroupIds" type="xs:string" minOccurs="0"/>
+            <xs:element name="harvest" type="harvest" minOccurs="0"/>
+            <xs:element name="media" type="media"/>
+            <xs:element name="publishingPlatform" type="articlePublishingPlatform"/>
+            <xs:element name="adultLanguage" type="xs:string"/>
+            <xs:element name="topics" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="topic" type="topic" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="companies" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="company" type="company" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="locations" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="location" type="articleLocation" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="semantics" type="semantics" minOccurs="0"/>
+            <xs:element name="print" type="print" minOccurs="0"/>
+            <xs:element name="broadcast" type="broadcast" minOccurs="0"/>
+            <xs:element name="author" type="author"/>
+            <xs:element name="source" type="source"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="harvest">
+        <xs:sequence>
+            <xs:element name="headlineVia" type="xs:string"/>
+            <xs:element name="contentVia" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="media">
+        <xs:sequence>
+            <xs:element name="audio" type="audioOrVideo" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element name="image" type="image" minOccurs="0" maxOccurs="unbounded"/>
+            <xs:element name="video" type="audioOrVideo" minOccurs="0" maxOccurs="unbounded"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="audioOrVideo">
+        <xs:sequence>
+            <xs:element name="url" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="caption" type="xs:string"/>
+            <xs:element name="duration" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="image">
+        <xs:sequence>
+            <xs:element name="url" type="xs:string"/>
+            <xs:element name="mimeType" type="xs:string"/>
+            <xs:element name="caption" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="articlePublishingPlatform">
+        <xs:sequence>
+            <xs:element name="itemId" type="xs:string"/>
+            <xs:element name="statusId" type="xs:string"/>
+            <xs:element name="inReplyToUserId" type="xs:string"/>
+            <xs:element name="inReplyToStatusId" type="xs:string"/>
+            <xs:element name="totalViews" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="topic">
+        <xs:sequence>
+            <xs:element name="name" type="xs:string" minOccurs="0"/>
+            <xs:element name="group" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="company">
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="symbol" type="xs:string"/>
+            <xs:element name="exchange" type="xs:string"/>
+            <xs:element name="isin" type="xs:string"/>
+            <xs:element name="cusip" type="xs:string" minOccurs="0"/>
+            <xs:element name="titleCount" type="xs:int"/>
+            <xs:element name="contentCount" type="xs:int"/>
+            <xs:element name="primary" type="xs:boolean"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="articleLocation">
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="type" type="xs:string"/>
+            <xs:element name="class" type="xs:string"/>
+            <xs:element name="mentions" type="xs:string"/>
+            <xs:element name="confidence" type="xs:string"/>
+            <xs:element name="country" type="country"/>
+            <xs:element name="region" type="xs:string"/>
+            <xs:element name="subregion" type="xs:string"/>
+            <xs:element name="state" type="state"/>
+            <xs:element name="latitude" type="xs:string"/>
+            <xs:element name="longitude" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="country">
+        <xs:sequence>
+            <xs:element name="confidence" type="xs:string" minOccurs="0"/>
+            <xs:element name="fipsCode" type="xs:string" minOccurs="0"/>
+            <xs:element name="isoCode" type="xs:string" minOccurs="0"/>
+            <xs:element name="name" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="state">
+        <xs:sequence>
+            <xs:element name="confidence" type="xs:string" minOccurs="0"/>
+            <xs:element name="fipsCode" type="xs:string" minOccurs="0"/>
+            <xs:element name="name" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="semantics">
+        <xs:sequence>
+            <xs:element name="events" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="event" type="semanticsItem" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="entities" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="entity" type="semanticsItem" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="semanticsItem">
+        <xs:sequence>
+            <xs:element name="properties" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="property" type="property" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="property">
+        <xs:sequence>
+            <xs:element name="name" type="xs:string" minOccurs="0"/>
+            <xs:element name="value" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="print">
+        <xs:sequence>
+            <xs:element name="supplement" type="xs:string"/>
+            <xs:element name="publicationEdition" type="xs:string"/>
+            <xs:element name="regionalEdition" type="xs:string"/>
+            <xs:element name="section" type="xs:string"/>
+            <xs:element name="pageNumber" type="xs:string"/>
+            <xs:element name="sizeCm" type="xs:string"/>
+            <xs:element name="sizePercentage" type="xs:string"/>
+            <xs:element name="originLeft" type="xs:string"/>
+            <xs:element name="originTop" type="xs:string"/>
+            <xs:element name="width" type="xs:string"/>
+            <xs:element name="height" type="xs:string"/>
+            <xs:element name="byLine" type="xs:string"/>
+            <xs:element name="photo" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="broadcast">
+        <xs:sequence>
+            <xs:element name="marketName" type="xs:string"/>
+            <xs:element name="nationalNetwork" type="xs:string"/>
+            <xs:element name="title" type="xs:string"/>
+            <xs:element name="lines" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="line" type="line" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="line">
+        <xs:sequence>
+            <xs:element name="date" type="xs:string" minOccurs="0"/>
+            <xs:element name="text" type="xs:string" minOccurs="0"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="author">
+        <xs:sequence>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="homeUrl" type="xs:string"/>
+            <xs:element name="email" type="xs:string"/>
+            <xs:element name="description" type="xs:string"/>
+            <xs:element name="dateLastActive" type="xs:string"/>
+            <xs:element name="publishingPlatform" type="authorPublishingPlatform"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="authorPublishingPlatform">
+        <xs:sequence>
+            <xs:element name="userName" type="xs:string"/>
+            <xs:element name="userId" type="xs:string"/>
+            <xs:element name="statusesCount" type="xs:string"/>
+            <xs:element name="totalViews" type="xs:string"/>
+            <xs:element name="followingCount" type="xs:string"/>
+            <xs:element name="followersCount" type="xs:string"/>
+            <xs:element name="kloutScore" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="source">
+        <xs:sequence>
+            <xs:element name="id" type="xs:string" minOccurs="0"/>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="homeUrl" type="xs:string"/>
+            <xs:element name="publisher" type="xs:string"/>
+            <xs:element name="primaryLanguage" type="xs:string"/>
+            <xs:element name="primaryMediaType" type="xs:string"/>
+            <xs:element name="category" type="xs:string"/>
+            <xs:element name="editorialRank" type="xs:string"/>
+            <xs:element name="publicationId" type="xs:string" minOccurs="0"/>
+            <xs:element name="channelCode" type="xs:string" minOccurs="0"/>
+            <xs:element name="location" type="sourceLocation"/>
+            <xs:element name="feedSource" type="xs:string" minOccurs="0"/>
+            <xs:element name="feed" type="feed"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="sourceLocation">
+        <xs:sequence>
+            <xs:element name="country" type="xs:string"/>
+            <xs:element name="countryCode" type="xs:string"/>
+            <xs:element name="region" type="xs:string"/>
+            <xs:element name="subregion" type="xs:string"/>
+            <xs:element name="state" type="xs:string"/>
+            <xs:element name="zipArea" type="xs:string"/>
+            <xs:element name="zipCode" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="feed">
+        <xs:sequence>
+            <xs:element name="id" type="xs:string"/>
+            <xs:element name="name" type="xs:string"/>
+            <xs:element name="url" type="xs:string" minOccurs="0"/>
+            <xs:element name="mediaType" type="xs:string"/>
+            <xs:element name="publishingPlatform" type="xs:string"/>
+            <xs:element name="idFromPublisher" type="xs:string"/>
+            <xs:element name="generator" type="xs:string"/>
+            <xs:element name="description" type="xs:string"/>
+            <xs:element name="tags" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="tag" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="imageUrl" type="xs:string"/>
+            <xs:element name="copyright" type="xs:string"/>
+            <xs:element name="language" type="xs:string"/>
+            <xs:element name="dataFormat" type="xs:string"/>
+            <xs:element name="rank" type="rank"/>
+            <xs:element name="inWhiteList" type="xs:string"/>
+            <xs:element name="autoTopics" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="autoTopic" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="editorialTopics" minOccurs="0">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="editorialTopic" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+            <xs:element name="genre" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="rank">
+        <xs:sequence>
+            <xs:element name="autoRank" type="xs:string"/>
+            <xs:element name="autoRankOrder" type="xs:string"/>
+            <xs:element name="inboundLinkCount" type="xs:string"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>
+

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,37 @@
+package org.apache.streams.gnip.powertrack.test;
+
+import org.apache.streams.gnip.powertrack.PowerTrackActivitySerializer;
+import org.junit.Assert;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: rebanks
+ * Date: 9/6/13
+ * Time: 9:28 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class PowerTrackDeserializationTest {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(PowerTrackActivitySerializer.class);
+
+    private static final String ptData1= "{\"gnip\":{\"matching_rules\":[{\"tag\":\"toujours_DE_DE_de\"}],\"klout_score\":32,\"klout_profile\":{\"topics\":[],\"klout_user_id\":\"141018977628748348\",\"link\":\"http://klout.com/user/id/141018977628748348\"},\"language\":{\"value\":\"fr\"}},\"body\":\"RT @Albayraakkk: J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se par\\u201a??\",\"favoritesCount\":0,\"link\":\"http://twitter.com/alexandragriett/statuses/375760903104638976\",\"retweetCount\":168,\"twitter_lang\":\"fr\",\"postedTime\":\"2013-09-05T23:22:35.000Z\",\"provider\":{\"link\":\"http://www.twitter.com\",\"displayName\":\"Twitter\",\"objectType\":\"service\"},\"actor\":{\"summary\":null,\"twitterTimeZone\":null,\"friendsCount\":68,\"favoritesCount\":3,\"link\":\"http://www.twitter.com/alexandragriett\",\"postedTime\":\"2013-05-01T17:52:16.000Z\",\"image\":\"https://si0.twimg.com/profile_images/37880000041435
 3370/ef4170ca183eed9f7f30665712baba05_normal.jpeg\",\"links\":[{\"rel\":\"me\",\"href\":null}],\"listedCount\":0,\"id\":\"id:twitter.com:1395160326\",\"languages\":[\"fr\"],\"verified\":false,\"utcOffset\":null,\"followersCount\":47,\"preferredUsername\":\"alexandragriett\",\"displayName\":\"MauvaiseIdee\",\"statusesCount\":333,\"objectType\":\"person\"},\"object\":{\"body\":\"J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se parle plus...\",\"favoritesCount\":24,\"link\":\"http://twitter.com/Albayraakkk/statuses/370496182172540928\",\"twitter_lang\":\"fr\",\"postedTime\":\"2013-08-22T10:42:27.000Z\",\"provider\":{\"link\":\"http://www.twitter.com\",\"displayName\":\"Twitter\",\"objectType\":\"service\"},\"actor\":{\"summary\":\"Le meilleur est dans mes favoris ! J'followback sur Instagram : http://instagram.com/Albayraakkk Kik : Cihan69200 #TeamBooba #TeamLacrim\",\"twitterTimeZone\":\"Athens\",\"friendsCount\":24
 998,\"favoritesCount\":677,\"location\":{\"displayName\":\"Dans Ta Timeline\",\"objectType\":\"place\"},\"link\":\"http://www.twitter.com/Albayraakkk\",\"postedTime\":\"2012-06-23T20:59:05.000Z\",\"image\":\"https://si0.twimg.com/profile_images/378800000410070574/26edc26ad5ccb223da8b850244b468eb_normal.jpeg\",\"links\":[{\"rel\":\"me\",\"href\":\"http://facebook.com/CihanAlbayraak\"}],\"listedCount\":69,\"id\":\"id:twitter.com:616472380\",\"languages\":[\"fr\"],\"verified\":false,\"utcOffset\":\"10800\",\"followersCount\":76068,\"preferredUsername\":\"Albayraakkk\",\"displayName\":\"LA VIRGULE \\u201a??\",\"statusesCount\":671,\"objectType\":\"person\"},\"object\":{\"summary\":\"J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se parle plus...\",\"id\":\"object:search.twitter.com,2005:370496182172540928\",\"link\":\"http://twitter.com/Albayraakkk/statuses/370496182172540928\",\"postedTime\":\"2013-08-22T10:42:27.000Z
 \",\"objectType\":\"note\"},\"twitter_entities\":{\"symbols\":[],\"urls\":[],\"hashtags\":[],\"user_mentions\":[]},\"id\":\"tag:search.twitter.com,2005:370496182172540928\",\"verb\":\"post\",\"generator\":{\"link\":\"http://twitter.com/download/iphone\",\"displayName\":\"Twitter for iPhone\"},\"objectType\":\"activity\"},\"twitter_entities\":{\"symbols\":[],\"urls\":[],\"hashtags\":[],\"user_mentions\":[{\"id\":616472380,\"name\":\"LA VIRGULE \\u201a??\",\"indices\":[3,15],\"screen_name\":\"Albayraakkk\",\"id_str\":\"616472380\"}]},\"twitter_filter_level\":\"medium\",\"content\":\"RT @Albayraakkk: J'attends ton SMS, tu attends le miens. On croit toujours que l'autre va envoyer un message en premier. Bref, on ne se par\\u201a??\",\"id\":\"tag:search.twitter.com,2005:375760903104638976\",\"verb\":\"share\",\"generator\":{\"link\":\"http://twitter.com/download/iphone\",\"displayName\":\"Twitter for iPhone\"},\"published\":\"2013-09-05T23:22:35.000Z\",\"objectType\":\"activity\"}";
+
+    @Test
+    public void deserializationTest() {
+
+        PowerTrackActivitySerializer serializer = new PowerTrackActivitySerializer();
+        try {
+        Object activity = serializer.deserialize(ptData1);
+        } catch( Exception e ) {
+            LOGGER.error(e.getMessage(), e );
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+
+
+
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/pom.xml
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/pom.xml?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/pom.xml (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-gnip/pom.xml Thu Jan  9 17:27:50 2014
@@ -0,0 +1,49 @@
+<?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>
+        <groupId>org.apache.streams</groupId>
+        <artifactId>streams-contrib</artifactId>
+        <version>0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streams-provider-gnip</artifactId>
+
+    <packaging>pom</packaging>
+
+    <properties>
+
+    </properties>
+
+    <modules>
+        <module>gnip-powertrack</module>
+        <module>gnip-edc-facebook</module>
+        <module>gnip-edc-flickr</module>
+        <module>gnip-edc-googleplus</module>
+        <module>gnip-edc-instagram</module>
+        <module>gnip-edc-reddit</module>
+        <module>gnip-edc-youtube</module>
+    </modules>
+
+    <dependencyManagement>
+        <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>
+        </dependencies>
+    </dependencyManagement>
+</project>

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/pom.xml
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/pom.xml?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/pom.xml (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/pom.xml Thu Jan  9 17:27:50 2014
@@ -0,0 +1,155 @@
+<?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>
+        <groupId>org.apache.streams</groupId>
+        <artifactId>streams-contrib</artifactId>
+        <version>0.1-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streams-provider-moreover</artifactId>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-json-org</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jsonschema2pojo</groupId>
+            <artifactId>jsonschema2pojo-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-pojo</artifactId>
+        </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.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>1.8</version>
+                <executions>
+                    <execution>
+                        <id>add-source-jsonschema2pojo</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/com/moreover</sourcePath>
+                    </sourcePaths>
+                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+                    <targetPackage>com.moreover</targetPackage>
+                    <useLongIntegers>true</useLongIntegers>
+                    <useJodaDates>false</useJodaDates>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.jvnet.jaxb2.maven2</groupId>
+                <artifactId>maven-jaxb2-plugin</artifactId>
+                <configuration>
+                    <schemaDirectory>src/main/xmlschema/com/moreover/</schemaDirectory>
+                    <generateDirectory>target/generated-sources/jaxb2</generateDirectory>
+                    <verbose>true</verbose>
+                    <debug>true</debug>
+                    <encoding>${project.build.sourceEncoding}</encoding>
+                    <forceRegenerate>true</forceRegenerate>
+                    <removeOldOutput>false</removeOldOutput>
+                    <generatePackage>com.moreover.api</generatePackage>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.jvnet.jaxb2_commons</groupId>
+                            <artifactId>jaxb2-basics</artifactId>
+                            <version>0.6.5</version>
+                        </plugin>
+                    </plugins>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,72 @@
+package org.apache.streams.data;
+
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
+import com.moreover.api.Article;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.util.MoreoverUtils;
+import org.apache.streams.pojo.json.Activity;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Deserializes Moreover JSON format into Activities
+ */
+public class MoreoverJsonActivitySerializer implements ActivitySerializer {
+    @Override
+    public String serializationFormat() {
+        return "application/json+vnd.moreover.com.v1";
+    }
+
+    @Override
+    public String serialize(Activity deserialized) {
+        throw new UnsupportedOperationException("Cannot currently serialize to Moreover JSON");
+    }
+
+    @Override
+    public Activity deserialize(String serialized) {
+        serialized = serialized.replaceAll("\\[[ ]*\\]", "null");
+
+        System.out.println(serialized);
+
+        ObjectMapper mapper = new ObjectMapper();
+        AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(mapper.getTypeFactory());
+        mapper.setAnnotationIntrospector(introspector);
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
+        mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, Boolean.FALSE);
+        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.WRAP_EXCEPTIONS, Boolean.TRUE);
+
+        Article article;
+        try {
+            ObjectNode node = (ObjectNode)mapper.readTree(serialized);
+            node.remove("tags");
+            node.remove("locations");
+            node.remove("companies");
+            node.remove("topics");
+            node.remove("media");
+            node.remove("outboundUrls");
+            ObjectNode jsonNodes = (ObjectNode) node.get("source").get("feed");
+            jsonNodes.remove("editorialTopics");
+            jsonNodes.remove("tags");
+            jsonNodes.remove("autoTopics");
+            article = mapper.convertValue(node, Article.class);
+        } catch (IOException e) {
+            throw new IllegalArgumentException("Unable to deserialize", e);
+        }
+        return MoreoverUtils.convert(article);
+    }
+
+    @Override
+    public List<Activity> deserializeAll(String serializedList) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,86 @@
+package org.apache.streams.data;
+
+import com.moreover.api.Article;
+import com.moreover.api.ArticlesResponse;
+import com.moreover.api.ObjectFactory;
+import org.apache.commons.lang.SerializationException;
+import org.apache.streams.data.util.MoreoverUtils;
+import org.apache.streams.pojo.json.Activity;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Deserializes the Moreover Article XML and converts it to an instance of {@link Activity}
+ */
+public class MoreoverXmlActivitySerializer implements ActivitySerializer {
+
+    //JAXBContext is threadsafe (supposedly)
+    private final JAXBContext articleContext;
+    private final JAXBContext articlesContext;
+
+    public MoreoverXmlActivitySerializer() {
+        articleContext = createContext(Article.class);
+        articlesContext = createContext(ArticlesResponse.class);
+    }
+
+    @Override
+    public String serializationFormat() {
+        return "application/xml+vnd.moreover.com.v1";
+    }
+
+    @Override
+    public String serialize(Activity deserialized) {
+        throw new UnsupportedOperationException("Cannot currently serialize to Moreover");
+    }
+
+    @Override
+    public Activity deserialize(String serialized) {
+        Article article = deserializeMoreover(serialized);
+        return MoreoverUtils.convert(article);
+    }
+
+    @Override
+    public List<Activity> deserializeAll(String serializedList) {
+        ArticlesResponse response = deserializeMoreoverResponse(serializedList);
+        List<Activity> activities = new LinkedList<Activity>();
+        for(Article article : response.getArticles().getArticle()) {
+            activities.add(MoreoverUtils.convert(article));
+        }
+        return activities;
+    }
+
+    private Article deserializeMoreover(String serialized){
+        try {
+            Unmarshaller unmarshaller = articleContext.createUnmarshaller();
+            return (Article) unmarshaller.unmarshal(new StringReader(serialized));
+        } catch (JAXBException e) {
+            throw new SerializationException("Unable to deserialize Moreover data", e);
+        }
+    }
+
+    private ArticlesResponse deserializeMoreoverResponse(String serialized){
+        try {
+            Unmarshaller unmarshaller = articlesContext.createUnmarshaller();
+            return ((JAXBElement<ArticlesResponse>) unmarshaller.unmarshal(new StringReader(serialized))).getValue();
+        } catch (JAXBException e) {
+            throw new SerializationException("Unable to deserialize Moreover data", e);
+        }
+    }
+
+    private JAXBContext createContext(Class articleClass) {
+        JAXBContext context;
+        try {
+            context = JAXBContext.newInstance(articleClass.getPackage().getName(), ObjectFactory.class.getClassLoader());
+        } catch (JAXBException e) {
+            throw new IllegalStateException("Unable to create JAXB Context for Moreover data", e);
+        }
+        return context;
+    }
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,83 @@
+package org.apache.streams.data.moreover;
+
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.math.BigInteger;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.Date;
+
+/**
+ *
+ */
+public class MoreoverClient {
+    private static final Logger logger = LoggerFactory.getLogger(MoreoverClient.class);
+
+    private static final String BASE_URL = "http://metabase.moreover.com/com.facebook.api/v10/articles?key=%s&limit=%s&sequence_id=%s";
+    private final String id;
+    private String apiKey;
+    private BigInteger lastSequenceId = BigInteger.ZERO;
+    //testing purpose only
+    public long pullTime;
+    private boolean debug;
+
+    public MoreoverClient(String id, String apiKey) {
+        logger.info("Constructed new client for id:{} key:{}", id, apiKey);
+        this.id = id;
+        this.apiKey = apiKey;
+    }
+
+    public MoreoverResult getArticlesAfter(String sequenceId, int limit) throws IOException {
+        String urlString = String.format(BASE_URL, this.apiKey, limit, (sequenceId == null ? 0 : sequenceId));
+        logger.debug("Making call to {}", urlString);
+        long start = System.nanoTime();
+        MoreoverResult result = new MoreoverResult(id, getArticles(new URL(urlString)), start, System.nanoTime());
+        logger.debug("Maximum sequence from last call {}", result.getMaxSequencedId());
+        if(!result.getMaxSequencedId().equals(BigInteger.ZERO))
+            this.lastSequenceId = result.getMaxSequencedId();
+        return result;
+    }
+
+    public MoreoverResult getNextBatch() throws IOException{
+        //logger.debug("Getting next results for {} {} {}", this.id, this.apiKey, this.lastSequenceId);
+        return getArticlesAfter(this.lastSequenceId.toString(), 500);
+    }
+
+    private String getArticles2(URL url) throws IOException {
+        HttpURLConnection cn = (HttpURLConnection) url.openConnection();
+        cn.setRequestMethod("GET");
+        cn.addRequestProperty("Content-Type", "text/xml;charset=UTF-8");
+        cn.setDoInput(true);
+        cn.setDoOutput(false);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(cn.getInputStream(), Charset.forName("UTF-8")));
+        String line = null;
+        StringBuilder builder = new StringBuilder();
+        String s = "";
+        String result = new String(s.getBytes(Charset.forName("UTF-8")), Charset.forName("UTF-8"));
+        while((line = reader.readLine()) != null) {
+            result+=line;
+        }
+        pullTime = new Date().getTime();
+        return result;
+    }
+
+    private String getArticles(URL url) throws IOException{
+        HttpURLConnection cn = (HttpURLConnection) url.openConnection();
+        cn.setRequestMethod("GET");
+        cn.addRequestProperty("Content-Type", "text/xml;charset=UTF-8");
+        cn.setDoInput(true);
+        cn.setDoOutput(false);
+        StringWriter writer = new StringWriter();
+        IOUtils.copy(new InputStreamReader(cn.getInputStream(), Charset.forName("UTF-8")), writer);
+        writer.flush();
+        pullTime = new Date().getTime();
+        return writer.toString();
+    }
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,77 @@
+package org.apache.streams.data.moreover;
+
+import com.google.common.collect.Lists;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.apache.streams.moreover.MoreoverConfiguration;
+import org.apache.streams.moreover.MoreoverKeyData;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import java.util.concurrent.*;
+
+public class MoreoverProvider implements StreamsProvider {
+
+    private static Logger logger = LoggerFactory.getLogger(MoreoverProvider.class);
+    private volatile Queue<StreamsResultSet> resultQueue = new ConcurrentLinkedQueue<StreamsResultSet>();
+    private List<ExecutorService> tasks = new LinkedList<ExecutorService>();
+    private List<MoreoverKeyData> keys;
+    private boolean started = false;
+
+    public MoreoverProvider(MoreoverConfiguration moreoverConfiguration) {
+        this.keys = Lists.newArrayList();
+        for( MoreoverKeyData apiKey : moreoverConfiguration.getApiKeys()) {
+            this.keys.add(apiKey);
+        }
+        this.keys = Arrays.asList();
+    }
+
+    public MoreoverProvider(MoreoverKeyData... keys) {
+        this.keys = Arrays.asList(keys);
+    }
+
+    @Override
+    public synchronized void start() {
+        logger.trace("Starting Producer");
+        if(!started) {
+            logger.trace("Producer not started.  Initializing");
+            for(MoreoverKeyData key : keys) {
+                MoreoverProviderTask task = new MoreoverProviderTask(key.getId(), key.getKey(), this.resultQueue, key.getStartingSequence());
+                ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
+                service.scheduleWithFixedDelay(task, 0, MoreoverProviderTask.LATENCY, TimeUnit.SECONDS);
+                logger.info("Started producer for {} with service {}", key.getKey(), service.toString());
+                this.tasks.add(service);
+            }
+            started = true;
+        }
+    }
+
+    @Override
+    public synchronized void stop() {
+        for(ExecutorService service: tasks) {
+            service.shutdown();
+        }
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+        return resultQueue.peek();
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return null;
+    }
+
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,67 @@
+package org.apache.streams.data.moreover;
+
+import org.apache.streams.core.StreamsResultSet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Queue;
+
+/**
+ * Task to pull from the Morever API
+ */
+public class MoreoverProviderTask implements Runnable {
+
+    public static final int LATENCY = 10;
+    public static final int REQUIRED_LATENCY = LATENCY * 1000;
+    private static Logger logger = LoggerFactory.getLogger(MoreoverProviderTask.class);
+
+    private final String lastSequence;
+    private final String apiKey;
+    private final String apiId;
+    private final Queue<StreamsResultSet> results;
+    private final MoreoverClient moClient;
+    private boolean started = false;
+
+    public MoreoverProviderTask(String apiId, String apiKey, Queue<StreamsResultSet> results, String lastSequence) {
+        //logger.info("Constructed new task {} for {} {} {}", UUID.randomUUID().toString(), apiId, apiKey, lastSequence);
+        this.apiId = apiId;
+        this.apiKey = apiKey;
+        this.results = results;
+        this.lastSequence = lastSequence;
+        this.moClient = new MoreoverClient(this.apiId, this.apiKey);
+        initializeClient(moClient);
+    }
+
+    @Override
+    public void run() {
+        try {
+            ensureTime(moClient);
+            MoreoverResult result = started ? moClient.getNextBatch() : moClient.getArticlesAfter(lastSequence, 500);
+            started = true;
+            results.offer(new MoreoverResultSetWrapper(result));
+            logger.info("ApiKey={}\tlastSequenceid={}", this.apiKey, result.getMaxSequencedId());
+        } catch (Exception e) {
+            logger.error("Exception while polling moreover", e);
+        }
+    }
+
+    private void ensureTime(MoreoverClient moClient) {
+        try {
+            long gap = System.currentTimeMillis() - moClient.pullTime;
+            if (gap < REQUIRED_LATENCY)
+                Thread.sleep(REQUIRED_LATENCY - gap);
+        } catch (Exception e) {
+            logger.warn("Error sleeping for latency");
+        }
+    }
+
+    private void initializeClient(MoreoverClient moClient) {
+        try {
+            moClient.getArticlesAfter("0", 2);
+        } catch (Exception e) {
+            logger.error("Failed to start stream, {}", this.apiKey);
+            logger.error("Exception : ", e);
+            throw new IllegalStateException("Unable to initialize stream", e);
+        }
+    }
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,151 @@
+package org.apache.streams.data.moreover;
+
+import com.fasterxml.aalto.stax.InputFactoryImpl;
+import com.fasterxml.aalto.stax.OutputFactoryImpl;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
+import com.fasterxml.jackson.dataformat.xml.XmlFactory;
+import com.fasterxml.jackson.dataformat.xml.XmlMapper;
+import com.google.common.collect.ImmutableList;
+import com.moreover.api.Article;
+import org.apache.streams.core.StreamsDatum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.math.BigInteger;
+import java.util.Iterator;
+
+
+public class MoreoverResult implements Iterable<StreamsDatum> {
+    private static final Logger logger = LoggerFactory.getLogger(MoreoverClient.class);
+
+    private ObjectMapper mapper;
+    private XmlMapper xmlMapper;
+
+    private String xmlString;
+    private String jsonString;
+    private ObjectNode resultObject;
+    private JsonNode articlesArray;
+    private long start;
+    private long end;
+    private String clientId;
+    private BigInteger maxSequencedId = BigInteger.ZERO;
+
+
+    protected MoreoverResult(String clientId, String xmlString, long start, long end) {
+        this.xmlString = xmlString;
+        this.clientId = clientId;
+        this.start = start;
+        this.end = end;
+        XmlFactory f = new XmlFactory(new InputFactoryImpl(),
+                new OutputFactoryImpl());
+
+        JacksonXmlModule module = new JacksonXmlModule();
+
+        module.setDefaultUseWrapper(false);
+
+        xmlMapper = new XmlMapper(f, module);
+
+        xmlMapper
+                .configure(
+                        DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,
+                        Boolean.TRUE);
+        xmlMapper
+                .configure(
+                        DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,
+                        Boolean.TRUE);
+        xmlMapper
+                .configure(
+                        DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY,
+                        Boolean.TRUE);
+        xmlMapper.configure(
+                DeserializationFeature.READ_ENUMS_USING_TO_STRING,
+                Boolean.TRUE);
+
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public long getStart() {
+        return start;
+    }
+
+    public long getEnd() {
+        return end;
+    }
+
+    public String getJSONString() {
+
+        if( this.jsonString != null ) {
+            return jsonString;
+        }
+        else {
+            try {
+                this.resultObject = xmlMapper.readValue(xmlString, ObjectNode.class);
+                this.jsonString = mapper.writeValueAsString(this.resultObject);
+                this.articlesArray = (JsonNode)this.resultObject.get("articles");
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+
+        for (JsonNode articleNode : ImmutableList.copyOf(articlesArray.elements())) {
+            Article article = mapper.convertValue(articleNode, Article.class);
+            BigInteger temp = new BigInteger(article.getSequenceId());
+            logger.trace("Prior max sequence Id {} current candidate {}", this.maxSequencedId, temp);
+            if (temp.compareTo(this.maxSequencedId) > 0) {
+                this.maxSequencedId = temp;
+                logger.debug("New max sequence Id {}", this.maxSequencedId);
+            }
+
+        }
+        return jsonString;
+    }
+
+    public String getXmlString() {
+        return this.xmlString;
+    }
+
+    public BigInteger getMaxSequencedId() {
+        return this.maxSequencedId;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    public Iterator<StreamsDatum> iterator() {
+        // TODO: I don't understand the purpose of this class.  destroy
+        //return new JsonStringIterator(articlesArray.iterator());
+        return null;
+    }
+
+    protected static class JsonStringIterator implements Iterator<Serializable> {
+
+        private Iterator<Serializable> underlying;
+
+        protected JsonStringIterator(Iterator<Serializable> underlying) {
+            this.underlying = underlying;
+        }
+
+        @Override
+        public boolean hasNext() {
+            return underlying.hasNext();
+        }
+
+        @Override
+        public String next() {
+            return underlying.next().toString();
+        }
+
+        @Override
+        public void remove() {
+            underlying.remove();
+        }
+    }
+}

Added: incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
URL: http://svn.apache.org/viewvc/incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java?rev=1556893&view=auto
==============================================================================
--- incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java (added)
+++ incubator/streams/branches/sblackmon/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java Thu Jan  9 17:27:50 2014
@@ -0,0 +1,41 @@
+package org.apache.streams.data.moreover;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsResultSet;
+
+import java.math.BigInteger;
+import java.util.Iterator;
+
+public class MoreoverResultSetWrapper implements StreamsResultSet {
+
+    private MoreoverResult underlying;
+
+    public MoreoverResultSetWrapper(MoreoverResult underlying) {
+        this.underlying = underlying;
+    }
+
+    @Override
+    public long getStartTime() {
+        return underlying.getStart();
+    }
+
+    @Override
+    public long getEndTime() {
+        return underlying.getEnd();
+    }
+
+    @Override
+    public String getSourceId() {
+        return underlying.getClientId();
+    }
+
+    @Override
+    public BigInteger getMaxSequence() {
+        return underlying.getMaxSequencedId();
+    }
+
+    @Override
+    public Iterator<StreamsDatum> iterator() {
+        return underlying.iterator();
+    }
+}