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/03/22 00:19:39 UTC

[01/71] [abbrv] fixing STREAMS-26 branch

Repository: incubator-streams
Updated Branches:
  refs/heads/STREAMS-26 c614c6a8c -> aaeb02179
  refs/heads/master 1e29516db -> d72d6b431


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/js/publisher.js
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/js/publisher.js b/trunk/streams-web/src/main/webapp/demo/js/publisher.js
deleted file mode 100644
index 8b7809d..0000000
--- a/trunk/streams-web/src/main/webapp/demo/js/publisher.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var publisher = publisher || (function(){
-
-    //registers a new publisher, and returns the publisher's unique URL that you can use to POST activities
-    var registerPublisher = function(){
-
-        var registrationUrl;
-        console.log($("#publisherRegistrationJSON").val());
-        $.ajax({
-            data: $("#publisherRegistrationJSON").val(),
-            contentType:'application/json',
-            type:'POST',
-            url:'/streams-web/apps/publisher/register',
-            success:function(data){
-                console.log(data);
-                console.log( $("#publisherRegistrationJSON").html());
-                registrationUrl = data;
-                $("#registrationUrl").val(registrationUrl);
-            }
-        });
-    };
-
-    //uses the publisher's unique URL to POST activities
-    var postActivity = function(){
-        var registrationUrl;
-        $.ajax({
-            data: $("#publisherActivityJSON").val(),
-            url: $("#registrationUrl").val(),
-            contentType:'application/json',
-            type:'POST',
-            success:function(data){
-                console.log(data);
-                $("#successMessage").html("Success! Activity Posted");
-            }
-        })
-    };
-
-    return{
-        registerPublisher: registerPublisher,
-        postActivity: postActivity
-    };
-
-
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/js/subscriber.js
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/js/subscriber.js b/trunk/streams-web/src/main/webapp/demo/js/subscriber.js
deleted file mode 100644
index 127d12f..0000000
--- a/trunk/streams-web/src/main/webapp/demo/js/subscriber.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var subscriber = subscriber || (function(){
-
-    //registers a new subscriber, and returns the subscriber's unique URL
-    var registerSubscriber = function(){
-
-        var registrationUrl;
-        console.log($("").val());
-        $.ajax({
-            data:$("#subscriberRegistrationJSON").val(),
-            contentType:"application/json",
-            type:"POST",
-            url:"/streams-web/apps/subscriber/register",
-            success:function(data){
-                console.log(data);
-                registrationUrl = data;
-                $("#registrationUrl").val(registrationUrl);
-            }
-        });
-    };
-
-    //returns activity streams (JSON) that have the same tag specified in the subscriber's filters
-    var getActivities = function(){
-        var registrationUrl;
-        $.ajax({
-            contentType: "text/plain",
-            type:"GET",
-            url: $("#registrationUrl").val(),
-            success:function(data){
-                console.log(data);
-                $("#successMessage").val(data);
-            }
-        })
-    };
-
-    return{
-        registerSubscriber: registerSubscriber,
-        getActivities: getActivities
-    };
-
-})();
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/publisher.html
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/publisher.html b/trunk/streams-web/src/main/webapp/demo/publisher.html
deleted file mode 100644
index f1940d8..0000000
--- a/trunk/streams-web/src/main/webapp/demo/publisher.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
-    <script type="text/javascript" src="js/publisher.js"></script>
-
-    <title>Publisher Demo</title>
-</head>
-
-<body>
-      <form>
-        <p>
-
-            <label>Enter your Publisher Registration JSON here:</label>
-            <textarea id="publisherRegistrationJSON"
-                rows="12"
-                cols="80">{
-                "authToken": "token",
-                "@class":"org.apache.streams.osgi.components.activityconsumer.impl.PushActivityConsumer",
-                "input_type": "http",
-                "method": "post",
-                "src": "http.example.com:8888",
-                "delivery_frequency": "60",
-                "auth_type": "none",
-                "username": "username",
-                "password": "password"
-                }
-            </textarea><br>
-          </p>
-      </form>
-      <button type="button" onclick="publisher.registerPublisher()">Submit Registration JSON</button><br>
-
-      <input id="registrationUrl">
-
-      <form>
-          <p>
-
-              <label>Enter your Publisher Registration JSON here:</label>
-              <textarea id="publisherActivityJSON"
-                        rows="12"
-                        cols="80">
-                  {
-                  "id": "id",
-                  "verb": "verb",
-                  "tags": "tags",
-                  "provider": {
-                  "url": "www.providerexample.com"
-                  },
-                  "actor": {
-                  "id": "actorid",
-                  "objectType": "actorobject",
-                  "displayName": "actorname",
-                  "url": "www.actorexampleurl.com"
-                  },
-                  "target": {
-                  "id": "targetid",
-                  "displayName": "targetname",
-                  "url": "www.targeturl.com"
-                  },
-                  "object": {
-                  "id": "objectid",
-                  "displayName": "objectname",
-                  "objectType": "object",
-                  "url": "www.objecturl.org"
-                  }
-                  }
-              </textarea><br>
-          </p>
-      </form>
-
-      <button type="button" onclick="publisher.postActivity()">Submit Activity JSON</button><br>
-      <p id="successMessage"></p>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/subscriber.html
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/subscriber.html b/trunk/streams-web/src/main/webapp/demo/subscriber.html
deleted file mode 100644
index ee3133d..0000000
--- a/trunk/streams-web/src/main/webapp/demo/subscriber.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
-    <script type="text/javascript" src="js/subscriber.js"></script>
-    <title>Subscriber Demo</title>
-</head>
-
-<body>
-<form>
-    <p>
-        <label>Enter your Subscriber Registration JSON here:</label>
-        <textarea id="subscriberRegistrationJSON"
-                  rows="12"
-                  cols="80">
-            {
-            "authToken": "token",
-            "@class":"org.apache.streams.osgi.components.activitysubscriber.impl.ActivityStreamsSubscriptionImpl",
-            "filters": [
-            "tags"
-            ]
-            }
-        </textarea><br>
-    </p>
-</form>
-
-<button type="button" onclick="subscriber.registerSubscriber()">Submit Registration JSON</button>
-<br>
-<textarea id="registrationUrl"
-          rows="2"
-          cols="80"></textarea><br>
-
-<button type="button" onclick="subscriber.getActivities()">Get Activities</button>
-<br>
-<textarea id="successMessage"
-          rows="16"
-          cols="80"></textarea>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/index.html
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/index.html b/trunk/streams-web/src/main/webapp/index.html
deleted file mode 100644
index 3053f1c..0000000
--- a/trunk/streams-web/src/main/webapp/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-
-</head>
-<body>
-<a href="demo/publisher.html">Push here to demo publishing</a>
-<a href="demo/subscriber.html" >Push here to demo subscribing</a>
-</body>
-</html>
\ No newline at end of file


[10/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_xmls.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_xmls.txt b/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_xmls.txt
deleted file mode 100644
index a652983..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_xmls.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><beatApi xmlns="http://www.blogscope.net/api/namespace/schema/SearchResponse"><beatRequest><heatbeatID>11199</heatbeatID><startDate>2013-11-17T00:00:00Z</startDate><endDate>2013-11-18T00:00:00Z</endDate><key>KOX5abO6D5TaeB9V-dQARNUeRlEZGZvc3Nhc0B3Y2d3b3JsZC5jb20...</key><size>20</size><offset>0</offset></beatRequest><beatResponse><beat><docid>11199:31511567</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:28-05:00</time><title>Lailamoise</title><content>Sony Ericsson P1i Silver/Black Best Price Reviews ? More Detail &gt;&gt; http://tinyurl.com/kux7v75 ? Sony Ericsson P1i Silver/Black best buy stores??TITLE :Sony Ericsson P1i Silver/Black ????Sony Ericsson P1i Silver/Black : Customer Reviews??If you would like Sony Ericsson P1i Silver/Black ?. I inform you to obtain Sony Ericsson.??I do think its a fantastic looking product with the price. ??Sony Ericsson P1i Silver/Black Detail &amp; Feature ??????Read Shopping Onlin
 e:????Sony Ericsson P1i Silver/Black Get Great Deals When You Shop Online Today!??The world wide web is already like a giant mall sometimes. You can aquire each of the items that you would like from your home. There are many stores to learn that you may possibly need assistance receiving a game plan for the best deals. Please read on for a few tips.??Major shopping retailers are usually targeted by hackers and other Sony Ericsson P1i Silver/Black individuals who want to take your personal identification or get into your accounts.??Have a look at customer reviews for almost any new retailer should this be your first time purchasing from them. This will help ensure you a good idea of the caliber of the company's products and customer service. When you notice multiple poor reviews for a retailer, think about shopping with another merchant.??Don't give any information and finances on the site which is unfamiliar or shady. Verisign and/or Cybertrust have security signs you know who to tr
 ust.??Consider the address or URL of your store prior to deciding to input any charge card number. In case the &quot;https&quot; could there be that means your data is being safely encrypted. Should you not see those letters, you happen to be putting yourself vulnerable to fraud.??Use available sizing charts if you're getting clothing. It's Sony Ericsson P1i Silver/Black challenging to determine if clothes will fit while shopping online. This will save you a size which is much too small or big for you.??Browse around on auction sites as well as discount ones just before buying from the big retailer's site. Sites like Amazon and eBay normally have better deals than traditional retailers. This will produce major savings and also little issues.Do make sure you assess the return policies which are in position. This can be different influenced by where you're shopping.??Buying things online will be a lot more affordable Sony Ericsson P1i Silver/Black than buying them at a physical store.
  This simply involves being familiar with the appropriate types of looking for and utilizing deals. This post had plenty of ideas to help you save while you shop online. What exactly are you presently expecting? Get on the web and start shopping!</content><link>http://www.facebook.com/permalink.php?id=651031148281595&amp;v=wall&amp;story_fbid=653391048045605</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>internet-security</value><displayName>mb1-internet-security</displayName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>global</value><displayName>mb1-global</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</disp
 layName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>651031148281595</value><displayName>651031148281595</displayName><systemType>FBID</systemType></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>retail</value><displayName>mb1-retail</displayName><
 /tag></beat><beat><docid>11199:31511566</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:17-05:00</time><title>Black Friday, Cyber Monday &amp; Holiday Sale 2013</title><content>Are You Seeking for Black Friday Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail... Cyber Monday Save NOW!??[BLACK FRIDAY SALE] &gt;&gt; http://tinyurl.com/hlfdfpfd8/B00ARZ16NI??Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail... Amazon Super Saver Shipping - Make The Most Of Your Buy Lots of men and women like to get benefit of the potential to store on-line relatively than try out to battle their way by way of malls and big suppliers throughout holiday getaway time. One of the a lot more well known purchasing websites on the internet is Amazon. Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail....
  Celluless Massager Cellulite is a challenge that has an effect on the lives of many women of all ages all-around the earth, and this has specified increase to a lot of items turning out to be out there on the sector to consider and combat the affliction. One of the most common and price productive strategies is the Celluless Vacuum Massager. Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail.... GPSMap 76 Machine to Use From Garmin GPSMap seventy six from Garmin is one particular of the most highly effective GPS machine out there right now. It is ideal for making use of on land as effectively as on sea. It presents accurate positioning and routing, and with the preloaded maps it is ready to use out of the box.</content><link>http://www.facebook.com/permalink.php?id=546014965477064&amp;v=wall&amp;story_fbid=547954431949784</link><location><country>unknown</country><locationString>unknown</locationString></location><inf
 luenceLevel>0</influenceLevel><sentiment>POS</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>internet-broadband</value><displayName>mb1-internet-broadband</displayName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>546014965477064</value><displayName>546014965477064</displayName><systemType>FBID</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>pos</value><displayName>pos</displayName><systemType>SENTIMENT</systemType></tag><tag><value>none+</value><displayName>No
 t Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>emotional</value><displayName>mb1-emotional</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>retail</value><displayName>mb1-retail</displayName></tag></beat><beat><docid>11199:31511565</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:22-05:00</time><title>Taylor Jo Covyeou</title><content>I'm currently about three thousand percent done with sprint. Anyone want to buyout my contract for me? Not worth it anymore. I'll pay you back I swear!</content><link>http://www.facebook.com/permalink.php?id=100001149
 014212&amp;v=wall&amp;story_fbid=592019207513041</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NEG</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>neg</value><displayName>neg</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>wireless</value><displayName>mb1-wireless</displayNam
 e></tag><tag><value>100001149014212</value><displayName>100001149014212</displayName><systemType>FBID</systemType></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>sprint</value><displayName>mb1-sprint</displayName></tag></beat><beat><docid>11199:31511564</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:29-05:00</time><title>Raven Woods Animal Sanctuary</title><content>Raven Woods in need of many things from hose nozzles to dog food. Please check out their wish list on Amazon, Every purchase helps. Tks http://www.amazon.com/registry/giftlist/ZO9WDN20J408/ref=cm_sw_r_tw_gln …</content><link>http://www.facebook.com/permalink.php?id=146831718669942&amp;v=wall&amp;story_fbid=698212600198515</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemTy
 pe>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>146831718669942</value><displayName>146831718669942</displayName><systemType>FBID</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511563</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:32-05:00</time><title>Mo
 mmy Matters - Uncensored</title><content>Ok so AT&amp;T wants a $750 deposit for an iPhone. Not happening lol does anyone have Sprint here? Was there an expensive deposit? I'm probably going to call them tomorrow??-MeghJ</content><link>http://www.facebook.com/permalink.php?id=494062013968286&amp;v=wall&amp;story_fbid=633415140032972</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</syste
 mType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>494062013968286</value><displayName>494062013968286</displayName><systemType>FBID</systemType></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>sprint</value><displayName>mb1-sprint</displayName></tag></beat><beat><docid>11199:31511562</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:14-05:00</time><title>Hannah Rebecca Brown</title><content>Interesting random find on Amazon! There are other designs too if (in their words not mine) you want to put
  some soul into washing up!!</content><link>http://www.facebook.com/permalink.php?id=671140091&amp;v=wall&amp;story_fbid=10153503587495092</link><gender>FEMALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>FEMALE</value><displayName>FEMALE</displayName><systemType>GENDER</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displ
 ayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>671140091</value><displayName>671140091</displayName><systemType>FBID</systemType></tag></beat><beat><docid>11199:31511561</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:58:36-05:00</time><title>Kathleen Rice Adams</title><content>Cheryl Pierson's Christmas short, &quot;The Keepers of Camelot,&quot; combines Arthurian legend with Old West action. Deservedly nominated for a Peacemaker Award, the story is unusual, heartwarming, and extremely enjoyable. Available for the first time as a standalone at Amazon for only 99 cents. How can you go wrong? (Believe me, it's worth way more than 99 cents. :-) )</content><link>http://www.facebook.com/permalink.php?id=100000653413590&amp;v=wall&amp;story_fbid=662621137102994</link><gender>FEMALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><inf
 luenceLevel>0</influenceLevel><sentiment>POS</sentiment><tag><value>FEMALE</value><displayName>FEMALE</displayName><systemType>GENDER</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1858</value><displayName>1858</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>pos</value><displayName>pos</displayName><systemType>SENTIMENT</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>100000653413590</value><displayName>100000653413590</displayName><systemType>FBID</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag></beat><beat><d
 ocid>11199:31511560</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:11-05:00</time><title>Jacob Ohse</title><content>Anyone have a Verizon phone for sale? Looking for a friend. Message me or comment to let me know.</content><link>http://www.facebook.com/permalink.php?id=1148036152&amp;v=wall&amp;story_fbid=10202441847104645</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>verizon--all</value><displayName>mb1-verizon-all</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayN
 ame><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>1148036152</value><displayName>1148036152</displayName><systemType>FBID</systemType></tag><tag><value>generic-verizon</value><displayName>mb1-generic-verizon</displayName></tag><tag><value>me</value><displayName>mb1-verizon</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511559</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:07-05:00</time><title>William T. Newton</title><content>NOW A LITTLE SOMETHING FOR THE IMAGINATION.....???Dr. Paul LaViolette: Secrets of Antigravity Pr
 opulsion?Project Skyvault, superluminal space travel, bases on the moon &amp; other planets.??C2CAM with George Knapp?http://www.youtube.com/watch?v=17g8OBuyXYk??&quot;The whole problem boils down to consciousness and what people believe is possible. ?If we can begin to realize the kind of baloney that's put out daily to the American public and to other countries and start challenging that, and realize there's a new way of thinking; that we're sort of being held in a cage -- a technology cage on purpose for fear of change -- to realize we have got to try to break out of that. It's a matter of consciousness more than it is of whether the technology is possible or exists or economically possible.&quot;?-- Paul LaViolette??MUFON 2011?http://www.youtube.com/watch?v=ifEgGMFK-VU????Secrets of Antigravity Propulsion: Tesla, UFOs, and Classified Aerospace Technology?by Paul A. LaViolette ?http://www.amazon.com/Secrets-Antigravity-Propulsion-Classified-Technology/dp/159143078X/ref=sr_1_sc_1?
 ie=UTF8&amp;qid=1384730930&amp;sr=8-1-spell&amp;keywords=secrets+of+antigravitypropulsion????&quot;We already have the means to travel among the stars, but these technologies are locked up in black projects and it would take an act of God to ever get them out to benefit humanity....&quot;?-- Ben Rich, former Head of Lockheed Skunk Works, January 1995 Secrets of Anti-Gravity Technology www.youtube.com George Knapp was joined by physicist and author Paul LaViolette, who discussed the physics behind anti-gravity propulsion technology and showed how it is not...</content><link>http://www.facebook.com/permalink.php?id=719190134&amp;v=wall&amp;story_fbid=10152041215435135</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>technology</value><displayName>mb1-technology</displ
 ayName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>719190134</value><displayName>719190134</displayName><systemType>FBID</systemType></tag><tag><value>travel-hospitality</value><displayName>mb1-travel-hospitality</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511558</docid><media
 Type>FACEBOOK</mediaType><time>2013-11-17T18:59:11-05:00</time><title>Nj Nuttamon</title><content>Amazon destruction up by 28% in year</content><link>http://www.facebook.com/permalink.php?id=100000595233182&amp;v=wall&amp;story_fbid=723443514352150</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NEG</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>neg</value><displayName>neg</displayName><systemType>SENTIMENT</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Faceb
 ook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>100000595233182</value><displayName>100000595233182</displayName><systemType>FBID</systemType></tag></beat><beat><docid>11199:31511557</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:58:44-05:00</time><title>Christopher Cashier Cha-Ching</title><content>Ca$hier X Problem Child...#Classic ???My Debut Album &quot;Business B4 Pleasure&quot; is Officially available for Purchase Worldwide!!! iTunes, Amazon, Cdbaby.com...or I can even have it delivered it to you personally...Support Underground Hip-Hop and get your copy today!??We worldwide wit it! LetsGetIt!??!$! Cha ching !$! Cashier &quot;Problem Child&quot; (Official Video) www.youtube.com</content><link>http://www.facebook.com/permalink.php?id=100001238108941&amp;v=wall&amp;story_fbid=654
 611967923401</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>global</value><displayName>mb1-global</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>1858</value><displayName>1858</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Faceboo
 k</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>100001238108941</value><displayName>100001238108941</displayName><systemType>FBID</systemType></tag></beat><beat><docid>11199:31511556</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:58:37-05:00</time><title>Randy Mazzuca</title><content>Hey Friends list,? Most of you already know about this kind of thing but I'm just throwing our hat into the ring (that metaphor makes no sense) here. Christmas is coming and I bought like all of Ali's presents through this, it's the dumbest easiest thing to do, so if you wanna take about two extra seconds to signing into Amazon by following this link, it's better than nothing. ?Thanks!</content><link>http://www.facebook.com/permalink.
 php?id=818465692&amp;v=wall&amp;story_fbid=10153490281715693</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1858</value><displayName>1858</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><di
 splayName>mb1-amazon</displayName></tag><tag><value>emotional</value><displayName>mb1-emotional</displayName></tag><tag><value>818465692</value><displayName>818465692</displayName><systemType>FBID</systemType></tag><tag><value>rational</value><displayName>mb1-rational</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511555</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:52-05:00</time><title>RT @ShookShakeSham: T-Mobile: Possibly the worst carrier ever.</title><content>RT @ShookShakeSham T-Mobile: Possibly the worst carrier ever.</content><link>http://twitter.com/payinallnickles/statuses/402224098886971392</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>4</influenceLevel><sentiment>NEG</sentiment><tag><value>R</value><displayName>R</displayName><systemType>TC</systemType></tag><tag><value>1857</value><
 displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>neg</value><displayName>neg</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>t-mobile</value><displayName>mb1-t-mobile</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402224098886971392</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402224098886971392&amp;include_entities=true</t
 weetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511555</tweetHbLink><twitterFollowers>153</twitterFollowers><twitterFollowing>55</twitterFollowing></beat><beat><docid>11199:31511554</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:19-05:00</time><title>@llamacop @zpower @mikehadgis @TMobile just ran this, very typical of the LTE speeds I see (River North) http://t.co/W21bbvrjan</title><content>@llamacop @zpower @mikehadgis @TMobile just ran this, very typical of the LTE speeds I see (River North) http://t.co/W21bbvrjan</content><link>http://twitter.com/jeffreytz/statuses/402223958009069568</link><gender>MALE</gender><location><country>us</country><locationString>chicago;-il</locationString></location><influenceLevel>4</influenceLevel><sentiment>NONE</sentiment><tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><ta
 g><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>t-mobile</value><displayName>mb1-t-mobile</displayName></tag><tag><value>C</value><displayName>C</displayName><systemType>TC</systemType></tag><tag><value>telecommunications</value><displayName>mb1-telecommunications</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402223958009069568</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223958009069568&amp;incl
 ude_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511554</tweetHbLink><twitterFollowers>198</twitterFollowers><twitterFollowing>346</twitterFollowing></beat><beat><docid>11199:31511553</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:12-05:00</time><title>RT @FCDallas: You have until tonight to vote for Michel's olimpico in AT&amp;amp;T Goal of the Year voting! ---&amp;gt; http://t.co/vMp8AeAfjS #DTID</title><content>RT @FCDallas You have until tonight to vote for Michel's olimpico in AT&amp;T Goal of the Year voting! ---&gt; http://t.co/vMp8AeAfjS #DTID</content><link>http://twitter.com/BrandonWalker/statuses/402223931014123520</link><gender>MALE</gender><location><country>us</country><locationString>henderson;-tx</locationString></location><influenceLevel>3</influenceLevel><sentiment>NONE</sentiment><tag><value>R</value><displayName>R</displayName><systemType>TC</systemType></tag><tag><value>1857</value><displayName>185
 7</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402223931014123520</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223931014123520&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511553</tweetHbLink><twitterFollowers>85</twitterFollowers><twitterFollowing>108</twit
 terFollowing></beat><beat><docid>11199:31511552</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:33-05:00</time><title>NEW 5&quot; Multi-Touch Android 4.0 Smart Phone Dual SIM WIFI Unlocked AT&amp;amp;T T-Mobile http://t.co/w4WP455D2O #android</title><content>NEW 5&quot; Multi-Touch Android 4.0 Smart Phone Dual SIM WIFI Unlocked AT&amp;T T-Mobile http://t.co/w4WP455D2O #android</content><link>http://twitter.com/GaryTinan/statuses/402224017396236288</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>2</influenceLevel><sentiment>NONE</sentiment><tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>
 smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>t-mobile</value><displayName>mb1-t-mobile</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>wireless-network-access</value><displayName>mb1-wireless-network-access</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402224017396236288</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402224017396236288&amp;include_entities=t
 rue</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511552</tweetHbLink><twitterFollowers>1</twitterFollowers><twitterFollowing>34</twitterFollowing></beat><beat><docid>11199:31511551</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:56:57-05:00</time><title>AT&amp;amp;T U-verse Surpasses 10 Million Broadband Subs | Programming | http://t.co/nMHaIGW4Uw http://t.co/Ek8uycqBVz</title><content>AT&amp;T U-verse Surpasses 10 Million Broadband Subs | Programming | http://t.co/nMHaIGW4Uw http://t.co/Ek8uycqBVz</content><link>http://twitter.com/manffredo77/statuses/402223866933563392</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>mb1-exclusions-test</value><displayName>mb1-exclusions-test</displayName></tag><tag><value>internet-broadband</value><displayName>mb1-internet-broadband</displayName></tag><tag><value>t</value><displayName>
 Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1856</value><displayName>1856</displayName><systemType>T</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>landline-telephone</value><displayName>mb1-landline-telephone</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>mb1-exclusions</value><displ
 ayName>mb1-exclusions</displayName></tag><tweetid>402223866933563392</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223866933563392&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511551</tweetHbLink><twitterFollowers>7</twitterFollowers><twitterFollowing>12</twitterFollowing></beat><beat><docid>11199:31511550</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:56:50-05:00</time><title>I voted for Carlos Hyde for AT&amp;amp;T All America Player of the Week! Go to http://t.co/mNTgoFxNiz to cast your vote!</title><content>I voted for Carlos Hyde for AT&amp;T All America Player of the Week! Go to http://t.co/mNTgoFxNiz to cast your vote!</content><link>http://twitter.com/BuckeyesGirl33/statuses/402223836235456512</link><location><country>unknown</country><locationString>in-the-huddle</locationString></location><influenceLevel>7</influenceLevel><sentiment>NONE</sentiment><tag><value>t</value><
 displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1856</value><displayName>1856</displayName><systemType>T</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tweetid>402223836235456512</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223836235456512&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/si
 debar/?hid=11199&amp;bid=31511550</tweetHbLink><twitterFollowers>3175</twitterFollowers><twitterFollowing>1993</twitterFollowing></beat><beat><docid>11199:31511549</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:10-05:00</time><title>Apple iPhone 4s - 32GB - Black (AT&amp;amp;T) Smartphone (MC923LL/A): $200.00 (0 Bids) End Date: Sunday Nov-17-2013... http://t.co/TkM9zXTbZu</title><content>Apple iPhone 4s - 32GB - Black (AT&amp;T) Smartphone (MC923LL/A): $200.00 (0 Bids) End Date: Sunday Nov-17-2013... http://t.co/TkM9zXTbZu</content><link>http://twitter.com/endriukrzyzanow/statuses/402223920784232448</link><location><country>us</country><locationString>usa</locationString></location><influenceLevel>6</influenceLevel><sentiment>NONE</sentiment><tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><s
 ystemType>AGE</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>telecommunications</value><displayName>mb1-telecommunications</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tweetid>402223920784232448</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuse
 s/show.json?id=402223920784232448&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511549</tweetHbLink><twitterFollowers>2843</twitterFollowers><twitterFollowing>2384</twitterFollowing></beat><beat><docid>11199:31511548</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:17-05:00</time><title>RT @_DatMan_: Because they'll turn into gwapes...you competing for cutest kid...yes..what place are you in....kindergarten....best AT&amp;amp;T com…</title><content>RT @_DatMan_ Because they'll turn into gwapes...you competing for cutest kid...yes..what place are you in....kindergarten....best AT&amp;T commercial</content><link>http://twitter.com/_JLovee/statuses/402223952040566784</link><location><country>unknown</country><locationString>a-t-l-a-n-t-a-⛅✨</locationString></location><influenceLevel>5</influenceLevel><sentiment>POS</sentiment><tag><value>R</value><displayName>R</displayName><systemType>TC</systemType></tag>
 <tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>pos</value><displayName>pos</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>emotional</value><displayName>mb1-emotional</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tweetid>402223952040566784</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=4022239
 52040566784&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511548</tweetHbLink><twitterFollowers>243</twitterFollowers><twitterFollowing>203</twitterFollowing></beat><count>20</count></beatResponse></beatApi>
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><beatApi xmlns="http://www.blogscope.net/api/namespace/schema/SearchResponse"><beatRequest><heatbeatID>11199</heatbeatID><startDate>2013-11-17T00:00:00Z</startDate><endDate>2013-11-18T00:00:00Z</endDate><key>KOX5abO6D5TaeB9V-dQARNUeRlEZGZvc3Nhc0B3Y2d3b3JsZC5jb20...</key><size>1</size><offset>0</offset></beatRequest><beatResponse><beat><docid>11199:31511567</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:28-05:00</time><title>Lailamoise</title><content>Sony Ericsson P1i Silver/Black Best Price Reviews ? More Detail &gt;&gt; http://tinyurl.com/kux7v75 ? Sony Ericsson P1i Silver/Black best buy stores??TITLE :Sony Ericsson P1i Silver/Black ????Sony Ericsson P1i Silver/Black : Customer Reviews??If you would like Sony Ericsson P1i Silver/Black ?. I inform you to obtain Sony Ericsson.??I do think its a fantastic looking product with the price. ??Sony Ericsson P1i Silver/Black Detail &amp; Feature ??????Read Shopping Online
 :????Sony Ericsson P1i Silver/Black Get Great Deals When You Shop Online Today!??The world wide web is already like a giant mall sometimes. You can aquire each of the items that you would like from your home. There are many stores to learn that you may possibly need assistance receiving a game plan for the best deals. Please read on for a few tips.??Major shopping retailers are usually targeted by hackers and other Sony Ericsson P1i Silver/Black individuals who want to take your personal identification or get into your accounts.??Have a look at customer reviews for almost any new retailer should this be your first time purchasing from them. This will help ensure you a good idea of the caliber of the company's products and customer service. When you notice multiple poor reviews for a retailer, think about shopping with another merchant.??Don't give any information and finances on the site which is unfamiliar or shady. Verisign and/or Cybertrust have security signs you know who to tru
 st.??Consider the address or URL of your store prior to deciding to input any charge card number. In case the &quot;https&quot; could there be that means your data is being safely encrypted. Should you not see those letters, you happen to be putting yourself vulnerable to fraud.??Use available sizing charts if you're getting clothing. It's Sony Ericsson P1i Silver/Black challenging to determine if clothes will fit while shopping online. This will save you a size which is much too small or big for you.??Browse around on auction sites as well as discount ones just before buying from the big retailer's site. Sites like Amazon and eBay normally have better deals than traditional retailers. This will produce major savings and also little issues.Do make sure you assess the return policies which are in position. This can be different influenced by where you're shopping.??Buying things online will be a lot more affordable Sony Ericsson P1i Silver/Black than buying them at a physical store. 
 This simply involves being familiar with the appropriate types of looking for and utilizing deals. This post had plenty of ideas to help you save while you shop online. What exactly are you presently expecting? Get on the web and start shopping!</content><link>http://www.facebook.com/permalink.php?id=651031148281595&amp;v=wall&amp;story_fbid=653391048045605</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>internet-security</value><displayName>mb1-internet-security</displayName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>global</value><displayName>mb1-global</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displ
 ayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>651031148281595</value><displayName>651031148281595</displayName><systemType>FBID</systemType></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>retail</value><displayName>mb1-retail</displayName></
 tag></beat><count>1</count></beatResponse></beatApi>
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><beatApi xmlns="http://www.blogscope.net/api/namespace/schema/SearchResponse"><beatRequest><heatbeatID>11199</heatbeatID><startDate>2013-11-17T00:00:00Z</startDate><endDate>2013-11-18T00:00:00Z</endDate><key>KOX5abO6D5TaeB9V-dQARNUeRlEZGZvc3Nhc0B3Y2d3b3JsZC5jb20...</key><size>300</size><offset>0</offset></beatRequest><beatResponse><beat><docid>11199:31511567</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:28-05:00</time><title>Lailamoise</title><content>Sony Ericsson P1i Silver/Black Best Price Reviews ? More Detail &gt;&gt; http://tinyurl.com/kux7v75 ? Sony Ericsson P1i Silver/Black best buy stores??TITLE :Sony Ericsson P1i Silver/Black ????Sony Ericsson P1i Silver/Black : Customer Reviews??If you would like Sony Ericsson P1i Silver/Black ?. I inform you to obtain Sony Ericsson.??I do think its a fantastic looking product with the price. ??Sony Ericsson P1i Silver/Black Detail &amp; Feature ??????Read Shopping Onli
 ne:????Sony Ericsson P1i Silver/Black Get Great Deals When You Shop Online Today!??The world wide web is already like a giant mall sometimes. You can aquire each of the items that you would like from your home. There are many stores to learn that you may possibly need assistance receiving a game plan for the best deals. Please read on for a few tips.??Major shopping retailers are usually targeted by hackers and other Sony Ericsson P1i Silver/Black individuals who want to take your personal identification or get into your accounts.??Have a look at customer reviews for almost any new retailer should this be your first time purchasing from them. This will help ensure you a good idea of the caliber of the company's products and customer service. When you notice multiple poor reviews for a retailer, think about shopping with another merchant.??Don't give any information and finances on the site which is unfamiliar or shady. Verisign and/or Cybertrust have security signs you know who to t
 rust.??Consider the address or URL of your store prior to deciding to input any charge card number. In case the &quot;https&quot; could there be that means your data is being safely encrypted. Should you not see those letters, you happen to be putting yourself vulnerable to fraud.??Use available sizing charts if you're getting clothing. It's Sony Ericsson P1i Silver/Black challenging to determine if clothes will fit while shopping online. This will save you a size which is much too small or big for you.??Browse around on auction sites as well as discount ones just before buying from the big retailer's site. Sites like Amazon and eBay normally have better deals than traditional retailers. This will produce major savings and also little issues.Do make sure you assess the return policies which are in position. This can be different influenced by where you're shopping.??Buying things online will be a lot more affordable Sony Ericsson P1i Silver/Black than buying them at a physical store
 . This simply involves being familiar with the appropriate types of looking for and utilizing deals. This post had plenty of ideas to help you save while you shop online. What exactly are you presently expecting? Get on the web and start shopping!</content><link>http://www.facebook.com/permalink.php?id=651031148281595&amp;v=wall&amp;story_fbid=653391048045605</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>internet-security</value><displayName>mb1-internet-security</displayName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>global</value><displayName>mb1-global</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</dis
 playName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>651031148281595</value><displayName>651031148281595</displayName><systemType>FBID</systemType></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>retail</value><displayName>mb1-retail</displayName>
 </tag></beat><beat><docid>11199:31511566</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:17-05:00</time><title>Black Friday, Cyber Monday &amp; Holiday Sale 2013</title><content>Are You Seeking for Black Friday Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail... Cyber Monday Save NOW!??[BLACK FRIDAY SALE] &gt;&gt; http://tinyurl.com/hlfdfpfd8/B00ARZ16NI??Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail... Amazon Super Saver Shipping - Make The Most Of Your Buy Lots of men and women like to get benefit of the potential to store on-line relatively than try out to battle their way by way of malls and big suppliers throughout holiday getaway time. One of the a lot more well known purchasing websites on the internet is Amazon. Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail...
 . Celluless Massager Cellulite is a challenge that has an effect on the lives of many women of all ages all-around the earth, and this has specified increase to a lot of items turning out to be out there on the sector to consider and combat the affliction. One of the most common and price productive strategies is the Celluless Vacuum Massager. Asmyna SAMR830HPCSO306NP Premium Durable Rubberized Protective Case for Samsung Galaxy Axiom R830 - 1 Pack - Retail.... GPSMap 76 Machine to Use From Garmin GPSMap seventy six from Garmin is one particular of the most highly effective GPS machine out there right now. It is ideal for making use of on land as effectively as on sea. It presents accurate positioning and routing, and with the preloaded maps it is ready to use out of the box.</content><link>http://www.facebook.com/permalink.php?id=546014965477064&amp;v=wall&amp;story_fbid=547954431949784</link><location><country>unknown</country><locationString>unknown</locationString></location><in
 fluenceLevel>0</influenceLevel><sentiment>POS</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>internet-broadband</value><displayName>mb1-internet-broadband</displayName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>546014965477064</value><displayName>546014965477064</displayName><systemType>FBID</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>pos</value><displayName>pos</displayName><systemType>SENTIMENT</systemType></tag><tag><value>none+</value><displayName>N
 ot Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>emotional</value><displayName>mb1-emotional</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>retail</value><displayName>mb1-retail</displayName></tag></beat><beat><docid>11199:31511565</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:22-05:00</time><title>Taylor Jo Covyeou</title><content>I'm currently about three thousand percent done with sprint. Anyone want to buyout my contract for me? Not worth it anymore. I'll pay you back I swear!</content><link>http://www.facebook.com/permalink.php?id=10000114
 9014212&amp;v=wall&amp;story_fbid=592019207513041</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NEG</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>neg</value><displayName>neg</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>wireless</value><displayName>mb1-wireless</displayNa
 me></tag><tag><value>100001149014212</value><displayName>100001149014212</displayName><systemType>FBID</systemType></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>sprint</value><displayName>mb1-sprint</displayName></tag></beat><beat><docid>11199:31511564</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:29-05:00</time><title>Raven Woods Animal Sanctuary</title><content>Raven Woods in need of many things from hose nozzles to dog food. Please check out their wish list on Amazon, Every purchase helps. Tks http://www.amazon.com/registry/giftlist/ZO9WDN20J408/ref=cm_sw_r_tw_gln …</content><link>http://www.facebook.com/permalink.php?id=146831718669942&amp;v=wall&amp;story_fbid=698212600198515</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemT
 ype>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>146831718669942</value><displayName>146831718669942</displayName><systemType>FBID</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511563</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:32-05:00</time><title>M
 ommy Matters - Uncensored</title><content>Ok so AT&amp;T wants a $750 deposit for an iPhone. Not happening lol does anyone have Sprint here? Was there an expensive deposit? I'm probably going to call them tomorrow??-MeghJ</content><link>http://www.facebook.com/permalink.php?id=494062013968286&amp;v=wall&amp;story_fbid=633415140032972</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</syst
 emType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>494062013968286</value><displayName>494062013968286</displayName><systemType>FBID</systemType></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>sprint</value><displayName>mb1-sprint</displayName></tag></beat><beat><docid>11199:31511562</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:14-05:00</time><title>Hannah Rebecca Brown</title><content>Interesting random find on Amazon! There are other designs too if (in their words not mine) you want to pu
 t some soul into washing up!!</content><link>http://www.facebook.com/permalink.php?id=671140091&amp;v=wall&amp;story_fbid=10153503587495092</link><gender>FEMALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>FEMALE</value><displayName>FEMALE</displayName><systemType>GENDER</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><disp
 layName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>671140091</value><displayName>671140091</displayName><systemType>FBID</systemType></tag></beat><beat><docid>11199:31511561</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:58:36-05:00</time><title>Kathleen Rice Adams</title><content>Cheryl Pierson's Christmas short, &quot;The Keepers of Camelot,&quot; combines Arthurian legend with Old West action. Deservedly nominated for a Peacemaker Award, the story is unusual, heartwarming, and extremely enjoyable. Available for the first time as a standalone at Amazon for only 99 cents. How can you go wrong? (Believe me, it's worth way more than 99 cents. :-) )</content><link>http://www.facebook.com/permalink.php?id=100000653413590&amp;v=wall&amp;story_fbid=662621137102994</link><gender>FEMALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><in
 fluenceLevel>0</influenceLevel><sentiment>POS</sentiment><tag><value>FEMALE</value><displayName>FEMALE</displayName><systemType>GENDER</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1858</value><displayName>1858</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>pos</value><displayName>pos</displayName><systemType>SENTIMENT</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>100000653413590</value><displayName>100000653413590</displayName><systemType>FBID</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag></beat><beat><
 docid>11199:31511560</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:11-05:00</time><title>Jacob Ohse</title><content>Anyone have a Verizon phone for sale? Looking for a friend. Message me or comment to let me know.</content><link>http://www.facebook.com/permalink.php?id=1148036152&amp;v=wall&amp;story_fbid=10202441847104645</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>verizon--all</value><displayName>mb1-verizon-all</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</display
 Name><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>1148036152</value><displayName>1148036152</displayName><systemType>FBID</systemType></tag><tag><value>generic-verizon</value><displayName>mb1-generic-verizon</displayName></tag><tag><value>me</value><displayName>mb1-verizon</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511559</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:59:07-05:00</time><title>William T. Newton</title><content>NOW A LITTLE SOMETHING FOR THE IMAGINATION.....???Dr. Paul LaViolette: Secrets of Antigravity P
 ropulsion?Project Skyvault, superluminal space travel, bases on the moon &amp; other planets.??C2CAM with George Knapp?http://www.youtube.com/watch?v=17g8OBuyXYk??&quot;The whole problem boils down to consciousness and what people believe is possible. ?If we can begin to realize the kind of baloney that's put out daily to the American public and to other countries and start challenging that, and realize there's a new way of thinking; that we're sort of being held in a cage -- a technology cage on purpose for fear of change -- to realize we have got to try to break out of that. It's a matter of consciousness more than it is of whether the technology is possible or exists or economically possible.&quot;?-- Paul LaViolette??MUFON 2011?http://www.youtube.com/watch?v=ifEgGMFK-VU????Secrets of Antigravity Propulsion: Tesla, UFOs, and Classified Aerospace Technology?by Paul A. LaViolette ?http://www.amazon.com/Secrets-Antigravity-Propulsion-Classified-Technology/dp/159143078X/ref=sr_1_sc_1
 ?ie=UTF8&amp;qid=1384730930&amp;sr=8-1-spell&amp;keywords=secrets+of+antigravitypropulsion????&quot;We already have the means to travel among the stars, but these technologies are locked up in black projects and it would take an act of God to ever get them out to benefit humanity....&quot;?-- Ben Rich, former Head of Lockheed Skunk Works, January 1995 Secrets of Anti-Gravity Technology www.youtube.com George Knapp was joined by physicist and author Paul LaViolette, who discussed the physics behind anti-gravity propulsion technology and showed how it is not...</content><link>http://www.facebook.com/permalink.php?id=719190134&amp;v=wall&amp;story_fbid=10152041215435135</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>all-verticals</value><displayName>mb1-all-verticals</displayName></tag><tag><value>technology</value><displayName>mb1-technology</disp
 layName></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>719190134</value><displayName>719190134</displayName><systemType>FBID</systemType></tag><tag><value>travel-hospitality</value><displayName>mb1-travel-hospitality</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511558</docid><medi
 aType>FACEBOOK</mediaType><time>2013-11-17T18:59:11-05:00</time><title>Nj Nuttamon</title><content>Amazon destruction up by 28% in year</content><link>http://www.facebook.com/permalink.php?id=100000595233182&amp;v=wall&amp;story_fbid=723443514352150</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NEG</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1859</value><displayName>1859</displayName><systemType>T</systemType></tag><tag><value>neg</value><displayName>neg</displayName><systemType>SENTIMENT</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>k</value><displayName>Face
 book</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>100000595233182</value><displayName>100000595233182</displayName><systemType>FBID</systemType></tag></beat><beat><docid>11199:31511557</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:58:44-05:00</time><title>Christopher Cashier Cha-Ching</title><content>Ca$hier X Problem Child...#Classic ???My Debut Album &quot;Business B4 Pleasure&quot; is Officially available for Purchase Worldwide!!! iTunes, Amazon, Cdbaby.com...or I can even have it delivered it to you personally...Support Underground Hip-Hop and get your copy today!??We worldwide wit it! LetsGetIt!??!$! Cha ching !$! Cashier &quot;Problem Child&quot; (Official Video) www.youtube.com</content><link>http://www.facebook.com/permalink.php?id=100001238108941&amp;v=wall&amp;story_fbid=65
 4611967923401</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>global</value><displayName>mb1-global</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>1858</value><displayName>1858</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebo
 ok</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><displayName>mb1-amazon</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>100001238108941</value><displayName>100001238108941</displayName><systemType>FBID</systemType></tag></beat><beat><docid>11199:31511556</docid><mediaType>FACEBOOK</mediaType><time>2013-11-17T18:58:37-05:00</time><title>Randy Mazzuca</title><content>Hey Friends list,? Most of you already know about this kind of thing but I'm just throwing our hat into the ring (that metaphor makes no sense) here. Christmas is coming and I bought like all of Ali's presents through this, it's the dumbest easiest thing to do, so if you wanna take about two extra seconds to signing into Amazon by following this link, it's better than nothing. ?Thanks!</content><link>http://www.facebook.com/permalink
 .php?id=818465692&amp;v=wall&amp;story_fbid=10153490281715693</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1858</value><displayName>1858</displayName><systemType>T</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>P</value><displayName>(wall post)</displayName><systemType>FBC</systemType></tag><tag><value>all-messages</value><displayName>mb1-all-messages</displayName></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>k</value><displayName>Facebook</displayName><systemType>SOURCE</systemType></tag><tag><value>amazon</value><d
 isplayName>mb1-amazon</displayName></tag><tag><value>emotional</value><displayName>mb1-emotional</displayName></tag><tag><value>818465692</value><displayName>818465692</displayName><systemType>FBID</systemType></tag><tag><value>rational</value><displayName>mb1-rational</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag></beat><beat><docid>11199:31511555</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:52-05:00</time><title>RT @ShookShakeSham: T-Mobile: Possibly the worst carrier ever.</title><content>RT @ShookShakeSham T-Mobile: Possibly the worst carrier ever.</content><link>http://twitter.com/payinallnickles/statuses/402224098886971392</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>4</influenceLevel><sentiment>NEG</sentiment><tag><value>R</value><displayName>R</displayName><systemType>TC</systemType></tag><tag><value>1857</value>
 <displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>neg</value><displayName>neg</displayName><systemType>SENTIMENT</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>t-mobile</value><displayName>mb1-t-mobile</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402224098886971392</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402224098886971392&amp;include_entities=true</
 tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511555</tweetHbLink><twitterFollowers>153</twitterFollowers><twitterFollowing>55</twitterFollowing></beat><beat><docid>11199:31511554</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:19-05:00</time><title>@llamacop @zpower @mikehadgis @TMobile just ran this, very typical of the LTE speeds I see (River North) http://t.co/W21bbvrjan</title><content>@llamacop @zpower @mikehadgis @TMobile just ran this, very typical of the LTE speeds I see (River North) http://t.co/W21bbvrjan</content><link>http://twitter.com/jeffreytz/statuses/402223958009069568</link><gender>MALE</gender><location><country>us</country><locationString>chicago;-il</locationString></location><influenceLevel>4</influenceLevel><sentiment>NONE</sentiment><tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><t
 ag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>t-mobile</value><displayName>mb1-t-mobile</displayName></tag><tag><value>C</value><displayName>C</displayName><systemType>TC</systemType></tag><tag><value>telecommunications</value><displayName>mb1-telecommunications</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402223958009069568</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223958009069568&amp;inc
 lude_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511554</tweetHbLink><twitterFollowers>198</twitterFollowers><twitterFollowing>346</twitterFollowing></beat><beat><docid>11199:31511553</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:12-05:00</time><title>RT @FCDallas: You have until tonight to vote for Michel's olimpico in AT&amp;amp;T Goal of the Year voting! ---&amp;gt; http://t.co/vMp8AeAfjS #DTID</title><content>RT @FCDallas You have until tonight to vote for Michel's olimpico in AT&amp;T Goal of the Year voting! ---&gt; http://t.co/vMp8AeAfjS #DTID</content><link>http://twitter.com/BrandonWalker/statuses/402223931014123520</link><gender>MALE</gender><location><country>us</country><locationString>henderson;-tx</locationString></location><influenceLevel>3</influenceLevel><sentiment>NONE</sentiment><tag><value>R</value><displayName>R</displayName><systemType>TC</systemType></tag><tag><value>1857</value><displayName>18
 57</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402223931014123520</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223931014123520&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511553</tweetHbLink><twitterFollowers>85</twitterFollowers><twitterFollowing>108</twi
 tterFollowing></beat><beat><docid>11199:31511552</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:33-05:00</time><title>NEW 5&quot; Multi-Touch Android 4.0 Smart Phone Dual SIM WIFI Unlocked AT&amp;amp;T T-Mobile http://t.co/w4WP455D2O #android</title><content>NEW 5&quot; Multi-Touch Android 4.0 Smart Phone Dual SIM WIFI Unlocked AT&amp;T T-Mobile http://t.co/w4WP455D2O #android</content><link>http://twitter.com/GaryTinan/statuses/402224017396236288</link><gender>MALE</gender><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>2</influenceLevel><sentiment>NONE</sentiment><tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value
 >smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>t-mobile</value><displayName>mb1-t-mobile</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>wireless-network-access</value><displayName>mb1-wireless-network-access</displayName></tag><tag><value>MALE</value><displayName>MALE</displayName><systemType>GENDER</systemType></tag><tweetid>402224017396236288</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402224017396236288&amp;include_entities=
 true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511552</tweetHbLink><twitterFollowers>1</twitterFollowers><twitterFollowing>34</twitterFollowing></beat><beat><docid>11199:31511551</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:56:57-05:00</time><title>AT&amp;amp;T U-verse Surpasses 10 Million Broadband Subs | Programming | http://t.co/nMHaIGW4Uw http://t.co/Ek8uycqBVz</title><content>AT&amp;T U-verse Surpasses 10 Million Broadband Subs | Programming | http://t.co/nMHaIGW4Uw http://t.co/Ek8uycqBVz</content><link>http://twitter.com/manffredo77/statuses/402223866933563392</link><location><country>unknown</country><locationString>unknown</locationString></location><influenceLevel>0</influenceLevel><sentiment>NONE</sentiment><tag><value>mb1-exclusions-test</value><displayName>mb1-exclusions-test</displayName></tag><tag><value>internet-broadband</value><displayName>mb1-internet-broadband</displayName></tag><tag><value>t</value><displayName
 >Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1856</value><displayName>1856</displayName><systemType>T</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>landline-telephone</value><displayName>mb1-landline-telephone</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tag><value>mb1-exclusions</value><disp
 layName>mb1-exclusions</displayName></tag><tweetid>402223866933563392</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223866933563392&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/sidebar/?hid=11199&amp;bid=31511551</tweetHbLink><twitterFollowers>7</twitterFollowers><twitterFollowing>12</twitterFollowing></beat><beat><docid>11199:31511550</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:56:50-05:00</time><title>I voted for Carlos Hyde for AT&amp;amp;T All America Player of the Week! Go to http://t.co/mNTgoFxNiz to cast your vote!</title><content>I voted for Carlos Hyde for AT&amp;T All America Player of the Week! Go to http://t.co/mNTgoFxNiz to cast your vote!</content><link>http://twitter.com/BuckeyesGirl33/statuses/402223836235456512</link><location><country>unknown</country><locationString>in-the-huddle</locationString></location><influenceLevel>7</influenceLevel><sentiment>NONE</sentiment><tag><value>t</value>
 <displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><systemType>AGE</systemType></tag><tag><value>1856</value><displayName>1856</displayName><systemType>T</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender</displayName><systemType>GENDER</systemType></tag><tweetid>402223836235456512</tweetid><tweetJsonLink>http://api.twitter.com/1.1/statuses/show.json?id=402223836235456512&amp;include_entities=true</tweetJsonLink><tweetHbLink>http://hb.sysomos.com/hb2/s
 idebar/?hid=11199&amp;bid=31511550</tweetHbLink><twitterFollowers>3175</twitterFollowers><twitterFollowing>1993</twitterFollowing></beat><beat><docid>11199:31511549</docid><mediaType>TWITTER</mediaType><time>2013-11-17T18:57:10-05:00</time><title>Apple iPhone 4s - 32GB - Black (AT&amp;amp;T) Smartphone (MC923LL/A): $200.00 (0 Bids) End Date: Sunday Nov-17-2013... http://t.co/TkM9zXTbZu</title><content>Apple iPhone 4s - 32GB - Black (AT&amp;T) Smartphone (MC923LL/A): $200.00 (0 Bids) End Date: Sunday Nov-17-2013... http://t.co/TkM9zXTbZu</content><link>http://twitter.com/endriukrzyzanow/statuses/402223920784232448</link><location><country>us</country><locationString>usa</locationString></location><influenceLevel>6</influenceLevel><sentiment>NONE</sentiment><tag><value>1857</value><displayName>1857</displayName><systemType>T</systemType></tag><tag><value>t</value><displayName>Twitter</displayName><systemType>SOURCE</systemType></tag><tag><value>-1</value><displayName>-1</displayName><
 systemType>AGE</systemType></tag><tag><value>T</value><displayName>T</displayName><systemType>TC</systemType></tag><tag><value>smartphones</value><displayName>mb1-smartphones</displayName></tag><tag><value>all-products</value><displayName>mb1-all-products</displayName></tag><tag><value>EN</value><displayName>English</displayName><systemType>LANGUAGE</systemType></tag><tag><value>none+</value><displayName>Not Assigned</displayName><systemType>ASSIGNED</systemType></tag><tag><value>none</value><displayName>none</displayName><systemType>SENTIMENT</systemType></tag><tag><value>telecommunications</value><displayName>mb1-telecommunications</displayName></tag><tag><value>wireless</value><displayName>mb1-wireless</displayName></tag><tag><value>at-and-t</value><displayName>mb1-at-and-t</displayName></tag><tag><value>unknown</value><displayName>Unknown Gender<

<TRUNCATED>

[35/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/felix/config.ini
----------------------------------------------------------------------
diff --git a/trunk/runner/felix/config.ini b/trunk/runner/felix/config.ini
deleted file mode 100644
index b29e914..0000000
--- a/trunk/runner/felix/config.ini
+++ /dev/null
@@ -1,34 +0,0 @@
-################################################
-#              ______  ________  __  __        #
-#             / __  / /  __   / / / / /        #
-#            /  ___/ /  __   / _\ \ _/         #
-#           /  /    /  / /  / / _\ \           #
-#          /__/    /__/ /__/ /_/ /_/           #
-#                                              #
-# Pax Runner from OPS4J - http://www.ops4j.org #
-################################################
-
-##############################
-# Felix settings
-##############################
-org.osgi.framework.storage=felix/cache/runner
-org.osgi.framework.startlevel.beginning=6
-felix.startlevel.bundle=5
-org.osgi.framework.storage.clean=onFirstInit
-org.osgi.framework.executionenvironment=J2SE-1.2,J2SE-1.3,J2SE-1.4,J2SE-1.5,JRE-1.1,JavaSE-1.6,OSGi/Minimum-1.0,OSGi/Minimum-1.1,OSGi/Minimum-1.2
-org.osgi.framework.system.packages=javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.auth.kerberos
 ,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.transaction,javax.transaction.xa,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.n
 amespace,javax.xml.parsers,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.TypeCodePackage,org.omg.CORBA.portable,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.Porta
 bleServer.POAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServer.ServantLocatorPackage,org.omg.PortableServer.portable,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views ,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers,org.osgi.framework;version=1.6.0,org.osgi.framework.launch;version=1.0.0,org.osgi.framework.wiring;version=1.0.0,org.osgi.framework.startlevel;version=1.0.0,org.osgi.framework.hooks.bundle;version=1.0.0,org.osgi.framework.hooks.resolver;version=1.0.0,org.osgi.framework.hooks.service;version=1.1.0,org.osgi.framework.hooks.weaving;version=1.0.0,org.osgi.service.packageadmin;version=1.2.0,org.osgi.service.startlevel;version=1.1.0,org.osgi.service.url;version=1.0.0,org.osgi.util.tracker;version=1.5.0
-
-##############################
-# Client bundles to install
-##############################
-felix.auto.start.1=\
-"file:bundles/org.apache.felix.gogo.command_0.12.0.jar" \
-"file:bundles/org.apache.felix.gogo.runtime_0.10.0.jar" \
-"file:bundles/org.apache.felix.gogo.shell_0.10.0.jar"
-felix.auto.start.5="file:bundles/org.apache.streams.activity.publisher.registration_1.0.0.SNAPSHOT.jar"
-
-##############################
-# System properties
-##############################
-org.osgi.service.http.port=8080
-org.osgi.service.http.port.secure=8443

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/pom.xml b/trunk/streams-cassandra/pom.xml
deleted file mode 100644
index 4837649..0000000
--- a/trunk/streams-cassandra/pom.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.streams</groupId>
-        <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>streams-cassandra</artifactId>
-
-    <name>${bundle.symbolicName} [${bundle.namespace}]</name>
-
-    <properties>
-        <bundle.symbolicName>streams-cassandra</bundle.symbolicName>
-        <bundle.namespace>org.apache.streams</bundle.namespace>
-        <easymock.version>3.2</easymock.version>
-    </properties>
-
-    <packaging>bundle</packaging>
-    <build>
-        <resources>
-        <resource>
-            <directory>src/main/resources</directory>
-        </resource>
-
-            <resource>
-                <directory>.</directory>
-                <includes>
-                    <include>plugin.xml</include>
-                    <include>plugin.properties</include>
-                    <include>icons/**</include>
-                </includes>
-            </resource>
-        </resources>
-    <plugins>
-        <plugin>
-            <groupId>org.ops4j</groupId>
-            <artifactId>maven-pax-plugin</artifactId>
-            <!--
-             | enable improved OSGi compilation support for the bundle life-cycle.
-             | to switch back to the standard bundle life-cycle, move this setting
-             | down to the maven-bundle-plugin section
-            -->
-            <extensions>true</extensions>
-        </plugin>
-        <plugin>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>maven-bundle-plugin</artifactId>
-            <version>1.4.3</version>
-            <!--
-             | the following instructions build a simple set of public/private classes into an OSGi bundle
-            -->
-            <configuration>
-                <instructions>
-                    <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-                    <Bundle-Version>${project.version}</Bundle-Version>
-                    <Export-Package>
-                        ${bundle.namespace};version="${project.version}",org.apache.streams.cassandra.repository.impl, org.apache.streams.cassandra.model, org.apache.streams.cassandra.configuration
-                    </Export-Package>
-                    <Private-Package>${bundle.namespace}.cassandra.repository.impl.*,${bundle.namespace}.cassandra.model, ${bundle.namespace}.cassandra.configuration </Private-Package>
-                    <Import-Package>
-                        org.apache.rave.model,org.apache.rave.portal.model.impl,
-                        com.datastax.driver.core, com.datastax.driver.core.exceptions, org.codehaus.jackson.map.annotate,
-                        javax.persistence, org.apache.commons.logging, com.google.common.collect, org.codehaus.jackson.map,
-                        org.apache.commons.lang,
-                        org.apache.streams.osgi.components.activitysubscriber,
-                        org.springframework.beans.factory.annotation, org.springframework.stereotype
-                    </Import-Package>
-                </instructions>
-            </configuration>
-        </plugin>
-    </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.rave</groupId>
-            <artifactId>rave-core-api</artifactId>
-            <version>${rave.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.rave</groupId>
-            <artifactId>rave-core</artifactId>
-            <version>${rave.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.8.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.datastax.cassandra</groupId>
-            <artifactId>cassandra-driver-core</artifactId>
-            <version>${datastax.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.jboss.netty</groupId>
-            <artifactId>netty</artifactId>
-            <version>3.2.9.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-subscriber</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>${easymock.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/configuration/CassandraConfiguration.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/configuration/CassandraConfiguration.java b/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/configuration/CassandraConfiguration.java
deleted file mode 100644
index 39e74a7..0000000
--- a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/configuration/CassandraConfiguration.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.apache.streams.cassandra.configuration;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Component
-public class CassandraConfiguration {
-    @Value("${keyspaceName}")
-    private String keyspaceName;
-
-    @Value("${activitystreamsColumnFamilyName}")
-    private String activitystreamsColumnFamilyName;
-
-    @Value("${subscriptionColumnFamilyName}")
-    private String subscriptionColumnFamilyName;
-
-    @Value("${publisherColumnFamilyName}")
-    private String publisherColumnFamilyName;
-
-    @Value("${cassandraPort}")
-    private String cassandraPort;
-
-    public String getKeyspaceName() {
-        return keyspaceName;
-    }
-
-    public void setKeyspaceName(String keyspaceName) {
-        this.keyspaceName = keyspaceName;
-    }
-
-    public String getActivitystreamsColumnFamilyName() {
-        return activitystreamsColumnFamilyName;
-    }
-
-    public void setActivitystreamsColumnFamilyName(String activitystreamsColumnFamilyName) {
-        this.activitystreamsColumnFamilyName = activitystreamsColumnFamilyName;
-    }
-
-    public String getSubscriptionColumnFamilyName() {
-        return subscriptionColumnFamilyName;
-    }
-
-    public void setSubscriptionColumnFamilyName(String subscriptionColumnFamilyName) {
-        this.subscriptionColumnFamilyName = subscriptionColumnFamilyName;
-    }
-
-    public String getPublisherColumnFamilyName() {
-        return publisherColumnFamilyName;
-    }
-
-    public void setPublisherColumnFamilyName(String publisherColumnFamilyName) {
-        this.publisherColumnFamilyName = publisherColumnFamilyName;
-    }
-
-    public String getCassandraPort() {
-        return cassandraPort;
-    }
-
-    public void setCassandraPort(String cassandraPort) {
-        this.cassandraPort = cassandraPort;
-    }
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/model/CassandraActivityStreamsEntry.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/model/CassandraActivityStreamsEntry.java b/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/model/CassandraActivityStreamsEntry.java
deleted file mode 100644
index 2a2321a..0000000
--- a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/model/CassandraActivityStreamsEntry.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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.cassandra.model;
-
-import org.apache.rave.model.ActivityStreamsObject;
-import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
-import org.apache.rave.portal.model.impl.ActivityStreamsObjectImpl;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-
-import java.util.Date;
-
-public class CassandraActivityStreamsEntry extends ActivityStreamsEntryImpl implements Comparable<CassandraActivityStreamsEntry>{
-
-    @JsonDeserialize(as=ActivityStreamsObjectImpl.class)
-    private ActivityStreamsObject object;
-
-    @JsonDeserialize(as=ActivityStreamsObjectImpl.class)
-    private ActivityStreamsObject target;
-
-    @JsonDeserialize(as=ActivityStreamsObjectImpl.class)
-    private ActivityStreamsObject actor;
-
-    @JsonDeserialize(as=ActivityStreamsObjectImpl.class)
-    private ActivityStreamsObject provider;
-
-    public int compareTo(CassandraActivityStreamsEntry entry){
-        return (this.getPublished()).compareTo(entry.getPublished());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepository.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepository.java b/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepository.java
deleted file mode 100644
index 56e5416..0000000
--- a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepository.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * 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.cassandra.repository.impl;
-
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Row;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.exceptions.AlreadyExistsException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.rave.model.ActivityStreamsEntry;
-import org.apache.rave.model.ActivityStreamsObject;
-import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
-import org.apache.rave.portal.model.impl.ActivityStreamsObjectImpl;
-import org.apache.streams.cassandra.configuration.CassandraConfiguration;
-import org.apache.streams.cassandra.model.CassandraActivityStreamsEntry;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-
-public class CassandraActivityStreamsRepository {
-
-    private static final Log LOG = LogFactory.getLog(CassandraActivityStreamsRepository.class);
-
-    private CassandraKeyspace keyspace;
-    private CassandraConfiguration configuration;
-
-    @Autowired
-    public CassandraActivityStreamsRepository(CassandraKeyspace keyspace, CassandraConfiguration configuration) {
-        this.configuration = configuration;
-        this.keyspace = keyspace;
-
-        try {
-            keyspace.getSession().execute("CREATE TABLE " + configuration.getActivitystreamsColumnFamilyName() + " (" +
-                    "id text, " +
-                    "published timestamp, " +
-                    "verb text, " +
-                    "tags text, " +
-
-                    "actor_displayname text, " +
-                    "actor_id text, " +
-                    "actor_url text, " +
-                    "actor_objecttype text, " +
-
-                    "target_displayname text, " +
-                    "target_id text, " +
-                    "target_url text, " +
-
-                    "provider_url text, " +
-
-                    "object_url text, " +
-                    "object_displayname text, " +
-                    "object_id text, " +
-                    "object_objecttype text, " +
-
-                    "PRIMARY KEY (id, tags, published));");
-        } catch (AlreadyExistsException ignored) {
-        }
-    }
-
-    public void save(ActivityStreamsEntry entry) {
-        String sql = "INSERT INTO " + configuration.getActivitystreamsColumnFamilyName() + " (" +
-                "id, published, verb, tags, " +
-                "actor_displayname, actor_objecttype, actor_id, actor_url, " +
-                "target_displayname, target_id, target_url, " +
-                "provider_url, " +
-                "object_displayname, object_objecttype, object_id, object_url) " +
-                "VALUES ('" +
-                entry.getId() + "','" +
-                entry.getPublished().getTime() + "','" +
-                entry.getVerb() + "','" +
-                entry.getTags() + "','" +
-
-                entry.getActor().getDisplayName() + "','" +
-                entry.getActor().getObjectType() + "','" +
-                entry.getActor().getId() + "','" +
-                entry.getActor().getUrl() + "','" +
-
-                entry.getTarget().getDisplayName() + "','" +
-                entry.getTarget().getId() + "','" +
-                entry.getTarget().getUrl() + "','" +
-
-                entry.getProvider().getUrl() + "','" +
-
-                entry.getObject().getDisplayName() + "','" +
-                entry.getObject().getObjectType() + "','" +
-                entry.getObject().getId() + "','" +
-                entry.getObject().getUrl() +
-
-                "')";
-        keyspace.getSession().execute(sql);
-    }
-
-    public List<CassandraActivityStreamsEntry> getActivitiesForFilters(List<String> filters, Date lastUpdated) {
-        List<CassandraActivityStreamsEntry> results = new ArrayList<CassandraActivityStreamsEntry>();
-
-        for (String tag : filters) {
-            String cql = "SELECT * FROM " + configuration.getActivitystreamsColumnFamilyName() + " WHERE ";
-
-            //add filters
-            cql = cql + " tags = '" + tag + "' AND ";
-
-            //specify last modified
-            cql = cql + "published > " + lastUpdated.getTime() + " ALLOW FILTERING";
-
-            //execute the cql query and store the results
-            ResultSet set = keyspace.getSession().execute(cql);
-
-            //iterate through the results and create a new ActivityStreamsEntry for every result returned
-
-            for (Row row : set) {
-                CassandraActivityStreamsEntry entry = new CassandraActivityStreamsEntry();
-                ActivityStreamsObject actor = new ActivityStreamsObjectImpl();
-                ActivityStreamsObject target = new ActivityStreamsObjectImpl();
-                ActivityStreamsObject object = new ActivityStreamsObjectImpl();
-                ActivityStreamsObject provider = new ActivityStreamsObjectImpl();
-
-                actor.setDisplayName(row.getString("actor_displayname"));
-                actor.setId(row.getString("actor_id"));
-                actor.setObjectType(row.getString("actor_objecttype"));
-                actor.setUrl(row.getString("actor_url"));
-
-                target.setDisplayName(row.getString("target_displayname"));
-                target.setId(row.getString("target_id"));
-                target.setUrl(row.getString("target_url"));
-
-                object.setDisplayName(row.getString("object_displayname"));
-                object.setObjectType(row.getString("object_objecttype"));
-                object.setUrl(row.getString("object_url"));
-                object.setId(row.getString("object_id"));
-
-                provider.setUrl(row.getString("provider_url"));
-
-                entry.setPublished(row.getDate("published"));
-                entry.setVerb(row.getString("verb"));
-                entry.setId(row.getString("id"));
-                entry.setTags(row.getString("tags"));
-                entry.setActor(actor);
-                entry.setTarget(target);
-                entry.setObject(object);
-                entry.setProvider(provider);
-
-                results.add(entry);
-            }
-        }
-
-        return results;
-    }
-
-    public void dropTable(String table) {
-        String cql = "DROP TABLE " + table;
-        keyspace.getSession().execute(cql);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraKeyspace.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraKeyspace.java b/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraKeyspace.java
deleted file mode 100644
index 0551bf2..0000000
--- a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraKeyspace.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.streams.cassandra.repository.impl;
-
-import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.Session;
-import com.datastax.driver.core.exceptions.AlreadyExistsException;
-import org.apache.streams.cassandra.configuration.CassandraConfiguration;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class CassandraKeyspace {
-    private CassandraConfiguration configuration;
-    private Cluster cluster;
-    private Session session;
-
-    @Autowired
-    public CassandraKeyspace(CassandraConfiguration configuration){
-        this.configuration = configuration;
-
-        cluster = Cluster.builder().addContactPoint(configuration.getCassandraPort()).build();
-        session = cluster.connect();
-
-        //TODO: cassandra 2 will have support for CREATE KEYSPACE IF NOT EXISTS
-        try {
-            session.execute("CREATE KEYSPACE " + configuration.getKeyspaceName() + " WITH replication = { 'class': 'SimpleStrategy','replication_factor' : 1 };");
-        } catch (AlreadyExistsException ignored) {
-        }
-
-        //connect to the keyspace
-        session = cluster.connect(configuration.getKeyspaceName());
-    }
-
-    public Session getSession(){
-        return session;
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        try {
-            cluster.shutdown();
-        } finally {
-            super.finalize();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraSubscriptionRepository.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraSubscriptionRepository.java b/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraSubscriptionRepository.java
deleted file mode 100644
index f5fe471..0000000
--- a/trunk/streams-cassandra/src/main/java/org/apache/streams/cassandra/repository/impl/CassandraSubscriptionRepository.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.cassandra.repository.impl;
-
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.exceptions.AlreadyExistsException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.cassandra.configuration.CassandraConfiguration;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class CassandraSubscriptionRepository {
-    private static final Log LOG = LogFactory.getLog(CassandraSubscriptionRepository.class);
-
-    private CassandraKeyspace keyspace;
-    private CassandraConfiguration configuration;
-
-    @Autowired
-    public CassandraSubscriptionRepository(CassandraKeyspace keyspace, CassandraConfiguration configuration) {
-        this.keyspace = keyspace;
-        this.configuration = configuration;
-
-        try {
-            keyspace.getSession().execute("CREATE TABLE " + configuration.getSubscriptionColumnFamilyName() + " (" +
-                    "id text, " +
-                    "filters text, " +
-
-                    "PRIMARY KEY (id));");
-        } catch (AlreadyExistsException ignored) {
-        }
-    }
-
-    public String getFilters(String id){
-        String cql = "SELECT * FROM " + configuration.getSubscriptionColumnFamilyName()  + " WHERE id = '" + id+"';";
-
-        ResultSet set = keyspace.getSession().execute(cql);
-
-        return set.one().getString("filters");
-    }
-
-    public void save(ActivityStreamsSubscription subscription){
-        String cql = "INSERT INTO " + configuration.getSubscriptionColumnFamilyName()  + " (" +
-                "id, filters) " +
-                "VALUES ('" +
-                subscription.getAuthToken() + "','" +
-                StringUtils.join(subscription.getFilters(), " ") +
-
-                "')";
-        keyspace.getSession().execute(cql);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/main/resources/META_INF/spring/streams-cassandra-context.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/main/resources/META_INF/spring/streams-cassandra-context.xml b/trunk/streams-cassandra/src/main/resources/META_INF/spring/streams-cassandra-context.xml
deleted file mode 100644
index 842c918..0000000
--- a/trunk/streams-cassandra/src/main/resources/META_INF/spring/streams-cassandra-context.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  ~ 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.
-  -->
-<beans
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://www.springframework.org/schema/beans"
-        xmlns:context="http://www.springframework.org/schema/context"
-        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
-
-</beans>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepositoryTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepositoryTest.java b/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepositoryTest.java
deleted file mode 100644
index 978af10..0000000
--- a/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivityStreamsRepositoryTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * 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.cassandra.repository.impl;
-
-import com.datastax.driver.core.ResultSet;
-import org.apache.rave.model.ActivityStreamsEntry;
-import org.apache.rave.model.ActivityStreamsObject;
-import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
-import org.apache.rave.portal.model.impl.ActivityStreamsObjectImpl;
-import org.apache.streams.cassandra.configuration.CassandraConfiguration;
-import org.apache.streams.cassandra.model.CassandraActivityStreamsEntry;
-import static org.easymock.EasyMock.*;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-public class CassandraActivityStreamsRepositoryTest {
-
-    private CassandraActivityStreamsRepository repository;
-
-
-    @Before
-    public void setup() {
-        CassandraKeyspace keyspace = createMock(CassandraKeyspace.class);
-        CassandraConfiguration configuration = createMock(CassandraConfiguration.class);
-        repository = new CassandraActivityStreamsRepository(keyspace, configuration);
-    }
-
-    @Ignore
-    @Test
-    public void saveActivity() {
-        ActivityStreamsEntry entry = new ActivityStreamsEntryImpl();
-        ActivityStreamsObject actor = new ActivityStreamsObjectImpl();
-        ActivityStreamsObject target = new ActivityStreamsObjectImpl();
-        ActivityStreamsObject object = new ActivityStreamsObjectImpl();
-        ActivityStreamsObject provider = new ActivityStreamsObjectImpl();
-
-        actor.setId("actorid1");
-        actor.setUrl("actorurl1");
-        actor.setDisplayName("actorname1");
-
-        target.setId("targetid1");
-        target.setUrl("targeturl1");
-        target.setDisplayName("r501");
-
-        provider.setUrl("providerurl");
-
-        object.setId("objectid1");
-        object.setDisplayName("objectname1");
-
-        entry.setId("dink");
-        entry.setVerb("verb1");
-        entry.setTags("r501");
-        entry.setProvider(provider);
-        Date d = new Date();
-        entry.setPublished(d);
-        entry.setActor(actor);
-        entry.setObject(object);
-        entry.setTarget(target);
-
-        repository.save(entry);
-    }
-
-    @Ignore
-    @Test
-    public void getActivity() {
-        String cql = "tags";
-        String other = "r501";
-        List<String> f = Arrays.asList(cql, other);
-        Date d = new Date(0);
-        List<CassandraActivityStreamsEntry> results = repository.getActivitiesForFilters(f,d);
-    }
-
-    @Ignore
-    @Test
-    public void dropTableTest(){
-        repository.dropTable("coltest");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivitySubscriptionTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivitySubscriptionTest.java b/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivitySubscriptionTest.java
deleted file mode 100644
index 2a90462..0000000
--- a/trunk/streams-cassandra/src/test/java/org/apache/streams/cassandra/repository/impl/CassandraActivitySubscriptionTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.cassandra.repository.impl;
-
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-import org.apache.streams.osgi.components.activitysubscriber.impl.ActivityStreamsSubscriptionImpl;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.Arrays;
-
-public class CassandraActivitySubscriptionTest {
-
-    public CassandraSubscriptionRepository repository;
-
-
-    @Before
-    public void setup() {
-//        repository = new CassandraSubscriptionRepository();
-    }
-
-    @Ignore
-    @Test
-    public void saveTest(){
-        ActivityStreamsSubscription subscription = new ActivityStreamsSubscriptionImpl();
-        subscription.setFilters(Arrays.asList("thisis", "atest"));
-        subscription.setAuthToken("subid");
-
-        repository.save(subscription);
-    }
-
-    @Ignore
-    @Test
-    public void getTest(){
-        String filters = repository.getFilters("subid");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-config-graph/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-config-graph/pom.xml b/trunk/streams-config-graph/pom.xml
deleted file mode 100644
index d4a3dbb..0000000
--- a/trunk/streams-config-graph/pom.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.streams</groupId>
-        <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>streams-config-graph</artifactId>
-
-    <dependencies>
-        <dependency>
-            <artifactId>gs-core</artifactId>
-            <groupId>org.graphstream</groupId>
-            <version>1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</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>
-    </build>
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-config-graph/src/main/java/org/apache/streams/config/graph/PipelineGraphConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-config-graph/src/main/java/org/apache/streams/config/graph/PipelineGraphConfigurator.java b/trunk/streams-config-graph/src/main/java/org/apache/streams/config/graph/PipelineGraphConfigurator.java
deleted file mode 100644
index 3d7b6dd..0000000
--- a/trunk/streams-config-graph/src/main/java/org/apache/streams/config/graph/PipelineGraphConfigurator.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.config.graph;
-
-import org.graphstream.graph.Graph;
-import org.graphstream.graph.implementations.SingleGraph;
-import org.graphstream.stream.file.FileSource;
-import org.graphstream.stream.file.FileSourceFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Enumeration;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 9/23/13
- * Time: 10:44 AM
- * To change this template use File | Settings | File Templates.
- */
-public class PipelineGraphConfigurator {
-
-    public static Graph pipeline = loadPipeline();
-
-    private static Graph loadPipeline() {
-
-        Graph pipeline = new SingleGraph("pipelines");
-
-        // this class looks for any pipelines specified with a graph definition
-        // each is loaded into the execution graph
-        // the application is responsible for launching each
-        Enumeration<URL> pipelineFiles;
-        try {
-            pipelineFiles = PipelineGraphConfigurator.class.getClassLoader().getResources("*.dot");
-
-            for( URL pipelineFile : Collections.list(pipelineFiles) ) {
-                File file = new File(pipelineFile.toURI());
-                String filePath = file.getAbsolutePath();
-                FileSource fileSource = FileSourceFactory.sourceFor(filePath);
-
-                fileSource.addSink(pipeline);
-
-                try {
-                    fileSource.begin(filePath);
-
-                    while (fileSource.nextEvents()) {
-                        // Optionally some code here ...
-                    }
-                } catch( IOException e) {
-                    e.printStackTrace();
-                }
-
-                try {
-                    fileSource.end();
-                } catch( IOException e) {
-                    e.printStackTrace();
-                } finally {
-                    fileSource.removeSink(pipeline);
-                }
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        } catch (URISyntaxException e) {
-            e.printStackTrace();
-        }
-
-        return pipeline;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-config/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-config/pom.xml b/trunk/streams-config/pom.xml
deleted file mode 100644
index a8cdd9a..0000000
--- a/trunk/streams-config/pom.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.streams</groupId>
-        <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>streams-config</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.typesafe</groupId>
-            <artifactId>config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</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</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/StreamsConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams.config</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java b/trunk/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java
deleted file mode 100644
index e35dd5d..0000000
--- a/trunk/streams-config/src/main/java/org/apache/streams/config/StreamsConfigurator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.config;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 9/23/13
- * Time: 10:44 AM
- * To change this template use File | Settings | File Templates.
- */
-public class StreamsConfigurator {
-
-    /*
-        Pull all configuration files from the classpath, system properties, and environment variables
-     */
-    public static Config config = ConfigFactory.load();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-config/src/main/jsonschema/StreamsConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-config/src/main/jsonschema/StreamsConfiguration.json b/trunk/streams-config/src/main/jsonschema/StreamsConfiguration.json
deleted file mode 100644
index 9a23130..0000000
--- a/trunk/streams-config/src/main/jsonschema/StreamsConfiguration.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.StreamsConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "pipeline": {
-            "type" : "string"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/pom.xml b/trunk/streams-contrib/pom.xml
deleted file mode 100644
index c08b0d7..0000000
--- a/trunk/streams-contrib/pom.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>streams-project</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>streams-contrib</artifactId>
-
-    <packaging>pom</packaging>
-
-    <properties>
-
-    </properties>
-
-    <modules>
-        <module>streams-persist-console</module>
-        <module>streams-persist-elasticsearch</module>
-        <!--<module>streams-persist-hbase</module>-->
-        <!--<module>streams-persist-hdfs</module>-->
-        <!--<module>streams-persist-kafka</module>-->
-        <!--<module>streams-persist-mongo</module>-->
-        <!--<module>streams-provider-datasift</module>-->
-        <!--<module>streams-provider-facebook</module>-->
-        <!--<module>streams-provider-gnip</module>-->
-        <!--<module>streams-provider-moreover</module>-->
-        <module>streams-provider-twitter</module>
-        <!--<module>streams-provider-sysomos</module>-->
-        <!--<module>streams-provider-rss</module>-->
-        <!--<module>streams-proxy-semantria</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>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-console/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-console/pom.xml b/trunk/streams-contrib/streams-persist-console/pom.xml
deleted file mode 100644
index c7f2cd3..0000000
--- a/trunk/streams-contrib/streams-persist-console/pom.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?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-console</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java b/trunk/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
deleted file mode 100644
index 7e62a7d..0000000
--- a/trunk/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.apache.streams.console;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Preconditions;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistWriter;
-import org.apache.streams.core.tasks.StreamsPersistWriterTask;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class ConsolePersistWriter extends StreamsPersistWriterTask implements StreamsPersistWriter  {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(ConsolePersistWriter.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    public ConsolePersistWriter(StreamsPersistWriter writer) {
-        super(writer);
-    }
-
-    @Override
-    public void prepare(Object o) {
-        Preconditions.checkNotNull(this.getInputQueues());
-    }
-
-    @Override
-    public void cleanUp() {
-
-    }
-
-    @Override
-    public void write(StreamsDatum entry) {
-
-        try {
-
-            String text = mapper.writeValueAsString(entry);
-
-            System.out.println(text);
-
-        } catch (JsonProcessingException e) {
-            LOGGER.warn("save: {}", e);
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/pom.xml b/trunk/streams-contrib/streams-persist-elasticsearch/pom.xml
deleted file mode 100644
index 2b99973..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?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-elasticsearch</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.elasticsearch</groupId>
-            <artifactId>elasticsearch</artifactId>
-            <version>0.90.5</version>
-            <scope>compile</scope>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-            <version>20090211</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </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/elasticsearch/ElasticsearchConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams.elasticsearch.pojo</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClient.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClient.java b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClient.java
deleted file mode 100644
index cc75fb0..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClient.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.apache.streams.elasticsearch;
-
-import org.elasticsearch.Version;
-import org.elasticsearch.client.Client;
-
-/**
- * Created by sblackmon on 2/10/14.
- */
-public class ElasticsearchClient {
-
-    private Client client;
-    private Version version;
-
-    public ElasticsearchClient(Client client, Version version) {
-        this.client = client;
-        this.version = version;
-    }
-
-    public Client getClient() {
-        return client;
-    }
-
-    public Version getVersion() {
-        return version;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClientManager.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClientManager.java b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClientManager.java
deleted file mode 100644
index f1d6aad..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchClientManager.java
+++ /dev/null
@@ -1,171 +0,0 @@
-package org.apache.streams.elasticsearch;
-
-import org.apache.commons.lang.builder.EqualsBuilder;
-import org.apache.commons.lang.builder.HashCodeBuilder;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.elasticsearch.Version;
-import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequestBuilder;
-import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
-import org.elasticsearch.action.admin.cluster.state.ClusterStateRequestBuilder;
-import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
-import org.elasticsearch.action.admin.indices.refresh.RefreshResponse;
-import org.elasticsearch.client.Client;
-import org.elasticsearch.client.transport.TransportClient;
-import org.elasticsearch.common.settings.ImmutableSettings;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.transport.InetSocketTransportAddress;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-
-/**
- * Created by sblackmon on 2/10/14.
- */
-public class ElasticsearchClientManager
-{
-    private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchClientManager.class);
-    private static Map<String, ElasticsearchClient> ALL_CLIENTS = new HashMap<String, ElasticsearchClient>();
-
-    private ElasticsearchConfiguration elasticsearchConfiguration;
-
-    public ElasticsearchConfiguration getElasticsearchConfiguration()   { return elasticsearchConfiguration; }
-    public String toString()                                            { return ToStringBuilder.reflectionToString(this); }
-    public boolean equals(Object o)                                     { return EqualsBuilder.reflectionEquals(this, o, Arrays.asList(this.elasticsearchConfiguration.toString())); }
-    public int hashCode()                                               { return HashCodeBuilder.reflectionHashCode(this, Arrays.asList(this.elasticsearchConfiguration.toString())); }
-
-    public ElasticsearchClientManager(ElasticsearchConfiguration elasticsearchConfiguration) {
-        this.elasticsearchConfiguration = elasticsearchConfiguration;
-    }
-
-    /**************************************************************************************
-     * Get the Client for this return, it is actually a transport client, but it is much
-     * easier to work with the generic object as this interface likely won't change from
-     * elasticsearch. This method is synchronized to block threads from creating
-     * too many of these at any given time.
-     * @return
-     * Client for elasticsearch
-     *************************************************************************************/
-    public Client getClient()
-    {
-        checkAndLoadClient(null);
-
-        return ALL_CLIENTS.get(this.elasticsearchConfiguration.getClusterName()).getClient();
-    }
-
-    public Client getClient(String clusterName)
-    {
-        checkAndLoadClient(clusterName);
-
-        return ALL_CLIENTS.get(this.elasticsearchConfiguration.getClusterName()).getClient();
-    }
-
-    private synchronized void checkAndLoadClient(String clusterName) {
-
-        if( clusterName == null )
-            clusterName = this.elasticsearchConfiguration.getClusterName();
-
-        // If it is there, exit early
-        if (ALL_CLIENTS.containsKey(clusterName))
-            return;
-
-        try
-        {
-            // We are currently using lazy loading to start the elasticsearch cluster, however.
-            LOGGER.info("Creating a new TransportClient: {}", this.elasticsearchConfiguration.getHosts());
-
-            Settings settings = ImmutableSettings.settingsBuilder()
-                    .put("cluster.name", this.elasticsearchConfiguration.getClusterName())
-                    .put("client.transport.ping_timeout", "90s")
-                    .put("client.transport.nodes_sampler_interval", "60s")
-                    .build();
-
-
-            // Create the client
-            TransportClient client = new TransportClient(settings);
-            for(String h : this.getElasticsearchConfiguration().getHosts()) {
-                LOGGER.info("Adding Host: {}", h);
-                client.addTransportAddress(new InetSocketTransportAddress(h, this.getElasticsearchConfiguration().getPort().intValue()));
-            }
-
-            // Add the client and figure out the version.
-            ElasticsearchClient elasticsearchClient = new ElasticsearchClient(client, getVersion(client));
-
-            // Add it to our static map
-            ALL_CLIENTS.put(clusterName, elasticsearchClient);
-
-        }
-        catch(Exception e)
-        {
-            LOGGER.error("Could not Create elasticsearch Transport Client: {}", e);
-        }
-
-    }
-
-
-    private Version getVersion(Client client) {
-        try {
-            ClusterStateRequestBuilder clusterStateRequestBuilder = new ClusterStateRequestBuilder(client.admin().cluster());
-            ClusterStateResponse clusterStateResponse = clusterStateRequestBuilder.execute().actionGet();
-
-            return clusterStateResponse.getState().getNodes().getMasterNode().getVersion();
-        }
-        catch (Exception e) {
-            return null;
-        }
-    }
-
-
-    public boolean isOnOrAfterVersion(Version version) {
-        return ALL_CLIENTS.get(this.elasticsearchConfiguration.toString()).getVersion().onOrAfter(version);
-    }
-
-    public void start() throws Exception
-    {
-        /***********************************************************************
-         * Note:
-         * Everything in these classes is being switched to lazy loading. Within
-         * Heroku you only have 60 seconds to connect, and bind to the service,
-         * and you are only allowed to run in 1Gb of memory. Switching all
-         * of this to lazy loading is how we are fixing some of the issues
-         * if you are having issues with these classes, please, refactor
-         * and create a UNIT TEST CASE!!!!!! To ensure that everything is
-         * working before you check it back in.
-         *
-         * Author: Smashew @ 2013-08-26
-         **********************************************************************/
-    }
-
-    public boolean refresh(String index) {
-        return refresh(new String[]{index});
-    }
-
-    public boolean refresh(String[] indexes) {
-        RefreshResponse refreshResponse = this.getClient().admin().indices().prepareRefresh(indexes).execute().actionGet();
-        return refreshResponse.getFailedShards() == 0;
-    }
-
-    public synchronized void stop()
-    {
-        // Terminate the elasticsearch cluster
-        // Check to see if we have a client.
-        if (ALL_CLIENTS.containsKey(this.elasticsearchConfiguration.toString()))
-        {
-            // Close the client
-            ALL_CLIENTS.get(this.elasticsearchConfiguration.toString()).getClient().close();
-
-            // Remove it so that it isn't in memory any more.
-            ALL_CLIENTS.remove(this.elasticsearchConfiguration.toString());
-        }
-    }
-
-    public ClusterHealthResponse getStatus() throws ExecutionException, InterruptedException
-    {
-        return new ClusterHealthRequestBuilder(this.getClient().admin().cluster())
-                .execute()
-                .get();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchConfigurator.java b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchConfigurator.java
deleted file mode 100644
index 224f7da..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchConfigurator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apache.streams.elasticsearch;
-
-import com.typesafe.config.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class ElasticsearchConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(ElasticsearchConfigurator.class);
-
-    public static ElasticsearchConfiguration detectConfiguration(Config elasticsearch) {
-        List<String> hosts = elasticsearch.getStringList("hosts");
-        Long port = elasticsearch.getLong("port");
-        String clusterName = elasticsearch.getString("clusterName");
-
-        ElasticsearchConfiguration elasticsearchConfiguration = new ElasticsearchConfiguration();
-
-        elasticsearchConfiguration.setHosts(hosts);
-        elasticsearchConfiguration.setPort(port);
-        elasticsearchConfiguration.setClusterName(clusterName);
-
-        return elasticsearchConfiguration;
-    }
-
-}


[16/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
deleted file mode 100644
index 9c161c7..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-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();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/util/MoreoverUtils.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/util/MoreoverUtils.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/util/MoreoverUtils.java
deleted file mode 100644
index 6f11b52..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/util/MoreoverUtils.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.apache.streams.data.util;
-
-import com.moreover.api.*;
-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.Provider;
-import org.joda.time.DateTime;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import static org.apache.streams.data.util.ActivityUtil.*;
-
-/**
- * Provides utilities for Moroever data
- */
-public class MoreoverUtils {
-    private MoreoverUtils() {
-    }
-
-    public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'";
-
-    public static Activity convert(Article article) {
-        Activity activity = new Activity();
-        Source source = article.getSource();
-        activity.setActor(convert(article.getAuthor(), source.getName()));
-        activity.setProvider(convert(source));
-        activity.setTarget(convertTarget(source));
-        activity.setObject(convertObject(article));
-        activity.setPublished(DateTime.parse(article.getPublishedDate()).toDate());
-        activity.setContent(article.getContent());
-        activity.setTitle(article.getTitle());
-        activity.setVerb("posted");
-        fixActivityId(activity);
-        addLocationExtension(activity, source);
-        addLanguageExtension(activity, article);
-        activity.setLinks(convertLinks(article));
-        return activity;
-    }
-
-    private static void fixActivityId(Activity activity) {
-        if (activity.getId().matches("\\{[a-z]*\\}")) {
-            activity.setId(null);
-        }
-    }
-
-    private static List convertLinks(Article article) {
-        List list = new LinkedList();
-        Article.OutboundUrls outboundUrls = article.getOutboundUrls();
-        if (outboundUrls != null) {
-            for (String url : outboundUrls.getOutboundUrl()) {
-                list.add(url);
-            }
-        }
-        return list;
-    }
-
-    public static ActivityObject convertTarget(Source source) {
-        ActivityObject object = new ActivityObject();
-        object.setUrl(source.getHomeUrl());
-        object.setDisplayName(source.getName());
-        return object;
-    }
-
-    public static ActivityObject convertObject(Article article) {
-        ActivityObject object = new ActivityObject();
-        object.setContent(article.getContent());
-        object.setSummary(article.getTitle());
-        object.setUrl(article.getOriginalUrl());
-        object.setObjectType(article.getDataFormat());
-        String type = article.getDataFormat().equals("text") ? "article" : article.getDataFormat();
-        object.setId(getObjectId(getProviderID(article.getSource().getFeed()), type, article.getId()));
-        object.setPublished(DateTime.parse(article.getPublishedDate()).toDate());
-        return object;
-    }
-
-    public static Provider convert(Source source) {
-        Provider provider = new Provider();
-        Feed feed = source.getFeed();
-        String display = getProviderID(feed);
-        provider.setId(getProviderId(display.trim().toLowerCase().replace(" ", "_")));
-        provider.setDisplayName(display);
-        provider.setUrl(feed.getUrl());
-        return provider;
-    }
-
-    public static Actor convert(Author author, String platformName) {
-        Actor actor = new Actor();
-        AuthorPublishingPlatform platform = author.getPublishingPlatform();
-        String userId = platform.getUserId();
-        if (userId != null) actor.setId(getPersonId(getProviderID(platformName), userId));
-        actor.setDisplayName(author.getName());
-        actor.setUrl(author.getHomeUrl());
-        actor.setSummary(author.getDescription());
-        actor.setAdditionalProperty("email", author.getEmail());
-        return actor;
-    }
-
-    public static void addLocationExtension(Activity activity, Source value) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        String country = value.getLocation().getCountryCode() == null ? value.getLocation().getCountry() : value.getLocation().getCountryCode();
-        if (country != null) {
-            Map<String, Object> location = new HashMap<String, Object>();
-            location.put(LOCATION_EXTENSION_COUNTRY, country);
-            extensions.put(LOCATION_EXTENSION, location);
-        }
-    }
-
-    public static void addLanguageExtension(Activity activity, Article value) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        String language = value.getLanguage();
-        if (language != null) {
-            extensions.put(LANGUAGE_EXTENSION, language);
-        }
-    }
-
-    public static Date parse(String str) {
-        DateFormat fmt = new SimpleDateFormat(DATE_FORMAT);
-        try {
-            return fmt.parse(str);
-        } catch (ParseException e) {
-            throw new IllegalArgumentException("Invalid date format", e);
-        }
-    }
-
-    private static String getProviderID(Feed feed) {
-        return getProviderID(feed.getPublishingPlatform() == null ? feed.getMediaType() : feed.getPublishingPlatform());
-    }
-
-    private static String getProviderID(String feed) {
-        return feed.toLowerCase().replace(" ", "_").trim();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/Moreover.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/Moreover.json b/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/Moreover.json
deleted file mode 100644
index 9ecf328..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/Moreover.json
+++ /dev/null
@@ -1,333 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "javaType": "com.moreover.Moreover",
-    "id": "#",
-    "properties": {
-        "tags": {
-            "type": "string"
-        },
-        "publishingPlatform": {
-            "properties": {
-                "totalViews": {
-                    "type": "string"
-                },
-                "itemId": {
-                    "type": "string"
-                }
-            }
-        },
-        "loginStatus": {
-            "type": "string"
-        },
-        "duplicateGroupId": {
-            "type": "string"
-        },
-        "companies": {
-            "properties": {
-                "symbol": {
-                    "type": "string"
-                },
-                "primary": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "contentCount": {
-                    "type": "string"
-                },
-                "exchange": {
-                    "type": "string"
-                },
-                "titleCount": {
-                    "type": "string"
-                },
-                "isin": {
-                    "type": "string"
-                }
-            }
-        },
-        "copyright": {
-            "type": "string"
-        },
-        "url": {
-            "type": "string"
-        },
-        "content": {
-            "type": "string"
-        },
-        "id": {
-            "type": "string"
-        },
-        "author": {
-            "properties": {
-                "publishingPlatform": {
-                    "properties": {
-                        "userId": {
-                            "type": "string"
-                        },
-                        "totalViews": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "dateLastActive": {
-                    "type": "string"
-                },
-                "description": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                }
-            }
-        },
-        "topics": {
-            "properties": {
-                "name": {
-                    "type": "string"
-                },
-                "group": {
-                    "type": "string"
-                }
-            }
-        },
-        "title": {
-            "type": "string"
-        },
-        "source": {
-            "properties": {
-                "category": {
-                    "type": "string"
-                },
-                "location": {
-                    "properties": {
-                        "region": {
-                            "type": "string"
-                        },
-                        "subregion": {
-                            "type": "string"
-                        },
-                        "zipCode": {
-                            "type": "string"
-                        },
-                        "state": {
-                            "type": "string"
-                        },
-                        "countryCode": {
-                            "type": "string"
-                        },
-                        "zipArea": {
-                            "type": "string"
-                        },
-                        "country": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "editorialRank": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "feed": {
-                    "properties": {
-                        "tags": {
-                            "type": "string"
-                        },
-                        "genre": {
-                            "type": "string"
-                        },
-                        "publishingPlatform": {
-                            "type": "string"
-                        },
-                        "inWhiteList": {
-                            "type": "string"
-                        },
-                        "imageUrl": {
-                            "type": "string"
-                        },
-                        "copyright": {
-                            "type": "string"
-                        },
-                        "mediaType": {
-                            "type": "string"
-                        },
-                        "id": {
-                            "type": "string"
-                        },
-                        "rank": {
-                            "properties": {
-                                "autoRankOrder": {
-                                    "type": "string"
-                                },
-                                "inboundLinkCount": {
-                                    "type": "string"
-                                },
-                                "autoRank": {
-                                    "type": "string"
-                                }
-                            }
-                        },
-                        "description": {
-                            "type": "string"
-                        },
-                        "idFromPublisher": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        },
-                        "dataFormat": {
-                            "type": "string"
-                        },
-                        "generator": {
-                            "type": "string"
-                        },
-                        "autoTopics": {
-                            "type": "string"
-                        },
-                        "language": {
-                            "type": "string"
-                        },
-                        "editorialTopics": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "homeUrl": {
-                    "type": "string"
-                },
-                "publisher": {
-                    "type": "string"
-                }
-            }
-        },
-        "locations": {
-            "properties": {
-                "region": {
-                    "type": "string"
-                },
-                "subregion": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "state": {
-                    "properties": {
-                        "name": {
-                            "type": "string"
-                        },
-                        "fipsCode": {
-                            "type": "string"
-                        },
-                        "confidence": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "longitude": {
-                    "type": "string"
-                },
-                "latitude": {
-                    "type": "string"
-                },
-                "confidence": {
-                    "type": "string"
-                },
-                "type": {
-                    "type": "string"
-                },
-                "mentions": {
-                    "type": "string"
-                },
-                "country": {
-                    "properties": {
-                        "name": {
-                            "type": "string"
-                        },
-                        "fipsCode": {
-                            "type": "string"
-                        },
-                        "isoCode": {
-                            "type": "string"
-                        },
-                        "confidence": {
-                            "type": "string"
-                        }
-                    }
-                }
-            }
-        },
-        "commentsUrl": {
-            "type": "string"
-        },
-        "dataFormat": {
-            "type": "string"
-        },
-        "outboundUrls": {
-            "type": "string"
-        },
-        "sequenceId": {
-            "type": "string"
-        },
-        "publishedDate": {
-            "type": "string"
-        },
-        "language": {
-            "type": "string"
-        },
-        "adultLanguage": {
-            "type": "string"
-        },
-        "harvestDate": {
-            "type": "string"
-        },
-        "media": {
-            "properties": {
-                "duration": {
-                    "type": "string"
-                },
-                "audio": {
-                    "properties": {
-                        "url": {
-                            "type": "string"
-                        },
-                        "mimeType": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "image": {
-                    "properties": {
-                        "url": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "caption": {
-                    "type": "string"
-                },
-                "video": {
-                    "properties": {
-                        "url": {
-                            "type": "string"
-                        },
-                        "mimeType": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "url": {
-                    "type": "string"
-                },
-                "mimeType": {
-                    "type": "string"
-                }
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json b/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
deleted file mode 100644
index 6950918..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.moreover.MoreoverConfiguration",
-    "properties": {
-        "apiKeys": {
-            "type": "array",
-            "minItems": 1,
-            "items": {
-                "type": "object",
-                "javaType" : "org.apache.streams.moreover.MoreoverKeyData",
-                "javaInterfaces": ["java.io.Serializable"],
-                "properties": {
-                    "id": {
-                        "type": "string"
-                    },
-                    "key": {
-                        "type": "string"
-                    },
-                    "startingSequence": {
-                        "type": "string"
-                    }
-                }
-            }
-        },
-        "maxBatchSize": {
-            "type": "long"
-        },
-        "minDelaySeconds": {
-            "type": "long"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/articles10.xsd
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/articles10.xsd b/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/articles10.xsd
deleted file mode 100644
index 629719a..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/articles10.xsd
+++ /dev/null
@@ -1,366 +0,0 @@
-<?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="response" type="articlesResponse"/>
-
-    <xs:complexType name="articlesResponse">
-        <xs:sequence>
-            <xs:element name="status" type="xs:string" minOccurs="0"/>
-            <xs:element name="messageCode" type="xs:string" minOccurs="0"/>
-            <xs:element name="userMessage" type="xs:string" minOccurs="0"/>
-            <xs:element name="developerMessage" type="xs:string" minOccurs="0"/>
-            <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>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/binding.xjb
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/binding.xjb b/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/binding.xjb
deleted file mode 100644
index 0f31d3c..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/xmlschema/com/moreover/binding.xjb
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverJsonActivitySerializerTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverJsonActivitySerializerTest.java b/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverJsonActivitySerializerTest.java
deleted file mode 100644
index 7c46694..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverJsonActivitySerializerTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.data;
-
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.streams.data.util.JsonUtil;
-import org.apache.streams.pojo.json.Activity;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.*;
-import java.util.regex.Pattern;
-
-import static java.util.regex.Pattern.matches;
-import static org.apache.streams.data.util.MoreoverTestUtil.test;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-public class MoreoverJsonActivitySerializerTest {
-    JsonNode json;
-    ActivitySerializer serializer = new MoreoverJsonActivitySerializer();
-    ObjectMapper mapper;
-
-    @Before
-    public void setup() throws IOException {
-        json = JsonUtil.getFromFile("classpath:org/apache/streams/data/moreover.json");
-
-        mapper = new ObjectMapper();
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-    }
-
-    @Test
-    public void loadData() throws Exception {
-        for (JsonNode item : json) {
-            test(serializer.deserialize(getString(item)));
-        }
-    }
-
-
-    private String getString(JsonNode jsonNode)  {
-        try {
-            return new ObjectMapper().writeValueAsString(jsonNode);
-        } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverXmlActivitySerializerTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverXmlActivitySerializerTest.java b/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverXmlActivitySerializerTest.java
deleted file mode 100644
index 8e3e06f..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/MoreoverXmlActivitySerializerTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.apache.streams.data;
-
-
-import com.google.common.collect.Lists;
-import org.apache.commons.io.IOUtils;
-import org.apache.streams.pojo.json.Activity;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.StringWriter;
-import java.nio.charset.Charset;
-import java.util.List;
-
-import static org.apache.streams.data.util.MoreoverTestUtil.test;
-
-public class MoreoverXmlActivitySerializerTest {
-    ActivitySerializer serializer;
-    private String xml;
-
-    @Before
-    public void setup() throws IOException {
-        serializer = new MoreoverXmlActivitySerializer();
-        xml = loadXml();
-    }
-
-    @Test
-    public void loadData() throws Exception {
-        List<Activity> activities = serializer.deserializeAll(Lists.newArrayList(xml));
-        for (Activity activity : activities) {
-            test(activity);
-        }
-    }
-
-    private String loadXml() throws IOException {
-        StringWriter writer = new StringWriter();
-        InputStream resourceAsStream = this.getClass().getResourceAsStream("moreover.xml");
-        IOUtils.copy(resourceAsStream, writer, Charset.forName("UTF-8"));
-        return writer.toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/util/MoreoverTestUtil.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/util/MoreoverTestUtil.java b/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/util/MoreoverTestUtil.java
deleted file mode 100644
index e676b4f..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/test/java/org/apache/streams/data/util/MoreoverTestUtil.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.streams.data.util;
-
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.apache.streams.pojo.json.Activity;
-
-import static java.util.regex.Pattern.matches;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-public class MoreoverTestUtil {
-
-    public static void test(Activity activity) {
-        assertThat(activity, is(not(nullValue())));
-        assertThat(activity.getActor(), is(not(nullValue())));
-        assertThat(activity.getObject(), is(not(nullValue())));
-        if(activity.getObject().getId() != null) {
-            assertThat(matches("id:.*:[a-z]*s:[a-zA-Z0-9]*", activity.getObject().getId()), is(true));
-        }
-        assertThat(activity.getObject().getObjectType(), is(not(nullValue())));
-        System.out.println(activity.getPublished());
-    }
-}


[06/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-core/pom.xml b/trunk/streams-core/pom.xml
deleted file mode 100644
index 8a35b24..0000000
--- a/trunk/streams-core/pom.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>streams-project</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>streams-core</artifactId>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>joda-time</groupId>
-            <artifactId>joda-time</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-util</artifactId>
-            <version>${project.version}</version>
-        </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>
-    </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamHandler.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamHandler.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamHandler.java
deleted file mode 100644
index 5ad4f7a..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamHandler.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.streams.core;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by sblackmon on 1/6/14.
- */
-public class StreamHandler {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(StreamHandler.class);
-
-    private volatile StreamState state;
-
-    public void setState(StreamState state) {
-        this.state = state;
-    }
-
-    public StreamState getState() {
-        return this.state;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamState.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamState.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamState.java
deleted file mode 100644
index 90b6d23..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamState.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.streams.core;
-
-/**
- * Created by sblackmon on 1/6/14.
- */
-public enum StreamState {
-    RUNNING,  //Stream is currently connected and running
-    STOPPED,  // Stream has been shut down and is stopped
-    CONNECTING, //Stream is attempting to connect to server
-    SHUTTING_DOWN, //Stream has initialized shutdown
-    DISCONNECTED //Stream has unintentionally lost connection
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
deleted file mode 100644
index f88275b..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * 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.core;
-
-import org.joda.time.DateTime;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Created by sblackmon on 1/2/14.
- */
-public class StreamsDatum implements Serializable {
-
-    public StreamsDatum(Object document) {
-        this.document = document;
-        this.metadata = new HashMap<String, Object>();
-    }
-
-    public StreamsDatum(Object document, BigInteger sequenceid) {
-
-        this.document = document;
-        this.sequenceid = sequenceid;
-        this.metadata = new HashMap<String, Object>();
-    }
-
-    public StreamsDatum(Object document, DateTime timestamp) {
-
-        this.document = document;
-        this.timestamp = timestamp;
-        this.metadata = new HashMap<String, Object>();
-    }
-
-    public StreamsDatum(Object document, DateTime timestamp, BigInteger sequenceid) {
-        this.document = document;
-        this.timestamp = timestamp;
-        this.sequenceid = sequenceid;
-        this.metadata = new HashMap<String, Object>();
-    }
-
-    public DateTime timestamp;
-
-    public BigInteger sequenceid;
-
-    public Map<String, Object> metadata;
-
-    public Object document;
-
-    public DateTime getTimestamp() {
-        return timestamp;
-    }
-
-    public void setTimestamp(DateTime timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public BigInteger getSequenceid() {
-        return sequenceid;
-    }
-
-    public void setSequenceid(BigInteger sequenceid) {
-        this.sequenceid = sequenceid;
-    }
-
-    public Map<String, Object> getMetadata() {
-        return metadata;
-    }
-
-    public void setMetadata(Map<String, Object> metadata) {
-        this.metadata = metadata;
-    }
-
-    public Object getDocument() {
-        return document;
-    }
-
-    public void setDocument(Object document) {
-        this.document = document;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if(o instanceof StreamsDatum) {
-            StreamsDatum that = (StreamsDatum) o;
-            if(this.document != null && this.document.equals(that.document)) {
-                return (this.timestamp != null ? this.timestamp.equals(that.timestamp) : that.timestamp == null) &&
-                        (this.sequenceid != null ? this.sequenceid.equals(that.sequenceid) : that.sequenceid == null);
-            }
-            else {
-                return that.document == null && this.document == null;
-            }
-        }
-        else {
-            return false;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsFilter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsFilter.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsFilter.java
deleted file mode 100644
index 11e9539..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsFilter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.core;
-
-import java.util.List;
-import java.util.Queue;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public interface StreamsFilter {
-
-    void start();
-    void stop();
-
-    public void setProcessorInputQueue(Queue<StreamsDatum> inputQueue);
-    public Queue<StreamsDatum> getProcessorInputQueue();
-
-    public void setProcessorOutputQueue(Queue<StreamsDatum> outputQueue);
-    public Queue<StreamsDatum> getProcessorOutputQueue();
-
-    public boolean filter(StreamsDatum entry);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
deleted file mode 100644
index 6fb703c..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.core;
-
-import org.joda.time.DateTime;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.Queue;
-
-/**
- *
- * Currently a duplicate interface.  Has exact same methods as StreamsProvider.
- * Future work should make this interface necessary I'm told.
- *
- */
-public interface StreamsPersistReader extends StreamsProvider {
-
-//    void start();
-//    void stop();
-//
-//    public void setPersistQueue(Queue<StreamsDatum> persistQueue);
-//    public Queue<StreamsDatum> getPersistQueue();
-
-//    public StreamsResultSet readAll();
-//    public StreamsResultSet readNew(BigInteger sequence);
-//    public StreamsResultSet readRange(DateTime start, DateTime end);
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistWriter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistWriter.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistWriter.java
deleted file mode 100644
index 3f7a79c..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsPersistWriter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.core;
-
-import java.io.Serializable;
-import java.util.Queue;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public interface StreamsPersistWriter extends StreamsOperation{
-
-    /**
-     * Persist the StreamsDatum to the corresponding data store.
-     * @param entry to be stored.
-     */
-    public void write( StreamsDatum entry );
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProcessor.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProcessor.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProcessor.java
deleted file mode 100644
index d61c1e5..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProcessor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.core;
-
-import java.util.List;
-import java.util.Queue;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public interface StreamsProcessor extends StreamsOperation{
-
-
-
-    /**
-     * Process/Analyze the {@link org.apache.streams.core.StreamsDatum} and return the the StreamsDatums that will
-     * passed to every down stream operation that reads from this processor.
-     * @param entry StreamsDatum to be process
-     * @return resulting StreamDatums from process. Should never be null or contain null object.  Empty list OK.
-     */
-    public List<StreamsDatum> process( StreamsDatum entry );
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
deleted file mode 100644
index 56878a7..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.core;
-
-import org.joda.time.DateTime;
-
-import java.math.BigInteger;
-import java.util.Queue;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public interface StreamsProvider extends StreamsOperation {
-
-//    void start();
-//    void stop();
-//
-//    public Queue<StreamsDatum> getProviderQueue();
-
-    public StreamsResultSet readCurrent();
-    public StreamsResultSet readNew(BigInteger sequence);
-    public StreamsResultSet readRange(DateTime start, DateTime end);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
----------------------------------------------------------------------
diff --git a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java b/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
deleted file mode 100644
index 02bd368..0000000
--- a/trunk/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.core;
-
-import java.math.BigInteger;
-
-public interface StreamsResultSet extends Iterable<StreamsDatum> {
-    /**
-     * Get the time that the result set started collecting
-     * @return long representing time since epoch
-     */
-    long getStartTime();
-
-    /**
-     * Get the time that the result set stopped collecting
-     * @return long representing time since epoch
-     */
-    long getEndTime();
-
-    /**
-     * Get the source Unique identifier
-     * @return String id
-     */
-    String getSourceId();
-
-    /**
-     * Get the maximum id of the items in the result set
-     * @return the max sequence ID
-     */
-    BigInteger getMaxSequence();
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/ReadMe.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/ReadMe.txt b/trunk/streams-eip-routes/ReadMe.txt
deleted file mode 100644
index 19a1d19..0000000
--- a/trunk/streams-eip-routes/ReadMe.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Camel Router WAR Project with Web Console and REST Support
-==========================================================
-
-This project bundles the Camel Web Console, REST API, and some
-sample routes as a WAR. You can build the WAR by running
-
-mvn install
-
-You can then run the project by dropping the WAR into your 
-favorite web container or just run
-
-mvn jetty:run
-
-to start up and deploy to Jetty.
-
-
-Web Console
-===========
-
-You can view the Web Console by pointing your browser to http://localhost:8080/
-
-You should be able to do things like
-
-    * browse the available endpoints
-    * browse the messages on an endpoint if it is a BrowsableEndpoint
-    * send a message to an endpoint
-    * create new endpoints
-
-For more help see the Apache Camel documentation
-
-    http://camel.apache.org/
-    

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/pom.xml b/trunk/streams-eip-routes/pom.xml
deleted file mode 100644
index 78d0767..0000000
--- a/trunk/streams-eip-routes/pom.xml
+++ /dev/null
@@ -1,209 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams</groupId>
-    <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>streams-eip-routes</artifactId>
-
-  <name>${bundle.symbolicName} [${bundle.namespace}]</name>
-
-  <properties>
-        <bundle.symbolicName>streams-eip-routes</bundle.symbolicName>
-        <bundle.namespace>org.apache.streams</bundle.namespace>
-        <jackson.old.version>1.9.11</jackson.old.version>
-    </properties>
-
-    <packaging>bundle</packaging>
-
-    <repositories>
-        <repository>
-            <id>clojars.org</id>
-            <url>http://clojars.org/repo</url>
-        </repository>
-    </repositories>
-
-    <build>
-
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-            <!--
-             | example additional resource entries, useful when building Eclipse RCP applications
-            -->
-            <resource>
-                <directory>.</directory>
-                <includes>
-                    <include>plugin.xml</include>
-                    <include>plugin.properties</include>
-                    <include>icons/**</include>
-                    <include>META-INF/*</include>
-                </includes>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.ops4j</groupId>
-                <artifactId>maven-pax-plugin</artifactId>
-                <!--
-                 | enable improved OSGi compilation support for the bundle life-cycle.
-                 | to switch back to the standard bundle life-cycle, move this setting
-                 | down to the maven-bundle-plugin section
-                -->
-                <extensions>true</extensions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>1.4.3</version>
-                <!--
-                 | the following instructions build a simple set of public/private classes into an OSGi bundle
-                -->
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-                        <Bundle-Version>${project.version}</Bundle-Version>
-                        <Export-Package>${bundle.namespace};version="${project.version}",org.apache.streams.messaging.configuration,org.apache.streams.messaging.routers,org.apache.streams.messaging.rules,org.apache.streams.messaging.processors,org.apache.streams.messaging.aggregation,org.apache.streams.messaging.service, org.apache.streams.messaging.storm,org.apache.activemq,org.codehaus.jackson.*;version="${jackson.version}"</Export-Package>
-                        <Private-Package>${bundle.namespace}.messaging.routers.impl.*,${bundle.namespace}.messaging.rules.impl.*, ${bundle.namespace}.messaging.service.impl.*</Private-Package>
-                        <Import-Package>org.apache.camel.*;version="2.8.5",org.apache.streams.messaging.configuration,org.apache.activemq.camel.component,org.apache.activemq,org.apache.activemq.pool,org.apache.camel.component.jms,org.springframework.*;version="3.0.6.RELEASE",org.apache.commons.logging,org.apache.streams.*,org.apache.streams.osgi.components,org.apache.streams.osgi.components.activityconsumer,org.apache.streams.osgi.components.activityconsumer.impl,org.apache.streams.osgi.components.activitysubscriber,org.apache.streams.osgi.components.activitysubscriber.impl,org.apache.streams.messaging.processors,org.apache.streams.messaging.aggregation,javax.jms, javax.net.ssl, javax.transaction.xa, org.apache.activemq.advisory, org.apache.activemq.blob, org.apache.activemq.broker, org.apache.activemq.broker.region, org.apache.activemq.command, org.apache.activemq.filter, org.apache.activemq.jndi, org.apache.activemq.management, org.apache.activemq.selector, org.apache.activemq.sta
 te, org.apache.activemq.thread, org.apache.activemq.transaction, org.apache.activemq.transport, org.apache.activemq.transport.failover, org.apache.activemq.transport.tcp, org.apache.activemq.usage, org.apache.activemq.util, org.slf4j,org.codehaus.jackson;version="${jackson.version}",javax.xml.datatype, javax.xml.namespace, javax.xml.parsers, org.joda.time, org.joda.time.format, org.w3c.dom, org.w3c.dom.bootstrap, org.w3c.dom.ls, org.xml.sax, org.apache.rave.model, org.apache.rave.portal.model.impl, backtype.storm, backtype.storm.coordination, backtype.storm.generated, backtype.storm.spout, backtype.storm.task, backtype.storm.topology, backtype.storm.topology.base, backtype.storm.tuple, javax.annotation, backtype.storm.utils</Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-core</artifactId>
-            <version>2.9.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.activemq</groupId>
-            <artifactId>activemq-camel</artifactId>
-            <version>5.5.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.activemq</groupId>
-            <artifactId>activemq-pool</artifactId>
-            <version>5.5.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-            <version>3.0.6.RELEASE</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-            <version>3.0.6.RELEASE</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mrbean</artifactId>
-            <version>${jackson.old.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-            <version>${jackson.old.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_core</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_compendium</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-
-
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-registration</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-consumer</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-subscriber</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-cassandra</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.rave</groupId>
-            <artifactId>rave-core</artifactId>
-            <version>${rave.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.rave</groupId>
-            <artifactId>rave-core-api</artifactId>
-            <version>${rave.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>storm</groupId>
-            <artifactId>storm</artifactId>
-            <version>0.8.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>3.1</version>
-        </dependency>
-    </dependencies>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/aggregation/ActivityAggregator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/aggregation/ActivityAggregator.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/aggregation/ActivityAggregator.java
deleted file mode 100644
index dc7ba0c..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/aggregation/ActivityAggregator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.messaging.aggregation;
-
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.messaging.service.impl.CassandraActivityService;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriber;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriberWarehouse;
-import org.springframework.scheduling.annotation.Scheduled;
-
-import java.util.*;
-
-public class ActivityAggregator {
-
-    private ActivityStreamsSubscriberWarehouse activityStreamsSubscriberWarehouse;
-    private CassandraActivityService activityService;
-    private static final transient Log LOG = LogFactory.getLog(ActivityAggregator.class);
-
-    public void setActivityStreamsSubscriberWarehouse(ActivityStreamsSubscriberWarehouse activityStreamsSubscriberWarehouse) {
-        this.activityStreamsSubscriberWarehouse = activityStreamsSubscriberWarehouse;
-    }
-
-    public void setActivityService(CassandraActivityService activityService) {
-        this.activityService = activityService;
-    }
-
-    @Scheduled(fixedRate=30000)
-    public void distributeToSubscribers() {
-        for (ActivityStreamsSubscriber subscriber : activityStreamsSubscriberWarehouse.getAllSubscribers()) {
-              updateSubscriber(subscriber);
-        }
-    }
-
-    public void updateSubscriber(ActivityStreamsSubscriber subscriber){
-        Set<String> activities = new TreeSet<String>();
-        activities.addAll(activityService.getActivitiesForFilters(subscriber.getActivityStreamsSubscriberConfiguration().getFilters(), subscriber.getLastUpdated()));
-        //TODO: an activity posted in between the cql query and setting the lastUpdated field will be lost
-        subscriber.setLastUpdated(new Date());
-        subscriber.receive(new ArrayList<String>(activities));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/configuration/EipConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/configuration/EipConfigurator.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/configuration/EipConfigurator.java
deleted file mode 100644
index 460c43a..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/configuration/EipConfigurator.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * 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.messaging.configuration;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Component
-public class EipConfigurator {
-
-
-
-    @Value("${consumer.inRouteHost}")
-    private String consumerInRouteHost;
-
-    @Value("${consumer.inRoutePort}")
-    private String consumerInRoutePort;
-
-    @Value("${subscriber.inRouteHost}")
-    private String subscriberInRouteHost;
-
-    @Value("${subscriber.inRoutePort}")
-    private String subscriberInRoutePort;
-
-
-    @Value("${consumer.activityQUri}")
-    private String consumerActivityQUri;
-
-    @Value("${consumer.publisherEndpointProtocol}")
-    private String publisherEndpointProtocol;
-
-    @Value("${consumer.publisherEndpointUrlResource}")
-    private String publisherEndpointUrlResource;
-
-    @Value("${consumer.receiveMethod}")
-    private String consumerReceiveMethod;
-
-    @Value("${consumer.splitMethod}")
-    private String consumerSplitMethod;
-
-    @Value("${subscriber.subscriberEndpointProtocol}")
-    private String subscriberEndpointProtocol;
-
-    @Value("${subscriber.subscriberEndpointUrlResource}")
-    private String subscriberEndpointUrlResource;
-
-    @Value("${subscriber.receiveMethod}")
-    private String subscriberReceiveMethod;
-
-    @Value("${subscriber.postMethod}")
-    private String subscriberPostMethod;
-
-    @Value("${subscriber.getMethod}")
-    private String subscriberGetMethod;
-
-
-    @Value("${servlet.baseUrlPath}")
-    private String baseUrlPath;
-
-
-    public static String ENDPOINT_PROTOCOL_JETTY="jetty:http://";
-    public static String ENDPOINT_PROTOCOL_SERVLET="servlet:///";
-
-    public String getConsumerInRouteHost() {
-        return consumerInRouteHost;
-    }
-
-    public String getConsumerInRoutePort() {
-        return consumerInRoutePort;
-    }
-
-    public String getConsumerActivityQUri() {
-        return consumerActivityQUri;
-    }
-
-    public void setConsumerActivityQUri(String consumerActivityQUri) {
-        this.consumerActivityQUri = consumerActivityQUri;
-    }
-
-    public void setConsumerInRoutePort(String consumerInRoutePort) {
-        this.consumerInRoutePort = consumerInRoutePort;
-    }
-
-    public void setConsumerInRouteHost(String consumerInRouteHost) {
-        this.consumerInRouteHost = consumerInRouteHost;
-    }
-
-    public String getSubscriberInRouteHost() {
-        return subscriberInRouteHost;
-    }
-
-    public void setSubscriberInRouteHost(String subscriberInRouteHost) {
-        this.subscriberInRouteHost = subscriberInRouteHost;
-    }
-
-    public String getSubscriberInRoutePort() {
-        return subscriberInRoutePort;
-    }
-
-    public void setSubscriberInRoutePort(String subscriberInRoutePort) {
-        this.subscriberInRoutePort = subscriberInRoutePort;
-    }
-
-    public String getPublisherEndpointProtocol() {
-        return publisherEndpointProtocol;
-    }
-
-    public void setPublisherEndpointProtocol(String publisherEndpointProtocol) {
-        this.publisherEndpointProtocol = publisherEndpointProtocol;
-    }
-
-    public String getPublisherEndpointUrlResource() {
-        return publisherEndpointUrlResource;
-    }
-
-    public void setPublisherEndpointUrlResource(String publisherEndpointUrlResource) {
-        this.publisherEndpointUrlResource = publisherEndpointUrlResource;
-    }
-
-    public String getConsumerReceiveMethod() {
-        return consumerReceiveMethod;
-    }
-
-    public void setConsumerReceiveMethod(String consumerReceiveMethod) {
-        this.consumerReceiveMethod = consumerReceiveMethod;
-    }
-
-    public String getConsumerSplitMethod() {
-        return consumerSplitMethod;
-    }
-
-    public void setConsumerSplitMethod(String consumerSplitMethod) {
-        this.consumerSplitMethod = consumerSplitMethod;
-    }
-
-    public String getSubscriberEndpointProtocol() {
-        return subscriberEndpointProtocol;
-    }
-
-    public void setSubscriberEndpointProtocol(String subscriberEndpointProtocol) {
-        this.subscriberEndpointProtocol = subscriberEndpointProtocol;
-    }
-
-    public String getSubscriberEndpointUrlResource() {
-        return subscriberEndpointUrlResource;
-    }
-
-    public void setSubscriberEndpointUrlResource(String subscriberEndpointUrlResource) {
-        this.subscriberEndpointUrlResource = subscriberEndpointUrlResource;
-    }
-
-    public String getSubscriberReceiveMethod() {
-        return subscriberReceiveMethod;
-    }
-
-    public void setSubscriberReceiveMethod(String subscriberReceiveMethod) {
-        this.subscriberReceiveMethod = subscriberReceiveMethod;
-    }
-
-    public String getSubscriberPostMethod() {
-        return subscriberPostMethod;
-    }
-
-    public void setSubscriberPostMethod(String subscriberPostMethod) {
-        this.subscriberPostMethod = subscriberPostMethod;
-    }
-
-    public String getSubscriberGetMethod() {
-        return subscriberGetMethod;
-    }
-
-    public void setSubscriberGetMethod(String subscriberGetMethod) {
-        this.subscriberGetMethod = subscriberGetMethod;
-    }
-
-    public String getBaseUrlPath() {
-        return baseUrlPath;
-    }
-
-    public void setBaseUrlPath(String baseUrlPath) {
-        this.baseUrlPath = baseUrlPath;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityPublisherRegistrationProcessor.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityPublisherRegistrationProcessor.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityPublisherRegistrationProcessor.java
deleted file mode 100644
index 0c60349..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityPublisherRegistrationProcessor.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.messaging.processors;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumer;
-import org.apache.streams.osgi.components.activityconsumer.impl.PushActivityConsumer;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-
-
-public class ActivityPublisherRegistrationProcessor implements Processor{
-    private static final transient Log LOG = LogFactory.getLog(ActivityStreamsSubscriberRegistrationProcessor.class);
-    public void process(Exchange exchange){
-        //add the necessary headers to the message so that the activity registration component
-        //can do a lookup to either make a new processor and endpoint, or pass the message to the right one
-        String httpMethod = exchange.getIn().getHeader("CamelHttpMethod").toString();
-
-        if (!httpMethod.equals("POST")){
-            //reject anything that isn't a post...Camel 2.10 solves needing this check, however, SM 4.4 doesn't have the latest
-            exchange.getOut().setFault(true);
-            exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,405);
-        }  else {
-
-             //for now...just expect a post with a uri in the body...should have some checking here with http response codes
-            // authentication, all that good stuff...happens in the registration module
-
-            String body = exchange.getIn().getBody(String.class);
-            ObjectMapper mapper = new ObjectMapper();
-            mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
-
-            try {
-
-                // read from file, convert it to user class
-                ActivityConsumer configuration = mapper.readValue(body, ActivityConsumer.class);
-                if (configuration.getSrc()==null){
-                   LOG.info("configuration src is null");
-                   throw new Exception();
-                }
-
-                exchange.getOut().setBody(configuration);
-
-            } catch (Exception e) {
-                LOG.info("error: " + e);
-                exchange.getOut().setFault(true);
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,400);
-                exchange.getOut().setBody("POST should contain a valid JSON configuration for registering as an Activity Publisher (check that src element is valid).");
-            }
-        }
-
-
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityStreamsSubscriberRegistrationProcessor.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityStreamsSubscriberRegistrationProcessor.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityStreamsSubscriberRegistrationProcessor.java
deleted file mode 100644
index 9306aa3..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/processors/ActivityStreamsSubscriberRegistrationProcessor.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * 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.messaging.processors;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.messaging.service.SubscriptionService;
-import org.apache.streams.messaging.service.impl.CassandraSubscriptionService;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-
-
-public class ActivityStreamsSubscriberRegistrationProcessor implements Processor{
-    private static final transient Log LOG = LogFactory.getLog(ActivityStreamsSubscriberRegistrationProcessor.class);
-    private SubscriptionService subscriptionService;
-
-    public ActivityStreamsSubscriberRegistrationProcessor(SubscriptionService subscriptionService){
-        this.subscriptionService = subscriptionService;
-    }
-
-    public void process(Exchange exchange){
-        LOG.info("processing the subscriber...");
-        //add the necessary headers to the message so that the activity registration component
-        //can do a lookup to either make a new processor and endpoint, or pass the message to the right one
-        String httpMethod = exchange.getIn().getHeader("CamelHttpMethod").toString();
-
-        if (!httpMethod.equals("POST")){
-            //reject anything that isn't a post...Camel 2.10 solves needing this check, however, SM 4.4 doesn't have the latest
-            exchange.getOut().setFault(true);
-            exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,405);
-        }  else {
-
-             //for now...just expect a post with a uri in the body...should have some checking here with http response codes
-            // authentication, all that good stuff...happens in the registration module
-
-
-            String body = exchange.getIn().getBody(String.class);
-
-            LOG.info("receiving the subscriber: "+body);
-            //OAuth token? What does subscriber post to init a subscription URL?
-            //maybe its a list of URLs to subscribe to subscriptions=1,2,3,4&auth_token=XXXX
-
-            ObjectMapper mapper = new ObjectMapper();
-            mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
-
-            try {
-
-                // read from file, convert it to user class
-                ActivityStreamsSubscription configuration = mapper.readValue(body, ActivityStreamsSubscription.class);
-                if(configuration.getFilters() == null){
-                    configuration.setFilters(subscriptionService.getFilters(configuration.getAuthToken()));
-                }else{
-                    subscriptionService.saveFilters(configuration);
-                }
-                exchange.getOut().setBody(configuration);
-
-            } catch (Exception e) {
-                LOG.info("exception" + e);
-                exchange.getOut().setFault(true);
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,400);
-                exchange.getOut().setBody("POST should contain a valid Subscription configuration object.");
-            }
-
-
-
-            //just pass this on to the route creator, body will be the dedicated URL for this subscriber
-
-        }
-
-
-
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityConsumerRouteBuilder.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityConsumerRouteBuilder.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityConsumerRouteBuilder.java
deleted file mode 100644
index dea8781..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityConsumerRouteBuilder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.messaging.routers;
-
-
-
-import org.apache.camel.Exchange;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumer;
-
-
-public interface ActivityConsumerRouteBuilder {
-
-
-    void createNewRouteForConsumer(Exchange exchange, ActivityConsumer activityConsumer);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityStreamsSubscriberRouteBuilder.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityStreamsSubscriberRouteBuilder.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityStreamsSubscriberRouteBuilder.java
deleted file mode 100644
index 6947722..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/ActivityStreamsSubscriberRouteBuilder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.messaging.routers;
-
-
-
-import org.apache.camel.Exchange;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriber;
-
-
-public interface ActivityStreamsSubscriberRouteBuilder {
-
-
-    void createNewRouteForSubscriber(Exchange exchange, ActivityStreamsSubscriber activityStreamsSubscriber);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityConsumerRouter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityConsumerRouter.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityConsumerRouter.java
deleted file mode 100644
index 20b8246..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityConsumerRouter.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * 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.messaging.routers.impl;
-
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.streams.messaging.routers.ActivityConsumerRouteBuilder;
-
-
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumerWarehouse;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumer;
-import org.apache.streams.messaging.configuration.EipConfigurator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.apache.camel.Exchange;
-import org.apache.camel.CamelContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.util.UUID;
-
-
-public class ActivityConsumerRouter extends RouteBuilder implements ActivityConsumerRouteBuilder {
-    private static final transient Log LOG = LogFactory.getLog(ActivityConsumerRouter.class);
-
-    @Autowired
-    private EipConfigurator configuration;
-
-    protected CamelContext camelContext;
-
-    private ActivityConsumerWarehouse activityConsumerWarehouse;
-
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    public void setActivityConsumerWarehouse(ActivityConsumerWarehouse activityConsumerWarehouse) {
-        this.activityConsumerWarehouse = activityConsumerWarehouse;
-    }
-
-
-    public void createNewRouteForConsumer(Exchange exchange, ActivityConsumer activityConsumer){
-
-        //todo: add some better scheme then getCount for URL...
-        //todo: make the route again if consumer exists...and context doesn't have route
-        if (activityConsumer.isAuthenticated()){
-                ActivityConsumer existingConsumer = activityConsumerWarehouse.findConsumerBySrc(activityConsumer.getSrc().toASCIIString());
-
-                if (existingConsumer==null){
-
-                  try{
-
-                    if (configuration.getPublisherEndpointProtocol().equals(EipConfigurator.ENDPOINT_PROTOCOL_JETTY)){
-                        activityConsumer.setInRoute(configuration.getConsumerInRouteHost()+ ":" + configuration.getConsumerInRoutePort() +"/" + configuration.getPublisherEndpointUrlResource() + "/" + UUID.randomUUID());
-                        //set the body to the url the producer should post to
-                        exchange.getOut().setBody("http://" + activityConsumer.getInRoute());
-                    }else if (configuration.getPublisherEndpointProtocol().equals(EipConfigurator.ENDPOINT_PROTOCOL_SERVLET)){
-                        activityConsumer.setInRoute( configuration.getPublisherEndpointUrlResource() + "/" + UUID.randomUUID());
-                        //set the body to the url the producer should post to
-                        exchange.getOut().setBody(configuration.getBaseUrlPath() + activityConsumer.getInRoute());
-                    } else{
-                        throw new Exception("No supported endpoint protocol is configured.");
-                    }
-
-
-                        //setup a message queue for this consumer.getInRoute()
-                        camelContext.addRoutes(new DynamicConsumerRouteBuilder(configuration,camelContext, configuration.getPublisherEndpointProtocol() + activityConsumer.getInRoute(), activityConsumer));
-
-
-                        LOG.info("all messages sent from " + activityConsumer.getSrc() + " must be posted to " + activityConsumer.getInRoute());
-                        //only add the route to the warehouse after its been created in messaging system...
-                        activityConsumerWarehouse.register(activityConsumer);
-                    }catch (Exception e){
-                        exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,500);
-                        exchange.getOut().setBody("error creating route: " + e);
-                        LOG.error("error creating route: " + e);
-                    }
-
-                } else{
-
-                    exchange.getOut().setBody(configuration.getBaseUrlPath() + existingConsumer.getInRoute());
-                }
-
-        }else{
-                exchange.getOut().setFault(true);
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,401);
-                exchange.getOut().setBody("Authentication failed.");
-        }
-
-    }
-
-
-    public void configure() throws java.lang.Exception{
-        //nothing...set the context?
-
-    }
-
-    /**
-     * This route builder is a skeleton to add new routes at runtime
-     */
-    private static final class DynamicConsumerRouteBuilder extends RouteBuilder {
-        private final String from;
-        private ActivityConsumer activityConsumer;
-
-
-        private EipConfigurator configuration;
-
-        private DynamicConsumerRouteBuilder(EipConfigurator configuration, CamelContext context, String from, ActivityConsumer activityConsumer) {
-            super(context);
-            this.from = from;
-            this.activityConsumer = activityConsumer;
-            this.configuration = configuration;
-        }
-
-        @Override
-        public void configure() throws Exception {
-
-
-            from(from)
-                    .bean(activityConsumer, configuration.getConsumerReceiveMethod()).setBody(body())
-                    .split()
-                    .method(activityConsumer, configuration.getConsumerSplitMethod())
-                    .to(configuration.getConsumerActivityQUri());
-
-
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityStreamsSubscriberRouter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityStreamsSubscriberRouter.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityStreamsSubscriberRouter.java
deleted file mode 100644
index ad4b779..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/routers/impl/ActivityStreamsSubscriberRouter.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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.messaging.routers.impl;
-
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.messaging.aggregation.ActivityAggregator;
-import org.apache.streams.messaging.configuration.EipConfigurator;
-import org.apache.streams.messaging.routers.ActivityStreamsSubscriberRouteBuilder;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriber;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriberWarehouse;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.HashMap;
-import java.util.UUID;
-
-
-public class ActivityStreamsSubscriberRouter extends RouteBuilder implements ActivityStreamsSubscriberRouteBuilder {
-    private static final transient Log LOG = LogFactory.getLog(ActivityStreamsSubscriberRouter.class);
-
-    @Autowired
-    private EipConfigurator configuration;
-
-    protected CamelContext camelContext;
-
-    @Autowired
-    private ActivityAggregator activityAggregator;
-
-    private ActivityStreamsSubscriberWarehouse activityStreamsSubscriberWarehouse;
-
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
-    public void setActivityStreamsSubscriberWarehouse(ActivityStreamsSubscriberWarehouse activityStreamsSubscriberWarehouse) {
-        this.activityStreamsSubscriberWarehouse = activityStreamsSubscriberWarehouse;
-    }
-
-
-    public void createNewRouteForSubscriber(Exchange exchange, ActivityStreamsSubscriber activityStreamsSubscriber){
-
-        //todo: add some better scheme then getCount for URL...
-        //todo: make the route again if subscriber exists...and context doesn't have route
-        if (activityStreamsSubscriber.isAuthenticated()){
-
-            try{
-
-                if (configuration.getSubscriberEndpointProtocol().equals(EipConfigurator.ENDPOINT_PROTOCOL_JETTY)){
-                    activityStreamsSubscriber.setInRoute(configuration.getSubscriberInRouteHost()+ ":" + configuration.getSubscriberInRoutePort() +"/" + configuration.getSubscriberEndpointUrlResource() + "/" + UUID.randomUUID());
-                    //set the body to the url the producer should post to
-                    exchange.getOut().setBody("http://" + activityStreamsSubscriber.getInRoute());
-                }else if (configuration.getSubscriberEndpointProtocol().equals(EipConfigurator.ENDPOINT_PROTOCOL_SERVLET)){
-                    activityStreamsSubscriber.setInRoute( configuration.getSubscriberEndpointUrlResource() + "/" + UUID.randomUUID());
-                    //set the body to the url the producer should post to
-                    exchange.getOut().setBody(configuration.getBaseUrlPath() + activityStreamsSubscriber.getInRoute());
-                } else{
-                    throw new Exception("No supported endpoint protocol is configured.");
-                }
-
-                //setup a message queue for this consumer.getInRoute()
-                camelContext.addRoutes(new DynamicSubscriberRouteBuilder(configuration,camelContext, configuration.getSubscriberEndpointProtocol() + activityStreamsSubscriber.getInRoute(), activityStreamsSubscriber));
-
-                activityAggregator.updateSubscriber(activityStreamsSubscriber);
-                activityStreamsSubscriberWarehouse.register(activityStreamsSubscriber);
-            }catch (Exception e){
-                exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,500);
-                exchange.getOut().setBody("error creating route: " + e);
-                LOG.error("error creating route: " + e);
-            }
-
-        }else{
-            exchange.getOut().setFault(true);
-            exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE,401);
-            exchange.getOut().setBody("Authentication failed.");
-        }
-
-    }
-
-
-
-
-    public void configure() throws Exception{
-        //nothing...set the context?
-
-    }
-
-    /**
-     * This route builder is a skeleton to add new routes at runtime
-     */
-    private static final class DynamicSubscriberRouteBuilder extends RouteBuilder {
-        private final String from;
-        private ActivityStreamsSubscriber activityStreamsSubscriber;
-
-
-        private EipConfigurator configuration;
-
-        private DynamicSubscriberRouteBuilder(EipConfigurator configuration, CamelContext context, String from, ActivityStreamsSubscriber activityStreamsSubscriber) {
-            super(context);
-            this.from = from;
-            this.activityStreamsSubscriber = activityStreamsSubscriber;
-            this.configuration = configuration;
-        }
-
-        @Override
-        public void configure() throws Exception {
-
-
-            from(from)
-                    .choice()
-                        .when(header("CamelHttpMethod").isEqualTo("POST"))
-                            //when its a post...it goes to adding a new src
-                            .bean(activityStreamsSubscriber, configuration.getSubscriberPostMethod()).setBody(body())
-                        .when(header("CamelHttpMethod").isEqualTo("GET"))
-                                // when its a GET it goes to getStream()
-                            .bean(activityStreamsSubscriber, configuration.getSubscriberGetMethod()) ;
-
-
-
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/ActivityService.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/ActivityService.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/ActivityService.java
deleted file mode 100644
index 0c85974..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/ActivityService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.messaging.service;
-
-import org.apache.camel.Exchange;
-
-import java.util.Date;
-import java.util.List;
-
-public interface ActivityService {
-
-    void receiveExchange(Exchange exchange);
-
-    List<String> getActivitiesForFilters(List<String> filters, Date lastUpdated);
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/SubscriptionService.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/SubscriptionService.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/SubscriptionService.java
deleted file mode 100644
index 98f585d..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/SubscriptionService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.messaging.service;
-
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-
-import java.util.List;
-
-public interface SubscriptionService {
-
-    List<String> getFilters(String authToken);
-    void saveFilters(ActivityStreamsSubscription subscription);
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraActivityService.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraActivityService.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraActivityService.java
deleted file mode 100644
index 89f71ab..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraActivityService.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.messaging.service.impl;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.camel.Exchange;
-import org.apache.rave.model.ActivityStreamsEntry;
-import org.apache.streams.cassandra.model.CassandraActivityStreamsEntry;
-import org.apache.streams.cassandra.repository.impl.CassandraActivityStreamsRepository;
-import org.apache.streams.messaging.service.ActivityService;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-
-public class CassandraActivityService implements ActivityService {
-
-    private static final transient Log LOG = LogFactory.getLog(CassandraActivityService.class);
-
-    private CassandraActivityStreamsRepository cassandraActivityStreamsRepository;
-    private ObjectMapper mapper;
-
-    @Autowired
-    public CassandraActivityService(CassandraActivityStreamsRepository cassandraActivityStreamsRepository, ObjectMapper mapper) {
-        this.cassandraActivityStreamsRepository = cassandraActivityStreamsRepository;
-        this.mapper = mapper;
-        mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-    }
-
-    @Override
-    public void receiveExchange(Exchange exchange) {
-
-        //receive the exchange as a list
-        List<Exchange> grouped = exchange.getProperty(Exchange.GROUPED_EXCHANGE, List.class);
-
-        for (Exchange e : grouped) {
-            //get activity off of exchange
-            LOG.info("Exchange: " + e);
-
-            //extract the ActivityStreamsEntry object and save it in the database
-            LOG.info("About to preform the translation to JSON Object");
-            String activityJson = e.getIn().getBody(String.class);
-
-            try {
-                ActivityStreamsEntry streamsEntry = mapper.readValue(activityJson, CassandraActivityStreamsEntry.class);
-                streamsEntry.setPublished(new Date());
-                cassandraActivityStreamsRepository.save(streamsEntry);
-            } catch (IOException err) {
-                LOG.error("there was an error while converting the json string to an object and saving to the database", err);
-            }
-
-        }
-    }
-
-    @Override
-    public List<String> getActivitiesForFilters(List<String> filters, Date lastUpdated) {
-        List<CassandraActivityStreamsEntry> activityObjects = cassandraActivityStreamsRepository.getActivitiesForFilters(filters, lastUpdated);
-        Collections.sort(activityObjects, Collections.reverseOrder());
-        //TODO: make the number of streams returned configurable
-        return getJsonList(activityObjects.subList(0,Math.min(activityObjects.size(),10)));
-    }
-
-    private List<String> getJsonList(List<CassandraActivityStreamsEntry> activities) {
-        List<String> jsonList = new ArrayList<String>();
-        for (ActivityStreamsEntry entry : activities) {
-            try {
-                jsonList.add(mapper.writeValueAsString(entry));
-            } catch (IOException e) {
-                LOG.error("There was an error while trying to convert the java object to a string: " + entry, e);
-            }
-        }
-        return jsonList;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraSubscriptionService.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraSubscriptionService.java b/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraSubscriptionService.java
deleted file mode 100644
index 8972d1e..0000000
--- a/trunk/streams-eip-routes/src/main/java/org/apache/streams/messaging/service/impl/CassandraSubscriptionService.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.messaging.service.impl;
-
-import org.apache.streams.cassandra.repository.impl.CassandraSubscriptionRepository;
-import org.apache.streams.messaging.service.SubscriptionService;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class CassandraSubscriptionService implements SubscriptionService {
-
-    private CassandraSubscriptionRepository repository;
-
-    public CassandraSubscriptionService(CassandraSubscriptionRepository repository){
-        this.repository = repository;
-    }
-
-    public List<String> getFilters(String authToken){
-          return Arrays.asList(repository.getFilters(authToken).split(" "));
-    }
-
-    public void saveFilters(ActivityStreamsSubscription subscription){
-          repository.save(subscription);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/resources/META-INF/spring/propertiesLoader.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/propertiesLoader.xml b/trunk/streams-eip-routes/src/main/resources/META-INF/spring/propertiesLoader.xml
deleted file mode 100644
index 60a3f1f..0000000
--- a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/propertiesLoader.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<!--<beans-->
-        <!--xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"-->
-        <!--xmlns="http://www.springframework.org/schema/beans"-->
-        <!--xmlns:context="http://www.springframework.org/schema/context"-->
-        <!--xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd-->
-        <!--http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">-->
-
-
-
-    <!--<context:component-scan base-package="org.apache.streams.messaging" annotation-config="true"/>-->
-
-    <!--<context:property-placeholder location="/META-INF/streams.properties"/>-->
-
-    <!--<bean id="configuration" class="org.apache.streams.messaging.configuration.EipConfigurator" />-->
-
-
-<!--</beans>-->
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-applicationContext.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-applicationContext.xml b/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-applicationContext.xml
deleted file mode 100644
index a9b97a7..0000000
--- a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-applicationContext.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<beans
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://www.springframework.org/schema/beans"
-        xmlns:context="http://www.springframework.org/schema/context"
-        xmlns:task="http://www.springframework.org/schema/task"
-        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
-
-
-    <bean id="activityConsumerRouter" class="org.apache.streams.messaging.routers.impl.ActivityConsumerRouter">
-        <property name="activityConsumerWarehouse" ref="activityConsumerWarehouse"/>
-        <property name="camelContext" ref="context"/>
-    </bean>
-
-    <bean id="activityRegistrationProcessor"
-          class="org.apache.streams.messaging.processors.ActivityPublisherRegistrationProcessor"/>
-
-
-    <bean id="activityStreamsSubscriberRouter"
-          class="org.apache.streams.messaging.routers.impl.ActivityStreamsSubscriberRouter">
-        <property name="activityStreamsSubscriberWarehouse" ref="activityStreamsSubscriberWarehouse"/>
-        <property name="camelContext" ref="context"/>
-    </bean>
-
-    <bean id="subscriberRegistrationProcessor"
-          class="org.apache.streams.messaging.processors.ActivityStreamsSubscriberRegistrationProcessor">
-        <constructor-arg ref="subscriptionService"/>
-    </bean>
-
-    <bean id="cassandraKeyspace" class="org.apache.streams.cassandra.repository.impl.CassandraKeyspace">
-        <constructor-arg ref="cassandraConfig"/>
-    </bean>
-
-    <bean id="cassandraActivityStreamsRepository"
-          class="org.apache.streams.cassandra.repository.impl.CassandraActivityStreamsRepository">
-        <constructor-arg ref="cassandraKeyspace"/>
-        <constructor-arg ref="cassandraConfig"/>
-    </bean>
-
-    <bean id="cassandraSubscriptionRepository"
-          class="org.apache.streams.cassandra.repository.impl.CassandraSubscriptionRepository">
-        <constructor-arg ref="cassandraKeyspace"/>
-        <constructor-arg ref="cassandraConfig"/>
-    </bean>
-
-    <bean id="objectMapper" class="org.codehaus.jackson.map.ObjectMapper"/>
-
-    <bean id="subscriptionService" class="org.apache.streams.messaging.service.impl.CassandraSubscriptionService">
-        <constructor-arg ref="cassandraSubscriptionRepository"/>
-    </bean>
-
-    <bean id="activityService" class="org.apache.streams.messaging.service.impl.CassandraActivityService">
-        <constructor-arg ref="cassandraActivityStreamsRepository"/>
-        <constructor-arg ref="objectMapper"/>
-    </bean>
-
-    <!--<bean id="stromActivityAggregator" class="org.apache.streams.messaging.storm.StormActivityAggregator">-->
-        <!--<constructor-arg ref="bolt"/>-->
-        <!--<constructor-arg ref="spout"/>-->
-    <!--</bean>-->
-
-    <!--<bean id="bolt" class="org.apache.streams.messaging.storm.StormSubscriberBolt"/>-->
-    <!--<bean id="spout" class="org.apache.streams.messaging.storm.StormSubscriberSpout"/>-->
-
-    <bean id="activityAggregator" class="org.apache.streams.messaging.aggregation.ActivityAggregator">
-        <property name="activityService" ref="activityService"/>
-        <property name="activityStreamsSubscriberWarehouse" ref="activityStreamsSubscriberWarehouse"/>
-    </bean>
-
-    <task:annotation-driven/>
-
-    <bean id="jmsConnectionFactory"
-          class="org.apache.activemq.ActiveMQConnectionFactory">
-        <property name="brokerURL" value="${activemq.jmsConnectionFactoryUrl}"/>
-    </bean>
-
-    <bean id="pooledConnectionFactory"
-          class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
-        <property name="maxConnections" value="8"/>
-        <property name="connectionFactory" ref="jmsConnectionFactory"/>
-    </bean>
-
-    <bean id="jmsConfig"
-          class="org.apache.camel.component.jms.JmsConfiguration">
-        <property name="connectionFactory" ref="pooledConnectionFactory"/>
-        <property name="concurrentConsumers" value="10"/>
-    </bean>
-
-    <bean id="activemq"
-          class="org.apache.activemq.camel.component.ActiveMQComponent">
-        <property name="configuration" ref="jmsConfig"/>
-    </bean>
-
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-osgi-component-import.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-osgi-component-import.xml b/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-osgi-component-import.xml
deleted file mode 100644
index 9066206..0000000
--- a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streams-eip-osgi-component-import.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:osgi="http://www.springframework.org/schema/osgi"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-	http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://www.springframework.org/schema/osgi
-    http://www.springframework.org/schema/osgi/spring-osgi.xsd">
-
-
-    <osgi:reference id="activityPublisherRegistration" interface="org.apache.streams.osgi.components.ActivityPublisherRegistration" />
-    <osgi:reference id="activityConsumerWarehouse" interface="org.apache.streams.osgi.components.activityconsumer.ActivityConsumerWarehouse" />
-
-    <osgi:reference id="activityStreamsSubscriberRegistration" interface="org.apache.streams.osgi.components.ActivityStreamsSubscriberRegistration" />
-    <osgi:reference id="activityStreamsSubscriberWarehouse" interface="org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriberWarehouse" />
-
-
-
-
-</beans>
\ No newline at end of file


[18/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/redditTest.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/redditTest.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/redditTest.xml
deleted file mode 100644
index b2489fa..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/redditTest.xml
+++ /dev/null
@@ -1 +0,0 @@
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1088dt</id>		<published>2012-09-21T03:28:15Z</published>		<updated>2012-09-21T03:28:15Z</updated>		<title>Precious_Zest posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/atheism/comments/1088dt/a_classy_new_way_to_respond_to_stupid_fundie/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </gnip
 :rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1088dt</id>			<title>A classy new way to respond to stupid fundie claims (X-post from r/funny) </title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/atheism/comments/1088dt/a_classy_new_way_to_respond_to_stupid_fundie/"/>			<link rel="enclosure" type="text/html" href="http://i.imgur.com/ZphAO.png"/>			<link rel="preview" type="image/jpeg" href="http://a.thumbs.redditmedia.com/iL3sa_rwh2j-WA7H.jpg"/>			<gnip:statistics upVotes="220" downVotes="69"/>		</activity:object>		<author>			<name>Precious_Zest</name>			<uri>http://www.reddit.com/user/Precious_Zest</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:obje
 ct-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/Precious_Zest"/>			<id>http://www.reddit.com/user/Precious_Zest</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching_rules>	</entry>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
deleted file mode 100644
index 1acaae6..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-edc-youtube</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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</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>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</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-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.jvnet.jaxb2.maven2</groupId>
-                <artifactId>maven-jaxb2-plugin</artifactId>
-                <configuration>
-                    <schemaDirectory>src/main/xmlschema/com/flickr/</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.flickr.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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YouTubeEDCSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YouTubeEDCSerDeTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YouTubeEDCSerDeTest.java
deleted file mode 100644
index 1923158..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YouTubeEDCSerDeTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package test.java.com.gnip.test;
-
-//import org.codehaus.jackson.map.ObjectMapper;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-//import com.fasterxml.jackson.xml.XmlMapper;
-//import com.gnip.xmlpojo.generated.FacebookEDC;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 8/21/13
- * Time: 11:53 AM
- * To change this template use File | Settings | File Templates.
- */
-public class YouTubeEDCSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(YouTubeEDCSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-//    XmlMapper mapper = new XmlMapper();
-
-    @Test
-    public void Tests()   throws Exception
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = YouTubeEDCSerDeTest.class.getResourceAsStream("/YoutubeEDC.xml");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        XmlMapper xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        ObjectMapper jsonMapper = new ObjectMapper();
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                //LOGGER.debug(line);
-
-                Object activityObject = xmlMapper.readValue(line, Object.class);
-
-                String jsonObject = jsonMapper.writeValueAsString(activityObject);
-
-                //LOGGER.debug(jsonObject);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YoutubeEDCAsActivityTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YoutubeEDCAsActivityTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YoutubeEDCAsActivityTest.java
deleted file mode 100644
index 85bf35c..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/java/com/gnip/test/YoutubeEDCAsActivityTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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 test.java.com.gnip.test;
-
-//import org.codehaus.jackson.map.ObjectMapper;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.streams.gnip.powertrack.GnipActivityFixer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-//import com.fasterxml.jackson.xml.XmlMapper;
-//import com.gnip.xmlpojo.generated.FacebookEDC;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 8/21/13
- * Time: 11:53 AM
- * To change this template use File | Settings | File Templates.
- */
-public class YoutubeEDCAsActivityTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(YoutubeEDCAsActivityTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-//    XmlMapper mapper = new XmlMapper();
-
-    @Test   @Ignore
-    public void Tests()   throws Exception
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = YoutubeEDCAsActivityTest.class.getResourceAsStream("/YoutubeEDC.xml");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        XmlMapper xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        ObjectMapper jsonMapper = new ObjectMapper();
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                //LOGGER.debug(line);
-
-                Object activityObject = xmlMapper.readValue(line, Object.class);
-
-                String jsonString = jsonMapper.writeValueAsString(activityObject);
-
-                JSONObject jsonObject = new JSONObject(jsonString);
-
-                JSONObject fixedObject = GnipActivityFixer.fix(jsonObject);
-
-                Activity activity = jsonMapper.readValue(fixedObject.toString(), Activity.class);
-
-                //LOGGER.debug(des);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/resources/YoutubeEDC.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/resources/YoutubeEDC.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/resources/YoutubeEDC.xml
deleted file mode 100644
index 014f514..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-youtube/src/test/resources/YoutubeEDC.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>http://gdata.youtube.com/feeds/api/videos/9wWOaUX8e7U</id>  <published>2013-08-21T14:11:40.000Z</published>  <updated>2013-08-21T14:15:11.000Z</updated>  <title>girls fail compilation posted a video to YouTube</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=9wWOaUX8e7U&amp;feature=youtube_gdata"/>  <source>    <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos?q=%28%28maybelline%20%7C%20maybellines%20%7C%20mybelline%20%7C%20mybellines%20%7C%20mayballine%20%7C%20mayballines%29%20%28makeover%20%7C%20makeovers%20%7C%20%22make%20over%22%20%7C%20%22make%20overs%22%20%7C%20nail%20%7C%20nails%20%7C%20manicure%20%7C%20manicures%20%7C%20pedicure%20%7C%20pedicures%20%7C%20mani%20%7C%20pedi%20%7C%20foundation%20%7C%20mascara%20%7C%20mascaras%20%7C%20concealer%20%7C%20c&a
 mp;orderby=published"/>    <title>YouTube - Keyword - Uploads - ((maybelline | maybellines | mybelline | mybellines | mayballine | mayballines) (makeover | makeovers | "make over" | "make overs" | nail | nails | manicure | manicures | pedicure | pedicures | mani | pedi | foundation | mascara | mascaras | concealer | c</title>    <updated>2013-08-21T09-04-45Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">((maybelline | maybellines | mybelline | mybellines | mayballine | mayballines) (makeover | makeovers | "make over" | "make overs" | nail | nails | manicure | manicures | pedicure | pedicures | mani | pedi | foundation | mascara | mascaras | concealer | c</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity
 :verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/9wWOaUX8e7U</id>    <title type="text">Maybelline Makeup Tutorial 2013 BIBHU MOHAPATRA Fall HD</title>    <content type="text">Fail Compilation 2013 HD FAILS / WINS COMPILATION 2013 funny videos to share, failure compilation funny videos to see, funny video to watch funny vid video, ...</content>    <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=9wWOaUX8e7U&amp;feature=youtube_gdata"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="enclosure" type="application/x-shockwave-flash" href="http://www.youtube.com/v/9wWOaUX8e7U?version=3&amp;f=videos&amp;app=youtube_gdata" atommedia1:duration="113"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="preview" href="http://i.ytimg.com/vi/9wWOaUX8e7U/0
 .jpg" atommedia1:height="360" atommedia1:width="480" atommedia1:duration="00:00:56.500"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Comedy"/>  </activity:object>  <author>    <name>girls fail compilation</name>    <uri>http://www.youtube.com/user/girls fail compilation</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/girls fail compilation"/>    <id>http://gdata.youtube.com/feeds/api/users/us7R7STuzmlwhqKH481qWg</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/girls fail compilation"/>    <id>http://gdata.youtube.co
 m/feeds/api/users/us7R7STuzmlwhqKH481qWg</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Maybelline_CA">((maybelline | maybellines | mybelline | mybellines | mayballine | mayballines) (makeover | makeovers | "make over" | "make overs" | nail | nails | manicure | manicures | pedicure | pedicures | mani | pedi | foundation | mascara | mascaras | concealer | c</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>http://gdata.youtube.com/feeds/api/videos/IMtFtwzGyo4</id>  <published>2013-08-21T11:55:58.000Z</published>  <updated>2013-08-21T11:55:58.000Z</updated>  <title>Hannah Marie posted a video to YouTube</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=IMtFtwzGyo4&amp;feature=youtube_gdata"/>  <source>    <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos?q=%28%28maybelline%20%7C%20maybellines%20%7C%20mybelline%20%7C%20mybellines%20%7C%20mayballine%20%7C%20mayballines%29%20%28makeover%20%7C%20makeovers%20%7C%20%22make%20over%22%20%7C%20%22make%20overs%22%20%7C%20nail%20%7C%20nails%20%7C%20manicure%20%7C%20manicures%20%7C%20pedicure%20%7C%20pedicures%20%7C%20mani%20%7C%20pedi%20%7C%20foundation%20%7C%20mascara%20%7C%20mascaras%20%7C%20concealer%20%7C%20c&amp;orderby
 =published"/>    <title>YouTube - Keyword - Uploads - ((maybelline | maybellines | mybelline | mybellines | mayballine | mayballines) (makeover | makeovers | "make over" | "make overs" | nail | nails | manicure | manicures | pedicure | pedicures | mani | pedi | foundation | mascara | mascaras | concealer | c</title>    <updated>2013-08-21T09-04-45Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">((maybelline | maybellines | mybelline | mybellines | mayballine | mayballines) (makeover | makeovers | "make over" | "make overs" | nail | nails | manicure | manicures | pedicure | pedicures | mani | pedi | foundation | mascara | mascaras | concealer | c</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <a
 ctivity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/IMtFtwzGyo4</id>    <title type="text">Summer Must Haves - Make Up | Hann.</title>    <content type="text">'iya beauties. today I'm bringing you part two of my summer must haves! This is strictly make up related!! Don't forget to subscribe for more videos and all ...</content>    <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=IMtFtwzGyo4&amp;feature=youtube_gdata"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="enclosure" type="application/x-shockwave-flash" href="http://www.youtube.com/v/IMtFtwzGyo4?version=3&amp;f=videos&amp;app=youtube_gdata" atommedia1:duration="886"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="preview" href="http://i.ytimg.com/vi/IMtFtwzGyo4/0.jpg" atommedia1:height="360" 
 atommedia1:width="480" atommedia1:duration="00:07:23"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Howto"/>  </activity:object>  <author>    <name>Hannah Marie</name>    <uri>http://www.youtube.com/user/Hannah Marie</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/Hannah Marie"/>    <id>http://gdata.youtube.com/feeds/api/users/lilstarh220</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/Hannah Marie"/>    <id>http://gdata.youtube.com/feeds/api/users/lilstarh220</id>  </activity:actor>  <gnip:matching_rules>    <gnip:
 matching_rule rel="source" tag="Maybelline_CA">((maybelline | maybellines | mybelline | mybellines | mayballine | mayballines) (makeover | makeovers | "make over" | "make overs" | nail | nails | manicure | manicures | pedicure | pedicures | mani | pedi | foundation | mascara | mascaras | concealer | c</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>http://gdata.youtube.com/feeds/api/videos/t-Mnb5eZxn8</id>  <published>2013-08-21T16:01:26.000Z</published>  <updated>2013-08-21T16:01:26.000Z</updated>  <title>ontsofa posted a video to YouTube</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=t-Mnb5eZxn8&amp;feature=youtube_gdata"/>  <source>    <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos?q=%28Wilkinson%29%20%28rasatura%20%7C%20rasarsi%20%7C%20barba%20%7C%20%22rasoio%20power%22%20%7C%20rasoi%20%7C%20%22rasoio%20manuale%22%20%7C%20%22rasoio%20elettrico%22%20%7C%20rasoio%20%7C%20manico%20%7C%20impugnatura%20%7C%20lama%20%7C%20lame%20%7C%20lamette%20%7C%20testina%20%7C%20%22crema%20idratante%22%20%7C%20%22balsamo%20dopo%20barba%22%20%7C%20%22gel%20da%20barba%22%20%7C%20%22schiuma%20da%20barba%22%20%7C%20s&
 amp;orderby=published"/>    <title>YouTube - Keyword - Uploads - (Wilkinson) (rasatura | rasarsi | barba | "rasoio power" | rasoi | "rasoio manuale" | "rasoio elettrico" | rasoio | manico | impugnatura | lama | lame | lamette | testina | "crema idratante" | "balsamo dopo barba" | "gel da barba" | "schiuma da barba" | s</title>    <updated>2013-08-21T09-06-48Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(Wilkinson) (rasatura | rasarsi | barba | "rasoio power" | rasoi | "rasoio manuale" | "rasoio elettrico" | rasoio | manico | impugnatura | lama | lame | lamette | testina | "crema idratante" | "balsamo dopo barba" | "gel da barba" | "schiuma da barba" | s</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activit
 y:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/t-Mnb5eZxn8</id>    <title type="text">Lloyd Wilkinson - Tricks Of The Trade (Paulo Nutini Cover) - Ont' Sofa Prime Studios Sessions</title>    <content type="text">The genius that is Lloyd Wilkinson popped in for a sit ont' sofa recently and played this cracking cover of 'Tricks of the Trade' by Paulo Nutini - hope you ...</content>    <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=t-Mnb5eZxn8&amp;feature=youtube_gdata"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="enclosure" type="application/x-shockwave-flash" href="http://www.youtube.com/v/t-Mnb5eZxn8?version=3&amp;f=videos&amp;app=youtube_gdata" atommedia1:duration="133"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="preview" hr
 ef="http://i.ytimg.com/vi/t-Mnb5eZxn8/0.jpg" atommedia1:height="360" atommedia1:width="480" atommedia1:duration="00:01:06.500"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Music"/>    <gnip:statistics xmlns:gnip="http://www.gnip.com/schemas/2010" favoriteCount="0" viewCount="19"/>  </activity:object>  <author>    <name>ontsofa</name>    <uri>http://www.youtube.com/user/ontsofa</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/ontsofa"/>    <id>http://gdata.youtube.com/feeds/api/users/ontsofa</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http:
 //www.youtube.com/user/ontsofa"/>    <id>http://gdata.youtube.com/feeds/api/users/ontsofa</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Wilkinson_IT">(Wilkinson) (rasatura | rasarsi | barba | "rasoio power" | rasoi | "rasoio manuale" | "rasoio elettrico" | rasoio | manico | impugnatura | lama | lame | lamette | testina | "crema idratante" | "balsamo dopo barba" | "gel da barba" | "schiuma da barba" | s</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>http://gdata.youtube.com/feeds/api/videos/jNluNACoEk0</id>  <published>2013-08-21T13:35:44.000Z</published>  <updated>2013-08-21T13:38:14.000Z</updated>  <title>Girl Funny Videosx posted a video to YouTube</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=jNluNACoEk0&amp;feature=youtube_gdata"/>  <source>    <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos?q=fructis&amp;orderby=published"/>    <title>YouTube - Keyword - Uploads - fructis</title>    <updated>2013-08-21T09-07-02Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">fructis</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb
  xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/jNluNACoEk0</id>    <title type="text">garnier fructis commercial india Pelo con Volumen Peinado Cardado</title>    <content type="text">ail Compilation June 2013 Week 1 Fail Compilation April 2013 Fail Compilation 2013 Win Compilation May 2013 Win Compilation June 2013 Win Compilation July 20...</content>    <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=jNluNACoEk0&amp;feature=youtube_gdata"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="enclosure" type="application/x-shockwave-flash" href="http://www.youtube.com/v/jNluNACoEk0?version=3&amp;f=videos&amp;app=youtube_gdata" atommedia1:duration="185"/>    <link x
 mlns:atommedia1="http://purl.org/syndication/atommedia" rel="preview" href="http://i.ytimg.com/vi/jNluNACoEk0/0.jpg" atommedia1:height="360" atommedia1:width="480" atommedia1:duration="00:01:32.500"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Entertainment"/>  </activity:object>  <author>    <name>Girl Funny Videosx</name>    <uri>http://www.youtube.com/user/Girl Funny Videosx</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/Girl Funny Videosx"/>    <id>http://gdata.youtube.com/feeds/api/users/dqBhZLxFPLwKbv9q9Y7BXQ</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/h
 tml" length="0" href="http://www.youtube.com/user/Girl Funny Videosx"/>    <id>http://gdata.youtube.com/feeds/api/users/dqBhZLxFPLwKbv9q9Y7BXQ</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Fructis_MX">fructis</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>http://gdata.youtube.com/feeds/api/videos/Hqwi278mioE</id>  <published>2013-09-06T17:11:01.000Z</published>  <updated>2013-09-06T17:11:01.000Z</updated>  <title>magazin dünyası posted a video to YouTube</title>  <category label="Video Posted" term="VideoPosted"/>  <link href="http://www.youtube.com/watch?v=Hqwi278mioE&amp;feature=youtube_gdata" rel="alternate" type="text/html"/>  <source>    <link href="http://gdata.youtube.com/feeds/api/videos?q=%28Olay%20%7C%20Olays%20%7C%20%22Olay%27s%22%20%7C%20%23Olay%20%7C%20%23Olays%20%7C%20%22Professional%20Pro-X%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duo%22%20%7C%20%22Professional%20ProX%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duos%22%20%7C%20%22fresh%20effects%22%20%7C%20fresheffects%20%7C%20%22fresh%20effect%22%20%7C%20fresheffect%20%7C%20%22total%20effects%22%20%7C&amp;orderby=published" rel="self" type="a
 pplication/atom+xml"/>    <title>YouTube - Keyword - Uploads - (Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</title>    <updated>2013-09-06T13-13-32Z</updated>    <gnip:rule>(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http:/
 /activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/Hqwi278mioE</id>    <title type="text">Ebru Şancı Olay Yaratan Elbisesi Canay tv</title>    <content type="text">empty</content>    <link href="http://www.youtube.com/watch?v=Hqwi278mioE&amp;feature=youtube_gdata" rel="alternate" type="text/html"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" atommedia1:duration="172" href="http://www.youtube.com/v/Hqwi278mioE?version=3&amp;f=videos&amp;app=youtube_gdata" rel="enclosure" type="application/x-shockwave-flash"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" atommedia1:duration="00:01:26" atommedia1:height="360" atommedia1:width="480" href="http://i.ytimg.com/vi/Hqwi278mioE/0.jpg" rel="preview"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Entertainment"/>  </activity:object>  <author> 
    <name>magazin dünyası</name>    <uri>http://www.youtube.com/user/magazin dünyası</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link href="http://www.youtube.com/user/magazin dünyası" length="0" rel="alternate" type="text/html"/>    <id>http://gdata.youtube.com/feeds/api/users/o0xt0oPAqrzC9CVg-DLDcA</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link href="http://www.youtube.com/user/magazin dünyası" length="0" rel="alternate" type="text/html"/>    <id>http://gdata.youtube.com/feeds/api/users/o0xt0oPAqrzC9CVg-DLDcA</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Olay_CA">(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair
  Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>http://gdata.youtube.com/feeds/api/videos/Hqwi278mioE</id>  <published>2013-09-06T17:11:01.000Z</published>  <updated>2013-09-06T17:11:01.000Z</updated>  <title>magazin dünyası posted a video to YouTube</title>  <category label="Video Posted" term="VideoPosted"/>  <link href="http://www.youtube.com/watch?v=Hqwi278mioE&amp;feature=youtube_gdata" rel="alternate" type="text/html"/>  <source>    <link href="http://gdata.youtube.com/feeds/api/videos?q=%28Olay%20%7C%20Olays%20%7C%20%22Olay%27s%22%20%7C%20%23Olay%20%7C%20%23Olays%20%7C%20%22Professional%20Pro-X%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duo%22%20%7C%20%22Professional%20ProX%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duos%22%20%7C%20%22fresh%20effects%22%20%7C%20fresheffects%20%7C%20%22fresh%20effect%22%20%7C%20fresheffect%20%7C%20%22total%20effects%22%20%7C&amp;orderby=published" rel="self" type="a
 pplication/atom+xml"/>    <title>YouTube - Keyword - Uploads - (Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</title>    <updated>2013-09-06T13-13-32Z</updated>    <gnip:rule>(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http:/
 /activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/Hqwi278mioE</id>    <title type="text">Ebru Şancı Olay Yaratan Elbisesi Canay tv</title>    <content type="text">empty</content>    <link href="http://www.youtube.com/watch?v=Hqwi278mioE&amp;feature=youtube_gdata" rel="alternate" type="text/html"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" atommedia1:duration="172" href="http://www.youtube.com/v/Hqwi278mioE?version=3&amp;f=videos&amp;app=youtube_gdata" rel="enclosure" type="application/x-shockwave-flash"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" atommedia1:duration="00:01:26" atommedia1:height="360" atommedia1:width="480" href="http://i.ytimg.com/vi/Hqwi278mioE/0.jpg" rel="preview"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Entertainment"/>  </activity:object>  <author> 
    <name>magazin dünyası</name>    <uri>http://www.youtube.com/user/magazin dünyası</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link href="http://www.youtube.com/user/magazin dünyası" length="0" rel="alternate" type="text/html"/>    <id>http://gdata.youtube.com/feeds/api/users/o0xt0oPAqrzC9CVg-DLDcA</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link href="http://www.youtube.com/user/magazin dünyası" length="0" rel="alternate" type="text/html"/>    <id>http://gdata.youtube.com/feeds/api/users/o0xt0oPAqrzC9CVg-DLDcA</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Olay_CA">(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair
  Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>http://gdata.youtube.com/feeds/api/videos/Hqwi278mioE</id>  <published>2013-09-06T17:11:01.000Z</published>  <updated>2013-09-06T17:11:01.000Z</updated>  <title>magazin d&#xFC;nyas&#x131; posted a video to YouTube</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=Hqwi278mioE&amp;feature=youtube_gdata"/>  <source>    <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos?q=%28Olay%20%7C%20Olays%20%7C%20%22Olay%27s%22%20%7C%20%23Olay%20%7C%20%23Olays%20%7C%20%22Professional%20Pro-X%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duo%22%20%7C%20%22Professional%20ProX%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duos%22%20%7C%20%22fresh%20effects%22%20%7C%20fresheffects%20%7C%20%22fresh%20effect%22%20%7C%20fresheffect%20%7C%20%22total%20effects%22
 %20%7C&amp;orderby=published"/>    <title>YouTube - Keyword - Uploads - (Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</title>    <updated>2013-09-06T13-13-32Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</
 activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/Hqwi278mioE</id>    <title type="text">Ebru &#x15E;anc&#x131; Olay Yaratan Elbisesi Canay tv</title>    <content type="text"></content>    <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=Hqwi278mioE&amp;feature=youtube_gdata"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="enclosure" type="application/x-shockwave-flash" href="http://www.youtube.com/v/Hqwi278mioE?version=3&amp;f=videos&amp;app=youtube_gdata" atommedia1:duration="172"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="preview" href="http://i.ytimg.com/vi/Hqwi278mioE/0.jpg" atommedia1:height="360" atommedia1:width="480" atommedia1:duration="00:01:26"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categorie
 s.cat" term="Entertainment"/>  </activity:object>  <author>    <name>magazin d&#xFC;nyas&#x131;</name>    <uri>http://www.youtube.com/user/magazin d&#xFC;nyas&#x131;</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/magazin d&#xFC;nyas&#x131;"/>    <id>http://gdata.youtube.com/feeds/api/users/o0xt0oPAqrzC9CVg-DLDcA</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/magazin d&#xFC;nyas&#x131;"/>    <id>http://gdata.youtube.com/feeds/api/users/o0xt0oPAqrzC9CVg-DLDcA</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Olay_C
 A">(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>http://gdata.youtube.com/feeds/api/videos/s6Xsa8B4vL4</id>  <published>2013-09-06T16:01:11.000Z</published>  <updated>2013-09-06T16:01:11.000Z</updated>  <title>YDS Video Ders Say&#x131;sal posted a video to YouTube</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=s6Xsa8B4vL4&amp;feature=youtube_gdata"/>  <source>    <link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos?q=%28Olay%20%7C%20Olays%20%7C%20%22Olay%27s%22%20%7C%20%23Olay%20%7C%20%23Olays%20%7C%20%22Professional%20Pro-X%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duo%22%20%7C%20%22Professional%20ProX%22%20%7C%20%22Smooth%20Finish%20Facial%20Hair%20Removal%20Duos%22%20%7C%20%22fresh%20effects%22%20%7C%20fresheffects%20%7C%20%22fresh%20effect%22%20%7C%20fresheffect%20%7C%20%22total%20effects%
 22%20%7C&amp;orderby=published"/>    <title>YouTube - Keyword - Uploads - (Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</title>    <updated>2013-09-06T12-23-07Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(Olay | Olays | "Olay's" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>YouTube</name>    <uri>http://www.youtube.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post
 </activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>object:http://gdata.youtube.com/feeds/api/videos/s6Xsa8B4vL4</id>    <title type="text">Fotoelektrik Olay   2</title>    <content type="text"></content>    <link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=s6Xsa8B4vL4&amp;feature=youtube_gdata"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="enclosure" type="application/x-shockwave-flash" href="http://www.youtube.com/v/s6Xsa8B4vL4?version=3&amp;f=videos&amp;app=youtube_gdata" atommedia1:duration="857"/>    <link xmlns:atommedia1="http://purl.org/syndication/atommedia" rel="preview" href="http://i.ytimg.com/vi/s6Xsa8B4vL4/0.jpg" atommedia1:height="360" atommedia1:width="480" atommedia1:duration="00:07:08.500"/>    <category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="People"/>  </
 activity:object>  <author>    <name>YDS Video Ders Say&#x131;sal</name>    <uri>http://www.youtube.com/user/YDS Video Ders Say&#x131;sal</uri>  </author>  <activity:author xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/YDS Video Ders Say&#x131;sal"/>    <id>http://gdata.youtube.com/feeds/api/users/7jgS9i6n8p5Qs6vUwPLuEg</id>  </activity:author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.youtube.com/user/YDS Video Ders Say&#x131;sal"/>    <id>http://gdata.youtube.com/feeds/api/users/7jgS9i6n8p5Qs6vUwPLuEg</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Olay_CA">(Olay | Olays | "Olay'
 s" | #Olay | #Olays | "Professional Pro-X" | "Smooth Finish Facial Hair Removal Duo" | "Professional ProX" | "Smooth Finish Facial Hair Removal Duos" | "fresh effects" | fresheffects | "fresh effect" | fresheffect | "total effects" |</gnip:matching_rule>  </gnip:matching_rules></entry>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
deleted file mode 100644
index 57578f0..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-powertrack</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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-xml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-            <version>20090211</version>
-            <scope>compile</scope>
-            <type>jar</type>
-        </dependency>
-    </dependencies>
-    <build>
-        <sourceDirectory>src/main/java</sourceDirectory>
-        <testSourceDirectory>src/test/java</testSourceDirectory>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-        </resources>
-        <testResources>
-            <testResource>
-                <directory>src/test/resources</directory>
-            </testResource>
-        </testResources>
-        <plugins>
-            <plugin>
-                <artifactId>maven-clean-plugin</artifactId>
-                <version>2.5</version>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>target</directory>
-                            <includes>
-                                <include>**/*</include>
-                            </includes>
-                        </fileset>
-                    </filesets>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo/**/*.java</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>
-                <artifactId>maven-resources-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.jsonschema2pojo</groupId>
-                <artifactId>jsonschema2pojo-maven-plugin</artifactId>
-                <configuration>
-                    <addCompileSourceRoot>true</addCompileSourceRoot>
-                    <generateBuilders>true</generateBuilders>
-                    <sourcePaths>
-                        <sourcePath>src/main/jsonschema/com/gnip/Gnip.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>com.gnip</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/gnip/</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.gnip.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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java
deleted file mode 100644
index ef6f39d..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/ActivityXMLActivitySerializer.java
+++ /dev/null
@@ -1,222 +0,0 @@
-package org.apache.streams.gnip.powertrack;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.commons.lang.StringUtils;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 9/5/13
- * Time: 3:07 PM
- * To change this template use File | Settings | File Templates.
- */
-public class ActivityXMLActivitySerializer implements ActivitySerializer<String> {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(ActivityXMLActivitySerializer.class);
-
-    private ObjectMapper mapper;
-    private XmlMapper xmlMapper;
-
-    public ActivityXMLActivitySerializer() {
-        mapper = new ObjectMapper();
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-        xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-    }
-
-
-    @Override
-    public String serializationFormat() {
-        return "gnip_activity_xml";  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public String serialize(Activity deserialized) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Activity deserialize(String serializedXML) {
-        Activity activity = null;
-        try {
-            activity = xmlMapper.readValue(new StringReader(setContentIfEmpty(serializedXML)), Activity.class);
-            activity = mapper.readValue(new StringReader(fixActivityXML(activity, serializedXML)), Activity.class);
-        } catch (Exception e) {
-            LOGGER.error("Exception correcting Gnip Activity Xml to Activity format.", e);
-            LOGGER.error("Xml that caused error : {}", serializedXML);
-        }
-        return activity;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public List<Activity> deserializeAll(List<String> serializedList) {
-        throw new NotImplementedException("Not currently supported by this deserializer");
-    }
-
-    private String fixActivityXML(Activity activity, String xml) throws Exception{
-        JSONObject jsonObject = new JSONObject(mapper.writeValueAsString(activity));
-        JSONObject newObject = (JSONObject) fixActivityXML(jsonObject);
-        StringReader str = new StringReader(newObject.toString());
-        newObject = formatFixedJSON(newObject);
-        newObject = fixDateFormats(newObject, xml);
-        newObject = createTopLevelConentField(newObject);
-        return newObject.toString();
-
-    }
-
-    private Object fixActivityXML(Object obj) throws Exception {
-        if(obj instanceof JSONObject) {
-            JSONObject json = new JSONObject();
-            JSONObject old = (JSONObject) obj;
-            Iterator keys = old.keys();
-            while(keys.hasNext()) {
-                String key = (String) keys.next();
-                if(StringUtils.isBlank(key)) {
-                    return fixActivityXML(old.get(key));
-                }
-                else if(!key.equals("type")){
-                    Object o = fixActivityXML(old.get(key));
-                    if(o != null)
-                        json.put(key, o);
-                }
-
-            }
-            if(json.keys().hasNext())
-                return json;
-            else
-                return null;
-        }
-        else {
-            return obj;
-        }
-
-    }
-
-    private JSONObject formatFixedJSON(JSONObject json) throws Exception{
-        JSONObject topLink = json.optJSONObject("link");
-        if(topLink != null) {
-            json.put("link", topLink.getString("href"));
-        }
-        JSONObject actor = json.optJSONObject("actor");
-        if(actor != null) {
-            JSONObject link = actor.optJSONObject("link");
-            if(link != null) {
-                actor.put("link", link.get("href"));
-            }
-        }
-        JSONObject object = json.optJSONObject("object");
-        if(object != null) {
-            JSONObject link = object.optJSONObject("link");
-            if(link != null) {
-                object.put("link", link.get("href"));
-            }
-        }
-        String generator = json.optString("generator");
-        if(generator != null) {
-            JSONObject gen = new JSONObject();
-            gen.put("displayName", generator);
-            json.put("generator", gen);
-        }
-        return json;
-    }
-
-    private JSONObject fixDateFormats(JSONObject json, String xml) throws Exception{
-        DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        InputSource is = new InputSource(new StringReader(xml));
-        Document doc = docBuilder.parse(is);
-        //why?
-        doc.getDocumentElement().normalize();
-        if(json.optLong("published", -1L) != -1L) {
-            json.put("published", getValueFromXML("published", doc));
-        }
-        if(json.optLong("updated", -1L) != -1L) {
-            json.put("updated", getValueFromXML("updated", doc));
-        }
-        if(json.optLong("created", -1L) != -1L) {
-            json.put("created", getValueFromXML("created", doc));
-        }
-        return json;
-    }
-
-    private JSONObject createTopLevelConentField(JSONObject json) throws JSONException {
-        if(!json.isNull("content")) {
-            return json;
-        }
-        JSONObject object = json.optJSONObject("object");
-        if(object != null) {
-            String content = object.optString("content");
-            if(content == null) {
-                content = object.optString("summary");
-            }
-            if(content != null) {
-                json.put("content", content);
-            }
-        }
-        return json;
-    }
-
-    private String getValueFromXML(String tag, Document doc) throws Exception{
-        Element base = (Element) doc.getElementsByTagName("entry").item(0);
-        return base.getElementsByTagName(tag).item(0).getTextContent();
-    }
-
-    private String setContentIfEmpty(String xml) throws Exception {
-        DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
-        InputSource is = new InputSource(new StringReader(xml));
-        Document doc = docBuilder.parse(is);
-        doc.getDocumentElement().normalize();
-        Element base = (Element) doc.getElementsByTagName("entry").item(0);
-        NodeList nodeList = base.getChildNodes();
-//        for(int i=0; i < nodeList.getLength(); ++i) {
-//            System.out.println(nodeList.item(i).getNodeName());
-//        }
-        Element obj = (Element)base.getElementsByTagName("activity:object").item(0);
-        Element content = (Element)obj.getElementsByTagName("content").item(0);
-//        System.out.println("Number of child nodes : "+content.getChildNodes().getLength());
-//        System.out.println("Text content before : "+content.getTextContent());
-        if(content.getTextContent() == null || content.getTextContent().equals("")) {
-            content.setTextContent(" ");
-        }
-//        System.out.println("Number of child nodes after : "+content.getChildNodes().getLength());
-//        System.out.println("Text content after : "+content.getTextContent());
-        TransformerFactory tf = TransformerFactory.newInstance();
-        Transformer transformer = tf.newTransformer();
-        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
-        StringWriter writer = new StringWriter();
-        transformer.transform(new DOMSource(doc), new StreamResult(writer));
-        String output = writer.getBuffer().toString().replaceAll("\n|\r", "");
-//        System.out.println(output);
-//        System.out.println(output);
-//        System.out.println(content);
-        return output;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/GnipActivityFixer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/GnipActivityFixer.java b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/GnipActivityFixer.java
deleted file mode 100644
index 66ad914..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/GnipActivityFixer.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * 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.gnip.powertrack;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.commons.lang.StringUtils;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Created with IntelliJ IDEA.
- * User: mdelaet
- * Date: 8/23/13
- * Time: 9:40 AM
- * To change this template use File | Settings | File Templates.
- */
-public class GnipActivityFixer {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(GnipActivityFixer.class);
-
-    private ObjectMapper mapper;
-    private XmlMapper xmlMapper;
-
-    public GnipActivityFixer(){
-        mapper = new ObjectMapper();
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-        xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-    };
-
-    public static void findNullContents(JSONObject json, ArrayList<String> drilldownKeys, HashMap<ArrayList<String>, JSONObject> nullContents) throws Exception {
-
-        Iterator itr = json.keys();
-        while (itr.hasNext()){
-            String element = (String) itr.next();
-
-            if (StringUtils.isBlank(element)){
-                nullContents.put(drilldownKeys, json);
-
-            }
-            else{
-                try {
-                    drilldownKeys.add(element);
-                    if(json.get(element) instanceof JSONObject)
-                        findNullContents((JSONObject) json.get(element), drilldownKeys, nullContents);
-                }catch(Exception e){
-                    LOGGER.info("Failed to convert in findNullKeys, " + e);
-                    LOGGER.error("Element : {}", element);
-                    LOGGER.error(json.toString());
-                    break;
-                }
-            }
-            drilldownKeys = new ArrayList<String>();
-        }
-    }
-
-    public static void editJson(JSONObject json, ArrayList<String> keyPath, Object nullFragment) throws JSONException {
-        Integer numKeys = keyPath.size();
-        JSONObject newJson = new JSONObject();
-        if (numKeys > 1){
-            for (int i = numKeys-1; i > 0; i-=1){
-                String key = keyPath.get(i);
-                if (i == numKeys -1){
-                    newJson = newJson.put(key, nullFragment);
-                }
-                else {
-                    newJson = newJson.put(key, newJson);
-                }
-            }
-            json.put(keyPath.get(0), newJson);
-        }
-        else{
-            json.put(keyPath.get(0), nullFragment);
-        }
-    }
-
-    public static Activity fix(Activity activity) throws Exception {
-        ObjectMapper mapper = new ObjectMapper();
-
-        String des = mapper.writeValueAsString(activity);
-        JSONObject json = new JSONObject(des);
-
-        HashMap<ArrayList<String>, JSONObject> nullContents = new HashMap<ArrayList<String>, JSONObject>();
-        ArrayList<String> drilldownKeys = new ArrayList<String>();
-
-        findNullContents(json, drilldownKeys, nullContents);
-
-        for ( Map.Entry<ArrayList<String>,JSONObject> entry : nullContents.entrySet() ) {
-            JSONObject frag = entry.getValue();
-            editJson(json, entry.getKey(), frag.get(""));
-        }
-
-        StringReader str = new StringReader(json.toString());
-        Activity testAct = null;
-        try {
-            testAct = mapper.readValue(str, Activity.class);
-        } catch (Exception e) {
-            LOGGER.error("Exception creating activity.", e);
-            LOGGER.error("JSON : {}"+json.toString());
-        }
-
-        return testAct;
-    };
-
-    public static JSONObject fix(JSONObject json) throws Exception {
-
-        HashMap<ArrayList<String>, JSONObject> nullContents = new HashMap<ArrayList<String>, JSONObject>();
-        ArrayList<String> drilldownKeys = new ArrayList<String>();
-
-        findNullContents(json, drilldownKeys, nullContents);
-
-        for ( Map.Entry<ArrayList<String>,JSONObject> entry : nullContents.entrySet() ) {
-            JSONObject frag = entry.getValue();
-            editJson(json, entry.getKey(), frag.get(""));
-        }
-
-        return json;
-    };
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java
deleted file mode 100644
index d450a0d..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/java/org/apache/streams/gnip/powertrack/PowerTrackActivitySerializer.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package org.apache.streams.gnip.powertrack;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.StringReader;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 9/5/13
- * Time: 2:29 PM
- * To change this template use File | Settings | File Templates.
- */
-public class PowerTrackActivitySerializer implements ActivitySerializer<String> {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(PowerTrackActivitySerializer.class);
-
-    private ObjectMapper mapper;
-
-    public PowerTrackActivitySerializer() {
-        mapper = new ObjectMapper();
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-    }
-
-
-
-    @Override
-    public String serializationFormat() {
-        return "gnip_powertrack";  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public String serialize(Activity deserialized) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Activity deserialize(String serialized) {
-        Activity activity = null;
-        try {
-            JSONObject jsonObject = new JSONObject(serialized);
-            String content = jsonObject.optString("content", null);
-            if(content == null) {
-                content = jsonObject.optString("body", null);
-                if(content == null) {
-                    content = jsonObject.optString("summary", null);
-                    if(content == null) {
-                        JSONObject object = jsonObject.optJSONObject("object");
-                        if(object != null) {
-                            content = object.optString("content", null);
-                            if(content == null) {
-                                content = object.optString("body", null);
-                                if(content == null) {
-                                    content = object.optString("summary", null);
-                                }
-                            }
-                        }
-                    }
-                }
-
-            }
-            if(content != null) {
-                jsonObject.put("content", content);
-            }
-            String dateTime = jsonObject.optString("postedTime");
-            if(dateTime != null) {
-                jsonObject.put("published", dateTime);
-            }
-            JSONObject actor = jsonObject.optJSONObject("actor");
-            if(actor != null) {
-                String url = actor.optString("image");
-                if(url != null) {
-                    JSONObject media = new JSONObject();
-                    media.put("url", url);
-                    actor.put("image", media);
-                }
-            }
-            serialized = jsonObject.toString();
-            StringReader reader = new StringReader(serialized);
-            activity = this.mapper.readValue(reader, Activity.class);
-        } catch (Exception e) {
-            LOGGER.error("Exception deserializing powertrack string to Activity Object.", e);
-            LOGGER.error("Exception on json : {}", serialized);
-        }
-        return activity;
-    }
-
-    @Override
-    public List<Activity> deserializeAll(List<String> serializedList) {
-        throw new NotImplementedException("Not currently supported by this deserializer");
-    }
-
-}


[03/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-storm/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-storm/pom.xml b/trunk/streams-storm/pom.xml
deleted file mode 100644
index fb8f8a2..0000000
--- a/trunk/streams-storm/pom.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>streams-project</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>streams-storm</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config-graph</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>4.0</version>
-        </dependency>
-        <dependency>
-            <groupId>storm</groupId>
-            <artifactId>storm-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>storm</groupId>
-            <artifactId>storm-netty</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.scala-lang</groupId>
-            <artifactId>scala-library</artifactId>
-            <version>2.9.2</version>
-            <scope>compile</scope>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>com.101tec</groupId>
-            <artifactId>zkclient</artifactId>
-            <version>0.2</version>
-            <scope>compile</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </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>
-    </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-storm/src/main/java/org/apache/streams/storm/PipelineGraphLauncher.java
----------------------------------------------------------------------
diff --git a/trunk/streams-storm/src/main/java/org/apache/streams/storm/PipelineGraphLauncher.java b/trunk/streams-storm/src/main/java/org/apache/streams/storm/PipelineGraphLauncher.java
deleted file mode 100644
index a0ad2ea..0000000
--- a/trunk/streams-storm/src/main/java/org/apache/streams/storm/PipelineGraphLauncher.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.storm;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.typesafe.config.Config;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.util.RegexUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 9/20/13
- * Time: 11:17 AM
- * To change this template use File | Settings | File Templates.
- */
-public class PipelineGraphLauncher {
-
-    private static final Logger log = LoggerFactory.getLogger(PipelineGraphLauncher.class);
-
-    private static Config streamsConfiguration;
-
-    private static List<Pair<String,Class>> topologies;
-
-    private static List<Pair<String,Class>> resolveClasses(List<Pair<String,String>> topologyPairs) throws IOException, ClassNotFoundException {
-
-        List<Pair<String,Class>> topologies = new ArrayList<Pair<String,Class>>();
-
-        for( Pair<String,String> pair : topologyPairs ) {
-            String topologyId = pair.getLeft();
-            Class topologyClass = Class.forName(pair.getRight());
-            topologies.add(new ImmutablePair(topologyId, topologyClass));
-        }
-
-        return topologies;
-    }
-
-    private static List<Pair<String,Class>> loadTopologiesFromPipelineTopologyListFile(File file) throws IOException, ClassNotFoundException {
-
-        List<String> lines = IOUtils.readLines(FileUtils.openInputStream(file));
-        String pattern = "^([\\w-]*)[\\s]*?([\\w.]*)$";
-
-        List<Pair<String,String>> topologyPairs = RegexUtils.getTwoMatchedGroupsList(lines, pattern);
-
-        topologies = resolveClasses(topologyPairs);
-
-        for( Pair<String,String> pair : topologyPairs ) {
-            String topologyId = pair.getLeft();
-            Class topologyClass = Class.forName(pair.getRight());
-            topologies.add(new ImmutablePair(topologyId, topologyClass));
-        }
-
-        return topologies;
-    }
-
-    private static List<Pair<String,Class>> loadTopologiesFromPipelineGraphFile(File file) throws IOException, ClassNotFoundException {
-
-        List<String> lines = IOUtils.readLines(FileUtils.openInputStream(file));
-        String pattern = "$([\\w-]*)\\s([\\w.)";
-
-        List<Pair<String,String>> topologyPairs = RegexUtils.getTwoMatchedGroupsList(lines, pattern);
-
-        topologies = resolveClasses(topologyPairs);
-
-        return topologies;
-    }
-
-    public static boolean isLocal(String[] args) {
-        if(args.length >= 1 && args[1].equals("deploy"))
-            return false;
-        else return true;
-    }
-
-    public static void main(String[] args) throws Exception {
-
-        if(args.length < 3) {
-            log.error("Not enough arguments");
-            log.error("  storm {local,deploy} <pipelinedef>");
-            return;
-        }
-        if(!args[1].equals("deploy")) {
-            log.error("Not a deploy");
-            log.error("  storm {local,deploy} <pipelinedef>");
-            return;
-        }
-
-        ObjectMapper mapper = new ObjectMapper();
-
-        URL configFileUrl = PipelineGraphLauncher.class.getResource(args[0]);
-
-        File configFile;
-        try {
-            configFile = new File(configFileUrl.toURI());
-        } catch(URISyntaxException e) {
-            configFile = new File(configFileUrl.getPath());
-        }
-
-        streamsConfiguration = StreamsConfigurator.config;
-
-//        String pipelineIdentifier = streamsConfiguration.getPipeline();
-//
-//        for( Map.Entry<String, Object> moduleConfig : streamsConfiguration.getAdditionalProperties().entrySet()) {
-//
-//        }
-
-//      each defined graph becomes a topology
-
-//
-//        URL pipelineFileUrl = PipelineGraphLauncher.class.getResource(args[1]);
-//
-//        File pipelineFile;
-//        try {
-//            pipelineFile = new File(pipelineFileUrl.toURI());
-//        } catch(URISyntaxException e) {
-//            pipelineFile = new File(pipelineFileUrl.getPath());
-//        }
-//
-//        topologies = loadTopologiesFromPipelineTopologyListFile(pipelineFile);
-//
-//        for( Pair<String,Class> topology : topologies ) {
-//            Class topologyClass = topology.getRight();
-//
-//            try {
-//                Constructor ctor = topologyClass.getDeclaredConstructor(
-//                    String.class,
-//                    StreamsConfiguration.class);
-//                ctor.setAccessible(true);
-//                Object topologyObject = ctor.newInstance(pipelineIdentifier, streamsConfiguration);
-//                Runnable runnable = (Runnable) topologyObject;
-//                runnable.run();
-//            } catch (InstantiationException x) {
-//                log.warn(x.getMessage());
-//                x.printStackTrace();
-//            } catch (IllegalAccessException x) {
-//                log.warn(x.getMessage());
-//                x.printStackTrace();
-//            } catch (InvocationTargetException x) {
-//                log.warn(x.getMessage());
-//                x.printStackTrace();
-//            } catch (NoSuchMethodException x) {
-//                log.warn(x.getMessage());
-//                x.printStackTrace();
-//
-//                try {
-//                    Constructor ctor = topologyClass.getDeclaredConstructor(
-//                            String[].class);
-//                    ctor.setAccessible(true);
-//                    Object topologyObject = ctor.newInstance(args);
-//                    Method main = topologyClass.getMethod("main", String[].class);
-//                    main.invoke(topologyObject, args);
-//                } catch (InstantiationException x2) {
-//                    log.warn(x2.getMessage());
-//                    x.printStackTrace();
-//                } catch (IllegalAccessException x2) {
-//                    log.warn(x2.getMessage());
-//                    x.printStackTrace();
-//                } catch (InvocationTargetException x2) {
-//                    log.warn(x2.getMessage());
-//                    x.printStackTrace();
-//                } catch (NoSuchMethodException x2) {
-//                    log.error(x2.getMessage());
-//                    x.printStackTrace();
-//                }
-//            }
-//        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsPersistWriterState.java
----------------------------------------------------------------------
diff --git a/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsPersistWriterState.java b/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsPersistWriterState.java
deleted file mode 100644
index dd360d6..0000000
--- a/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsPersistWriterState.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package org.apache.streams.storm.trident;
-
-import backtype.storm.task.IMetricsContext;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import storm.trident.operation.TridentCollector;
-import storm.trident.state.BaseStateUpdater;
-import storm.trident.state.State;
-import storm.trident.state.StateFactory;
-import storm.trident.tuple.TridentTuple;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-
-/**
- * Created by sblackmon on 1/16/14.
- */
-public class StreamsPersistWriterState implements State {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(StreamsPersistWriterState.class);
-
-    StreamsPersistWriter writer;
-    StreamsPersistStateController controller;
-
-    public StreamsPersistWriterState(StreamsPersistStateController controller) {
-        this.controller = new StreamsPersistStateController();
-        writer.start();
-    }
-
-    public void bulkMessages(List<TridentTuple> tuples) {
-        for (TridentTuple tuple : tuples) {
-            StreamsDatum entry = this.controller.fromTuple(tuple);
-            try {
-                writer.write(entry);
-            } catch (Exception e) {
-                LOGGER.error("Exception writing entry : {}", e, entry);
-            }
-        }
-        LOGGER.debug("******** Ending commit");
-    }
-
-    @Override
-    public void beginCommit(Long aLong) {
-
-    }
-
-    @Override
-    public void commit(Long aLong) {
-
-    }
-
-    public static class Factory implements StateFactory {
-
-        private Logger logger;
-        private StreamsPersistStateController controller;
-
-        public Factory(StreamsPersistWriter writer, StreamsPersistStateController controller) {
-            this.controller = controller;
-            this.logger = LoggerFactory.getLogger(Factory.class);
-        }
-
-        @Override
-        public State makeState(Map map, IMetricsContext iMetricsContext, int i, int i2) {
-            this.logger.debug("Called makeState. . . ");
-            // convert map to config object
-            return new StreamsPersistWriterState(controller);
-        }
-
-    }
-
-    public static class StreamsPersistStateController implements Serializable {
-
-        private String fieldName;
-        private ObjectMapper mapper = new ObjectMapper();
-
-        public StreamsPersistStateController() {
-            this.fieldName = "datum";
-        }
-
-        public StreamsPersistStateController(String fieldName) {
-            this.fieldName = fieldName;
-        }
-
-        public StreamsDatum fromTuple(TridentTuple tuple) {
-            return mapper.convertValue(tuple.getValueByField(this.fieldName), StreamsDatum.class);
-        }
-
-    }
-
-
-
-    public static class StreamsPersistWriterSendMessage extends BaseStateUpdater<StreamsPersistWriterState> {
-
-        private Logger logger = LoggerFactory.getLogger(StreamsPersistWriterSendMessage.class);
-
-        @Override
-        public void updateState(StreamsPersistWriterState writerState, List<TridentTuple> tridentTuples, TridentCollector tridentCollector) {
-            this.logger.debug("****  calling send message. .  .");
-            writerState.bulkMessages(tridentTuples);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsProviderSpout.java
----------------------------------------------------------------------
diff --git a/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsProviderSpout.java b/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsProviderSpout.java
deleted file mode 100644
index ad7adc4..0000000
--- a/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsProviderSpout.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.apache.streams.storm.trident;
-
-import backtype.storm.task.TopologyContext;
-import backtype.storm.tuple.Fields;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.Lists;
-import org.apache.commons.collections4.IteratorUtils;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import storm.trident.operation.TridentCollector;
-import storm.trident.spout.IBatchSpout;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created by sblackmon on 1/16/14.
- */
-public class StreamsProviderSpout implements IBatchSpout {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(StreamsProviderSpout.class);
-
-    StreamsProvider provider;
-
-    public StreamsProviderSpout(StreamsProvider provider) {
-        this.provider = provider;
-    }
-
-    @Override
-    public void open(Map map, TopologyContext topologyContext) {
-        provider.start();
-    }
-
-    @Override
-    public synchronized void emitBatch(long l, TridentCollector tridentCollector) {
-        List<StreamsDatum> batch;
-        batch = IteratorUtils.toList(provider.getProviderQueue().iterator());
-        for( StreamsDatum datum : batch ) {
-            tridentCollector.emit( Lists.newArrayList(
-                    datum.getTimestamp(),
-                    datum.getSequenceid(),
-                    datum.getDocument()
-            ));
-        }
-    }
-
-    @Override
-    public void ack(long l) {
-
-    }
-
-    @Override
-    public void close() {
-        provider.stop();
-    }
-
-    @Override
-    public Map getComponentConfiguration() {
-        return null;
-    }
-
-    @Override
-    public Fields getOutputFields() {
-        return new Fields("timestamp", "sequenceid", "datum");
-    }
-};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsTopology.java
----------------------------------------------------------------------
diff --git a/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsTopology.java b/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsTopology.java
deleted file mode 100644
index 63c64a5..0000000
--- a/trunk/streams-storm/src/main/java/org/apache/streams/storm/trident/StreamsTopology.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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.storm.trident;
-
-import backtype.storm.Config;
-import org.apache.streams.StreamsConfiguration;
-import org.apache.streams.config.StreamsConfigurator;
-import storm.trident.TridentTopology;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 9/20/13
- * Time: 5:48 PM
- * To change this template use File | Settings | File Templates.
- */
-public abstract class StreamsTopology extends TridentTopology {
-
-    StreamsConfiguration configuration;
-    Config stormConfig;
-    String runmode;
-
-    protected StreamsTopology() {
-
-        runmode = StreamsConfigurator.config.getConfig("storm").getString("runmode");
-        stormConfig = new Config();
-
-    }
-
-    protected StreamsTopology(StreamsConfiguration configuration) {
-        this.configuration = configuration;
-    }
-
-    public StreamsConfiguration getConfiguration() {
-        return configuration;
-    }
-
-    public void setConfiguration(StreamsConfiguration configuration) {
-        this.configuration = configuration;
-    }
-
-    public String getRunmode() {
-        return runmode;
-    }
-
-    public void setRunmode(String runmode) {
-        this.runmode = runmode;
-    }
-
-    public Config getStormConfig() {
-        return stormConfig;
-    }
-
-    public void setStormConfig(Config stormConfig) {
-        this.stormConfig = stormConfig;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-util/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-util/pom.xml b/trunk/streams-util/pom.xml
deleted file mode 100644
index cd6d031..0000000
--- a/trunk/streams-util/pom.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>streams-project</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>streams-util</artifactId>
-    <packaging>jar</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-
-    </dependencies>
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-util/src/main/java/org/apache/streams/util/GuidUtils.java
----------------------------------------------------------------------
diff --git a/trunk/streams-util/src/main/java/org/apache/streams/util/GuidUtils.java b/trunk/streams-util/src/main/java/org/apache/streams/util/GuidUtils.java
deleted file mode 100644
index ee2c18c..0000000
--- a/trunk/streams-util/src/main/java/org/apache/streams/util/GuidUtils.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.util;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
-import com.google.common.hash.Hashing;
-
-import java.nio.charset.Charset;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public class GuidUtils {
-
-    private static final Charset UTF8_CHARSET = Charset.forName("UTF-8");
-
-    public static String generateGuid(String... parts) {
-
-        StringBuilder seed = new StringBuilder();
-        for( String part : parts ) {
-            Preconditions.checkNotNull(part);
-            Preconditions.checkArgument(!Strings.isNullOrEmpty(part));
-            seed.append(part);
-        }
-
-        String hash = Hashing.goodFastHash(24).hashString(seed, UTF8_CHARSET).asBytes().toString();
-
-        return hash;
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-util/src/main/java/org/apache/streams/util/RegexUtils.java
----------------------------------------------------------------------
diff --git a/trunk/streams-util/src/main/java/org/apache/streams/util/RegexUtils.java b/trunk/streams-util/src/main/java/org/apache/streams/util/RegexUtils.java
deleted file mode 100644
index c32ed5f..0000000
--- a/trunk/streams-util/src/main/java/org/apache/streams/util/RegexUtils.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.Pair;
-
-public class RegexUtils {
-
-    public static boolean matches(String line, String regEx) {
-
-        boolean regExpMatches = false;
-
-        if (StringUtils.isNotBlank(line) && StringUtils.isNotBlank(regEx)) {
-            if (line.matches(regEx)) {
-                regExpMatches = true;
-            }
-        }
-        return regExpMatches;
-    }
-
-    public static List<String> getMatches(String line, String regEx, int group){
-        Pattern pattern = Pattern.compile(regEx);
-        Matcher matcher = pattern.matcher(line);
-        List<String> matches = new ArrayList<String>();
-
-        while (matcher.find()) {
-
-            matches.add(matcher.group(group));
-        }
-
-        return matches;
-    }
-
-    public static List<Pair<String,String>> getTwoMatchedGroupsList(List<String> lines, String regEx){
-        List<Pair<String,String>> matches = new ArrayList<Pair<String,String>>();
-
-        for( String line : lines ) {
-
-            Pair<String,String> match = getTwoMatchedGroups(line, regEx);
-            if( match != null )
-                matches.add(match);
-
-        }
-        return matches;
-    }
-
-    public static Pair<String,String> getTwoMatchedGroups(String line, String regEx){
-        Pattern pattern = Pattern.compile(regEx);
-        Matcher matcher = pattern.matcher(line);
-        Pair<String,String> match = null;
-
-        while (matcher.find()) {
-            Pair<String,String> pair = new ImmutablePair<String,String>(matcher.group(0), matcher.group(1));
-            match = pair;
-        }
-
-        return match;
-    }
-
-    public static String getMatchedContent(String line, String regEx){
-        Pattern pattern = Pattern.compile(regEx);
-        Matcher matcher = pattern.matcher(line);
-        String matchedContent = null;
-        if (matcher.find()) {
-            matchedContent = matcher.group();
-        }
-
-        return matchedContent;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-web/pom.xml b/trunk/streams-web/pom.xml
deleted file mode 100644
index 2a44e43..0000000
--- a/trunk/streams-web/pom.xml
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>streams-project</artifactId>
-    <groupId>org.apache.streams</groupId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-  <artifactId>streams-web</artifactId>
-  <packaging>war</packaging>
-
-  <name>Apache Streams Web App</name>
-
-  <properties>
-    <spring.version>3.0.5.RELEASE</spring.version>
-    <junit.version>4.11</junit.version>
-    <jdk.version>1.6</jdk.version>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>3.8.1</version>
-      <scope>test</scope>
-    </dependency>
-
-     <dependency>
-         <groupId>org.apache.streams</groupId>
-         <artifactId>streams-eip-routes</artifactId>
-         <version>${project.version}</version>
-     </dependency>
-
-      <dependency>
-          <groupId>org.apache.streams.osgi.components</groupId>
-          <artifactId>streams-components-all</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-          <groupId>org.apache.streams</groupId>
-          <artifactId>streams-cassandra</artifactId>
-          <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-          <groupId>org.apache.camel</groupId>
-          <artifactId>camel-web</artifactId>
-          <version>2.9.0</version>
-          <type>war</type>
-          <scope>runtime</scope>
-      </dependency>
-
-      <!-- Dependencies for using ActiveMQ -->
-      <dependency>
-          <groupId>org.apache.activemq</groupId>
-          <artifactId>activemq-camel</artifactId>
-          <version>5.5.1</version>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.geronimo.specs</groupId>
-          <artifactId>geronimo-jms_1.1_spec</artifactId>
-          <version>1.1.1</version>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.xbean</groupId>
-          <artifactId>xbean-spring</artifactId>
-          <version>3.5</version>
-      </dependency>
-      <dependency>
-          <groupId>org.apache.camel</groupId>
-          <artifactId>camel-jms</artifactId>
-          <version>2.9.0</version>
-      </dependency>
-
-      <dependency>
-          <groupId>org.apache.camel</groupId>
-          <artifactId>camel-servlet</artifactId>
-          <version>2.9.0</version>
-      </dependency>
-
-      <!-- Dependencies for stream processing in Camel
-     http://camel.apache.org/stream.html -->
-      <dependency>
-          <groupId>org.apache.camel</groupId>
-          <artifactId>camel-stream</artifactId>
-          <version>2.9.0</version>
-      </dependency>
-
-      <!-- logging -->
-      <dependency>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-api</artifactId>
-          <version>1.6.1</version>
-      </dependency>
-      <dependency>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-          <version>1.6.1</version>
-      </dependency>
-      <dependency>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-          <version>1.2.16</version>
-      </dependency>
-
-
-      <dependency>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-core</artifactId>
-          <version>${spring.version}</version>
-      </dependency>
-
-      <dependency>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-web</artifactId>
-          <version>${spring.version}</version>
-      </dependency>
-
-      <dependency>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-webmvc</artifactId>
-          <version>${spring.version}</version>
-      </dependency>
-
-      <!--rave-->
-      <dependency>
-          <groupId>org.apache.rave</groupId>
-          <artifactId>rave-core-api</artifactId>
-          <version>${rave.version}</version>
-      </dependency>
-
-      <dependency>
-          <groupId>org.apache.rave</groupId>
-          <artifactId>rave-core</artifactId>
-          <version>${rave.version}</version>
-      </dependency>
-
-  </dependencies>
-  <build>
-    <finalName>streams-web</finalName>
-      <plugins>
-          <plugin>
-              <groupId>org.apache.camel</groupId>
-              <artifactId>camel-maven-plugin</artifactId>
-              <version>2.9.0</version>
-          </plugin>
-
-          <plugin>
-              <groupId>org.mortbay.jetty</groupId>
-              <artifactId>jetty-maven-plugin</artifactId>
-              <version>7.5.3.v20111011</version>
-
-              <configuration>
-                  <webAppConfig>
-                      <contextPath>/</contextPath>
-                  </webAppConfig>
-
-                  <systemProperties>
-                      <!-- enable easy JMX connection to JConsole -->
-                      <systemProperty>
-                          <name>com.sun.management.jmxremote</name>
-                          <value/>
-                      </systemProperty>
-                  </systemProperties>
-                  <scanIntervalSeconds>10</scanIntervalSeconds>
-              </configuration>
-          </plugin>
-
-          <plugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-resources-plugin</artifactId>
-              <version>2.4.2</version>
-              <executions>
-                  <execution>
-                      <id>default-copy-resources</id>
-                      <phase>process-resources</phase>
-                      <goals>
-                          <goal>copy-resources</goal>
-                      </goals>
-                      <configuration>
-                          <overwrite>true</overwrite>
-                          <outputDirectory>${project.build.directory}/${project.artifactId}/WEB-INF/spring</outputDirectory>
-                          <resources>
-                              <resource>
-                                  <directory>${project.parent.basedir}/streams-eip-routes/src/main/resources/META-INF/spring</directory>
-                                  <excludes>
-                                    <exclude>streams-eip-osgi-component-import.xml</exclude>
-                                     <exclude>propertiesLoader.xml</exclude>
-                                    <exclude>streams.properties</exclude>
-                                  </excludes>
-                              </resource>
-                          </resources>
-                      </configuration>
-                  </execution>
-              </executions>
-          </plugin>
-  </plugins>
-  </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/WEB-INF/cassandra.properties
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/WEB-INF/cassandra.properties b/trunk/streams-web/src/main/webapp/WEB-INF/cassandra.properties
deleted file mode 100644
index b7ea724..0000000
--- a/trunk/streams-web/src/main/webapp/WEB-INF/cassandra.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-keyspaceName=keyspacetest
-activitystreamsColumnFamilyName=activitystreams
-subscriptionColumnFamilyName=subscriptions
-publisherColumnFamilyName=publishers
-cassandraPort=127.0.0.1
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/WEB-INF/propertiesLoader.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/WEB-INF/propertiesLoader.xml b/trunk/streams-web/src/main/webapp/WEB-INF/propertiesLoader.xml
deleted file mode 100644
index d90ef76..0000000
--- a/trunk/streams-web/src/main/webapp/WEB-INF/propertiesLoader.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<beans
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://www.springframework.org/schema/beans"
-        xmlns:context="http://www.springframework.org/schema/context"
-        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
-
-
-
-    <context:property-placeholder
-            location="WEB-INF/streams.properties,
-            WEB-INF/cassandra.properties"
-            ignore-unresolvable="true"/>
-
-    <bean id="configuration" class="org.apache.streams.messaging.configuration.EipConfigurator" />
-    <bean id="cassandraConfig" class="org.apache.streams.cassandra.configuration.CassandraConfiguration" />
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/WEB-INF/spring-web-servlet.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/WEB-INF/spring-web-servlet.xml b/trunk/streams-web/src/main/webapp/WEB-INF/spring-web-servlet.xml
deleted file mode 100644
index 2d6557d..0000000
--- a/trunk/streams-web/src/main/webapp/WEB-INF/spring-web-servlet.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="
-        http://www.springframework.org/schema/beans
-        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
-        http://www.springframework.org/schema/context
-        http://www.springframework.org/schema/context/spring-context-3.0.xsd">
-
-    <context:component-scan base-package="org.apache.streams" />
-    <context:component-scan base-package="org.apache.camel.web" />
-
-    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-        <property name="prefix">
-            <value>/WEB-INF/</value>
-        </property>
-        <property name="suffix">
-            <value>.jsp</value>
-        </property>
-    </bean>
-
-
-    <bean id="activityPublisherRegistration" class="org.apache.streams.osgi.components.impl.ActivityPublisherRegistrationImpl" />
-    <bean id="activityConsumerWarehouse" class="org.apache.streams.osgi.components.activityconsumer.impl.ActivityConsumerWarehouseImpl" />
-
-    <bean id="activityStreamsSubscriberRegistration" class="org.apache.streams.osgi.components.impl.ActivityStreamsSubscriberRegistrationImpl" />
-    <bean id="activityStreamsSubscriberWarehouse" class="org.apache.streams.osgi.components.activitysubscriber.impl.ActivityStreamsSubscriberWarehouseImpl" />
-
-
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/WEB-INF/streams.properties
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/WEB-INF/streams.properties b/trunk/streams-web/src/main/webapp/WEB-INF/streams.properties
deleted file mode 100644
index 157fb64..0000000
--- a/trunk/streams-web/src/main/webapp/WEB-INF/streams.properties
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# 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.
-#
-
-servlet.baseUrlPath=http://localhost:8080/streams-web/
-
-consumer.inRouteHost=localhost
-consumer.inRoutePort=8000
-consumer.activityQUri = direct:activityQ
-
-consumer.publisherEndpointProtocol=servlet:///
-consumer.publisherEndpointUrlResource=publish
-
-consumer.receiveMethod=receive
-consumer.splitMethod=split
-
-consumer.registrationEndpoint=servlet:///publisher/register
-
-subscriber.inRouteHost=localhost
-subscriber.inRoutePort=8000
-subscriber.subscriberEndpointUrlResource=subscriber
-subscriber.receiveMethod=receive
-subscriber.postMethod=updateActivityStreamsSubscriberConfiguration
-subscriber.getMethod=getStream
-subscriber.registrationEndpoint=servlet:///subscriber/register
-subscriber.subscriberEndpointProtocol=servlet:///
-
-
-activemq.jmsConnectionFactoryUrl=tcp://localhost:61616

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/WEB-INF/web.xml b/trunk/streams-web/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index faf2ba6..0000000
--- a/trunk/streams-web/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--
-  ~ 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.
-  -->
-
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://java.sun.com/xml/ns/javaee"
-         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
-         id="Shindig"
-         version="2.5">
-    <display-name>Streams</display-name>
-
-    <!--  tell Spring where it should load the XML file  -->
-    <context-param>
-        <param-name>contextConfigLocation</param-name>
-        <param-value>
-            /WEB-INF/propertiesLoader.xml
-            /WEB-INF/spring/*.xml
-            /WEB-INF/spring-web-servlet.xml
-        </param-value>
-    </context-param>
-    <!-- the listener that kick-starts Spring -->
-    <listener>
-        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-    </listener>
-
-
-    <!-- Camel servlet -->
-    <servlet>
-        <servlet-name>CamelServlet</servlet-name>
-        <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
-        <load-on-startup>1</load-on-startup>
-    </servlet>
-
-    <!-- Camel servlet mapping -->
-    <servlet-mapping>
-        <servlet-name>CamelServlet</servlet-name>
-        <url-pattern>/apps/*</url-pattern>
-    </servlet-mapping>
-
-    <welcome-file-list><welcome-file>/demo/index.html</welcome-file></welcome-file-list>
-
-</web-app>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/activityDemo.html
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/activityDemo.html b/trunk/streams-web/src/main/webapp/demo/activityDemo.html
deleted file mode 100644
index 452bc61..0000000
--- a/trunk/streams-web/src/main/webapp/demo/activityDemo.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML>
-<html xmlns="http://www.w3.org/1999/html">
-<head>
-    <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
-    <script type="text/javascript" src="js/handlebars.js"></script>
-    <script type="text/javascript" src="js/activityDemo.js"></script>
-    <link rel="stylesheet" type="text/css" href="css/activityStyles.css" />
-    <title>Activity Streams Demo</title>
-</head>
-<body>
-    <label>View Streams for the following tag:</label><br>
-    <textarea id="tag" rows="2"></textarea><br>
-    <button type="button" onclick="activityDemo.getActivitiesForGivenTag()">Get Activities</button><br><br>
-
-    <div id="activityStream"></div>
-    <script type="text/x-handlebars-template" id='activity-template'>
-        <!--Iterates through each activity in the array that was returned from Streams-->
-        {{#each this}}
-        <div class='activity'>
-            <div class='actor'>{{actor.id}}   {{verb}}   {{published}}</div>
-        </div>
-        {{/each}}
-    </script>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/css/activityStyles.css
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/css/activityStyles.css b/trunk/streams-web/src/main/webapp/demo/css/activityStyles.css
deleted file mode 100644
index b8b0e55..0000000
--- a/trunk/streams-web/src/main/webapp/demo/css/activityStyles.css
+++ /dev/null
@@ -1,9 +0,0 @@
-.activity {
-    -moz-box-shadow:    3px 3px 5px 6px #ccc;
-    -webkit-box-shadow: 3px 3px 5px 6px #ccc;
-    box-shadow:         3px 3px 5px 6px #ccc;
-    padding: .3em .7em .3em .7em;
-    width: 300px;
-    margin-top: 25px;
-    margin-bottom: 25px; }
-.actor { text-align: left; }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/js/activityDemo.js
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/js/activityDemo.js b/trunk/streams-web/src/main/webapp/demo/js/activityDemo.js
deleted file mode 100644
index 17c1e7b..0000000
--- a/trunk/streams-web/src/main/webapp/demo/js/activityDemo.js
+++ /dev/null
@@ -1,66 +0,0 @@
-var activityDemo = activityDemo || (function(){
-    var subscriberURL = "";
-    var registerUrl = "/streams-web/apps/subscriber/register";
-    var activityStream = "";
-
-    var getActivitiesForGivenTag = function(){
-
-        registerSubscriber();
-    };
-
-    // Registers a new subscriber and sets the subscriber's filter(s)
-    // based on tag entered by the user on the demo webpage
-    var registerSubscriber = function(){
-        var tag = $("#tag").val();
-        console.log("tag = " + tag);
-        var registrationObject =
-        {
-            "authToken": "token",
-            "@class":"org.apache.streams.osgi.components.activitysubscriber.impl.ActivityStreamsSubscriptionImpl",
-            "filters": [
-                tag
-            ]
-        };
-
-        $.ajax({
-            url:registerUrl,
-            contentType: 'application/json',
-            type:"POST",
-            data:JSON.stringify(registrationObject),
-            success:function(data){
-                console.log(data);
-                subscriberURL = data;
-                getActivitiesStream();
-            }
-        })
-    };
-
-    // Gets activities streams array
-    var getActivitiesStream = function(){
-        if(!subscriberURL){
-            alert("Please enter a subscriber url first");
-        }
-
-        $.ajax({
-            contentType: "application/json",
-            type:"GET",
-            url: subscriberURL,
-            success:function(data){
-                setTemplate(data);
-            }
-        })
-    };
-
-    // Applies the array returned from Streams to the html template to be displayed
-    var setTemplate = function(activityStreamData){
-        var source   = $("#activity-template").html();
-        var template = Handlebars.compile(source);
-        var html = template(activityStreamData);
-        $("#activityStream").html(html);
-    };
-
-    return {
-            getActivitiesForGivenTag: getActivitiesForGivenTag
-        }
-
-})();


[17/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json
deleted file mode 100644
index 3cc24ca..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/jsonschema/com/gnip/Gnip.json
+++ /dev/null
@@ -1,811 +0,0 @@
-{
-    "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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb
deleted file mode 100644
index 0f31d3c..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/binding.xjb
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd
deleted file mode 100644
index 04119e9..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/main/xmlschema/com/gnip/entry.xsd
+++ /dev/null
@@ -1,381 +0,0 @@
-<?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>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
deleted file mode 100644
index c6102c2..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-powertrack/src/test/java/org/apache/streams/gnip/powertrack/test/PowerTrackDeserializationTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-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();
-        }
-    }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/pom.xml b/trunk/streams-contrib/streams-provider-gnip/pom.xml
deleted file mode 100644
index 68d6591..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?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>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/pom.xml b/trunk/streams-contrib/streams-provider-moreover/pom.xml
deleted file mode 100644
index 6b281d9..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/pom.xml
+++ /dev/null
@@ -1,163 +0,0 @@
-<?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.typesafe</groupId>
-            <artifactId>config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-        </dependency>
-        <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/Moreover.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/com/moreover/MoreoverConfiguration.json</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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
deleted file mode 100644
index da8c496..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverJsonActivitySerializer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.apache.streams.data;
-
-import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-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<String> {
-    @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(List<String> serializedList) {
-        throw new NotImplementedException("Not currently implemented");
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java
deleted file mode 100644
index 33e550c..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/MoreoverXmlActivitySerializer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-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.LinkedList;
-import java.util.List;
-
-/**
- * Deserializes the Moreover Article XML and converts it to an instance of {@link Activity}
- */
-public class MoreoverXmlActivitySerializer implements ActivitySerializer<String> {
-
-    //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(List<String> serializedList) {
-        List<Activity> activities = new LinkedList<Activity>();
-        for(String item : serializedList) {
-            ArticlesResponse response = deserializeMoreoverResponse(item);
-            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;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
deleted file mode 100644
index 0ab6e33..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
+++ /dev/null
@@ -1,83 +0,0 @@
-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();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
deleted file mode 100644
index d2589e0..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.apache.streams.data.moreover;
-
-import com.google.common.collect.Lists;
-import com.typesafe.config.Config;
-import org.apache.streams.moreover.MoreoverConfiguration;
-import org.apache.streams.moreover.MoreoverKeyData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class MoreoverConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(MoreoverConfigurator.class);
-
-    public static MoreoverConfiguration detectConfiguration(Config moreover) {
-
-        MoreoverConfiguration moreoverConfiguration = new MoreoverConfiguration();
-
-        List<MoreoverKeyData> apiKeys = Lists.newArrayList();
-
-        for( String key : moreover.getStringList("apiKeys")) {
-            apiKeys.add(new MoreoverKeyData().withId(key).withKey(key));
-            // TODO: implement starting sequence
-        }
-        moreoverConfiguration.setApiKeys(apiKeys);
-
-        return moreoverConfiguration;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
deleted file mode 100644
index 133d6e3..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.apache.streams.data.moreover;
-
-import com.google.common.collect.Lists;
-import org.apache.streams.core.StreamsDatum;
-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);
-
-    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-
-    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.providerQueue, 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 Queue<StreamsDatum> getProviderQueue() {
-        return providerQueue;
-    }
-
-    @Override
-    public StreamsResultSet readCurrent() {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger sequence) {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime start, DateTime end) {
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
deleted file mode 100644
index c0735bf..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.apache.streams.data.moreover;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import org.apache.streams.core.StreamsDatum;
-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<StreamsDatum> results;
-    private final MoreoverClient moClient;
-    private boolean started = false;
-
-    public MoreoverProviderTask(String apiId, String apiKey, Queue<StreamsDatum> 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;
-            for(StreamsDatum entry : ImmutableSet.copyOf(result.iterator()))
-                results.offer(entry);
-            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);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java b/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
deleted file mode 100644
index 186750d..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
+++ /dev/null
@@ -1,153 +0,0 @@
-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.google.common.collect.Lists;
-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;
-import java.util.List;
-
-
-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;
-
-    private List<StreamsDatum> list = Lists.newArrayList();
-
-    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 sequenceid = new BigInteger(article.getSequenceId());
-            list.add(new StreamsDatum(article, sequenceid));
-            logger.trace("Prior max sequence Id {} current candidate {}", this.maxSequencedId, sequenceid);
-            if (sequenceid.compareTo(this.maxSequencedId) > 0) {
-                this.maxSequencedId = sequenceid;
-                logger.debug("New max sequence Id {}", this.maxSequencedId);
-            }
-
-        }
-        return jsonString;
-    }
-
-    public String getXmlString() {
-        return this.xmlString;
-    }
-
-    public BigInteger getMaxSequencedId() {
-        return this.maxSequencedId;
-    }
-
-    @Override
-    public Iterator<StreamsDatum> iterator() {
-        return list.iterator();
-    }
-
-    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();
-        }
-    }
-}


[56/71] [abbrv] git commit: Fixed long-running test

Posted by sb...@apache.org.
Fixed long-running test


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/3a192885
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/3a192885
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/3a192885

Branch: refs/heads/master
Commit: 3a192885a7dc13c07dabb915a7223ca748fc1e59
Parents: f916512
Author: sblackmon <sb...@w2odigital.com>
Authored: Wed Mar 19 14:00:19 2014 -0500
Committer: sblackmon <sb...@w2odigital.com>
Committed: Wed Mar 19 14:00:19 2014 -0500

----------------------------------------------------------------------
 provision/provision.iml                                 |  4 ++--
 .../streams-components-test/streams-components-test.iml | 12 +++++-------
 .../streams/core/builders/LocalStreamBuilder.java       |  2 +-
 .../streams/core/builders/LocalStreamBuilderTest.java   | 10 +++++-----
 4 files changed, 13 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3a192885/provision/provision.iml
----------------------------------------------------------------------
diff --git a/provision/provision.iml b/provision/provision.iml
index fb87ba5..b1475a5 100644
--- a/provision/provision.iml
+++ b/provision/provision.iml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <output url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/classes" />
+    <output-test url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3a192885/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
index 0fcef34..7bc994e 100644
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ b/streams-contrib/streams-components-test/streams-components-test.iml
@@ -1,26 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <output url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/classes" />
+    <output-test url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/test-classes" />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="streams-core (3)" />
+    <orderEntry type="module" module-name="streams-core" />
     <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="module" module-name="streams-util (3)" />
+    <orderEntry type="module" module-name="streams-util" />
     <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
     <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-    <orderEntry type="module" module-name="streams-pojo (3)" />
+    <orderEntry type="module" module-name="streams-pojo" />
     <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3a192885/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
index 7744be7..3e99827 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -152,7 +152,7 @@ public class LocalStreamBuilder implements StreamBuilder{
                     isRunning = isRunning || task.isRunning();
                 }
                 if(isRunning) {
-                    Thread.sleep(100000);
+                    Thread.sleep(3000);
                 }
             }
             this.executor.shutdown();

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3a192885/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java b/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
index cc10938..9177459 100644
--- a/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
+++ b/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
@@ -75,7 +75,7 @@ public class LocalStreamBuilderTest {
 
     @Test
     public void testBasicLinearStream2()  {
-        int numDatums = 1000;
+        int numDatums = 100;
         StreamBuilder builder = new LocalStreamBuilder();
         PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
         SystemOutWriter writer = new SystemOutWriter();
@@ -94,8 +94,8 @@ public class LocalStreamBuilderTest {
 
     @Test
     public void testParallelLinearStream1() {
-        int numDatums = 10000;
-        int parallelHint = 40;
+        int numDatums = 1000;
+        int parallelHint = 20;
         PassthroughDatumCounterProcessor.sawData = new HashSet<Integer>();
         PassthroughDatumCounterProcessor.claimedNumber = new HashSet<Integer>();
         StreamBuilder builder = new LocalStreamBuilder();
@@ -119,7 +119,7 @@ public class LocalStreamBuilderTest {
     @Test
     public void testBasicMergeStream() {
         int numDatums1 = 1;
-        int numDatums2 = 1000;
+        int numDatums2 = 100;
         PassthroughDatumCounterProcessor processor1 = new PassthroughDatumCounterProcessor();
         PassthroughDatumCounterProcessor processor2 = new PassthroughDatumCounterProcessor();
         SystemOutWriter writer = new SystemOutWriter();
@@ -141,7 +141,7 @@ public class LocalStreamBuilderTest {
 
     @Test
     public void testBasicBranch() {
-        int numDatums = 1000;
+        int numDatums = 100;
         StreamBuilder builder = new LocalStreamBuilder();
         builder.newReadCurrentStream("prov1", new NumericMessageProvider(numDatums))
                 .addStreamsProcessor("proc1", new PassthroughDatumCounterProcessor(), 1, "prov1")


[49/71] [abbrv] git commit: Adding support for perpetual streams, minor refactoring, work on moreover provider

Posted by sb...@apache.org.
Adding support for perpetual streams, minor refactoring, work on moreover provider

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572821 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/ce6961d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/ce6961d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/ce6961d6

Branch: refs/heads/master
Commit: ce6961d6c54ba5367ef3f664c8dccec3448967e6
Parents: 2eb90cd
Author: sblackmon <sb...@unknown>
Authored: Fri Feb 28 05:14:16 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Fri Feb 28 05:14:16 2014 +0000

----------------------------------------------------------------------
 streams-contrib/pom.xml                         |  2 +-
 .../streams/console/ConsolePersistReader.java   |  5 ++
 .../ElasticsearchPersistReader.java             |  5 ++
 .../streams/hdfs/WebHdfsPersistWriter.java      |  8 +--
 .../streams/kafka/KafkaPersistReader.java       | 40 ++++--------
 .../streams-provider-moreover/pom.xml           |  4 ++
 .../streams/data/moreover/MoreoverClient.java   |  2 +-
 .../streams/data/moreover/MoreoverProvider.java | 66 ++++++++++----------
 .../data/moreover/MoreoverResultSetWrapper.java | 31 +--------
 .../com/moreover/MoreoverConfiguration.json     |  1 +
 .../streams/rss/provider/RssStreamProvider.java |  5 +-
 .../twitter/provider/TwitterStreamProvider.java |  6 +-
 .../provider/TwitterTimelineProvider.java       |  5 ++
 .../apache/streams/core/StreamsProvider.java    |  6 +-
 .../core/builders/LocalStreamBuilder.java       | 12 +++-
 .../streams/core/builders/StreamBuilder.java    |  9 +++
 .../streams/core/builders/StreamComponent.java  | 13 +++-
 .../streams/core/tasks/StreamsProviderTask.java | 53 +++++++++++-----
 18 files changed, 146 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 07660ee..c24a33b 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -44,7 +44,7 @@
         <!--<module>streams-provider-datasift</module>-->
         <!--<module>streams-provider-facebook</module>-->
         <!--<module>streams-provider-gnip</module>-->
-        <!--<module>streams-provider-moreover</module>-->
+        <module>streams-provider-moreover</module>
         <module>streams-provider-twitter</module>
         <!--<module>streams-provider-sysomos</module>-->
         <module>streams-provider-rss</module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
index 2addc65..a3967e7 100644
--- a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
@@ -45,6 +45,11 @@ public class ConsolePersistReader implements StreamsPersistReader {
     }
 
     @Override
+    public void startStream() {
+        // no op
+    }
+
+    @Override
     public StreamsResultSet readAll() {
         return readCurrent();
     }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
index 8dbdeb0..2129eca 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
@@ -121,6 +121,11 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
     }
 
     @Override
+    public void startStream() {
+
+    }
+
+    @Override
     public void prepare(Object o) {
 
         // If we haven't already set up the search, then set up the search.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
index cb3ceec..0fc8407 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
@@ -57,9 +57,9 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Cl
 
     private ObjectMapper mapper = new ObjectMapper();
 
-    private HdfsConfiguration hdfsConfiguration;
+    private HdfsWriterConfiguration hdfsConfiguration;
 
-    public WebHdfsPersistWriter(HdfsConfiguration hdfsConfiguration) {
+    public WebHdfsPersistWriter(HdfsWriterConfiguration hdfsConfiguration) {
         this.hdfsConfiguration = hdfsConfiguration;
     }
 
@@ -180,7 +180,7 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Cl
         this.fileLineCounter = 0;
 
         // Create the path for where the file is going to live.
-        Path filePath = this.path.suffix("/" + this.filePart + "-" + new Date().getTime() + ".tsv");
+        Path filePath = this.path.suffix("/" + hdfsConfiguration.getWriterFilePrefix() + "-" + new Date().getTime() + ".tsv");
 
         try
         {
@@ -248,7 +248,7 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Cl
     @Override
     public void prepare(Object configurationObject) {
         connectToWebHDFS();
-        path = new Path(hdfsConfiguration.getPath());
+        path = new Path(hdfsConfiguration.getPath() + "/" + hdfsConfiguration.getWriterPath());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java b/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
index fd0dfdf..af43d4e 100644
--- a/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
+++ b/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
@@ -29,7 +29,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
-public class KafkaPersistReader implements StreamsPersistReader, Serializable, Runnable {
+public class KafkaPersistReader implements StreamsPersistReader, Serializable {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(KafkaPersistReader.class);
 
@@ -62,7 +62,9 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
         this.config = config;
     }
 
-    public void start() {
+    @Override
+    public void startStream() {
+
         Properties props = new Properties();
         props.setProperty("serializer.encoding", "UTF8");
 
@@ -81,23 +83,6 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
 
     }
 
-    public void stop() {
-        consumerConnector.shutdown();
-        while( !executor.isTerminated()) {
-            try {
-                executor.awaitTermination(5, TimeUnit.SECONDS);
-            } catch (InterruptedException e) {}
-        }
-    }
-
-    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-        this.persistQueue = persistQueue;
-    }
-
-    public Queue<StreamsDatum> getPersistQueue() {
-        return this.persistQueue;
-    }
-
     @Override
     public StreamsResultSet readAll() {
         return readCurrent();
@@ -129,20 +114,17 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
     }
 
     @Override
-    public void run() {
-        start();
-
-        // once this class can be told when to shutdown by streams, it will run stop
-        // stop();
-    }
-
-    @Override
     public void prepare(Object configurationObject) {
-        start();
+
     }
 
     @Override
     public void cleanUp() {
-        stop();
+        consumerConnector.shutdown();
+        while( !executor.isTerminated()) {
+            try {
+                executor.awaitTermination(5, TimeUnit.SECONDS);
+            } catch (InterruptedException e) {}
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-moreover/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/pom.xml b/streams-contrib/streams-provider-moreover/pom.xml
index 6b281d9..4988715 100644
--- a/streams-contrib/streams-provider-moreover/pom.xml
+++ b/streams-contrib/streams-provider-moreover/pom.xml
@@ -41,6 +41,10 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+        </dependency>
+        <dependency>
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
index 0ab6e33..ec968fe 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
@@ -20,7 +20,7 @@ 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 static final String BASE_URL = "http://metabase.moreover.com/api/v10/articles?key=%s&limit=%s&sequence_id=%s";
     private final String id;
     private String apiKey;
     private BigInteger lastSequenceId = BigInteger.ZERO;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
index 133d6e3..4772f5e 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
@@ -19,57 +19,47 @@ import java.util.concurrent.*;
 
 public class MoreoverProvider implements StreamsProvider {
 
-    private static Logger logger = LoggerFactory.getLogger(MoreoverProvider.class);
+    public final static String STREAMS_ID = "MoreoverProvider";
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(MoreoverProvider.class);
 
     protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
 
-    private List<ExecutorService> tasks = new LinkedList<ExecutorService>();
     private List<MoreoverKeyData> keys;
-    private boolean started = false;
+
+    private MoreoverConfiguration config;
+
+    private ExecutorService executor;
 
     public MoreoverProvider(MoreoverConfiguration moreoverConfiguration) {
+        this.config = moreoverConfiguration;
         this.keys = Lists.newArrayList();
-        for( MoreoverKeyData apiKey : moreoverConfiguration.getApiKeys()) {
+        for( MoreoverKeyData apiKey : config.getApiKeys()) {
             this.keys.add(apiKey);
         }
-        this.keys = Arrays.asList();
     }
 
-    public MoreoverProvider(MoreoverKeyData... keys) {
-        this.keys = Arrays.asList(keys);
-    }
+    public void startStream() {
 
-    @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.providerQueue, 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;
+        for(MoreoverKeyData key : keys) {
+            MoreoverProviderTask task = new MoreoverProviderTask(key.getId(), key.getKey(), this.providerQueue, key.getStartingSequence());
+            executor.submit(new Thread(task));
+            LOGGER.info("Started producer for {}", key.getKey());
         }
-    }
 
-    @Override
-    public synchronized void stop() {
-        for(ExecutorService service: tasks) {
-            service.shutdown();
-        }
-    }
-
-    @Override
-    public Queue<StreamsDatum> getProviderQueue() {
-        return providerQueue;
     }
 
     @Override
     public StreamsResultSet readCurrent() {
-        return null;
+        LOGGER.debug("readCurrent");
+
+        LOGGER.info("Providing {} docs", providerQueue.size());
+
+        StreamsResultSet result =  new StreamsResultSet(providerQueue);
+
+        LOGGER.info("Exiting");
+
+        return result;
     }
 
     @Override
@@ -82,4 +72,14 @@ public class MoreoverProvider implements StreamsProvider {
         return null;
     }
 
+    @Override
+    public void prepare(Object configurationObject) {
+        LOGGER.debug("Prepare");
+        executor = Executors.newSingleThreadExecutor();
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
index 9c161c7..0785fac 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResultSetWrapper.java
@@ -5,37 +5,12 @@ import org.apache.streams.core.StreamsResultSet;
 
 import java.math.BigInteger;
 import java.util.Iterator;
+import java.util.Queue;
 
-public class MoreoverResultSetWrapper implements StreamsResultSet {
-
-    private MoreoverResult underlying;
+public class MoreoverResultSetWrapper extends StreamsResultSet {
 
     public MoreoverResultSetWrapper(MoreoverResult underlying) {
-        this.underlying = underlying;
-    }
-
-    @Override
-    public long getStartTime() {
-        return underlying.getStart();
-    }
-
-    @Override
-    public long getEndTime() {
-        return underlying.getEnd();
+        super((Queue<StreamsDatum>)underlying);
     }
 
-    @Override
-    public String getSourceId() {
-        return underlying.getClientId();
-    }
-
-    @Override
-    public BigInteger getMaxSequence() {
-        return underlying.getMaxSequencedId();
-    }
-
-    @Override
-    public Iterator<StreamsDatum> iterator() {
-        return underlying.iterator();
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json b/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
index 6950918..d88f28c 100644
--- a/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
+++ b/streams-contrib/streams-provider-moreover/src/main/jsonschema/com/moreover/MoreoverConfiguration.json
@@ -3,6 +3,7 @@
     "$schema": "http://json-schema.org/draft-03/schema",
     "id": "#",
     "javaType" : "org.apache.streams.moreover.MoreoverConfiguration",
+    "javaInterfaces": ["java.io.Serializable"],
     "properties": {
         "apiKeys": {
             "type": "array",

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
index 9ef0bd6..449f187 100644
--- a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
+++ b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
@@ -85,7 +85,8 @@ public class RssStreamProvider implements StreamsProvider, Serializable {
         this.klass = klass;
     }
 
-    public void start() {
+    @Override
+    public void startStream() {
 
         Preconditions.checkNotNull(this.klass);
 
@@ -133,7 +134,7 @@ public class RssStreamProvider implements StreamsProvider, Serializable {
 
     @Override
     public void prepare(Object configurationObject) {
-        start();
+        
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
index 4a8a51b..b0b4cf4 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
@@ -90,9 +90,10 @@ public class TwitterStreamProvider implements StreamsProvider, Serializable {
 
     }
 
-    public void run() {
+    @Override
+    public void startStream() {
 
-        for (int i = 0; i < 10; i++) {
+        for (int i = 0; i < 5; i++) {
             executor.submit(new TwitterEventProcessor(inQueue, providerQueue, klass));
         }
 
@@ -101,7 +102,6 @@ public class TwitterStreamProvider implements StreamsProvider, Serializable {
 
     @Override
     public StreamsResultSet readCurrent() {
-        run();
         StreamsResultSet result = (StreamsResultSet)providerQueue.iterator();
         return result;
     }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
index 6fb3e02..40fb961 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
@@ -118,6 +118,11 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable {
 //        }
 //    }
 
+    @Override
+    public void startStream() {
+        // no op
+    }
+
     private void captureTimeline(long currentId) {
 
         Paging paging = new Paging(1, 200);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java b/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
index 56878a7..2287c9a 100644
--- a/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
+++ b/streams-core/src/main/java/org/apache/streams/core/StreamsProvider.java
@@ -28,11 +28,7 @@ import java.util.Queue;
  */
 public interface StreamsProvider extends StreamsOperation {
 
-//    void start();
-//    void stop();
-//
-//    public Queue<StreamsDatum> getProviderQueue();
-
+    public void startStream();
     public StreamsResultSet readCurrent();
     public StreamsResultSet readNew(BigInteger sequence);
     public StreamsResultSet readRange(DateTime start, DateTime end);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
index 76e925f..0598dfb 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -67,9 +67,17 @@ public class LocalStreamBuilder implements StreamBuilder{
     }
 
     @Override
+    public StreamBuilder newPerpetualStream(String id, StreamsProvider provider) {
+        validateId(id);
+        this.providers.put(id, new StreamComponent(id, provider, true));
+        ++this.totalTasks;
+        return this;
+    }
+
+    @Override
     public StreamBuilder newReadCurrentStream(String id, StreamsProvider provider) {
         validateId(id);
-        this.providers.put(id, new StreamComponent(id, provider));
+        this.providers.put(id, new StreamComponent(id, provider, false));
         ++this.totalTasks;
         return this;
     }
@@ -139,7 +147,7 @@ public class LocalStreamBuilder implements StreamBuilder{
             }
 
             while(isRunning) {
-                isRunning = false;
+                //isRunning = false;
                 for(StreamsProviderTask task : provTasks.values()) {
                     isRunning = isRunning || task.isRunning();
                 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
index 918eb7a..133776d 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
@@ -51,6 +51,15 @@ public interface StreamBuilder {
      * @param provider provider to execute
      * @return this
      */
+    public StreamBuilder newPerpetualStream(String streamId, StreamsProvider provider);
+
+    /**
+     * Add a {@link org.apache.streams.core.StreamsProvider} to the data processing stream.  The provider will execute
+     * {@link org.apache.streams.core.StreamsProvider:readCurrent()} to produce data.
+     * @param streamId unique if for this provider - must be unique across the entire stream.
+     * @param provider provider to execute
+     * @return this
+     */
     public StreamBuilder newReadCurrentStream(String streamId, StreamsProvider provider);
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java b/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
index 6243f94..15cb9e8 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
@@ -33,15 +33,17 @@ public class StreamComponent {
     private DateTime[] dateRange;
     private BigInteger sequence;
     private int numTasks = 1;
+    private boolean perpetual;
 
     /**
      *
      * @param id
      * @param provider
      */
-    public StreamComponent(String id, StreamsProvider provider) {
+    public StreamComponent(String id, StreamsProvider provider, boolean perpetual) {
         this.id = id;
         this.provider = provider;
+        this.perpetual = perpetual;
         initializePrivateVariables();
     }
 
@@ -182,9 +184,14 @@ public class StreamComponent {
             }
         }
         else if(this.provider != null) {
-            StreamsProvider prov = (StreamsProvider)SerializationUtil.cloneBySerialization(this.provider);
+            StreamsProvider prov;
+            if(this.numTasks > 1) {
+                prov = (StreamsProvider)SerializationUtil.cloneBySerialization(this.provider);
+            } else {
+                prov = this.provider;
+            }
             if(this.dateRange == null && this.sequence == null)
-                task = new StreamsProviderTask(prov);
+                task = new StreamsProviderTask(prov, this.perpetual);
             else if(this.sequence != null)
                 task = new StreamsProviderTask(prov, this.sequence);
             else

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ce6961d6/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
index fe83160..07235d1 100644
--- a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
@@ -16,6 +16,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 public class StreamsProviderTask extends BaseStreamsTask {
 
     private static enum Type {
+        PERPETUAL,
         READ_CURRENT,
         READ_NEW,
         READ_RANGE
@@ -36,9 +37,12 @@ public class StreamsProviderTask extends BaseStreamsTask {
      * Constructor for a StreamsProvider to execute {@link org.apache.streams.core.StreamsProvider:readCurrent()}
      * @param provider
      */
-    public StreamsProviderTask(StreamsProvider provider) {
+    public StreamsProviderTask(StreamsProvider provider, boolean perpetual) {
         this.provider = provider;
-        this.type = Type.READ_CURRENT;
+        if( perpetual )
+            this.type = Type.PERPETUAL;
+        else
+            this.type = Type.READ_CURRENT;
         this.keepRunning = new AtomicBoolean(true);
         this.isRunning = new AtomicBoolean(true);
     }
@@ -94,6 +98,19 @@ public class StreamsProviderTask extends BaseStreamsTask {
             StreamsResultSet resultSet = null;
             this.isRunning.set(true);
             switch(this.type) {
+                case PERPETUAL: {
+                    provider.startStream();
+                    while(this.keepRunning.get() == true) {
+                        try {
+                            resultSet = provider.readCurrent();
+                            flushResults(resultSet);
+                            Thread.sleep(DEFAULT_SLEEP_TIME_MS);
+                        } catch (InterruptedException e) {
+                            this.keepRunning.set(false);
+                        }
+                    }
+                }
+                    break;
                 case READ_CURRENT: resultSet = this.provider.readCurrent();
                     break;
                 case READ_NEW: resultSet = this.provider.readNew(this.sequence);
@@ -102,20 +119,7 @@ public class StreamsProviderTask extends BaseStreamsTask {
                     break;
                 default: throw new RuntimeException("Type has not been added to StreamsProviderTask.");
             }
-            for(StreamsDatum datum : resultSet) {
-                if(!this.keepRunning.get()) {
-                    break;
-                }
-                if(datum != null)
-                 super.addToOutgoingQueue(datum);
-                else {
-                    try {
-                        Thread.sleep(DEFAULT_SLEEP_TIME_MS);
-                    } catch (InterruptedException e) {
-                        this.keepRunning.set(false);
-                    }
-                }
-            }
+            flushResults(resultSet);
 
         } catch( Exception e ) {
             e.printStackTrace();
@@ -129,4 +133,21 @@ public class StreamsProviderTask extends BaseStreamsTask {
     public boolean isRunning() {
         return this.isRunning.get();
     }
+
+    public void flushResults(StreamsResultSet resultSet) {
+        for(StreamsDatum datum : resultSet) {
+            if(!this.keepRunning.get()) {
+                break;
+            }
+            if(datum != null)
+                super.addToOutgoingQueue(datum);
+            else {
+                try {
+                    Thread.sleep(DEFAULT_SLEEP_TIME_MS);
+                } catch (InterruptedException e) {
+                    this.keepRunning.set(false);
+                }
+            }
+        }
+    }
 }


[12/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
deleted file mode 100644
index 29c0e60..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.apache.streams.sysomos;
-
-import com.google.common.collect.Lists;
-import com.sysomos.SysomosConfiguration;
-import org.apache.commons.io.IOUtils;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.apache.streams.core.StreamsResultSet;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-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.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Wrapper for the Sysomos API.
- */
-public class SysomosProvider implements StreamsProvider {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(SysomosProvider.class);
-
-    private SysomosConfiguration config;
-
-    private List<String> apiKeys;
-    private List<ExecutorService> tasks = new LinkedList<ExecutorService>();
-    private boolean started = false;
-
-    public SysomosProvider(SysomosConfiguration sysomosConfiguration) {
-        this.apiKeys = Lists.newArrayList();
-    }
-
-    public static final String BASE_URL_STRING = "http://api.sysomos.com/";
-    private static final String DATE_FORMAT_STRING = "yyyy-MM-dd'T'hh:mm:ssZ";
-    private static final String HEARTBEAT_INFO_URL = "http://api.sysomos.com/v1/heartbeat/info?apiKey={api_key}&hid={hid}";
-    private static Pattern _pattern = Pattern.compile("code: ([0-9]+)");
-
-    public static final int LATENCY = 10;
-
-    private String apiKey;
-
-    public SysomosConfiguration getConfig() {
-        return config;
-    }
-
-    public void setConfig(SysomosConfiguration config) {
-        this.config = config;
-    }
-
-    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-
-    SysomosProviderTask task;
-    ScheduledExecutorService service;
-
-    @Override
-    public void start() {
-        LOGGER.trace("Starting Producer");
-        if(!started) {
-            LOGGER.trace("Producer not started.  Initializing");
-            service = Executors.newScheduledThreadPool(getConfig().getHeartbeatIds().size() + 1);
-            for(String heartbeatId : getConfig().getHeartbeatIds()) {
-                task = new SysomosProviderTask(this, heartbeatId);
-                service.scheduleWithFixedDelay(task, 0, LATENCY, TimeUnit.SECONDS);
-                LOGGER.info("Started producer for {} with service {}", getConfig().getApiKey(), service.toString());
-                this.tasks.add(service);
-            }
-            started = true;
-        }
-    }
-
-    @Override
-    public void stop() {
-        started = false;
-    }
-
-    @Override
-    public Queue<StreamsDatum> getProviderQueue() {
-        return providerQueue;
-    }
-
-    @Override
-    public StreamsResultSet readCurrent() {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger bigInteger) {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime dateTime, DateTime dateTime2) {
-        return null;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProviderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProviderTask.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProviderTask.java
deleted file mode 100644
index f88e1a1..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProviderTask.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.apache.streams.sysomos;
-
-import com.sysomos.SysomosConfiguration;
-import org.apache.commons.io.IOUtils;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.apache.streams.core.StreamsResultSet;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-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.util.Queue;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Wrapper for the Sysomos API.
- */
-public class SysomosProviderTask implements Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(SysomosProviderTask.class);
-
-    private SysomosConfiguration config;
-
-    private SysomosProvider provider;
-
-    private SysomosClient client;
-
-    private String heartbeatId;
-
-    public SysomosProviderTask(SysomosProvider provider, String heartbeatId) {
-        this.provider = provider;
-        this.heartbeatId = heartbeatId;
-    }
-
-    @Override
-    public void run() {
-
-        client = new SysomosClient(provider.getConfig().getApiKey());
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosResponse.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosResponse.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosResponse.java
deleted file mode 100644
index 295045a..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosResponse.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.apache.streams.sysomos;
-
-import java.util.Iterator;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 11/19/13
- * Time: 4:42 PM
- * To change this template use File | Settings | File Templates.
- */
-public interface SysomosResponse extends Iterator<String> {
-
-
-    public int getNumResults();
-    public boolean hasError();
-    public String getErrorMessage();
-    public String getXMLResponseString();
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosTagDefinition.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosTagDefinition.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosTagDefinition.java
deleted file mode 100644
index 1f470bf..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosTagDefinition.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.apache.streams.sysomos;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 5/1/13
- * Time: 5:01 PM
- * To change this template use File | Settings | File Templates.
- */
-public class SysomosTagDefinition {
-
-    private String tagName;
-    private String displayName;
-    private List<String> queries;
-
-    public SysomosTagDefinition(String tagName, String displayName) {
-        this.tagName = tagName;
-        this.displayName = displayName;
-        this.queries = new ArrayList<String>();
-    }
-
-    public String getTagName() {
-        return this.tagName;
-    }
-
-    public String getDisplayName() {
-        return this.displayName;
-    }
-
-    public List<String> getQueries() {
-        List<String> result = new ArrayList<String>();
-        result.addAll(this.queries);
-        return result;
-    }
-
-    public void addQuery(String query) {
-        this.queries.add(query);
-    }
-
-    public boolean hasTagName(String tagName) {
-        return this.tagName.equals(tagName);
-    }
-
-    public boolean hasQuery(String query) {
-        return this.queries.contains(query);
-    }
-
-    public boolean hasDisplayName(String displayName) {
-        return this.displayName.equals(displayName);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if(!(o instanceof SysomosTagDefinition)) {
-            return false;
-        }
-        SysomosTagDefinition that = (SysomosTagDefinition) o;
-        if(!this.tagName.equals(that.tagName)) {
-            return false;
-        }
-        if(!this.displayName.equals(that.displayName)) {
-            return false;
-        }
-        if(this.queries.size() != that.queries.size()) {
-            return false;
-        }
-        for(int i=0; i < this.queries.size(); ++i) {
-            if(!that.queries.contains(this.queries.get(i))) {
-                return false;
-            }
-        }
-        return true;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/Sysomos.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/Sysomos.json b/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/Sysomos.json
deleted file mode 100644
index 35424a2..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/Sysomos.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "javaType": "com.sysomos.json.Sysomos",
-    "id": "#",
-    "properties": {
-        "tweetJsonLink": {
-            "type": "string"
-        },
-        "location": {
-            "properties": {
-                "locationString": {
-                    "type": "string"
-                },
-                "country": {
-                    "type": "string"
-                }
-            }
-        },
-        "link": {
-            "type": "string"
-        },
-        "twitterFollowing": {
-            "type": "string"
-        },
-        "twitterFollowers": {
-            "type": "string"
-        },
-        "tweetid": {
-            "type": "string"
-        },
-        "mediaType": {
-            "type": "string"
-        },
-        "content": {
-            "type": "string"
-        },
-        "docid": {
-            "type": "string"
-        },
-        "sentiment": {
-            "type": "string"
-        },
-        "time": {
-            "type": "string"
-        },
-        "title": {
-            "type": "string"
-        },
-        "tweetHbLink": {
-            "type": "string"
-        },
-        "influenceLevel": {
-            "type": "string"
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/SysomosConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/SysomosConfiguration.json b/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/SysomosConfiguration.json
deleted file mode 100644
index 7a39d19..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/jsonschema/com/sysomos/SysomosConfiguration.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "com.sysomos.SysomosConfiguration",
-    "properties": {
-        "apiKey": {
-            "type": "string"
-        },
-        "endpoint": {
-            "type": "string",
-            "description": "The endpoint",
-            "default": "http://api.sysomos.com/"
-        },
-        "heartbeatIds": {
-            "type": "array",
-            "minItems": 1,
-            "items": {
-                "type": "string"
-            }
-        },
-        "minDelayMs": {
-            "type": "long"
-        },
-        "maxBatchSize": {
-            "type": "long"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/binding.xjb
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/binding.xjb b/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/binding.xjb
deleted file mode 100644
index 0f31d3c..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/binding.xjb
+++ /dev/null
@@ -1,16 +0,0 @@
-<?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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/sysomos.xsd
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/sysomos.xsd b/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/sysomos.xsd
deleted file mode 100644
index b41ecfe..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/xmlschema/com/sysomos/sysomos.xsd
+++ /dev/null
@@ -1,72 +0,0 @@
-<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.blogscope.net/api/namespace/schema/SearchResponse" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-    <xs:element name="beatApi">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="beatRequest">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element type="xs:string" name="heatbeatID"/>
-                            <xs:element type="xs:dateTime" name="startDate"/>
-                            <xs:element type="xs:dateTime" name="endDate"/>
-                            <xs:element type="xs:string" name="key"/>
-                            <xs:element type="xs:short" name="size"/>
-                            <xs:element type="xs:byte" name="offset"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element name="beatResponse">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element name="beat" maxOccurs="unbounded" minOccurs="0">
-                                <xs:complexType>
-                                    <xs:sequence>
-                                        <xs:element type="xs:string" name="docid"/>
-                                        <xs:element type="xs:string" name="mediaType"/>
-                                        <xs:element type="xs:dateTime" name="time"/>
-                                        <xs:element type="xs:string" name="title"/>
-                                        <xs:element type="xs:string" name="content"/>
-                                        <xs:element type="xs:anyURI" name="link"/>
-                                        <xs:element type="xs:string" name="gender" minOccurs="0"/>
-                                        <xs:element name="location">
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                    <xs:element type="xs:string" name="country"/>
-                                                    <xs:element type="xs:string" name="locationString"/>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element type="xs:string" name="influenceLevel"/>
-                                        <xs:element type="xs:string" name="sentiment"/>
-                                        <xs:element name="tag" maxOccurs="unbounded" minOccurs="0">
-                                            <xs:complexType>
-                                                <xs:sequence>
-                                                    <xs:element type="xs:string" name="value"/>
-                                                    <xs:element type="xs:string" name="displayName"/>
-                                                    <xs:element type="xs:string" name="systemType" minOccurs="0"/>
-                                                </xs:sequence>
-                                            </xs:complexType>
-                                        </xs:element>
-                                        <xs:element type="xs:string" name="tweetid" minOccurs="0"/>
-                                        <xs:element type="xs:anyURI" name="tweetJsonLink" minOccurs="0"/>
-                                        <xs:element type="xs:anyURI" name="tweetHbLink" minOccurs="0"/>
-                                        <xs:element type="xs:string" name="twitterFollowers" minOccurs="0"/>
-                                        <xs:element type="xs:string" name="twitterFollowing" minOccurs="0"/>
-                                    </xs:sequence>
-                                </xs:complexType>
-                            </xs:element>
-                            <xs:element type="xs:short" name="count"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-                <xs:element name="errors" maxOccurs="1" minOccurs="0">
-                    <xs:complexType>
-                        <xs:sequence>
-                            <xs:element type="xs:boolean" name="error"/>
-                            <xs:element type="xs:string" name="errorMessage"/>
-                        </xs:sequence>
-                    </xs:complexType>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-</xs:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosJsonSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosJsonSerDeTest.java b/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosJsonSerDeTest.java
deleted file mode 100644
index 889a39f..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosJsonSerDeTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.sysomos.test;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.sysomos.json.Sysomos;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 8/20/13
- * Time: 5:57 PM
- * To change this template use File | Settings | File Templates.
- */
-public class SysomosJsonSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(SysomosJsonSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @Test
-    public void Test()
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = SysomosJsonSerDeTest.class.getResourceAsStream("/sysomos_jsons.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                LOGGER.debug(line);
-
-                Sysomos ser = mapper.readValue(line, Sysomos.class);
-
-                String des = mapper.writeValueAsString(ser);
-                LOGGER.debug(des);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosXmlSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosXmlSerDeTest.java b/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosXmlSerDeTest.java
deleted file mode 100644
index 1c549ec..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/test/java/com/sysomos/test/SysomosXmlSerDeTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.sysomos.test;
-
-import com.fasterxml.aalto.stax.InputFactoryImpl;
-import com.fasterxml.aalto.stax.OutputFactoryImpl;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
-import com.fasterxml.jackson.dataformat.xml.XmlFactory;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import com.sysomos.xml.BeatApi;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 8/20/13
- * Time: 5:57 PM
- * To change this template use File | Settings | File Templates.
- */
-public class SysomosXmlSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(SysomosXmlSerDeTest.class);
-
-    private XmlMapper xmlMapper;
-
-    @Before
-    public void Before() {
-
-        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);
-
-    }
-
-    @Test
-    public void Test()
-    {
-        InputStream is = SysomosXmlSerDeTest.class.getResourceAsStream("/sysomos_xmls.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                LOGGER.debug(line);
-
-                BeatApi ser = xmlMapper.readValue(line, BeatApi.class);
-
-                String des = xmlMapper.writeValueAsString(ser);
-                LOGGER.debug(des);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}


[38/71] [abbrv] git commit: Activating kafka and hdfs modules Ensuring providers, processors, and persisters are serializable

Posted by sb...@apache.org.
Activating kafka and hdfs modules
Ensuring providers, processors, and persisters are serializable

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1571485 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/3d7ff8f8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/3d7ff8f8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/3d7ff8f8

Branch: refs/heads/master
Commit: 3d7ff8f897ab26cac62a29dff06db118e91fa418
Parents: d256daf
Author: sblackmon <sb...@unknown>
Authored: Mon Feb 24 23:20:47 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Mon Feb 24 23:20:47 2014 +0000

----------------------------------------------------------------------
 pom.xml                                         |  2 +-
 streams-contrib/pom.xml                         |  6 +-
 .../streams/hdfs/WebHdfsPersistWriter.java      | 25 ++++++--
 .../streams/kafka/KafkaPersistReader.java       | 29 +++++----
 .../streams/kafka/KafkaPersistWriter.java       | 22 +++----
 .../streams/rss/provider/RssStreamProvider.java | 41 +++++-------
 .../twitter/provider/TwitterEventProcessor.java | 66 ++++++++++++++------
 .../twitter/provider/TwitterStreamProvider.java |  4 +-
 .../provider/TwitterTimelineProvider.java       | 10 ++-
 .../TwitterJsonDeleteActivitySerializer.java    |  2 +
 .../TwitterJsonEventActivitySerializer.java     |  3 +-
 11 files changed, 131 insertions(+), 79 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9ba1cae..366ae94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
         <clojure.version>1.4.0</clojure.version>
         <storm.version>0.9.0.1</storm.version>
         <kafka.version>0.8.0</kafka.version>
-        <zookeeper.version>3.3.4</zookeeper.version>
+        <zookeeper.version>3.4.5-cdh4.5.0</zookeeper.version>
         <netty.version>3.8.0.Final</netty.version>
         <json-path.version>0.9.0</json-path.version>
     </properties>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 1e1feca..ad559d8 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -38,15 +38,15 @@
     <modules>
         <module>streams-persist-console</module>
         <module>streams-persist-elasticsearch</module>
-        <!--<module>streams-persist-hdfs</module>-->
-        <!--<module>streams-persist-kafka</module>-->
+        <module>streams-persist-hdfs</module>
+        <module>streams-persist-kafka</module>
         <!--<module>streams-provider-datasift</module>-->
         <!--<module>streams-provider-facebook</module>-->
         <!--<module>streams-provider-gnip</module>-->
         <!--<module>streams-provider-moreover</module>-->
         <module>streams-provider-twitter</module>
         <!--<module>streams-provider-sysomos</module>-->
-        <!--<module>streams-provider-rss</module>-->
+        <module>streams-provider-rss</module>
         <!--<module>streams-proxy-semantria</module>-->
     </modules>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
index 86ea72f..de87ba5 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
@@ -16,6 +16,8 @@ import org.apache.streams.core.StreamsPersistWriter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.streams.hdfs.HdfsConfiguration;
+
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.net.URI;
@@ -278,14 +280,12 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable
                     .toString();
     }
 
-    @Override
     public void start() {
 
         connectToWebHDFS();
 
     }
 
-    @Override
     public void stop() {
 
         try {
@@ -300,12 +300,10 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable
         }
     }
 
-    @Override
     public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
         this.persistQueue = persistQueue;
     }
 
-    @Override
     public Queue<StreamsDatum> getPersistQueue() {
         return persistQueue;
     }
@@ -327,4 +325,23 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable
 
         stop();
     }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        connectToWebHDFS();
+    }
+
+    @Override
+    public void cleanUp() {
+        try {
+            flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        try {
+            close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java b/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
index 5b1bfa5..fd0dfdf 100644
--- a/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
+++ b/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
@@ -17,6 +17,8 @@ import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import org.apache.streams.kafka.KafkaConfiguration;
+
 import java.io.Serializable;
 import java.math.BigInteger;
 import java.util.List;
@@ -56,17 +58,10 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
         this.persistQueue = persistQueue;
     }
 
-    public KafkaPersistReader(KafkaConfiguration config) {
+    public void setConfig(KafkaConfiguration config) {
         this.config = config;
-        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public KafkaPersistReader(KafkaConfiguration config, Queue<StreamsDatum> persistQueue) {
-        this.config = config;
-        this.persistQueue = persistQueue;
     }
 
-    @Override
     public void start() {
         Properties props = new Properties();
         props.setProperty("serializer.encoding", "UTF8");
@@ -86,7 +81,6 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
 
     }
 
-    @Override
     public void stop() {
         consumerConnector.shutdown();
         while( !executor.isTerminated()) {
@@ -96,18 +90,21 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
         }
     }
 
-    @Override
     public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
         this.persistQueue = persistQueue;
     }
 
-    @Override
     public Queue<StreamsDatum> getPersistQueue() {
         return this.persistQueue;
     }
 
     @Override
     public StreamsResultSet readAll() {
+        return readCurrent();
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
         return null;
     }
 
@@ -138,4 +135,14 @@ public class KafkaPersistReader implements StreamsPersistReader, Serializable, R
         // once this class can be told when to shutdown by streams, it will run stop
         // stop();
     }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        start();
+    }
+
+    @Override
+    public void cleanUp() {
+        stop();
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java b/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
index 14a26f2..83b61c8 100644
--- a/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
+++ b/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
@@ -42,17 +42,10 @@ public class KafkaPersistWriter implements StreamsPersistWriter, Serializable, R
         this.persistQueue = persistQueue;
     }
 
-    public KafkaPersistWriter(KafkaConfiguration config) {
+    public void setConfig(KafkaConfiguration config) {
         this.config = config;
-        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
     }
 
-    public KafkaPersistWriter(KafkaConfiguration config, Queue<StreamsDatum> persistQueue) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
     public void start() {
         Properties props = new Properties();
 
@@ -68,17 +61,14 @@ public class KafkaPersistWriter implements StreamsPersistWriter, Serializable, R
         new Thread(new KafkaPersistWriterTask(this)).start();
     }
 
-    @Override
     public void stop() {
         producer.close();
     }
 
-    @Override
     public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
         this.persistQueue = persistQueue;
     }
 
-    @Override
     public Queue<StreamsDatum> getPersistQueue() {
         return this.persistQueue;
     }
@@ -106,4 +96,14 @@ public class KafkaPersistWriter implements StreamsPersistWriter, Serializable, R
 
         // stop();
     }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        start();
+    }
+
+    @Override
+    public void cleanUp() {
+        stop();
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
index fa76f67..9ef0bd6 100644
--- a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
+++ b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
@@ -31,7 +31,7 @@ import java.util.concurrent.*;
 /**
  * Created by sblackmon on 12/10/13.
  */
-public class RssStreamProvider /*extends BaseRichSpout*/ implements StreamsProvider, Serializable {
+public class RssStreamProvider implements StreamsProvider, Serializable {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(RssStreamProvider.class);
 
@@ -85,7 +85,6 @@ public class RssStreamProvider /*extends BaseRichSpout*/ implements StreamsProvi
         this.klass = klass;
     }
 
-    @Override
     public void start() {
 
         Preconditions.checkNotNull(this.klass);
@@ -105,21 +104,21 @@ public class RssStreamProvider /*extends BaseRichSpout*/ implements StreamsProvi
 
     }
 
-    @Override
     public void stop() {
         for (int i = 0; i < ((config.getFeeds().size() / 5) + 1); i++) {
             inQueue.add(RssEventProcessor.TERMINATE);
         }
     }
 
-    @Override
     public Queue<StreamsDatum> getProviderQueue() {
         return this.providerQueue;
     }
 
     @Override
     public StreamsResultSet readCurrent() {
-        return null;
+
+        return (StreamsResultSet) providerQueue;
+
     }
 
     @Override
@@ -131,28 +130,16 @@ public class RssStreamProvider /*extends BaseRichSpout*/ implements StreamsProvi
     public StreamsResultSet readRange(DateTime start, DateTime end) {
         return null;
     }
-//
-//    @Override
-//    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
-//        outputFieldsDeclarer.declare(new Fields("document"));
-//        outputFieldsDeclarer.declare(new Fields("type"));
-//    }
-//
-//    @Override
-//    public void open(Map map, TopologyContext topologyContext, SpoutOutputCollector spoutOutputCollector) {
-//        collector = spoutOutputCollector;
-//        run();
-//    }
-//
-//    @Override
-//    public void nextTuple() {
-//        try {
-//            collector.emit( new Values(outQueue.take(), klass) );
-//        } catch (InterruptedException e) {
-//            e.printStackTrace();
-//        }
-//
-//    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        start();
+    }
+
+    @Override
+    public void cleanUp() {
+        stop();
+    }
 
     private class RssFeedSetupTask implements Runnable {
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
index 934d533..871c5f0 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
@@ -4,7 +4,9 @@ import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
 import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
 import org.apache.streams.pojo.json.Activity;
 import org.apache.streams.twitter.pojo.Delete;
 import org.apache.streams.twitter.pojo.Retweet;
@@ -16,6 +18,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
+import java.util.List;
 import java.util.Queue;
 import java.util.Random;
 import java.util.concurrent.BlockingQueue;
@@ -23,7 +26,7 @@ import java.util.concurrent.BlockingQueue;
 /**
  * Created by sblackmon on 12/10/13.
  */
-public class TwitterEventProcessor implements Runnable {
+public class TwitterEventProcessor implements StreamsProcessor, Runnable {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(TwitterEventProcessor.class);
 
@@ -58,33 +61,25 @@ public class TwitterEventProcessor implements Runnable {
     public void run() {
 
         while(true) {
+            String item;
             try {
-                String item = inQueue.take();
-                Thread.sleep(new Random().nextInt(100));
-                if(item==TERMINATE) {
+                item = inQueue.poll();
+                if(item instanceof String && item.equals(TERMINATE)) {
                     LOGGER.info("Terminating!");
-                    return;
+                    break;
                 }
 
-                // first check for valid json
-                ObjectNode node = (ObjectNode)mapper.readTree(item);
+                ObjectNode objectNode = (ObjectNode) mapper.readTree(item);
 
-                // since data is coming from outside provider, we don't know what type the events are
-                Class inClass = TwitterEventClassifier.detectClass(item);
+                StreamsDatum rawDatum = new StreamsDatum(objectNode);
 
-                // if the target is string, just pass-through
-                if( java.lang.String.class.equals(outClass))
-                    outQueue.offer(new StreamsDatum(item));
-                else {
-                    // convert to desired format
-                    Object out = convert(node, inClass, outClass);
-
-                    if( out != null && validate(out, outClass))
-                        outQueue.offer(new StreamsDatum(out));
+                for( StreamsDatum entry : process(rawDatum)) {
+                    outQueue.offer(entry);
                 }
 
             } catch (Exception e) {
                 e.printStackTrace();
+
             }
         }
     }
@@ -161,4 +156,39 @@ public class TwitterEventProcessor implements Runnable {
         return valid;
     }
 
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        // first check for valid json
+        ObjectNode node = (ObjectNode) entry.getDocument();
+
+        String json = node.asText();
+
+        // since data is coming from outside provider, we don't know what type the events are
+        Class inClass = TwitterEventClassifier.detectClass(json);
+
+        // if the target is string, just pass-through
+        if( java.lang.String.class.equals(outClass))
+            return Lists.newArrayList(new StreamsDatum(json));
+        else {
+            // convert to desired format
+            Object out = convert(node, inClass, outClass);
+
+            if( out != null && validate(out, outClass))
+                return Lists.newArrayList(new StreamsDatum(out));
+        }
+
+        return Lists.newArrayList();
+
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
 };

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
index 49b54b2..0520b0f 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
@@ -56,7 +56,7 @@ public class TwitterStreamProvider implements StreamsProvider, Serializable {
     protected StreamingEndpoint endpoint;
     protected BasicClient client;
 
-    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+    protected ListeningExecutorService executor;
 
     private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
         return new ThreadPoolExecutor(nThreads, nThreads,
@@ -116,6 +116,8 @@ public class TwitterStreamProvider implements StreamsProvider, Serializable {
     @Override
     public void prepare(Object o) {
 
+        executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
         Preconditions.checkNotNull(this.klass);
 
         Preconditions.checkNotNull(config.getOauth().getConsumerKey());

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
index ebf9dbc..a91a7ec 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
@@ -29,7 +29,7 @@ import java.util.concurrent.*;
 /**
  * Created by sblackmon on 12/10/13.
  */
-public class TwitterTimelineProvider implements StreamsProvider, Serializable {
+public class TwitterTimelineProvider implements StreamsProvider, Serializable, Runnable {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTimelineProvider.class);
 
@@ -57,7 +57,7 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable {
 //        return inQueue;
 //    }
 
-    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+    protected ListeningExecutorService executor;
 
     protected DateTime start;
     protected DateTime end;
@@ -88,8 +88,14 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable {
         this.klass = klass;
     }
 
+    public Queue<StreamsDatum> getProviderQueue() {
+        return this.providerQueue;
+    }
+
     public void run() {
 
+        executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
         Preconditions.checkNotNull(providerQueue);
 
         Preconditions.checkNotNull(this.klass);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
index f13bf91..804f3b4 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
@@ -8,6 +8,8 @@ import org.apache.streams.pojo.json.Actor;
 import org.apache.streams.twitter.pojo.Delete;
 import org.apache.streams.twitter.pojo.Tweet;
 
+import java.io.Serializable;
+
 /**
 * Created with IntelliJ IDEA.
 * User: mdelaet

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/3d7ff8f8/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
index 83be402..9d53527 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
@@ -15,6 +15,7 @@ import org.apache.streams.pojo.json.Icon;
 import org.apache.streams.pojo.json.Provider;
 
 import java.io.IOException;
+import java.io.Serializable;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -29,7 +30,7 @@ import java.util.Map;
 * Time: 9:24 AM
 * To change this template use File | Settings | File Templates.
 */
-public abstract class TwitterJsonEventActivitySerializer implements ActivitySerializer<String> {
+public abstract class TwitterJsonEventActivitySerializer implements ActivitySerializer<String>, Serializable {
 
     public static final String DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
 


[42/71] [abbrv] git commit: altering StreamsResultSet to be easier to use

Posted by sb...@apache.org.
altering StreamsResultSet to be easier to use

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572231 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/396eb4a3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/396eb4a3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/396eb4a3

Branch: refs/heads/master
Commit: 396eb4a3c30a7c33f108ff79457d9992f4c68ceb
Parents: 4705fcb
Author: sblackmon <sb...@unknown>
Authored: Wed Feb 26 20:20:20 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Wed Feb 26 20:20:20 2014 +0000

----------------------------------------------------------------------
 .../provider/TwitterTimelineProvider.java       | 18 +++++------
 .../apache/streams/core/StreamsResultSet.java   | 32 +++++++-------------
 .../org/apache/streams/pojo/json/activity.json  |  1 +
 .../org/apache/streams/pojo/json/object.json    |  1 +
 4 files changed, 22 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/396eb4a3/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
index 052a360..4ef6672 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
@@ -25,10 +25,7 @@ import twitter4j.json.DataObjectFactory;
 
 import java.io.Serializable;
 import java.math.BigInteger;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Queue;
-import java.util.Random;
+import java.util.*;
 import java.util.concurrent.*;
 
 /**
@@ -183,7 +180,7 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable {
 
         Preconditions.checkArgument(ids.hasNext());
 
-        LOGGER.info("{} readCurrent", STREAMS_ID);
+        LOGGER.info("readCurrent");
 
         while( ids.hasNext() ) {
             Long currentId = ids.next();
@@ -191,11 +188,14 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable {
             captureTimeline(currentId);
         }
 
-        LOGGER.info("{} Finished.  Cleaning up...", STREAMS_ID);
+        LOGGER.info("Finished.  Cleaning up...");
+
+        LOGGER.info("Providing {} docs", providerQueue.size());
+
+        StreamsResultSet result =  new StreamsResultSet(providerQueue);
+
+        LOGGER.info("Exiting");
 
-        StreamsResultSet result = (StreamsResultSet) ImmutableList.copyOf(Iterators.consumingIterator(providerQueue.iterator()));
-        LOGGER.info("{} providing {} docs", STREAMS_ID, providerQueue.size());
-        LOGGER.info("{} Exiting", STREAMS_ID);
         return result;
 
     }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/396eb4a3/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java b/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
index 02bd368..d86ce6b 100644
--- a/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
+++ b/streams-core/src/main/java/org/apache/streams/core/StreamsResultSet.java
@@ -19,29 +19,19 @@
 package org.apache.streams.core;
 
 import java.math.BigInteger;
+import java.util.Iterator;
+import java.util.Queue;
 
-public interface StreamsResultSet extends Iterable<StreamsDatum> {
-    /**
-     * Get the time that the result set started collecting
-     * @return long representing time since epoch
-     */
-    long getStartTime();
+public class StreamsResultSet implements Iterable<StreamsDatum> {
 
-    /**
-     * Get the time that the result set stopped collecting
-     * @return long representing time since epoch
-     */
-    long getEndTime();
+    Queue<StreamsDatum> queue;
 
-    /**
-     * Get the source Unique identifier
-     * @return String id
-     */
-    String getSourceId();
+    public StreamsResultSet(Queue<StreamsDatum> queue) {
+        this.queue = queue;
+    }
 
-    /**
-     * Get the maximum id of the items in the result set
-     * @return the max sequence ID
-     */
-    BigInteger getMaxSequence();
+    @Override
+    public Iterator<StreamsDatum> iterator() {
+        return queue.iterator();
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/396eb4a3/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
index d5e2d27..2cdd233 100644
--- a/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
+++ b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
@@ -2,6 +2,7 @@
   "type" : "object",
   "title" : "activity",
   "javaType": "org.apache.streams.pojo.json.Activity",
+  "javaInterfaces": ["java.io.Serializable"],
   "description" : "An activity construct recounts what an actor did to an object in the past. If there is no actor it simply describes the change.",
   "additionalProperties": true,
   "properties": {

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/396eb4a3/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
----------------------------------------------------------------------
diff --git a/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
index 349ca71..d51db27 100644
--- a/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
+++ b/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
@@ -2,6 +2,7 @@
   "type" : "object",
   "title" : "object",
   "javaType": "org.apache.streams.pojo.json.ActivityObject",
+  "javaInterfaces": ["java.io.Serializable"],
   "description" : "Basic object on the web. The only required property is the id",
   "properties" : {
     "id" : {


[66/71] [abbrv] changing build version back to 0.1-SNAPSHOT to prepare for merge

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt b/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
deleted file mode 100644
index 858756a..0000000
--- a/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361363177973366787","filter_level":"medium","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":7761,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5062,"description":"I hate everything. Especially you.","friends_count":385,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":241}},"salience":{"content":{"sentiment":5}},"klout":{"score":42},"interaction":{"schema":{"version":3},"content":"Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f7
 49b40d9ab00e0742908a9ff4d74","author":{"id":472480397,"username":"InsulinLover","name":"Alexander","link":"http://twitter.com/InsulinLover","language":"en","avatar":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/InsulinLover/statuses/361363177973366787","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361366536625201152","retweeted":{"id":"361363177973366787","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","user":{"geo_enabled":true,"statuses_count":7765,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5064,"description":"I hate everything. Especially you.","friends_count":386,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":242}},"retweet":{"id":"361366536625201152","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/#!/download/ipad\" rel=\"nofollow\">Twitter for iPad<\/a>","count":1,"created_at":"Sun, 28 Jul 2013 0
 6:04:30 +0000","user":{"location":"Henderson, NV","statuses_count":4851,"lang":"en","url":"https://www.facebook.com/DonMfPatchUFemaleDogs","utc_offset":-25200,"id":537777703,"time_zone":"Pacific Time (US & Canada)","favourites_count":1235,"description":"Otherwise known as @Slender_Sir","friends_count":240,"name":"Iram Gonzalez","created_at":"Tue, 27 Mar 2012 02:35:56 +0000","screen_name":"gonzalez_iram","id_str":"537777703","profile_image_url":"http://a0.twimg.com/profile_images/3325430053/65b2d200115a97ff3f9061e9cc672136_normal.jpeg","followers_count":232},"lang":"en"}},"salience":{"content":{"sentiment":5}},"klout":{"score":40},"interaction":{"schema":{"version":3},"content":"RT @InsulinLover: Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f74b90e3eab00e07452795b51705e","author":{"id":537777703,"username":"gonzalez_iram","name":"Iram Gonzalez","link":"http://twitter.com/gonzalez_iram","language":"en","avatar":"http://a0.twimg.com/profile_images/3325430053/65b
 2d200115a97ff3f9061e9cc672136_normal.jpeg"},"source":"Twitter for iPad","link":"http://twitter.com/gonzalez_iram/statuses/361366536625201152","created_at":"Sun, 28 Jul 2013 06:04:30 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Weather","score":0.65636122226715}]}},"facebook":{"id":"557546084284515_565003810205409","message":"To get arm and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"application":"Pages Manager for Android","source":"Pages Manager for Android (121876164619130)","created_at":"Fri, 26 Jul 2013 19:39:11 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f62b0b691a980e066608cf545f2d6","content":"To get arm 
 and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"source":"Pages Manager for Android (121876164619130)","link":"http://www.facebook.com/557546084284515_565003810205409","subtype":"status","created_at":"Fri, 26 Jul 2013 19:39:25 +0000","type":"facebook"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"beyatch":"yo","tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":6}},"facebook":{"id":"741220477_10153006009870478","message":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","created_at":"Thu, 25 Jul 2013 16:51:28 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f54a72fb6a800e06682e7cdbf4b5c","content":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","subtype":"status","created_at":"Thu, 25 Jul 2013 16:51:56 +0000","type":"f
 acebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"facebook":{"id":"165282606905632_387817134652177","message":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.com/165282606905632/picture"},"source":"web","created_at":"Sat, 27 Jul 2013 02:20:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6630a53dae80e06600495e73832a","content":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.c
 om/165282606905632/picture"},"source":"web","link":"http://www.facebook.com/165282606905632_387817134652177","subtype":"status","created_at":"Sat, 27 Jul 2013 02:20:17 +0000","type":"facebook"},"links":{"title":["Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog"],"normalized_url":["http://crazyforcouponsandfreebies.com/blog?p=60571"],"created_at":["Sat, 27 Jul 2013 02:20:27 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog","description":" You Can Get Arm & Hammer On Sale At County Market For $1.99 Each Go Here And Print Your $1/3 OP-$4.96 WYB 3 + Tax GO HERE HOT DEAL!~Cheryl","image":"http://crazyforcouponsandfreebies.com/blog/wp-content/uploads/2013/07/2013-07-24_1918.png","site_name":"The Daily Blog","type":"article","url":"http://crazyforcouponsandfreebies.com/blog/?p=60571"}],"content_type":["text/html"],"lang":["en-us"]},"
 url":["http://crazyforcouponsandfreebies.com/blog/?p=60571"]},"language":{"tag":"mt","confidence":62}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["Tide","ArmAndHammer"]}},"twitter":{"id":"360731330335608833","filter_level":"medium","text":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","source":"<a href=\"http://favstar.fm\" rel=\"nofollow\">Favstar.FM<\/a>","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","lang":"en","user":{"location":"Halifax, Canada","statuses_count":26676,"lang":"en","url":"http://favstar.fm/users/CindyMeakin/recent","id":267645953,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":156111,"description":"I wear sun glasses at night so people don't talk to me.","friends_count":2162,"name":"~Cindy~","created_at":"Thu, 17 Mar 2011 08:57:31 +0000","screen_name":"CindyMeakin","id_str":"267645953","profile_image_url":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg
 ","followers_count":7604,"listed_count":407}},"salience":{"content":{"sentiment":0}},"klout":{"score":61},"interaction":{"schema":{"version":3},"content":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","id":"1e2f5eaf4a2da280e074c2f2b84aa4f8","author":{"id":267645953,"username":"CindyMeakin","name":"~Cindy~","link":"http://twitter.com/CindyMeakin","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg"},"source":"Favstar.FM","link":"http://twitter.com/CindyMeakin/statuses/360731330335608833","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361614949908361217","filter_level":"medium","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","mention_ids":[106891542],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","in_reply_to_user_id":"106891542","lang":"en","mentions":["THEmrReynolds"],"user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"Memoi
 rsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":423,"listed_count":10}},"salience":{"content":{"sentiment":0}},"klout":{"score":57},"interaction":{"schema":{"version":3},"content":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d576eeeaa80e074ae7154d45ee6","author":{"id":49340813,"username":"MemoirsofaGAYsh","name":"Dominique Delacroix","link":"http://twitter.com/MemoirsofaGAYsh","language":"en","avatar":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg"},"source":"Twitter for iPhone","mention_ids":[106891542],"link":"http://twitter.com/MemoirsofaGAYsh/statuses/361614949908361217","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"youtube":{"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponing"},"title":"Cvs red box coupons week of 07/07","duration":"58","category":"entertainment","videolink":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 08 Jul 2013 02:13:58 +0000","contenttype":"html","type":"video"},"interaction":{"schema":{"version":3},"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponin
 g"},"title":"Cvs red box coupons week of 07/07","link":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 29 Jul 2013 01:22:47 +0000","type":"youtube","contenttype":"html"},"language":{"tag":"en","confidence":62}}
-{"w2o":{"tags":{"topic":["StainRemoval"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-5}},"facebook":{"id":"602766199_10151557023101200","message":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"application":"Facebook for iPhone","source":"Facebook for iPhone (6628568379)","created_at":"Tue, 30 Jul 2013 00:06:43 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f8abea632ab80e066b5fddc080fa8","content":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766
 199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"source":"Facebook for iPhone (6628568379)","subtype":"status","created_at":"Tue, 30 Jul 2013 00:06:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_male"}}
-{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361950303878254592","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Mon, 29 Jul 2013 20:44:11 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Alberta,Canada ","statuses_count":208685,"lang":"en","url":"http://rocketgirl00.blogspot.com","id":23870867,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":105,"description":"I'm married,like to travel,think that friends and family are the most important thing in life.","friends_count":2842,"name":"Doris ","created_at":"Thu, 12 Mar 2009 01:36:56 +0000","screen_name":"dewinner","id_str":"23870867"
 ,"profile_image_url":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg","followers_count":2591,"listed_count":81}},"salience":{"content":{"sentiment":0}},"klout":{"score":47},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","id":"1e2f88f9f3b1af80e074bd3a2171a578","author":{"id":23870867,"username":"dewinner","name":"Doris ","link":"http://twitter.com/dewinner","language":"en","avatar":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/dewinner/statuses/361950303878254592","created_at":"Mon, 29 Jul 2013 20:44:11 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["h
 ttp://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Sun, 28 Jul 2013 22:08:38 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry
 -detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"interaction":{"schema":{"version":3},"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","author":{},"title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","created_at":"Tue, 30 Jul 2013 09:44:17 +0000","type":"board","contenttype":"html"},"language":{"tag":"en","confidence":95},"board":{"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","thread":"
 http://forum.gon.com/showthread.php?t=762688","domain":"www.gon.com","created_at":"Wed, 24 Jul 2013 11:36:00 +0000","contenttype":"html","type":"post"}}
-{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"363008881179369473","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Thu, 01 Aug 2013 18:50:36 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1262903550,"friends_count":1,"name":"serenecerulean","created_at":"Tue, 12 Mar 2013 21:31:35 +0000","screen_name":"serenecerulean","id_str":"1262903550","statuses_count":6,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No problem! ARM &amp; H
 AMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","id":"1e2fadb4069ea600e074e3962995fde4","author":{"id":1262903550,"username":"serenecerulean","name":"serenecerulean","link":"http://twitter.com/serenecerulean","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png"},"source":"Tweet Button","link":"http://twitter.com/serenecerulean/statuses/363008881179369473","created_at":"Thu, 01 Aug 2013 18:50:36 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Thu, 01 Aug 2013 12:23:26 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra 
 Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-2,"topics":[{"hits":0,"name":"Beverages","score":1.0265922546387}],"entities":[{"sentiment":0,"confident":1,"name":"Danny","evidence":1,"about":1,"label":"Person","themes":["washing soda"],"type":"Person"}]}},"facebook":{"id":"506582967_10151624053632968","message":"Hate when you are getting ready to do something productive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","created_at":"Sat, 03 Aug 2013 17:30:40 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fc626a99ea000e0664766345bbd9e","content":"Hate when you are getting ready to do something pro
 ductive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","subtype":"status","created_at":"Sat, 03 Aug 2013 17:30:50 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362021838882209792","filter_level":"medium","text":"Luv da smell of gain and arm&amp;hammer washing powder","source":"<a href=\"https://path.com/\" rel=\"nofollow\">Path<\/a>","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","lang":"en","user":{"statuses_count":6590,"lang":"en","utc_offset":-10800,"id":762376266,"time_zone":"Atlantic Time (Canada)","favourites_count":133,"description":"#teamproudmommy #hardworking #independent #teamjrrockojc: Thru it all I still maintain and smile, with God on my side I don't care who's against me","friends_count":280,"name":"toya","created_at":"Thu, 16 Aug 2012 21:36:25 +0000","screen_name":"1ofakind_87","id_str":"762376266","profile_image_url":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg","followers_count":137}},"salience":{"content":{"sentiment":0}},"klout":{"score":30},"interaction":{"schema":{"version":3},"content":
 "Luv da smell of gain and arm&amp;hammer washing powder","id":"1e2f8b755662af80e0745b9f6321114e","author":{"id":762376266,"username":"1ofakind_87","name":"toya","link":"http://twitter.com/1ofakind_87","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg"},"source":"Path","link":"http://twitter.com/1ofakind_87/statuses/362021838882209792","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362230621323526145","retweeted":{"id":"362229784211750912","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"retweet":{"id":"362230621323526145","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter f
 or iPhone<\/a>","count":3,"mention_ids":[279691748],"created_at":"Tue, 30 Jul 2013 15:18:04 +0000","user":{"geo_enabled":true,"statuses_count":40607,"lang":"en","utc_offset":-18000,"id":442045360,"time_zone":"Central Time (US & Canada)","favourites_count":13074,"friends_count":190,"name":"sM","created_at":"Tue, 20 Dec 2011 17:58:45 +0000","screen_name":"SeanMeier_","id_str":"442045360","profile_image_url":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg","followers_count":1034,"listed_count":1},"mentions":["TheVikkiMinaj"],"lang":"en"}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Food","score":0.50305610895157}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"RT @legitCarll: We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92b3acd9ae00e0745976b013340a","author":{"id":442045360,"username":"SeanMei
 er_","name":"sM","link":"http://twitter.com/SeanMeier_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/SeanMeier_/statuses/362230621323526145","created_at":"Tue, 30 Jul 2013 15:18:04 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362037402786729986","filter_level":"medium","text":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","lang":"en","user":{"geo_enabled":true,"location":"North Texas","statuses_count":24770,"lang":"en","url":"http://d1ligence.tumblr.com","id":224686933,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":638,"description":"Jussa yung nicca on the virtue of internet prosperity. Artist; ? of Elev?ted collective.","friends_count":670,"name":"Paul, The Apostle ","created_at":"Thu, 09 Dec 2010 16:26:43 +0000","screen_name":"MasterChefP","id_str":"224686933","profile_image_url":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg","followers_count":939,"listed_co
 unt":6}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","id":"1e2f8bff8bb4a280e074878bb70afd4a","author":{"id":224686933,"username":"MasterChefP","name":"Paul, The Apostle ","link":"http://twitter.com/MasterChefP","language":"en","avatar":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/MasterChefP/statuses/362037402786729986","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","Advertising","ConcentratedFormulas","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4,"topics":[{"hits":0,"name":"Science","score":1.2123092412949},{"hits":0,"name":"Technology","score":0.59644603729248},{"hits":0,"name":"Hardware","score":0.4546263217926}],"entities":[{"sentiment":0,"confident":1,"name":"Procter & gamble","evidence":1,"about":1,"label":"Company","themes":["liquid laundry detergent","commercial products","ea dawn","liquid offers","grease-cutting ingredients","improved formula","longer-lasting suds","sink changeover"],"type":"Company"},{"sentiment":0,"confident":1,"name":"\"Liquid Detergents (Surfactant Science)\"","evidence":1,"about":0,"label":"Quote","themes":["liquid detergents","helpful search engine","different books","actual prices","fast search"],"type":"Quote"}]}},"facebook":{"id":"1406941246186240_1407041779509520","message":"Liquid Detergents (Surfactant Science)\n\n
 If you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry detergent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant sci
 ence);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"application":"Filipspacename","source":"Filipspacename (104453219725181)","created_at":"Tue, 06 Aug 2013 22:40:46 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fee93be16ab00e066dedfa2d1c568","content":"Liquid Detergents (Surfactant Science)\n\nIf you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry deterg
 ent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant science);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"source":"Filipspacename (104453219725181)","subtype":"status","created_at":"Tue, 06 Aug 2013 22:41:01 +0
 000","type":"facebook"},"language":{"tag":"en","confidence":99}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364861019413164032","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 21:30:20 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"location":"Ontario, Canada","statuses_count":19585,"lang":"en","url":"http://yeewittlethings.com","id":438700992,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":132,"description":"#CDN Mom of 2 wonderful kids. Wife to an amazing hubby. #PR friendly #Blogger. #Reviews, #Giveaways, Random Musings & Every day living! #KinderMom","friends_count":7875,"name":"Yee Wittle Things","created_at":"Fri, 16 Dec 2011 22:33:08 +0000","screen_name":"yeewittlethings","id_str":"438700992","profile_image_url":"http://a0
 .twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg","followers_count":8712,"listed_count":58}},"salience":{"content":{"sentiment":0}},"klout":{"score":63},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","id":"1e2fedf64fcfae00e074af57bfa66a5c","author":{"id":438700992,"username":"yeewittlethings","name":"Yee Wittle Things","link":"http://twitter.com/yeewittlethings","language":"en","avatar":"http://a0.twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/yeewittlethings/statuses/364861019413164032","created_at":"Tue, 06 Aug 2013 21:30:20 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-se
 nsitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364845410017230848","filter_level":"medium","text":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","mention_ids":[326314186],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"ThatGuy_Jesse10","in_reply_to_status_id":"364845085571031041","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","in_reply_to_user_id":"326314186","lang":"en","mentions":["ThatGuy_Jesse10"],"user":{"geo_enabled":true,"location":"Phoeniquera","statuses_count":41253,"lang":"en","utc_offset":-25200,"id":403930347,"time_zone":"Arizona","favourites_count":4362,"description":"You're gonna like THIS guy he's alright, He's a Good Fella.. 93 til.","friends_count":330,"name":"Simba","created_at":"Thu, 03 Nov 2011 06:10:20 +0000","screen_name":"JuanGTho","id_str":"403930347","profile_image_url":"http://a0.twimg.com/profile_images/37880000018266
 5838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg","followers_count":359}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Hannah Montana","evidence":1,"about":1,"label":"Person","type":"Person"}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","id":"1e2fed6ba80dad00e074579fbdc03880","author":{"id":403930347,"username":"JuanGTho","name":"Simba","link":"http://twitter.com/JuanGTho","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000182665838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[326314186],"link":"http://twitter.com/JuanGTho/statuses/364845410017230848","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","type":"twitter","mentions":["ThatGuy_Jesse10"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Convenience","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-6,"topics":[{"hits":0,"name":"Beverages","score":1.056524515152}],"entities":[{"sentiment":-12,"confident":1,"name":"Target","evidence":1,"about":1,"label":"Company","themes":["brand laundry soap","cleaning team","washing soda"],"type":"Company"}]}},"facebook":{"id":"100005166043472_180980985417435","message":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/pro
 file.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Wed, 07 Aug 2013 02:32:06 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2ff098d015a700e066f80d5c4c0dd0","content":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/profile.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"source":"Mobile (2915120374)","link":"http
 ://www.facebook.com/100005166043472_180980985417435","subtype":"status","created_at":"Wed, 07 Aug 2013 02:32:23 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":2}},"facebook":{"id":"753060211_10153029318745212","message":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"application":"Facebook for Android","source":"Facebook for Android (350685531728)","created_at":"Thu, 25 Jul 2013 18:08:27 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f555341edaf80e066003d5ea01da0","content":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/
 profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"source":"Facebook for Android (350685531728)","subtype":"status","created_at":"Thu, 25 Jul 2013 18:08:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Sustainability","ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361171385718018048","filter_level":"medium","text":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","source":"<a href=\"http://satehut.com\" rel=\"nofollow\">Satehut<\/a>","domains":["dish-washers-dryers.com"],"created_at":"Sat, 27 Jul 2013 17:09:03 +0000","links":["http://dish-washers-dryers.com/?p=3858"],"lang":"en","media":[{"id":361171385722212352,"sizes":{"small":{"w":104,"h":140,"resize":"fit"},"thumb":{"w":104,"h":140,"resize":"crop"},"large":{"w":104,"h":140,"resize":"fit"},"medium":{"w":104,"h":140,"resize":"fit"}},"media_url_https":"https://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","media_url":"http://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","expanded_url":"http://twitter.com/Sate_Hut/status/361171385718018048/photo/1","id_str":"361171385722212352","display_url":"pic.twitter.com/7XvuTjDd0v","type":"photo","url
 ":"http://t.co/7XvuTjDd0v"}],"user":{"location":"Miami, FL","statuses_count":20248,"lang":"en","url":"http://SateHut.com","utc_offset":-14400,"id":342319003,"time_zone":"Eastern Time (US & Canada)","description":"For good sate (or Sateh) you can be anywhere!  We give you the recipes and ingredients to make it at home!","name":"Sate Hut","created_at":"Mon, 25 Jul 2011 20:37:12 +0000","screen_name":"Sate_Hut","id_str":"342319003","profile_image_url":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg","followers_count":15}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"8/31/13","evidence":1,"about":1,"label":"Date","type":"Pattern"}]}},"klout":{"score":13},"interaction":{"schema":{"version":3},"content":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","id":"1e2f6df3ca32a180e0745c1dc0cceda4","author":{"id":342319003,"username":"Sate_Hut","name":"Sate Hut","link":"http://
 twitter.com/Sate_Hut","language":"en","avatar":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg"},"source":"Satehut","link":"http://twitter.com/Sate_Hut/statuses/361171385718018048","created_at":"Sat, 27 Jul 2013 17:09:03 +0000","type":"twitter"},"links":{"title":["20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers"],"normalized_url":["http://dish-washers-dryers.com/?p=3858"],"created_at":["Sat, 27 Jul 2013 17:09:07 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers","description":"$0.99 (0 Bids)End Date: Saturday Jul-27-2013 19:47:26 PDTBuy It Now for only: $2.50Buy It Now | Bid now | Add to watch list","image":"http://thumbs1.ebaystatic.com/m/m5EkUMKNxAoIDYVzVioQCRg/140.jpg","site_name":"Dish-Washers & Dryers","type":"article","url":"http://dish-washers-dryers.com/?p=3858"}],"content_type":["text/html"],"lang":["en-us"
 ]},"url":["http://dish-washers-dryers.com/?p=3858"]},"language":{"tag":"en","confidence":62}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0}},"facebook":{"id":"297050503659016_614567205240676","message":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","created_at":"Fri, 26 Jul 2013 23:40:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f64cb0481ae80e0668a518d22dfe2","content":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","link":"http://www.facebook.com/297050503659016_614567205240
 676","subtype":"status","created_at":"Fri, 26 Jul 2013 23:40:22 +0000","type":"facebook"},"links":{"title":["Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work"],"normalized_url":["http://cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727"],"created_at":["Fri, 26 Jul 2013 23:40:16 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p22sqw-j1g","http://www.cookcouponwork.com/?p=73114"]],"meta":{"twitter":[{"site":"@CookCouponWork","card":"summary","creator":"@CookCouponWork"}],"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work","description":"Need Laundry Detergent? Pick up a good deal on Arm & Hammer at Walgreens (til 7/27) Deal Idea: Buy (2) Arm & Hammer 2x Liquid Detergent, 25 ? 32 loads, $2.29 = $4.58 Use (1) $0.75/2 Arm & Hammer Liquid or Powder Detergent, or Fabric Softener Sheets, exp. 9/30/13 (SS 07/14/13) Pay $3.83 =$1.92 
 EACH!","image":"http://www.cookcouponwork.com/wp-content/uploads/2013/07/543-300x213.jpg","type":"article","site_name":"Cook, Coupon, Work","url":"http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"}],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362022978235531264","filter_level":"medium","text":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","hashtags":["notracist"],"lang":"en","user":{"location":"Knoxville, TN","statuses_count":3202,"lang":"en","utc_offset":-14400,"id":442907220,"time_zone":"Eastern Time (US & Canada)","favourites_count":379,"description":"Never had a headache. Unable to grow a full beard.","friends_count":52,"name":"Uncle_D","created_at":"Wed, 21 Dec 2011 16:05:22 +0000","screen_name":"_UncleD_","id_str":"442907220","profile_image_url":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg","followers_count":59}},"salience":{"content":{"sentiment":6}},"klout":{"score":40},"interac
 tion":{"schema":{"version":3},"content":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","id":"1e2f8b7f6ed8a100e074a98a4f29f3bc","author":{"id":442907220,"username":"_UncleD_","name":"Uncle_D","link":"http://twitter.com/_UncleD_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/_UncleD_/statuses/362022978235531264","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"100000487215935_704899129536321","message":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile.php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Sat, 27 Jul 2013 16:30:08 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6d9ccde6a800e06674caf5177576","content":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile
 .php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"source":"Mobile (2915120374)","link":"http://www.facebook.com/100000487215935_704899129536321","subtype":"status","created_at":"Sat, 27 Jul 2013 16:30:26 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_female"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361615185913462785","retweeted":{"id":"361614949908361217","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","in_reply_to_user_id":"106891542","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"MemoirsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":4
 23,"listed_count":10}},"retweet":{"id":"361615185913462785","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","count":1,"mention_ids":[106891542],"created_at":"Sun, 28 Jul 2013 22:32:33 +0000","user":{"location":"soundcloud.com/mrReynoldsMusic","statuses_count":13351,"lang":"en","url":"http://www.THEmrReynolds.com","id":106891542,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":1353,"description":"I Mock The Party","friends_count":1554,"name":"Mr Reynolds","created_at":"Thu, 21 Jan 2010 00:37:45 +0000","screen_name":"THEmrReynolds","id_str":"106891542","profile_image_url":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg","followers_count":7938,"listed_count":49},"mentions":["THEmrReynolds"],"lang":"en"}},"salience":{"content":{"sentiment":0}},"klout":{"score":59},"int
 eraction":{"schema":{"version":3},"content":"RT @MemoirsofaGAYsh: @THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d5984fda680e074135a4b824dd0","author":{"id":106891542,"username":"THEmrReynolds","name":"Mr Reynolds","link":"http://twitter.com/THEmrReynolds","language":"en","avatar":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg"},"source":"Twitter for Android","mention_ids":[106891542],"link":"http://twitter.com/THEmrReynolds/statuses/361615185913462785","created_at":"Sun, 28 Jul 2013 22:32:33 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362467813958500354","filter_level":"medium","text":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","source":"<a href=\"http://www.networkedblogs.com/\" rel=\"nofollow\">NetworkedBlogs<\/a>","domains":["nblo.gs"],"created_at":"Wed, 31 Jul 2013 07:00:35 +0000","links":["http://nblo.gs/NEwDq"],"lang":"en","user":{"location":"Canada","statuses_count":2034,"lang":"en","url":"http://www.zeemaid.com","id":25435820,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":17,"description":"I am Zeemaid.  Momma to 3, an avid reader and an all around sassy momma.  I own my own video business, am married to my Mr. Darcy, love to throw pots and write","friends_count":1976,"name":"Zeemaid","created_at":"Fri, 20 Mar 2009 01:59:59 +0000","screen_name":"Zeemaid","id_str":"25435820","profile_image_url":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg","followers_count":10
 27,"listed_count":30}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","id":"1e2f9aee5d36ab80e0745a0744aef83a","author":{"id":25435820,"username":"Zeemaid","name":"Zeemaid","link":"http://twitter.com/Zeemaid","language":"en","avatar":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg"},"source":"NetworkedBlogs","link":"http://twitter.com/Zeemaid/statuses/362467813958500354","created_at":"Wed, 31 Jul 2013 07:00:35 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Sensitive Skin?Review & Giveaway"],"normalized_url":["http://networkedblogs.com/NEwDq"],"created_at":["Wed, 31 Jul 2013 07:00:43 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://nblo.gs/NEwDq"]],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Sensitive Skin?Review & Giveaway","description":"When you love a product you want to stick with it bu
 t as we all know price is a huge factor as to whether we continue to buy the brand we love or go elsewhere. Fortunately, Arm & Hammer?s affordability makes it easy for me to keep my cupboard well stocked with the Arm & Hammer products I love. Not","image":"http://lh6.ggpht.com/-8PeRiK68OMk/UfhgV8guCFI/AAAAAAAACgs/ubCE0V6ffqQ/CAN_AHLL_Sensitive_203L_thumb7.jpg?imgmax=800","site_name":"In the Mommy Trenches","type":"article","url":"http://networkedblogs.com/NEwDq"}],"content_type":["text/html"],"lang":["unknown"]},"url":["http://networkedblogs.com/NEwDq"]},"language":{"tag":"en","confidence":63}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"478623348890311_497707713648541","message":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/pictu
 re"},"source":"web","created_at":"Wed, 31 Jul 2013 06:44:42 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f9acadcb2a900e066515ce688d7d0","content":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/picture"},"source":"we
 b","link":"http://www.facebook.com/478623348890311_497707713648541","subtype":"status","created_at":"Wed, 31 Jul 2013 06:44:57 +0000","type":"facebook"},"language":{"tag":"en","confidence":74}}
-{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362269562365943809","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Tue, 30 Jul 2013 17:52:48 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Toronto,Ontario","statuses_count":29115,"lang":"en","utc_offset":-14400,"id":574859993,"time_zone":"Eastern Time (US & Canada)","favourites_count":13,"friends_count":1727,"name":"Andrew P","created_at":"Tue, 08 May 2012 23:07:45 +0000","screen_name":"apham17","id_str":"574859993","profile_image_url":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png","followers_count":455,"listed_count":7}
 },"salience":{"content":{"sentiment":0}},"klout":{"score":48},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","id":"1e2f940d87f9a800e074438bcad545f2","author":{"id":574859993,"username":"apham17","name":"Andrew P","link":"http://twitter.com/apham17","language":"en","avatar":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/apham17/statuses/362269562365943809","created_at":"Tue, 30 Jul 2013 17:52:48 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Mon, 29 Jul 2013 23:20:31 +00
 00"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-sce
 nts-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362229784211750912","filter_level":"medium","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","mention_ids":[279691748],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","lang":"en","mentions":["TheVikkiMinaj"],"user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Foo
 d","score":0.50475257635117}]}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92ac430aa080e0748f373f80284e","author":{"id":223342789,"username":"legitCarll","name":"Carlage","link":"http://twitter.com/legitCarll","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/legitCarll/statuses/362229784211750912","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"365738027701645314","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Fri, 09 Aug 2013 07:35:15 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1571552280,"friends_count":2,"name":"tim tunner","created_at":"Fri, 05 Jul 2013 23:43:28 +0000","screen_name":"timtunner0987","id_str":"1571552280","statuses_count":32,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":10},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No pro
 blem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","id":"1e300c63b51fab80e074e71f77da87ca","author":{"id":1571552280,"username":"timtunner0987","name":"tim tunner","link":"http://twitter.com/timtunner0987","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png"},"source":"Tweet Button","link":"http://twitter.com/timtunner0987/statuses/365738027701645314","created_at":"Fri, 09 Aug 2013 07:35:15 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Fri, 09 Aug 2013 07:35:18 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMM
 ER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","StainRemoval","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364421048600510464","filter_level":"medium","text":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","source":"<a href=\"http://uTweetDeals.com\" rel=\"nofollow\">U Tweet Deals<\/a>","domains":["bit.ly"],"created_at":"Mon, 05 Aug 2013 16:22:03 +0000","hashtags":["laundry"],"links":["http://bit.ly/15zY9H5"],"lang":"en","user":{"statuses_count":59620,"lang":"en","utc_offset":-25200,"id":1131374341,"time_zone":"Arizona","description":"We search for deals on Home and Garden related products. Bath, Kitchen, Furniture, Garden and more. *** I Follow Back ***","friends_count":1939,"name":"Home and Garden","created_at":"Tue, 29 Jan 2013 15:37:21 +0000","screen_name":"HomeGardenBuys","id_str":"1131374341","followers_count":1706,"profile_image_url":"http://a0.twimg.com/profile_images/3531065622/bc956b2a
 9da482ed071f2dbcdabea80b_normal.jpeg","listed_count":95}},"salience":{"content":{"sentiment":0}},"klout":{"score":49},"interaction":{"schema":{"version":3},"content":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","id":"1e2fdeb29810a780e0747af2c3544504","author":{"id":1131374341,"username":"HomeGardenBuys","name":"Home and Garden","link":"http://twitter.com/HomeGardenBuys","language":"en","avatar":"http://a0.twimg.com/profile_images/3531065622/bc956b2a9da482ed071f2dbcdabea80b_normal.jpeg"},"source":"U Tweet Deals","link":"http://twitter.com/HomeGardenBuys/statuses/364421048600510464","created_at":"Mon, 05 Aug 2013 16:22:03 +0000","type":"twitter"},"links":{"title":["10 Bottles Arm Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent | eBay"],"normalized_url":["http://ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"],"created_at":["Mon, 05 Aug 2013 16:22:47 +0000"],"retweet_
 count":[0],"code":[200],"hops":[["http://bit.ly/15zY9H5","http://rover.ebay.com/rover/1/711-53200-19255-0/1/?type=2&campid=5337311970&toolid=10001&ext=121154908808&item=121154908808"]],"meta":{"keywords":[["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","Home & Garden","Housekeeping & Organization","Laundry Supplies"]],"description":["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay"],"charset":["UTF-8"],"opengraph":[{"title":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","description":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay","image":"http://thumbs1.ebaystatic.com/d/l225/m/mSRDHPf7_rrZnR75JtQxcCA.jpg","type":"ebay-objects:item","site_name":"eBay","url":"http://www.ebay.com/itm/10-bottles-Arm-Hammer-Plus-Oxi-C
 lean-Stain-Fighters-Liquid-Laundry-Detergent-/121154908808"}],"content_type":["text/html"],"lang":["en-gb"]},"url":["http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"]},"language":{"tag":"en","confidence":63}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364879533691772928","filter_level":"medium","text":"Arm and hammer carpet powder is amazing....#justsayin","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","hashtags":["justsayin"],"lang":"en","user":{"location":"Indiana US of A","statuses_count":1400,"lang":"en","url":"http://www.quirkycreative.blogspot.com","utc_offset":-14400,"id":93704952,"time_zone":"Eastern Time (US & Canada)","favourites_count":9,"description":"Writer~ Random ~Quirky ~Creative ~Wife ~Believer ~Extroverted Introvert ~Animal Person ~Brony ~Girly-Girl w/ Tomboy Tendencies @JAInspired","friends_count":493,"name":"Rachel M","created_at":"Mon, 30 Nov 2009 20:20:15 +0000","screen_name":"thisrandomgirl","id_str":"93704952","profile_image_url":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg","followers_count":102}},"sa
 lience":{"content":{"sentiment":4}},"klout":{"score":18},"interaction":{"schema":{"version":3},"content":"Arm and hammer carpet powder is amazing....#justsayin","id":"1e2fee9abeffa100e074fa86d21b91e6","author":{"id":93704952,"username":"thisrandomgirl","name":"Rachel M","link":"http://twitter.com/thisrandomgirl","language":"en","avatar":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/thisrandomgirl/statuses/364879533691772928","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","type":"twitter"},"language":{"tag":"en","confidence":61},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364749039100633088","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 14:05:22 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"statuses_count":4853,"lang":"en","url":"http://www.mykidsguide.com/","id":612438542,"favourites_count":3,"description":"Everything you need to know about educational games and  activities for kids.","friends_count":613,"name":"MyKidsGuide","created_at":"Tue, 19 Jun 2012 10:11:57 +0000","screen_name":"MyKidsGuide","id_str":"612438542","followers_count":1542,"profile_image_url":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg","listed_count":14}},"salience":{"content":{"sentiment":0}},"klout":{"score":49
 },"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","id":"1e2fea13bbd7ad00e0742b3a16342e3e","author":{"id":612438542,"username":"MyKidsGuide","name":"MyKidsGuide","link":"http://twitter.com/MyKidsGuide","language":"en","avatar":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/MyKidsGuide/statuses/364749039100633088","created_at":"Tue, 06 Aug 2013 14:05:22 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm 
 & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Scent","CouponUsage"],"brand":["Tide","ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Gain","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"},{"sentiment":0,"confident":1,"name":"Tide","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"}]}},"facebook":{"id":"100001334708168_529689457085540","message":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $15\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author"
 :{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif","application":"Facebook for Android","source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3","created_at":"Mon, 05 Aug 2013 13:41:25 +0000","type":"photo"},"interaction":{"schema":{"version":3},"id":"1e2fdd4b8cefa080e0663432906416b4","content":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $1
 5\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author":{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/100001334708168_529689457085540","subtype":"photo","created_at":"Mon, 05 Aug 2013 13:41:44 +0000","type":"facebook"},"links":{"title":["Photos from Albert Wells&#039;s post | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"],"created_at":["Mon, 05 Aug 2013 13:41:51 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]],"meta":{"charset":["UTF-8"],"content_type":["text/html"],"lang":["en"]},"url":["https://www.facebook.c
 om/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364070259025649666","filter_level":"medium","text":"Somebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":31708,"lang":"en","utc_offset":-18000,"id":57967571,"time_zone":"Quito","favourites_count":38,"description":"http://ask.fm/thatDudeBiggz","friends_count":727,"name":"Sen?r","created_at":"Sat, 18 Jul 2009 16:18:33 +0000","screen_name":"thatDudeBiggz","id_str":"57967571","profile_image_url":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg","followers_count":658,"listed_count":5}},"salience":{"content":{"sentiment":0}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"S
 omebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","id":"1e2fd286f28cac00e074ec9c56b152ac","author":{"id":57967571,"username":"thatDudeBiggz","name":"Sen?r","link":"http://twitter.com/thatDudeBiggz","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/thatDudeBiggz/statuses/364070259025649666","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","type":"twitter"},"language":{"tag":"en","confidence":62}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364267076807950339","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Mon, 05 Aug 2013 06:10:13 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"geo_enabled":true,"location":"Lumsden, Saskatchewan","statuses_count":18479,"lang":"en","url":"http://www.mommykatandkids.com/","id":106185357,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":29,"description":"Mother of two active boys, blogger and writer. Lover of hot coffee, organic chocolate and sleeping in late whenever I get the chance.","friends_count":7894,"name":"Kathryn Lavallee","created_at":"Mon, 18 Jan 2010 19:29:48 +0000","screen_name":"mommykatandkids","id_str":"106185357","profile_image
 _url":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg","followers_count":15439,"listed_count":306}},"salience":{"content":{"sentiment":0}},"klout":{"score":65},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","id":"1e2fd95b0a39a080e07405af37275d4a","author":{"id":106185357,"username":"mommykatandkids","name":"Kathryn Lavallee","link":"http://twitter.com/mommykatandkids","language":"en","avatar":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/mommykatandkids/statuses/364267076807950339","created_at":"Mon, 05 Aug 2013 06:10:13 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fres
 h-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Sun, 04 Aug 2013 21:00:19 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"twitter":{"id":"367633815277035520","filter_level":"medium","text":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","source":"<a href=\"http://www.facebook.com/twitter\" rel=\"nofollow\">Facebook<\/a>","domains":["fb.me"],"created_at":"Wed, 14 Aug 2013 13:08:26 +0000","links":["http://fb.me/2jIdLRYWm"],"lang":"en","user":{"location":"Ontario, Canada","statuses_count":11244,"lang":"en","url":"http://savebiglivebetter.com","id":465174690,"description":"The best Canadian deals, sales, coupons, freebies, recipes, money saving articles and more updated daily at http://SaveBigLiveBetter.com! HAPPY SAVING:)","friends_count":71,"name":"Save Big Live Better","created_at":"Mon, 16 Jan 2012 01:56:38 +0000","screen_name":"SBLBCanada","id_str":"465174690","followers_count":476,"profile_image_url":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401
 c696258306991b51_normal.png","listed_count":4}},"salience":{"content":{"sentiment":3}},"klout":{"score":37},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","id":"1e304e29af34a100e0742d305e733fa6","author":{"id":465174690,"username":"SBLBCanada","name":"Save Big Live Better","link":"http://twitter.com/SBLBCanada","language":"en","avatar":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401c696258306991b51_normal.png"},"source":"Facebook","link":"http://twitter.com/SBLBCanada/statuses/367633815277035520","created_at":"Wed, 14 Aug 2013 13:08:26 +0000","type":"twitter"},"links":{"title":["Timeline Photos | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"],"created_at":["Wed, 14 Aug 2013 13:08:58 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://fb.me/2jIdLRYWm"]],"meta":{"charset":["UTF-8"],"content_type":[
 "text/html"],"lang":["en"]},"url":["https://www.facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":1,"entities":[{"sentiment":-2,"confident":1,"name":"Vinegar","evidence":1,"about":0,"label":"Person","themes":["funky smell","washing machine","go-to product","regular detergent","vinegar smell"],"type":"Person"}]}},"facebook":{"id":"234885799896401_583141561737488","message":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old days.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest 
 thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":"Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","created_at":"Wed, 14 Aug 2013 17:23:45 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3050645c92a680e066aef68cf33be0","content":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old day
 s.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":
 "Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","link":"http://www.facebook.com/234885799896401_583141561737488","subtype":"status","created_at":"Wed, 14 Aug 2013 17:24:00 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer","Purex"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Beverages","score":0.92570048570633}]}},"facebook":{"id":"100000254074556_643746722310458","message":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nFill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  S
 tir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","created_at":"Fri, 09 Aug 2013 15:07:21 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3010563ad1aa80e0660e6752dee246","content":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nF
 ill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  Stir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","link":"http://www.facebook.com/100000254074556_643746722310458","subtype":"status","created_at":"Fri, 09 Aug 2013 15:07:35 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"359694365049896960","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Tue, 23 Jul 2013 15:19:54 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1546236864,"friends_count":82,"name":"Kyra Mitchell","created_at":"Tue, 25 Jun 2013 17:32:24 +0000","screen_name":"ArmyRebel0","id_str":"1546236864","statuses_count":14,"followers_count":10,"profile_image_url":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":12},"interaction":{"schema":{"ver
 sion":3},"content":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","id":"1e2f3ab537a0a900e074ec3e0933e560","author":{"id":1546236864,"username":"ArmyRebel0","name":"Kyra Mitchell","link":"http://twitter.com/ArmyRebel0","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg"},"source":"Tweet Button","link":"http://twitter.com/ArmyRebel0/statuses/359694365049896960","created_at":"Tue, 23 Jul 2013 15:19:54 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Tue, 23 Jul 2013 15:20:08 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]
 ],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultr

<TRUNCATED>

[15/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.json b/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.json
deleted file mode 100644
index d244f07..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.json
+++ /dev/null
@@ -1,39433 +0,0 @@
-[
-    {
-        "sequenceId": "245453200112",
-        "id": "15418731692",
-        "language": "English",
-        "title": "Call in the Green Natural Gas Bulls",
-        "content": "Filed under: Investing \n  \nIn many ways fracking is America's miracle drug. It turned the energy industry on its head. A recent study has found that fears about environmentally damaging methane releases from fracked natural gas wells are overrated. This is good news for the entire industry. It will help it to promote natural gas as a clean fuel, even if has been extracted through fracking.† \n \nThe†methane† controversy \nAccording to the EPA, it is estimated that methane is the second common greenhouse gas released by human activity in the U.S. Regardless of your personal beliefs about global warming; low greenhouse gas emissions help to decrease public opposition to drilling. \n \nThe previously mentioned study found that the drilling industry can further decrease its methane emissions by making parts and equipment to higher standards. Given that these challenges are not related to the fracking process itself, a little R&D could make natural gas even cl
 eaner.† \n \n\nThe drillers \nProving that natural gas is a clean fuel makes it even more attractive for utilities. Drillers like† Chesapeake and† ExxonMobil † will be some of the biggest beneficiaries from stronger consumption. Oil and gas drillers are continuously criticized for their carbon emissions, and many new techniques like carbon capture and storage have not been commercialized to point where they can significantly decrease industry emissions. Simply using high quality equipment that limits methane emissions at the point of extraction and transportation is a simple and cost effective method.† \n \nWhen ExxonMobil bought out XTO Energy in 2010 for a total of $41 billion it became one of America's top natural gas producers and frackers. In the last quarter alone it produced 11.4 billion cubic feet of natural gas per day or bcfd; more than three times Chesapeake's production. ExxonMobil is a diversified player with refineries, but as of the second quarter of 2013 it
  made 91.9% of its net income from drilling and upstream activities.† \n \nRight now oil shale plays like Eagle Ford and the Bakken are all the rage, but ExxonMobil has a significant amount of natural gas acreage from its XTO acquisition. As natural gas demand grows the price will rise; thus allowing ExxonMobil to bring more of its reserves online in a profitable fashion. The firm has a small debt load and a total debt to equity ratio of 0.12. Higher natural gas prices would allow it to deploy more of its balance sheet within politically stable U.S. borders.† \n \nThe news that fracking is relatively clean will help out the large natural gas fracker Chesapeake. The company is trying to brand itself as a diversified driller of natural gas liquids and crude oil, but it cannot deny its history. Before the crash in natural gas prices it was the star example of America's natural gas frackers, and this tradition can still be seen in its production.† \n \nIts natural gas production i
 s expected to fall slightly in the coming years, but the company managed to produce 3.1 bcfd in the second quarter of 2013. Natural gas was a full 44.6% of the company's total revenue, making it a very significant item. Chesapeake still has a large amount of debt to worry about, with a total debt to equity ratio of 1.02. Rising natural gas prices will help it to clean up its act. Excluding gains and losses on derivatives, in this most recent quarter it received just $2.81 per million cubic feet of natural gas, leaving lots of room for improved pricing. \n \nThe exporter \nAnother firm that benefits from strong natural gas drilling is the export company,† Cheniere Energy . The firm is building facilities to take natural gas and cool it so that it can be transported overseas. Cheniere Sabine Pass trains one to four are already full subscribed. Train four is not expected to become operational until 2016 or 2017, but by then the company expects that $365 million in distributed cash wi
 ll flow every year to† Cheniere Energy Partners . Cheniere Energy will see an immediate boost as it owns 55.9% of Cheniere Energy Partners. \n \n\n \nHenry Hub Natural Gas Spot Price data by YCharts \n \nWith low methane emissions from natural gas drilling, it will be easier for drillers to maintain a large supply of natural gas. Cheniere depends on the price differentials between the flooded North American market and more constricted Asian and European markets, making U.S. natural gas production a very important factor. Stronger U.S. demand will put upward pressure on natural gas prices, but it is very unlikely that they would rise to Japanese levels. \n \nConclusion \nDrillers are constantly being accused of destroying the environment and creating a global environmental†disaster. There is no way to completely remove their impacts on the environment, but the latest data shows that methane emissions are not as prevalent as they were once thought. \n \nBy improving equipment dril
 lers like Chesapeake and ExxonMobil will be able to further reduce their emissions and boost demand for natural gas from environmentally conscious consumers. Low methane emissions and strong production levels will benefit U.S. LNG exporters like Cheniere, as it increases the probability that U.S. drillers will keep prices low relative to international levels. \n \n\nMore ideas from The Motley Fool \nThink the days of $100 oil are gone? Think again. In fact, the market is heading in that direction now. But for investors that are positioned to profit from the return of $100 oil, it can't come soon enough. To help investors get rich off of rising oil prices, our top analysts prepared a free report that reveals three stocks that are bound to soar as oil prices climb higher. To discover the identities of these stocks instantly, access your free report by clicking here now. \n  \n \nThe article originally appeared on Fool.com. \n    Joshua Bondy has no position in any stocks mentioned. Th
 e Motley Fool has no position in any of the stocks mentioned. Try any of our Foolish newsletter services free for 30 days . We Fools may not all hold the same opinions, but we all believe that considering a diverse range of insights makes us better investors. The Motley Fool has a disclosure policy .  \nCopyright © 1995 - 2013 The Motley Fool, LLC.  All rights reserved. The Motley Fool has a disclosure policy . \n     \n† \n\nRead †|",
-        "tags": [],
-        "publishedDate": "2013-09-18T20:52:47Z",
-        "harvestDate": "2013-09-18T20:53:01Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=aa31a2ad62e67f6813795375819677dc7c1c89ef74c0c&co=f000000014264s-3426307852",
-        "commentsUrl": [],
-        "outboundUrls": [
-            "http://ycharts.com/indicators/natural_gas_spot_price/chart/",
-            "http://ycharts.com/indicators/natural_gas_spot_price",
-            "http://ycharts.com/",
-            "http://www.fool.com/fool/free-report/18/sa3stocksoil-97457.aspx?aid=4035&source=edddlftxt0860001",
-            "http://www.fool.com/investing/general/2013/09/18/another-boost-for-natural-gas.aspx",
-            "http://ad.doubleclick.net/N3910/jump/usdf.df.articles/articles;sz=5x7;ord=[timestamp]?",
-            "http://my.fool.com/profile/bluemarkanalysis/info.aspx?source=edddlftxt0860001",
-            "http://www.fool.com/shop/newsletters/index.aspx?source=edddlftxt0860001",
-            "http://wiki.fool.com/Motley?source=edddlftxt0860001",
-            "http://www.fool.com/Legal/fool-disclosure-policy.aspx?source=edddlftxt0860001",
-            "http://www.fool.com/help/index.htm?display=about02",
-            "http://www.technorati.com/cosmos/search.html?rank=&fc=1&url=http://www.dailyfinance.com/2013/09/18/another-boost-for-natural-gas/"
-        ],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418684718",
-        "media": [
-            {
-                "url": "http://media.ycharts.com/charts/68b2705cdc716231466ed2dda4d0f901.png",
-                "mimeType": [],
-                "caption": []
-            }
-        ],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [
-            {
-                "name": "Finance latest",
-                "group": "Finance"
-            },
-            {
-                "name": "Exxon Mobil news",
-                "group": "Companies"
-            },
-            {
-                "name": "Environment news",
-                "group": "Science"
-            },
-            {
-                "name": "Hampton Roads news",
-                "group": "US regional"
-            },
-            {
-                "name": "Oil and gas news",
-                "group": "Industry"
-            },
-            {
-                "name": "Energy industry news",
-                "group": "Industry"
-            }
-        ],
-        "companies": [
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "FRA",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XOM",
-                "exchange": "BUE",
-                "isin": "ARDEUT110152",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XOM",
-                "exchange": "MEX",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "XTER",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "DUS",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "BER",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "STU",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "HAN",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "MUN",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XOM",
-                "exchange": "NYSE",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XONA",
-                "exchange": "HAM",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "XOM",
-                "exchange": "XSGO",
-                "isin": "US30231G1022",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Exxon Mobil Corporation",
-                "symbol": "EXXO34",
-                "exchange": "BSP",
-                "isin": "BREXXOBDR006",
-                "titleCount": "0",
-                "contentCount": "6",
-                "primary": "true"
-            },
-            {
-                "name": "Cheniere Energy Inc",
-                "symbol": "CHQ1",
-                "exchange": "FRA",
-                "isin": "US16411R2085",
-                "titleCount": "0",
-                "contentCount": "4",
-                "primary": "false"
-            },
-            {
-                "name": "Cheniere Energy Inc",
-                "symbol": "CHQ1",
-                "exchange": "STU",
-                "isin": "US16411R2085",
-                "titleCount": "0",
-                "contentCount": "4",
-                "primary": "false"
-            },
-            {
-                "name": "Cheniere Energy Inc",
-                "symbol": "LNG",
-                "exchange": "AMEX",
-                "isin": "US16411R2085",
-                "titleCount": "0",
-                "contentCount": "4",
-                "primary": "false"
-            },
-            {
-                "name": "Cheniere Energy Inc",
-                "symbol": "CHQ1",
-                "exchange": "BER",
-                "isin": "US16411R2085",
-                "titleCount": "0",
-                "contentCount": "4",
-                "primary": "false"
-            },
-            {
-                "name": "Cheniere Energy Inc",
-                "symbol": "CHQ1",
-                "exchange": "MUN",
-                "isin": "US16411R2085",
-                "titleCount": "0",
-                "contentCount": "4",
-                "primary": "false"
-            },
-            {
-                "name": "EPL Oil & Gas Inc",
-                "symbol": "EPL",
-                "exchange": "NYSE",
-                "isin": "US26883D1081",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "false"
-            },
-            {
-                "name": "EPL Oil & Gas Inc",
-                "symbol": "EPA1",
-                "exchange": "FRA",
-                "isin": "US26883D1081",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "false"
-            },
-            {
-                "name": "EPL Oil & Gas Inc",
-                "symbol": "EPA1",
-                "exchange": "STU",
-                "isin": "US26883D1081",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "false"
-            }
-        ],
-        "locations": [
-            {
-                "name": "U.S.",
-                "type": "country",
-                "mentions": "5",
-                "confidence": "0.299475",
-                "country": {
-                    "confidence": "0.299475",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "40.0",
-                "longitude": "-100.0"
-            },
-            {
-                "name": "Chesapeake",
-                "type": "city",
-                "mentions": "5",
-                "confidence": "0.980003",
-                "country": {
-                    "confidence": "0.707742",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.707742",
-                    "fipsCode": "US51",
-                    "name": "Virginia"
-                },
-                "latitude": "37.3079",
-                "longitude": "-75.9519"
-            },
-            {
-                "name": "Cheniere",
-                "type": "city",
-                "mentions": "4",
-                "confidence": "0.496",
-                "country": {
-                    "confidence": "0.496",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.496",
-                    "fipsCode": "US22",
-                    "name": "Louisiana"
-                },
-                "latitude": "32.5088",
-                "longitude": "-92.2474"
-            },
-            {
-                "name": "Eagle Ford",
-                "type": "city",
-                "mentions": "1",
-                "confidence": "0.89436",
-                "country": {
-                    "confidence": "0.89436",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.89436",
-                    "fipsCode": "US48",
-                    "name": "Texas"
-                },
-                "latitude": "32.7849",
-                "longitude": "-96.9008"
-            }
-        ],
-        "author": {
-            "name": "Joshua Bondy, The Motley Fool",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Daily Finance",
-            "homeUrl": "http://www.dailyfinance.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": "Trade",
-            "editorialRank": "3",
-            "location": {
-                "country": "United States",
-                "countryCode": "US",
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "216527249",
-                "name": "Daily Finance",
-                "mediaType": "News",
-                "publishingPlatform": [],
-                "idFromPublisher": [],
-                "generator": [],
-                "description": [],
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "Unassigned",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": [],
-                    "autoRankOrder": [],
-                    "inboundLinkCount": "6564"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [
-                    "Professional",
-                    "Financials"
-                ],
-                "genre": "General"
-            }
-        }
-    },
-    {
-        "sequenceId": "245453200340",
-        "id": "15418731711",
-        "language": "English",
-        "title": "Iranian president says he'll never use nuclear weapons",
-        "content": "Iranian President Hassan Rouhani said Wednesday his administration would never develop nuclear weapons, and suggested he had the power to strike a deal with the West on his country's alleged atomic program. \n\nRouhani made the comments in his first interview with a U.S. news outlet since his election in June. Ann Curry, an NBC News correspondent, conducted the interview at Rouhani's presidential compound in Iran?s capital. \n\nRouhani ?struck a conciliatory tone,? NBC News said. \n\nThe interview will air on the network?s nightly newscast Wednesday. Excerpts have not yet been released. \n\nPresident Obama recently exchanged a series of letters with the Iranian president.\n\nThough the two countries terminated their diplomatic relationship in 1980, the two leaders seem to be open to talks. Iran and the U.S. were close allies for nearly four decades , until the 1979 Iran hostage crisis. \n\nAfter Rouhani?s election in June, The White House said it would be open to
  engaging ?directly? with Iran on the issue of its alleged nuclear weapons program. Rouhani's predecessor, former President Mahmoud Ahmadinejad, was viewed by the U.S. as an enemy. \n\nBoth the new Iranian leader and Obama are scheduled to appear at the United Nations? General Assembly next week. \n\nObama administration officials, however, have said there are ?currently no plans? for the two leaders to meet at the U.N., but that could change. Also on Wednesday, Iran released eight political prisoners, which has been a priority for the U.S. The move could prompt a in-person meeting between representatives of the two nations. \n\nObama will discuss Iran?s alleged nuclear program with Israeli Prime Minister Benjamin Netanyahu at the White House on Sept. 30, in addition to the situation in Syria. Israel hinted last year it could launch a preemptive attack on Iran to defend itself against Tehran?s nuclear weapons. \n\nAhmadinejad has said that Israel must be ?wiped off the map.? \n\nTeh
 ran has never admitted to producing nuclear weapons.\n\nThe International Atomic Energy Agency, which is part of the U.N., released a quarterly report in late August that revealed Iran continues to expand its nuclear program. \n\nAccording to the report, Iran recently installed 1,000 advanced uranium enrichment centrifuges in one city, the report said. But the agency also concluded that the stock of uranium that can be further enriched to weapons-grade material only grew by a small amount. \n\nIran has also been a hot topic lately because of the recent developments in Syria. Secretary of State John Kerry said while meeting with Netanyahu last Sunday in Jerusalem that if Syria is not held accountable for its chemical weapons, it would embolden Iran. \n\nThe U.N. Security Council, meanwhile, will now hash out a diplomatic deal between the U.S. and Russia to eliminate Syria?s chemical weapons stockpile.",
-        "tags": [],
-        "publishedDate": "2013-09-18T19:46:00Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=b4cdfba3ff2696e1137953758216164f45cea2d50407f&co=f000000014264s-3426307852",
-        "commentsUrl": [],
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731711",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [
-            {
-                "name": "Nuclear proliferation news",
-                "group": "Society"
-            },
-            {
-                "name": "International relations news",
-                "group": "Society"
-            },
-            {
-                "name": "Society news",
-                "group": "Society"
-            },
-            {
-                "name": "Politics latest",
-                "group": "Society"
-            },
-            {
-                "name": "Iran news",
-                "group": "Regional"
-            },
-            {
-                "name": "Israel news",
-                "group": "Regional"
-            },
-            {
-                "name": "Middle East news",
-                "group": "Regional"
-            }
-        ],
-        "companies": [],
-        "locations": [
-            {
-                "name": "Iran",
-                "type": "country",
-                "mentions": "11",
-                "confidence": "0.993397",
-                "country": {
-                    "confidence": "0.99335",
-                    "fipsCode": "IR",
-                    "isoCode": "ir",
-                    "name": "Iran"
-                },
-                "region": "Asia",
-                "subregion": "Southern Asia",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "32.0",
-                "longitude": "53.0"
-            },
-            {
-                "name": "U.S.",
-                "type": "country",
-                "mentions": "4",
-                "confidence": "0.883932",
-                "country": {
-                    "confidence": "0.883932",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "40.0",
-                "longitude": "-100.0"
-            },
-            {
-                "name": "Syria",
-                "type": "country",
-                "mentions": "4",
-                "confidence": "0.993215",
-                "country": {
-                    "confidence": "0.993192",
-                    "fipsCode": "SY",
-                    "isoCode": "sy",
-                    "name": "Syria"
-                },
-                "region": "Asia",
-                "subregion": "Western Asia",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "35.0",
-                "longitude": "38.0"
-            },
-            {
-                "name": "Israel",
-                "type": "country",
-                "mentions": "2",
-                "confidence": "0.863704",
-                "country": {
-                    "confidence": "0.863689",
-                    "fipsCode": "IS",
-                    "isoCode": "il",
-                    "name": "Israel"
-                },
-                "region": "Asia",
-                "subregion": "Western Asia",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "31.5",
-                "longitude": "34.75"
-            },
-            {
-                "name": "Tehran",
-                "type": "national capital",
-                "mentions": "2",
-                "confidence": "0.994",
-                "country": {
-                    "confidence": "0.915421",
-                    "fipsCode": "IR",
-                    "isoCode": "ir",
-                    "name": "Iran"
-                },
-                "region": "Asia",
-                "subregion": "Southern Asia",
-                "state": {
-                    "confidence": "0.915421",
-                    "fipsCode": "IR26",
-                    "name": "Tehran"
-                },
-                "latitude": "35.8044",
-                "longitude": "51.4256"
-            },
-            {
-                "name": "White House",
-                "type": "palace",
-                "mentions": "1",
-                "confidence": "0.456733",
-                "country": {
-                    "confidence": "0.4484",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.4484",
-                    "fipsCode": "US11",
-                    "name": "District of Columbia"
-                },
-                "latitude": "38.8978",
-                "longitude": "-77.0362"
-            },
-            {
-                "name": "Jerusalem",
-                "type": "national capital",
-                "mentions": "1",
-                "confidence": "0.958256",
-                "country": {
-                    "confidence": "0.911768",
-                    "fipsCode": "IS",
-                    "isoCode": "il",
-                    "name": "Israel"
-                },
-                "region": "Asia",
-                "subregion": "Western Asia",
-                "state": {
-                    "confidence": "0.911768",
-                    "fipsCode": "IS06",
-                    "name": "Austur-Skaftafellssysla"
-                },
-                "latitude": "31.78",
-                "longitude": "35.22"
-            },
-            {
-                "name": "Russia",
-                "type": "country",
-                "mentions": "1",
-                "confidence": "0.991297",
-                "country": {
-                    "confidence": "0.990797",
-                    "fipsCode": "RS",
-                    "isoCode": "ru",
-                    "name": "Russia"
-                },
-                "region": "Europe",
-                "subregion": "Eastern Europe",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "60.0",
-                "longitude": "100.0"
-            }
-        ],
-        "author": {
-            "name": "Rebecca Shabad",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "The Hill",
-            "homeUrl": "http://thehill.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": "Trade",
-            "editorialRank": "2",
-            "location": {
-                "country": "United States",
-                "countryCode": "US",
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "169657474",
-                "name": "The Hill",
-                "mediaType": "News",
-                "publishingPlatform": [],
-                "idFromPublisher": [],
-                "generator": [],
-                "description": [],
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "Unassigned",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": [],
-                    "autoRankOrder": [],
-                    "inboundLinkCount": "4574"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [
-                    "Society",
-                    "Standard",
-                    "Politics"
-                ],
-                "genre": "Blog"
-            }
-        }
-    },
-    {
-        "sequenceId": "245453200570",
-        "id": "15418731684",
-        "language": "English",
-        "title": "Retrophin Proposes Acquisition of Transcept for $4.00 Per Share",
-        "content": "Filed under: Investing NEW YORK--( BUSINESS WIRE )-- Retrophin, Inc. (OTCQB:RTRX) today announced that it has made a proposal to the Board of Directors of Transcept Pharmaceuticals, Inc.  ( NAS: TSPT )  to acquire all of the shares of Transcept common stock that Retrophin does not own for $4.00 per share in cash. Retrophin's proposal is conditioned on the completion of cursory due diligence and other customary provisions. Retrophin's proposal is not subject to a financing condition. \n \nLast week, Retrophin delivered a letter to Transcept's Board of Directors proposing to acquire all of the outstanding common stock of Transcept for $3.50 per share in cash. Transcept's Board of Directors rejected Retrophin's proposal and adopted a Tax Benefit Preservation Plan (a/k/a a \"Poison Pill\") that prevents stockholders from acquiring more than 4.99% of Transcept. In recent weeks, three of Transcept's major stockholders have publicly stated their disapproval of Transcept
 's current strategy. Retrophin's proposed all-cash offer would provide an immediate exit for Transcept's stockholders at a 20% premium to Transcept's current stock price. \n \n  \nRetrophin expressed its disappointment that the Board of Directors and management of Transcept have not been willing to engage with Retrophin to ascertain the benefits of the proposal. \"Our proposal represents an attractive premium to Transcept's trading performance, and we believe that the proposal offers a compelling opportunity for Transcept's stockholders, particularly in light of Transcept's risky and controversial acquisition strategy,\" stated Martin Shkreli, Chief Executive Officer of Retrophin. \"We hope that Transcept's Board of Directors will respect its stockholders' wishes and quickly commence discussions with us regarding the proposed transaction.\" \n \nRetrophin's letter called on the Board of Directors of Transcept to engage in discussions with Retrophin and to provide it with access to s
 elected due diligence in order to enter into a transaction no later than September 30, 2013 (see letter attached). \n \n About Retrophin  \n \nRetrophin is a pharmaceutical company focused on the discovery and development of drugs for the treatment of debilitating and often life-threatening diseases for which there are currently no viable patient options. The Company is currently focused on several catastrophic diseases affecting children, including Focal Segmental Glomerulosclerosis (FSGS), Pantothenate Kinase-Associated Neurodegeneration (PKAN), Duchenne Muscular Dystrophy and others. Retrophin's lead compound, RE-021, is scheduled to begin enrollment in a potentially pivotal Phase 2 clinical trial for FSGS during 2013. For additional information, please visit www.retrophin.com . \n \n Forward-Looking Statements  \n \nThis press release contains \"forward-looking statements\" as that term is defined in the Private Securities Litigation Reform Act of 1995, regarding the research, d
 evelopment and commercialization of pharmaceutical products. Such forward-looking statements are based on current expectations and involve inherent risks and uncertainties, including factors that could delay, divert or change any of them, and could cause actual outcomes and results to differ materially from current expectations. No forward-looking statement can be guaranteed. Forward-looking statements in the press release should be evaluated together with the many uncertainties that affect the Company's business. The Company undertakes no obligation to publicly update any forward-looking statement, whether as a result of new information, future events, or otherwise. \n \n### \n \n777 Third Avenue, 22 nd Floor \nNew York, NY 10017 \n \nSeptember 18, 2013 \n \nThe Board of Directors \nTranscept Pharmaceuticals, Inc. \n1003 W. Cutting Blvd., Suite #110 \nPoint Richmond, California 94804 \n \nMembers of the Board: \n \nI am writing on behalf of Retrophin, Inc. (\"Retrophin\") to expres
 s our disappointment that the Board of Directors of Transcept Pharmaceuticals, Inc. (\"Transcept\"), rejected our all-cash proposal to acquire all of Transcept's outstanding common stock at a price of $3.50 per share, that was outlined in our September 10 th letter to you. Rather than discuss our proposal or attempt to negotiate for a greater premium for Transcept's stockholders, Transcept's Board of Directors approved a Tax Benefit Preservation Plan, a/k/a a \"Poison Pill\". We are puzzled by that decision, particularly due to (i) the 20% premium to Transcept's current market price that our proposal represents and (ii) the opposition expressed by Transcept's stockholders to Transcept's risky and highly speculative stated strategy to grow Transcept through acquisitions. Although Transcept rejected our initial proposal, we are formally proposing to Transcept's Board of Directors that Retrophin acquire all of the outstanding shares of common stock of Transcept for $4.00 per share in c
 ash. \n \nNotwithstanding Transcept's lack of engagement with us and the implementation of its Poison Pill, we and our advisors have continued to analyze Transcept's publicly available information and assess the potential benefits of an acquisition of Transcept. As we mentioned in our September 10 th letter, due to the significant value that we believe that Transcept represents, we may be willing to further increase our proposed purchase price if (i) we are allowed the opportunity to conduct due diligence and such diligence validates certain understandings about Transcept and its prospects and (ii) we are able to negotiate a definitive acquisition agreement containing customary representations, warranties, covenants and closing conditions. We and our advisors are prepared to begin the due diligence process immediately. Additionally, we continue to support, and are willing to participate in, an open and efficient auction process managed by Transcept's financial advisor. \n \nDespite 
 public and private protests from Transcept's largest stockholders, Transcept's Board of Directors continues to pursue a strategy of searching for an acquisition to revitalize Transcept. Our proposed all-cash offer provides an immediate exit for Transcept stockholders at an attractive premium. As a stockholder of Transcept, we believe that our proposed transaction properly recognizes the true value of Transcept. \n \nIf Transcept is interested in pursuing our proposal in order to benefit its stockholders, we and our representatives are prepared to move quickly towards definitive documentation. Our proposal will remain open until September 30, 2013, which we believe to be an adequate time to perform due diligence and enter into an agreement if Transcept is willing to engage itself and commit the necessary resources. \n \nWe intend to make this proposal public promptly after the delivery of this letter because we believe that Transcept's stockholders have the right to consider this imp
 roved proposal, to learn about the refusal of Transcept's Board of Directors to engage us, and to understand that the Board of Directors is placing our proposal at risk by refusing to engage with us on a timely basis. \n \nWe continue to stand ready to meet with the Board of Directors and its advisors immediately to discuss our proposal and to devote all necessary resources to work to consummate this transaction by November 1, 2013. \n \nVery truly yours, \n \n/s/ Martin Shkreli \n \nMartin Shkreli \nChief Executive Officer \nRetrophin, Inc. \n \n    \n\n \nRetrophin, Inc. \nMarc Panoff, 917-261-3684 \nCFO \nmarc@retrophin.com \nor \n(Investors) \nRx Communications Group \nPaula Schwartz, 917-322-2216 \npschwartz@rxir.com \n\n\nKEYWORDS: † United States† North America† New York \n\nINDUSTRY KEYWORDS: \n  \nThe article Retrophin Proposes Acquisition of Transcept for $4.00 Per Share originally appeared on Fool.com. \n   Try any of our Foolish newsletter services free for 30 days
  . We Fools may not all hold the same opinions, but we all believe that considering a diverse range of insights makes us better investors. The Motley Fool has a disclosure policy .  \nCopyright © 1995 - 2013 The Motley Fool, LLC.  All rights reserved. The Motley Fool has a disclosure policy . \n     \n† \n\nRead †|",
-        "tags": [],
-        "publishedDate": "2013-09-18T20:52:31Z",
-        "harvestDate": "2013-09-18T20:53:01Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=818bd5e7e045a59f13795375819185366a681b8734750&co=f000000014264s-3426307852",
-        "commentsUrl": [],
-        "outboundUrls": [
-            "http://www.businesswire.com/",
-            "http://cts.businesswire.com/ct/CT?id=smartlink&url=http%3A%2F%2Fwww.retrophin.com&esheet=50711985&newsitemid=20130918006369&lan=en-US&anchor=www.retrophin.com&index=1&md5=cc757e49e071124344e55827c6aca838",
-            "http://www.fool.com/investing/businesswire/2013/09/18/retrophin-proposes-acquisition-of-transcept-for-40.aspx",
-            "http://ad.doubleclick.net/N3910/jump/usdf.df.articles/articles;sz=5x7;ord=[timestamp]?",
-            "http://www.fool.com/shop/newsletters/index.htm?source=edddlftxt0860001",
-            "http://wiki.fool.com/Motley?source=edddlftxt0860001",
-            "http://www.fool.com/help/index.htm?display=about02&source=edddlftxt0860001",
-            "http://www.fool.com/help/index.htm?display=about02",
-            "http://www.technorati.com/cosmos/search.html?rank=&fc=1&url=http://www.dailyfinance.com/2013/09/18/retrophin-proposes-acquisition-of-transcept-for-40/"
-        ],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418370571",
-        "media": [
-            {
-                "url": "http://cts.businesswire.com/ct/CT?id=bwnews&amp;sty=20130918006369r1&amp;sid=40241&amp;distro=ftp",
-                "mimeType": [],
-                "caption": []
-            }
-        ],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [
-            {
-                "name": "Mergers and acquisitions news",
-                "group": "Finance"
-            },
-            {
-                "name": "Finance latest",
-                "group": "Finance"
-            }
-        ],
-        "companies": [
-            {
-                "name": "Retrophin Inc",
-                "symbol": "RTRX",
-                "exchange": "OTCPK",
-                "isin": "US7612991064",
-                "titleCount": "0",
-                "contentCount": "4",
-                "primary": "true"
-            },
-            {
-                "name": "Transcept Pharmaceuticals, Inc.",
-                "symbol": "N4C1",
-                "exchange": "FRA",
-                "isin": "US89354M1062",
-                "titleCount": "0",
-                "contentCount": "3",
-                "primary": "false"
-            },
-            {
-                "name": "Transcept Pharmaceuticals, Inc.",
-                "symbol": "N4C1",
-                "exchange": "BER",
-                "isin": "US89354M1062",
-                "titleCount": "0",
-                "contentCount": "3",
-                "primary": "false"
-            },
-            {
-                "name": "Transcept Pharmaceuticals, Inc.",
-                "symbol": "TSPT",
-                "exchange": "NAS",
-                "isin": "US89354M1062",
-                "titleCount": "0",
-                "contentCount": "3",
-                "primary": "false"
-            },
-            {
-                "name": "With us Corporation",
-                "symbol": "9696",
-                "exchange": "TSE",
-                "isin": "JP3234010001",
-                "titleCount": "0",
-                "contentCount": "3",
-                "primary": "false"
-            },
-            {
-                "name": "Lead Co.Inc.",
-                "symbol": "6982",
-                "exchange": "TSE",
-                "isin": "JP3969400005",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "false"
-            },
-            {
-                "name": "Quick Co",
-                "symbol": "4318",
-                "exchange": "TSE",
-                "isin": "JP3266000003",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "false"
-            }
-        ],
-        "locations": [
-            {
-                "name": "NEW YORK",
-                "type": "city",
-                "mentions": "1",
-                "confidence": "0.783249",
-                "country": {
-                    "confidence": "0.690211",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.690211",
-                    "fipsCode": "US36",
-                    "name": "New York"
-                },
-                "latitude": "40.7142",
-                "longitude": "-74.0064"
-            },
-            {
-                "name": "New York, NY",
-                "type": "city",
-                "mentions": "1",
-                "confidence": "0.997484",
-                "country": {
-                    "confidence": "0.997484",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.997484",
-                    "fipsCode": "US36",
-                    "name": "New York"
-                },
-                "latitude": "40.7142",
-                "longitude": "-74.0064"
-            },
-            {
-                "name": "Point Richmond, California",
-                "type": "city",
-                "mentions": "1",
-                "confidence": "0.838377",
-                "country": {
-                    "confidence": "0.838377",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.838377",
-                    "fipsCode": "US06",
-                    "name": "California"
-                },
-                "latitude": "37.9241",
-                "longitude": "-122.389"
-            },
-            {
-                "name": "North America",
-                "type": "unknown",
-                "mentions": "1",
-                "confidence": "0.638302",
-                "country": {
-                    "confidence": "0.638302",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.0",
-                    "fipsCode": [],
-                    "name": []
-                },
-                "latitude": "40.0",
-                "longitude": "-105.0"
-            },
-            {
-                "name": "New York",
-                "type": "city",
-                "mentions": "1",
-                "confidence": "0.929347",
-                "country": {
-                    "confidence": "0.818827",
-                    "fipsCode": "US",
-                    "isoCode": "us",
-                    "name": "United States"
-                },
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": {
-                    "confidence": "0.818827",
-                    "fipsCode": "US36",
-                    "name": "New York"
-                },
-                "latitude": "40.7142",
-                "longitude": "-74.0064"
-            }
-        ],
-        "author": {
-            "name": "Business Wire via The Motley Fool",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Daily Finance",
-            "homeUrl": "http://www.dailyfinance.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": "Trade",
-            "editorialRank": "3",
-            "location": {
-                "country": "United States",
-                "countryCode": "US",
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "216527249",
-                "name": "Daily Finance",
-                "mediaType": "News",
-                "publishingPlatform": [],
-                "idFromPublisher": [],
-                "generator": [],
-                "description": [],
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "Unassigned",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": [],
-                    "autoRankOrder": [],
-                    "inboundLinkCount": "6564"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [
-                    "Professional",
-                    "Financials"
-                ],
-                "genre": "General"
-            }
-        }
-    },
-    {
-        "sequenceId": "245453200794",
-        "id": "15418731704",
-        "language": "English",
-        "title": "Moms Find the Right Blend at Marriott",
-        "content": "Company Selected as a Working Mother '100 Best Company' for 22nd Year\n\nBETHESDA, Md., Sept. 18, 2013 /PRNewswire/ --? Marriott International, Inc. (NYSE: MAR) was ranked by Working Mother magazine as one of the 2013 Working Mother 100 Best Companies for its commitment to progressive workplace programs, including child care, flexibility, advancement and paid family leave.? The company has been a part of this elite list for 22 years, earning a place in Working Mother's Hall of Fame. \n\n(Logo: http://photos.prnewswire.com/prnh/20130531/PH23900LOGO)\n\nCarol Evans, president of Working Mother Media, says, \"Now in its 28th year, the Working Mother 100 Best Companies are leaders in building initiatives that truly support all employees. They are the vanguard of successful companies, with modern policies for American families. That's why we are launching National Flex Day on October 15. It's time for employees and their companies to step out from the shadows and embr
 ace workplace flexibility as a core business strategy that will enable them to compete and succeed in an increasingly competitive global economy.\"\n\n\"We are thrilled to have been honored by Working Mother for more than 20 years.? Putting people first is core to our company's values,\" said David Rodriguez, executive vice president and chief human resources officer for Marriott International.? \"Our associates, many of whom are working parents, are vital to our success and we strive to create a workplace that helps to maintain a comfortable blend between work and home while they continue to realize a world of opportunities in their careers.\"\n\nThe complete list of Working Mother's 2013 100 Best Companies can be found http://www.workingmother.com/node/146788/list.\n\nMarriott offers several programs to help associates enhance their careers and achieve work-life integration,? including its Women's Leadership Development Initiative designed to help encourage the development of wome
 n leaders throughout the company.? Also, innovative benefits such as the TakeCare Wellness Program, which has been in place for three years, provide associates with tools and resources to manage their health and achieve their health goals.? TakeCare includes many tools and resources that are designed to encourage healthy behaviors such as a free smoking cessation program, free preventive care, a comprehensive health assessment and access to free health coaches.? ? In addition, a? network of hotel-based Wellness Champions? support? worksite health challenges and deliver? resources and? tips to help? their? associates live a healthy lifestyle.\n\nEarlier this year, Working Mother magazine also named Marriott a Best Company for Hourly Workers, and the National Association of Female Executives recognized the company as a Top Company for Executive Women. For a full list of awards confirming Marriott's commitment to its workforce, visit: Marriott's awards and recognition.\n\nMarriott Inte
 rnational, Inc. (NYSE: MAR) is a leading lodging company based in Bethesda, Maryland, USA, with more than 3,800 properties in 72 countries and territories and reported revenues of nearly $12 billion in fiscal year 2012.? The company operates and franchises hotels and licenses vacation ownership resorts under 18 brands. For more information or reservations, please visit our web site at www.marriott.com, and for the latest company news, visit www.marriottnewscenter.com.\n\nSOURCE Marriott International, Inc.",
-        "tags": [],
-        "publishedDate": "2013-09-18T20:52:53Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=99d62f06af028852137953758211835acd9be6d114ecd&co=f000000014264s-3426307852",
-        "commentsUrl": [],
-        "outboundUrls": [
-            "http://photos.prnewswire.com/prnh/20130531/PH23900LOGO)Carol",
-            "http://www.workingmother.com/node/146788/list.Marriott",
-            "http://photos.prnewswire.com/prnh/20130531/PH23900LOGO)",
-            "http://www.workingmother.com/node/146788/list."
-        ],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418544519",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [
-            {
-                "name": "Hospitality industry news",
-                "group": "Industry"
-            }
-        ],
-        "companies": [
-            {
-                "name": "As One Corporation",
-                "symbol": "7476",
-                "exchange": "TSE",
-                "isin": "JP3131300000",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            },
-            {
-                "name": "IDS Industries Inc",
-                "symbol": "IDST",
-                "exchange": "OTCBB",
-                "isin": "US44944Y1029",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            },
-            {
-                "name": "Marriott International, Inc.",
-                "symbol": "MAQ",
-                "exchange": "DUS",
-                "isin": "US5719032022",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            },
-            {
-                "name": "Marriott International, Inc.",
-                "symbol": "MAQ",
-                "exchange": "BER",
-                "isin": "US5719032022",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            },
-            {
-                "name": "Marriott International, Inc.",
-                "symbol": "MAR",
-                "exchange": "NYSE",
-                "isin": "US5719032022",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            },
-            {
-                "name": "Marriott International, Inc.",
-                "symbol": "MAQ",
-                "exchange": "FRA",
-                "isin": "US5719032022",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            },
-            {
-                "name": "Marriott International, Inc.",
-                "symbol": "MAQ",
-                "exchange": "MUN",
-                "isin": "US5719032022",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "true"
-            }
-        ],
-        "locations": [],
-        "author": {
-            "name": [],
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Morningstar.com",
-            "homeUrl": "http://news.morningstar.com",
-            "publisher": "Morningstar",
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": "Trade",
-            "editorialRank": "4",
-            "location": {
-                "country": "United States",
-                "countryCode": "US",
-                "region": "Americas",
-                "subregion": "Northern America",
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "169658108",
-                "name": "Morningstar.com",
-                "mediaType": "News",
-                "publishingPlatform": [],
-                "idFromPublisher": [],
-                "generator": [],
-                "description": [],
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "Unassigned",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": [],
-                    "autoRankOrder": [],
-                    "inboundLinkCount": "12"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [
-                    "Standard",
-                    "Wires"
-                ],
-                "genre": "Press Release"
-            }
-        }
-    },
-    {
-        "sequenceId": "245453200918",
-        "id": "15418731723",
-        "language": "English",
-        "title": "OneLateNight Yep its scary",
-        "content": "Another scary game i tried. And yes it is SCARY.",
-        "tags": [
-            "scary"
-        ],
-        "publishedDate": "2013-09-18T16:26:54Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=bdd2b9d7f84aca4d1379537582279d67de10858c44721&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/onelatenight-yep-its-scary.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731723",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [],
-        "companies": [],
-        "locations": [],
-        "author": {
-            "name": "surprisevideo",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Surprise Video",
-            "homeUrl": "http://www.surprisevideo.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": [],
-            "editorialRank": [],
-            "location": {
-                "country": [],
-                "countryCode": [],
-                "region": [],
-                "subregion": [],
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "170454505",
-                "name": "Surprise Video",
-                "mediaType": "Blog",
-                "publishingPlatform": "WordPress",
-                "idFromPublisher": [],
-                "generator": "http://wordpress.org/?v=3.0.4",
-                "description": "Is Surprise Video Scary or Funny",
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "English",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": "9",
-                    "autoRankOrder": "355091",
-                    "inboundLinkCount": "0"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [],
-                "genre": []
-            }
-        }
-    },
-    {
-        "sequenceId": "245453201046",
-        "id": "15418731725",
-        "language": "English",
-        "title": "Ryan and Cheryl?s First Dance (with a twist)",
-        "content": "Multi-camera angles! Our first dance from our wedding on 13.09.2013, Doncaster UK From a slow song to mash-up of songs? and a dance off!",
-        "tags": [
-            "wedding"
-        ],
-        "publishedDate": "2013-09-18T16:26:53Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=a9c40784bcf14ddd1379537582281c8f7f9d1d0394a9d&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/ryan-and-cheryls-first-dance-with-a-twist.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731725",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [],
-        "companies": [],
-        "locations": [],
-        "author": {
-            "name": "surprisevideo",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Surprise Video",
-            "homeUrl": "http://www.surprisevideo.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": [],
-            "editorialRank": [],
-            "location": {
-                "country": [],
-                "countryCode": [],
-                "region": [],
-                "subregion": [],
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "170454505",
-                "name": "Surprise Video",
-                "mediaType": "Blog",
-                "publishingPlatform": "WordPress",
-                "idFromPublisher": [],
-                "generator": "http://wordpress.org/?v=3.0.4",
-                "description": "Is Surprise Video Scary or Funny",
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "English",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": "9",
-                    "autoRankOrder": "355091",
-                    "inboundLinkCount": "0"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [],
-                "genre": []
-            }
-        }
-    },
-    {
-        "sequenceId": "245453201174",
-        "id": "15418731726",
-        "language": "English",
-        "title": "???Top Funny Baby Videos 2013!??? H 263 240p] (2)",
-        "content": [],
-        "tags": [
-            "kitten"
-        ],
-        "publishedDate": "2013-09-18T16:26:52Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=aadcabc0330ce16f1379537582282c77b33a6ba7345b8&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/%e2%98%85%e2%98%85%e2%98%85top-funny-baby-videos-2013%e2%98%85%e2%98%85%e2%98%85-h-263-240p-2.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731726",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [],
-        "companies": [
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "HAM",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "STU",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "FRA",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "DUS",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "BER",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "BUE",
-                "isin": "ARDEUT116159",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "MUN",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "NAS",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "XTER",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "MEX",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "XSGO",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG34",
-                "exchange": "BSP",
-                "isin": "BRGOOGBDR005",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Br. Holdings Corp",
-                "symbol": "1726",
-                "exchange": "TSE",
-                "isin": "JP3799610005",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "false"
-            }
-        ],
-        "locations": [],
-        "author": {
-            "name": "surprisevideo",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Surprise Video",
-            "homeUrl": "http://www.surprisevideo.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": [],
-            "editorialRank": [],
-            "location": {
-                "country": [],
-                "countryCode": [],
-                "region": [],
-                "subregion": [],
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "170454505",
-                "name": "Surprise Video",
-                "mediaType": "Blog",
-                "publishingPlatform": "WordPress",
-                "idFromPublisher": [],
-                "generator": "http://wordpress.org/?v=3.0.4",
-                "description": "Is Surprise Video Scary or Funny",
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "English",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": "9",
-                    "autoRankOrder": "355091",
-                    "inboundLinkCount": "0"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [],
-                "genre": []
-            }
-        }
-    },
-    {
-        "sequenceId": "245453201302",
-        "id": "15418731727",
-        "language": "English",
-        "title": "Statue & Costume Scare Pranks Compilation ? So funny!",
-        "content": "Subscribe!  Please like and share. Here?s a compilation of pranks, scares, surprises with costumes, statues, mannequins and more! Some o?",
-        "tags": [
-            "pranks"
-        ],
-        "publishedDate": "2013-09-18T16:26:51Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=8a2a9710c09f97b11379537582283188c61ae3e774dbb&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/statue-costume-scare-pranks-compilation-so-funny.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731727",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [],
-        "companies": [],
-        "locations": [],
-        "author": {
-            "name": "surprisevideo",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Surprise Video",
-            "homeUrl": "http://www.surprisevideo.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": [],
-            "editorialRank": [],
-            "location": {
-                "country": [],
-                "countryCode": [],
-                "region": [],
-                "subregion": [],
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "170454505",
-                "name": "Surprise Video",
-                "mediaType": "Blog",
-                "publishingPlatform": "WordPress",
-                "idFromPublisher": [],
-                "generator": "http://wordpress.org/?v=3.0.4",
-                "description": "Is Surprise Video Scary or Funny",
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "English",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": "9",
-                    "autoRankOrder": "355091",
-                    "inboundLinkCount": "0"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [],
-                "genre": []
-            }
-        }
-    },
-    {
-        "sequenceId": "245453201430",
-        "id": "15418731729",
-        "language": "English",
-        "title": "Outlast Gameplay Round 5 (Let it all burn!)",
-        "content": "Please if you enjoy the video let me know I would love to read your feedback and if you wish to support me give a thumbs up like (I?ll make more video of ?",
-        "tags": [
-            "night"
-        ],
-        "publishedDate": "2013-09-18T16:26:50Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=9f1afe3f1df105b61379537582284ba518a239a264306&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/outlast-gameplay-round-5-let-it-all-burn.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731729",
-        "media": [
-            {
-                "url": "http://www.surprisevideo.com/wp-includes/images/smilies/icon_biggrin.gif",
-                "mimeType": [],
-                "caption": []
-            }
-        ],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [
-            {
-                "name": "Video game industry news",
-                "group": "Technology"
-            }
-        ],
-        "companies": [],
-        "locations": [],
-        "author": {
-            "name": "surprisevideo",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Surprise Video",
-            "homeUrl": "http://www.surprisevideo.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": [],
-            "editorialRank": [],
-            "location": {
-                "country": [],
-                "countryCode": [],
-                "region": [],
-                "subregion": [],
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "170454505",
-                "name": "Surprise Video",
-                "mediaType": "Blog",
-                "publishingPlatform": "WordPress",
-                "idFromPublisher": [],
-                "generator": "http://wordpress.org/?v=3.0.4",
-                "description": "Is Surprise Video Scary or Funny",
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "English",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": "9",
-                    "autoRankOrder": "355091",
-                    "inboundLinkCount": "0"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [],
-                "genre": []
-            }
-        }
-    },
-    {
-        "sequenceId": "245453201558",
-        "id": "15418731731",
-        "language": "English",
-        "title": "SHARK ATTACK !!!!!!!",
-        "content": [],
-        "tags": [
-            "funny"
-        ],
-        "publishedDate": "2013-09-18T16:26:49Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=9ccf8f7de0cdccde137953758228647d4c3cc621244cd&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/shark-attack.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731731",
-        "media": [],
-        "publishingPlatform": {
-            "itemId": [],
-            "statusId": [],
-            "inReplyToUserId": [],
-            "inReplyToStatusId": [],
-            "totalViews": []
-        },
-        "adultLanguage": "false",
-        "topics": [],
-        "companies": [
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "HAM",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "STU",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "FRA",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "DUS",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "BER",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "BUE",
-                "isin": "ARDEUT116159",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "MUN",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "NAS",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GGQ1",
-                "exchange": "XTER",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "MEX",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG",
-                "exchange": "XSGO",
-                "isin": "US38259P5089",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Google, Inc.",
-                "symbol": "GOOG34",
-                "exchange": "BSP",
-                "isin": "BRGOOGBDR005",
-                "titleCount": "0",
-                "contentCount": "2",
-                "primary": "true"
-            },
-            {
-                "name": "Br. Holdings Corp",
-                "symbol": "1726",
-                "exchange": "TSE",
-                "isin": "JP3799610005",
-                "titleCount": "0",
-                "contentCount": "1",
-                "primary": "false"
-            }
-        ],
-        "locations": [],
-        "author": {
-            "name": "surprisevideo",
-            "homeUrl": [],
-            "email": [],
-            "description": [],
-            "dateLastActive": [],
-            "publishingPlatform": {
-                "userName": [],
-                "userId": [],
-                "statusesCount": [],
-                "totalViews": [],
-                "followingCount": [],
-                "followersCount": [],
-                "kloutScore": []
-            }
-        },
-        "source": {
-            "name": "Surprise Video",
-            "homeUrl": "http://www.surprisevideo.com",
-            "publisher": [],
-            "primaryLanguage": [],
-            "primaryMediaType": [],
-            "category": [],
-            "editorialRank": [],
-            "location": {
-                "country": [],
-                "countryCode": [],
-                "region": [],
-                "subregion": [],
-                "state": [],
-                "zipArea": [],
-                "zipCode": []
-            },
-            "feed": {
-                "id": "170454505",
-                "name": "Surprise Video",
-                "mediaType": "Blog",
-                "publishingPlatform": "WordPress",
-                "idFromPublisher": [],
-                "generator": "http://wordpress.org/?v=3.0.4",
-                "description": "Is Surprise Video Scary or Funny",
-                "tags": [],
-                "imageUrl": [],
-                "copyright": [],
-                "language": "English",
-                "dataFormat": "text",
-                "rank": {
-                    "autoRank": "9",
-                    "autoRankOrder": "355091",
-                    "inboundLinkCount": "0"
-                },
-                "inWhiteList": "true",
-                "autoTopics": [],
-                "editorialTopics": [],
-                "genre": []
-            }
-        }
-    },
-    {
-        "sequenceId": "245453201686",
-        "id": "15418731732",
-        "language": "English",
-        "title": "Scenes From an Italian Restaurant Ending (into)  My Life",
-        "content": "And finally folks??the uncut, non-edited version of 2 songs (or 1.25 songs, really) that were performed by Michael Kavanaugh & Co. (nation?s top Billy Jo?",
-        "tags": [
-            "party"
-        ],
-        "publishedDate": "2013-09-18T16:26:48Z",
-        "harvestDate": "2013-09-18T20:53:02Z",
-        "embargoDate": [],
-        "licenseEndDate": [],
-        "url": "http://ct.moreover.com/ct?haid=9f0dc0bdebd831c71379537582287f0ec473ba69b465a&co=f000000014264s-3426307852",
-        "commentsUrl": "http://www.surprisevideo.com/scenes-from-an-italian-restaurant-ending-into-my-life.html#comments",
-        "outboundUrls": [],
-        "dataFormat": "text",
-        "copyright": [],
-        "loginStatus": [],
-        "duplicateGroupId": "15418731732",

<TRUNCATED>

[27/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
deleted file mode 100644
index f56f9cc..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-edc-flickr</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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</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>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</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-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.jvnet.jaxb2.maven2</groupId>
-                <artifactId>maven-jaxb2-plugin</artifactId>
-                <configuration>
-                    <schemaDirectory>src/main/xmlschema/com/flickr/</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.flickr.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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCAsActivityTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCAsActivityTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCAsActivityTest.java
deleted file mode 100644
index 66445b3..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCAsActivityTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.gnip.flickr.test;
-
-//import org.codehaus.jackson.map.ObjectMapper;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.streams.gnip.powertrack.GnipActivityFixer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-//import com.fasterxml.jackson.xml.XmlMapper;
-//import com.gnip.xmlpojo.generated.FacebookEDC;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 8/21/13
- * Time: 11:53 AM
- * To change this template use File | Settings | File Templates.
- */
-public class FlickrEDCAsActivityTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(FlickrEDCAsActivityTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-//    XmlMapper mapper = new XmlMapper();
-
-    @Ignore
-    @Test
-    public void Tests()   throws Exception
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = FlickrEDCAsActivityTest.class.getResourceAsStream("/FlickrEDC.xml");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        XmlMapper xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        ObjectMapper jsonMapper = new ObjectMapper();
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                //LOGGER.debug(line);
-
-                Object activityObject = xmlMapper.readValue(line, Object.class);
-
-                String jsonString = jsonMapper.writeValueAsString(activityObject);
-
-                JSONObject jsonObject = new JSONObject(jsonString);
-
-                JSONObject fixedObject = GnipActivityFixer.fix(jsonObject);
-
-                Activity activity = null;
-                try {
-                    activity = jsonMapper.readValue(fixedObject.toString(), Activity.class);
-                } catch( Exception e ) {
-                    LOGGER.error(jsonObject.toString());
-                    LOGGER.error(fixedObject.toString());
-                    e.printStackTrace();
-                    Assert.fail();
-                }
-                //LOGGER.debug(des);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCSerDeTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCSerDeTest.java
deleted file mode 100644
index 7e6b28a..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/java/org/apache/streams/gnip/flickr/test/FlickrEDCSerDeTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.apache.streams.gnip.flickr.test;
-
-//import org.codehaus.jackson.map.ObjectMapper;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-//import com.fasterxml.jackson.xml.XmlMapper;
-//import com.gnip.xmlpojo.generated.FacebookEDC;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 8/21/13
- * Time: 11:53 AM
- * To change this template use File | Settings | File Templates.
- */
-public class FlickrEDCSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(FlickrEDCSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-//    XmlMapper mapper = new XmlMapper();
-
-    @Test
-    public void Tests()   throws Exception
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = FlickrEDCSerDeTest.class.getResourceAsStream("/FlickrEDC.xml");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        XmlMapper xmlMapper = new XmlMapper();
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, Boolean.FALSE);
-
-        ObjectMapper jsonMapper = new ObjectMapper();
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                //LOGGER.debug(line);
-
-                Object activityObject = xmlMapper.readValue(line, Object.class);
-
-                String jsonObject = jsonMapper.writeValueAsString(activityObject);
-
-                //LOGGER.debug(jsonObject);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}


[59/71] [abbrv] git commit: changing snapshot version to test with downstream builds

Posted by sb...@apache.org.
changing snapshot version to test with downstream builds


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/2ec7fe8c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/2ec7fe8c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/2ec7fe8c

Branch: refs/heads/master
Commit: 2ec7fe8cfcfd69b83e0f163362fc681c3bb80017
Parents: 8147821
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Wed Mar 19 20:33:34 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Wed Mar 19 20:33:34 2014 -0500

----------------------------------------------------------------------
 pom.xml                                         |  2 +-
 poms/compiled/pom.xml                           |  2 +-
 poms/pom.xml                                    |  2 +-
 poms/wrappers/pom.xml                           |  2 +-
 provision/pom.xml                               |  2 +-
 streams-cassandra/pom.xml                       |  2 +-
 streams-config-graph/pom.xml                    |  2 +-
 streams-config/pom.xml                          |  2 +-
 streams-contrib/pom.xml                         |  2 +-
 streams-contrib/streams-components-test/pom.xml |  4 +-
 .../streams-components-test.iml                 | 43 +++-----------------
 streams-contrib/streams-persist-console/pom.xml |  6 +--
 .../streams-persist-elasticsearch/pom.xml       | 10 ++---
 streams-contrib/streams-persist-hdfs/pom.xml    | 10 ++---
 streams-contrib/streams-persist-kafka/pom.xml   | 10 ++---
 streams-contrib/streams-persist-mongo/pom.xml   | 10 ++---
 .../streams-provider-datasift/pom.xml           |  2 +-
 .../streams-provider-facebook/pom.xml           |  2 +-
 .../gnip-edc-facebook/pom.xml                   |  6 +--
 .../gnip-edc-flickr/pom.xml                     |  4 +-
 .../gnip-edc-googleplus/pom.xml                 |  6 +--
 .../gnip-edc-instagram/pom.xml                  |  2 +-
 .../gnip-edc-reddit/pom.xml                     |  6 +--
 .../gnip-edc-youtube/pom.xml                    |  4 +-
 .../gnip-powertrack/pom.xml                     |  2 +-
 streams-contrib/streams-provider-gnip/pom.xml   |  2 +-
 .../streams-provider-moreover/pom.xml           |  2 +-
 streams-contrib/streams-provider-rss/pom.xml    |  4 +-
 .../streams-provider-sysomos/pom.xml            |  2 +-
 .../streams-provider-twitter/pom.xml            |  2 +-
 streams-core/pom.xml                            |  2 +-
 streams-eip-routes/pom.xml                      |  2 +-
 .../activity-consumer/pom.xml                   |  4 +-
 .../activity-registration/pom.xml               |  2 +-
 .../activity-subscriber/pom.xml                 |  2 +-
 streams-osgi-components/pom.xml                 |  2 +-
 .../streams-components-all/pom.xml              |  2 +-
 streams-pojo-extensions/pom.xml                 |  4 +-
 streams-pojo/pom.xml                            |  2 +-
 streams-storm/pom.xml                           | 10 ++---
 streams-util/pom.xml                            |  2 +-
 streams-web/pom.xml                             |  2 +-
 42 files changed, 80 insertions(+), 113 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 42d067d..1fec2b7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
 
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
 
     <name>Apache Streams Project</name>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/poms/compiled/pom.xml
----------------------------------------------------------------------
diff --git a/poms/compiled/pom.xml b/poms/compiled/pom.xml
index ca176d2..a7bfe6f 100644
--- a/poms/compiled/pom.xml
+++ b/poms/compiled/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams.build</groupId>
     <artifactId>shared-plugin-settings</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>compiled-bundle-settings</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/poms/pom.xml
----------------------------------------------------------------------
diff --git a/poms/pom.xml b/poms/pom.xml
index 321beee..f722997 100644
--- a/poms/pom.xml
+++ b/poms/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.streams.build</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/poms/wrappers/pom.xml
----------------------------------------------------------------------
diff --git a/poms/wrappers/pom.xml b/poms/wrappers/pom.xml
index 5c83d59..dd14544 100644
--- a/poms/wrappers/pom.xml
+++ b/poms/wrappers/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams.build</groupId>
     <artifactId>shared-plugin-settings</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>wrapper-bundle-settings</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/provision/pom.xml
----------------------------------------------------------------------
diff --git a/provision/pom.xml b/provision/pom.xml
index 2b66e2e..f0e7979 100644
--- a/provision/pom.xml
+++ b/provision/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.streams.build</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/streams-cassandra/pom.xml b/streams-cassandra/pom.xml
index 4837649..53d158a 100644
--- a/streams-cassandra/pom.xml
+++ b/streams-cassandra/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
 
     <artifactId>streams-cassandra</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-config-graph/pom.xml
----------------------------------------------------------------------
diff --git a/streams-config-graph/pom.xml b/streams-config-graph/pom.xml
index d4a3dbb..8ec62c3 100644
--- a/streams-config-graph/pom.xml
+++ b/streams-config-graph/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
 
     <artifactId>streams-config-graph</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-config/pom.xml
----------------------------------------------------------------------
diff --git a/streams-config/pom.xml b/streams-config/pom.xml
index a8cdd9a..59b725c 100644
--- a/streams-config/pom.xml
+++ b/streams-config/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
 
     <artifactId>streams-config</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 37ee3b7..896bb9b 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-components-test/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/pom.xml b/streams-contrib/streams-components-test/pom.xml
index 88973ba..c63385e 100644
--- a/streams-contrib/streams-components-test/pom.xml
+++ b/streams-contrib/streams-components-test/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
@@ -16,7 +16,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
index 7bc994e..fbec879 100644
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ b/streams-contrib/streams-components-test/streams-components-test.iml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/classes" />
-    <output-test url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/test-classes" />
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
@@ -10,45 +10,12 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="streams-core" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="module" module-name="streams-util" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
+    <orderEntry type="module" module-name="streams-core (1)" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-    <orderEntry type="module" module-name="streams-pojo" />
-    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
-    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
   </component>
   <component name="POM File Configuration" pomFile="" />
 </module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-persist-console/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/pom.xml b/streams-contrib/streams-persist-console/pom.xml
index c7f2cd3..c10a830 100644
--- a/streams-contrib/streams-persist-console/pom.xml
+++ b/streams-contrib/streams-persist-console/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,12 +15,12 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index a7a4979..cb321f3 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.elasticsearch</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-persist-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/pom.xml b/streams-contrib/streams-persist-hdfs/pom.xml
index 40e73a5..45dcc32 100644
--- a/streams-contrib/streams-persist-hdfs/pom.xml
+++ b/streams-contrib/streams-persist-hdfs/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.hadoop</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-persist-kafka/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-kafka/pom.xml b/streams-contrib/streams-persist-kafka/pom.xml
index f4fcaea..eb519f4 100644
--- a/streams-contrib/streams-persist-kafka/pom.xml
+++ b/streams-contrib/streams-persist-kafka/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.kafka</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-persist-mongo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-mongo/pom.xml b/streams-contrib/streams-persist-mongo/pom.xml
index a209acb..0e99483 100644
--- a/streams-contrib/streams-persist-mongo/pom.xml
+++ b/streams-contrib/streams-persist-mongo/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.mongodb</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-datasift/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-datasift/pom.xml b/streams-contrib/streams-provider-datasift/pom.xml
index b49db93..dff9c98 100644
--- a/streams-contrib/streams-provider-datasift/pom.xml
+++ b/streams-contrib/streams-provider-datasift/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-facebook/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-facebook/pom.xml b/streams-contrib/streams-provider-facebook/pom.xml
index bda986b..3d511bf 100644
--- a/streams-contrib/streams-provider-facebook/pom.xml
+++ b/streams-contrib/streams-provider-facebook/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>streams-provider-facebook</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
index 39befa4..add41af 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-provider-gnip</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -48,12 +48,12 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-provider-facebook</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
index f56f9cc..9496f13 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-provider-gnip</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
index 9933f57..2f1d900 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -67,13 +67,13 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
     </dependencies>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
index fd50125..cde8a5a 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
index d74def2..de63e03 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -65,13 +65,13 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
index 1acaae6..db8a69b 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-provider-gnip</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml b/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
index 57578f0..0399392 100644
--- a/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-gnip/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/pom.xml b/streams-contrib/streams-provider-gnip/pom.xml
index 68d6591..00b983a 100644
--- a/streams-contrib/streams-provider-gnip/pom.xml
+++ b/streams-contrib/streams-provider-gnip/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-moreover/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/pom.xml b/streams-contrib/streams-provider-moreover/pom.xml
index 521a865..d038dd2 100644
--- a/streams-contrib/streams-provider-moreover/pom.xml
+++ b/streams-contrib/streams-provider-moreover/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-rss/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/pom.xml b/streams-contrib/streams-provider-rss/pom.xml
index ae2d00f..a919dad 100644
--- a/streams-contrib/streams-provider-rss/pom.xml
+++ b/streams-contrib/streams-provider-rss/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -63,7 +63,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-persist-console</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-sysomos/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-sysomos/pom.xml b/streams-contrib/streams-provider-sysomos/pom.xml
index 5a42b17..32e320e 100644
--- a/streams-contrib/streams-provider-sysomos/pom.xml
+++ b/streams-contrib/streams-provider-sysomos/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-contrib/streams-provider-twitter/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/pom.xml b/streams-contrib/streams-provider-twitter/pom.xml
index 9a12bbc..76ae5f7 100644
--- a/streams-contrib/streams-provider-twitter/pom.xml
+++ b/streams-contrib/streams-provider-twitter/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-core/pom.xml
----------------------------------------------------------------------
diff --git a/streams-core/pom.xml b/streams-core/pom.xml
index 7f22cb1..e46d109 100644
--- a/streams-core/pom.xml
+++ b/streams-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>streams-core</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-eip-routes/pom.xml
----------------------------------------------------------------------
diff --git a/streams-eip-routes/pom.xml b/streams-eip-routes/pom.xml
index 78d0767..a4f4e10 100644
--- a/streams-eip-routes/pom.xml
+++ b/streams-eip-routes/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>streams-eip-routes</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-osgi-components/activity-consumer/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/activity-consumer/pom.xml b/streams-osgi-components/activity-consumer/pom.xml
index aa03c47..98b28f8 100644
--- a/streams-osgi-components/activity-consumer/pom.xml
+++ b/streams-osgi-components/activity-consumer/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>activity-consumer</artifactId>
@@ -142,7 +142,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-cassandra</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-osgi-components/activity-registration/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/activity-registration/pom.xml b/streams-osgi-components/activity-registration/pom.xml
index 9ab8a74..aee2d05 100644
--- a/streams-osgi-components/activity-registration/pom.xml
+++ b/streams-osgi-components/activity-registration/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>activity-registration</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-osgi-components/activity-subscriber/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/activity-subscriber/pom.xml b/streams-osgi-components/activity-subscriber/pom.xml
index 367fee7..8d072a3 100644
--- a/streams-osgi-components/activity-subscriber/pom.xml
+++ b/streams-osgi-components/activity-subscriber/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>activity-subscriber</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-osgi-components/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/pom.xml b/streams-osgi-components/pom.xml
index d7f68cd..a4eae29 100644
--- a/streams-osgi-components/pom.xml
+++ b/streams-osgi-components/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.streams.osgi.components</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-osgi-components/streams-components-all/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/streams-components-all/pom.xml b/streams-osgi-components/streams-components-all/pom.xml
index 7fb055c..c89fe96 100644
--- a/streams-osgi-components/streams-components-all/pom.xml
+++ b/streams-osgi-components/streams-components-all/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
 
   <artifactId>streams-components-all</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-pojo-extensions/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo-extensions/pom.xml b/streams-pojo-extensions/pom.xml
index 85796dd..aadc4e8 100644
--- a/streams-pojo-extensions/pom.xml
+++ b/streams-pojo-extensions/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>streams-pojo-extensions</artifactId>
 
     <properties>
-    <streams.version>0.1-SNAPSHOT</streams.version>
+    <streams.version>0.1.STREAMS26-SNAPSHOT</streams.version>
     </properties>
     <dependencies>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml
index 082e481..be4c510 100644
--- a/streams-pojo/pom.xml
+++ b/streams-pojo/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-storm/pom.xml
----------------------------------------------------------------------
diff --git a/streams-storm/pom.xml b/streams-storm/pom.xml
index fb8f8a2..bcfabad 100644
--- a/streams-storm/pom.xml
+++ b/streams-storm/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>streams-storm</artifactId>
@@ -32,22 +32,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config-graph</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
+            <version>0.1.STREAMS26-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-util/pom.xml
----------------------------------------------------------------------
diff --git a/streams-util/pom.xml b/streams-util/pom.xml
index cd6d031..4ab7a1a 100644
--- a/streams-util/pom.xml
+++ b/streams-util/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2ec7fe8c/streams-web/pom.xml
----------------------------------------------------------------------
diff --git a/streams-web/pom.xml b/streams-web/pom.xml
index 2a44e43..09ad06b 100644
--- a/streams-web/pom.xml
+++ b/streams-web/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>streams-project</artifactId>
     <groupId>org.apache.streams</groupId>
-    <version>0.1-SNAPSHOT</version>
+    <version>0.1.STREAMS26-SNAPSHOT</version>
   </parent>
   <artifactId>streams-web</artifactId>
   <packaging>war</packaging>


[68/71] [abbrv] git commit: not adding monitor thread, because it freezes LocalStreamBuilderTest

Posted by sb...@apache.org.
not adding monitor thread, because it freezes LocalStreamBuilderTest


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/c614c6a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/c614c6a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/c614c6a8

Branch: refs/heads/master
Commit: c614c6a8c9e8b6a8128010b1db8a217529486edd
Parents: e3d0469
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 16:16:27 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 16:16:27 2014 -0500

----------------------------------------------------------------------
 .../java/org/apache/streams/core/builders/LocalStreamBuilder.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/c614c6a8/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
index 3fc29cc..7dd5ced 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -128,7 +128,7 @@ public class LocalStreamBuilder implements StreamBuilder{
         Map<String, List<StreamsTask>> streamsTasks = new HashMap<String, List<StreamsTask>>();
         monitorThread = new LocalStreamMonitorThread(this.executor, 1000);
         try {
-            this.executor.submit(monitorThread);
+            //this.executor.submit(monitorThread);
             for(StreamComponent comp : this.components.values()) {
                 int tasks = comp.getNumTasks();
                 List<StreamsTask> compTasks = new LinkedList<StreamsTask>();


[45/71] [abbrv] git commit: Added public static IDs to assist stream builders

Posted by sb...@apache.org.
Added public static IDs to assist stream builders

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572412 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/8f4e4a55
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/8f4e4a55
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/8f4e4a55

Branch: refs/heads/master
Commit: 8f4e4a552ea519e91f85becea17bde69ed370725
Parents: 715e411
Author: sblackmon <sb...@unknown>
Authored: Thu Feb 27 02:26:22 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Thu Feb 27 02:26:22 2014 +0000

----------------------------------------------------------------------
 .../apache/streams/elasticsearch/ElasticsearchPersistWriter.java  | 2 ++
 .../main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java   | 3 ++-
 .../apache/streams/twitter/provider/TwitterStreamProvider.java    | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/8f4e4a55/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
index 12d6d06..1feb373 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
@@ -40,6 +40,8 @@ import java.util.concurrent.ConcurrentLinkedQueue;
 
 public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushable, Closeable
 {
+    public final static String STREAMS_ID = "ElasticsearchPersistWriter";
+
     private final static Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistWriter.class);
     private final static NumberFormat MEGABYTE_FORMAT = new DecimalFormat("#.##");
     private final static NumberFormat NUMBER_FORMAT = new DecimalFormat("###,###,###,###");

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/8f4e4a55/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
index d005185..cb3ceec 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
@@ -30,6 +30,8 @@ import java.util.concurrent.ConcurrentLinkedQueue;
 
 public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Closeable
 {
+    public final static String STREAMS_ID = "WebHdfsPersistWriter";
+
     private final static Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistWriter.class);
 
     private final static char DELIMITER = '\t';
@@ -245,7 +247,6 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Cl
 
     @Override
     public void prepare(Object configurationObject) {
-        this.hdfsConfiguration = (HdfsWriterConfiguration)configurationObject;
         connectToWebHDFS();
         path = new Path(hdfsConfiguration.getPath());
     }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/8f4e4a55/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
index 7f9f4b5..4a8a51b 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
@@ -36,7 +36,7 @@ import java.util.concurrent.*;
  */
 public class TwitterStreamProvider implements StreamsProvider, Serializable {
 
-    private final static String STREAMS_ID = "TwitterStreamProvider";
+    public final static String STREAMS_ID = "TwitterStreamProvider";
 
     private final static Logger LOGGER = LoggerFactory.getLogger(TwitterStreamProvider.class);
 


[24/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/resources/GPlusEDCFixed.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/resources/GPlusEDCFixed.json b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/resources/GPlusEDCFixed.json
deleted file mode 100644
index 1cbc819..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/resources/GPlusEDCFixed.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/1ustV3K9ff5isV7dbDlvlRBP1_Y\"","title":"Don't forget to visit our YouTube page. To get all of our updates, make sure you subscribe - http://...","actor":{"displayName":"Panasonic Pro EU","url":"https://plus.google.com/101259025228588370944","id":"101259025228588370944","image":{"url":"https://lh5.googleusercontent.com/-CZmoqgbpgvE/AAAAAAAAAAI/AAAAAAAACXc/ar917w0qNAg/photo.jpg?sz=50"}},"published":"2013-08-30T09:50:33.727Z","url":"https://plus.google.com/101259025228588370944/posts/VQBYgb92L17","id":"z13hgnyasp3jdnthd04cft54tzucihugl3w","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13hgnyasp3jdnthd04cft54tzucihugl3w/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13hgnyasp3jdnthd04cft54tzucihugl3w/people/plusoners","totalItems":0},"url":"
 https://plus.google.com/101259025228588370944/posts/VQBYgb92L17","objectType":"note","content":"Don&#39;t forget to visit our YouTube page. To get all of our updates, make sure you subscribe - <a href=\"http://bit.ly/12yVqb7\" class=\"ot-anchor\" rel=\"nofollow\">http://bit.ly/12yVqb7</a>","attachments":[{"displayName":"PanasonicBusiness - YouTube","url":"http://bit.ly/12yVqb7","objectType":"video","content":"Since Panasonic's inception in 1918 they have always strived for a better working world and have been first to supply companies with the latest innovative pr...","image":{"url":"https://lh3.googleusercontent.com/proxy/v1vz-YFm0X2InaI043sz-Z5m_gIugtSm2JOQhBvTtVvnD54HoULsq_P-0caDSqkDJ_tKehqll_tyOyiEYMTQ3JIsvG_Ldh_I3wwv7WE=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13hgnyasp3jdnthd04cft54tzucihugl3w/comments","totalItems":0}},"updated":"2013-08-30T09:50:33.727Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/CJ01dm0uuyC-J8MIYprfusisUWs\"","title":"","actor":{"displayName":"Rita Thomas","url":"https://plus.google.com/101190511360851049699","id":"101190511360851049699","image":{"url":"https://lh6.googleusercontent.com/-QXpUR5Nym24/AAAAAAAAAAI/AAAAAAAAAAA/aU_sZMjRGYQ/photo.jpg?sz=50"}},"published":"2013-08-30T09:55:42.195Z","url":"https://plus.google.com/101190511360851049699/posts/9hZR7pHRCqm","id":"z12whdixlreptx0do23vtboito3rwjvkz","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12whdixlreptx0do23vtboito3rwjvkz/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12whdixlreptx0do23vtboito3rwjvkz/people/plusoners","totalItems":0},"url":"https://plus.google.com/101190511360851049699/posts/9hZR7pHRCqm","objectType":"note","content":"","attachments":[{
 "displayName":"LOreal has launched maiden CRM campaign , News of Promotional Products,  L'Oreal, online retail, health & beauty, advertising campaigns, company’s products, international cosmetics brand, Men Expert product","fullImage":{"url":"http://thetradeboss.com/userfiles/image/LOreal%20has%20launched%20maiden%20CRM%20campaign.jpg","type":"image/jpeg"},"url":"http://thetradeboss.com/news_detail.php?id=816","objectType":"article","content":"News on Indian Economy, Economic Indicators, Government Policy for Economy, Industries Fiscal & Monetary Measures. News & analysis on Domestic and International Trade, National and State Finances, Budget, Government Regulation, Monetary Policy, RBI Rates, Interest Rates, CRR, Indian Trade, Monetary and Industrial Policy","image":{"url":"https://lh3.googleusercontent.com/proxy/GOs6WKijNy2idRzCQJyM1gzwifPn0yvOzSKoI6u4Etq-QgMZoTw_5GJ9JYiYAqIAljCWdia-CfORh9_dAsMEOwAaUIyOrVdahzgHBVrvR8SRDvpZO2VldqQY0T5bsxghqORIvwUo1JnhEzN9gg=w120-h120","type":"im
 age/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12whdixlreptx0do23vtboito3rwjvkz/comments","totalItems":0}},"updated":"2013-08-30T09:55:42.195Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/dIE0guhV1UHRIjmIAooxBqG4chM\"","title":"Thank you so much for nominating me :O). Here's my answers to your very difficult questions - I couldn't...","actor":{"displayName":"Charlotte MacDonald-Gaunt","url":"https://plus.google.com/112384979055318926604","id":"112384979055318926604","image":{"url":"https://lh6.googleusercontent.com/-wQilUlGy1n8/AAAAAAAAAAI/AAAAAAAAC1Y/_uoGhW3YL7k/photo.jpg?sz=50"}},"published":"2013-08-30T09:52:52.356Z","url":"https://plus.google.com/112384979055318926604/posts/BWsQ9gtuCfC","id":"z13lztpbnnfehrvly23dzjyh4yqje1lq304","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13lztpbnnfehrvly23dzjyh4yqje1lq304/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13lztpbnnfehrvly23dzjyh4yqje1lq304/people/plusoners","totalItem
 s":0},"url":"https://plus.google.com/112384979055318926604/posts/BWsQ9gtuCfC","objectType":"note","content":"Thank you so much for nominating me :O). Here&#39;s my answers to your very difficult questions - I couldn&#39;t just say one thing on so many of them:<br /><br />1. Soo many to choose from but I&#39;d say Gladiator, I can watch if over and over again.<br />2. I have a huge collection of scents and I keep buying new ones, and I couldn&#39;t just say one, because it depends on my mood, but some favourites are Alien Aqua Chic, Tom Ford Jasmin Noir, Estée Lauder Pleasures<br />3. I love to travel it&#39;s the best thing in the world, but I also have to go and see my family a few times a year, so I have to say - visit my family<br />4. Finding Nemo, Little Mermaid and Aladdin<br />5. Spiders - HATE them, and have developed a thing with flying..... :(<br />6. Love following shows, but prefer to have them all recorded so I can seem them in one go :O). Scandal is my favourite at th
 e moment<br />7. Detangling spray<br />8. Skinny Decaf, Sugarfree Vanilla Latte - that&#39;s a mouthful...<br />9. Girls Aloud Out of Control<br />10. Origins Drink Up Intensive mask, Clarins Hand and Nail cream, Estée Lauder Hydrationist creme<br />11.Mindy Gledhill Hard - such a beautiful thoughtful song, if you haven&#39;t heard any of Mindy&#39;s songs, I definitely recommend you check her out on iTunes","replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13lztpbnnfehrvly23dzjyh4yqje1lq304/comments","totalItems":0}},"updated":"2013-08-30T09:52:52.356Z","provider":{"title":"brushofbeauty17.blogspot.com"}}
-{"verb":"share","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/0XqmlAx1OV4Mn_OSdEmyRnpSQsM\"","title":"Pancakes with Figs\n\nLayers of pancakes, ground almonds and orange zest. Add baked figs and you have ...","actor":{"displayName":"Salvatore Giannino","url":"https://plus.google.com/107582072804422654222","id":"107582072804422654222","image":{"url":"https://lh4.googleusercontent.com/-96wNwthN-T0/AAAAAAAAAAI/AAAAAAAAADY/f8elye1ZwLI/photo.jpg?sz=50"}},"published":"2013-08-30T09:47:40.530Z","url":"https://plus.google.com/107582072804422654222/posts/JoWCMac9292","id":"z122u33ytnv1sbhve22dvb1zhtjcfbf3w","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"annotation":"X I MIEI AMICI  auguro buon pranzo a tutti su G +","object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z122u33ytnv1sbhve22dvb1zhtjcfbf3w/people/resharers","totalItems":0},"actor":{"displayName":"Jasmina Brozović","url":"https://plus.google.com/10654986
 1234460267717","id":"106549861234460267717","image":{"url":"https://lh6.googleusercontent.com/-47DHlZRVy4w/AAAAAAAAAAI/AAAAAAAAAXc/ghmKzofAYUg/photo.jpg?sz=50"}},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z122u33ytnv1sbhve22dvb1zhtjcfbf3w/people/plusoners","totalItems":0},"url":"https://plus.google.com/106549861234460267717/posts/Ve4aXTUpYn4","id":"z13gxn5bmpbmupb5f04chragoszjj3o5fig","objectType":"activity","content":"<b>Pancakes with Figs</b><br /><br />Layers of pancakes, ground almonds and orange zest. Add baked figs and you have a winner!<br /><br />Serves 16<br /><br /><i>Balsamic baked figs:</i><br /><br />6 ripe figs, cut in half lengthways<br />Balsamic glaze<br />Caster sugar<br />Set the oven grill to high. Dip the cut-side of each fig half into the sugar and arrange them, cut-side up, on a lined baking tray. Drizzle lightly with the balsamic glaze. Place under the grill, leaving at least 12 cm between the element and the figs. Grill for 5-10 m
 inutes or until caramelised. Set aside.<br /><br /><i>Filling:</i><br /><br />1½ cups almond meal<br />½ cup brown sugar<br />Seeds from 1 vanilla pod<br />Zest from 2 mandarins<br />Combine all ingredients in a food processor. Pulse for a few seconds and set aside.<br />Crêpes (makes 14):<br /><br />3 eggs, beaten<br />1 cup milk<br />1/3 cup soda water<br />1 cup flour<br />3 tbsp sugar<br />¼ tsp salt<br />1 tsp vanilla extract<br />butter, or oil for frying<br />Beat the eggs with the milk. Add the soda water, stir well and then whisk in the flour, sugar, salt and vanilla until smooth.<br />Heat a 25 cm non-stick pan, or crêpe pan if you have it, over a medium-high flame. Drop in a little butter or give a quick spray of oil. Ladle in some of the batter to cover the bottom of the pan thinly, tilting it around to spread evenly. Cook for about 2 minutes or until the edges lift a little and the bottom is slightly browned. Flip over and cook the other side for about 30 seconds. 
 Turn the crêpe onto a baking tray and sprinkle it with a little of the almond filling (about 2 tbsp).<br />Continue cooking the crêpes and layering them with the almond filling until all of the batter is used. You should get about 14 crêpes from the mixture. Leave the final crêpe bare.<br />Preheat the oven grill to medium and set the rack in the centre of the oven. Grill the stack of crêpes until the edges of the top few have browned and curled up a little. This is just to make the finished &quot;cake&quot; look nice. Keep an eye on them while you&#39;re doing this as they can burn very quickly.<br />Carefully lift the crêpe cake onto your serving plate, drizzle with the syrup and top with a  few of the baked figs and give a final zest of mandarin.<br />Eat while still warm or at room temperature.<br /><br /><i>Syrup:</i><br /><br />1 cup mandarin juice, use the mandarins you zested (top up with oranje juice if you dan&#39;t have enough)<br />1 tbsp fig balsamic (alternativel
 y use regular)<br />Seeds from 1 vanilla pod or ½ tsp vanilla paste<br />1 tbsp marsala wine<br />Combine all ingredients in a small pan and simmer over low heat until reduced by half. Consistency should be glossy and syrupy. Set aside.<br /><br />Enjoy:-)<br /><br />photo via <i>google</i>","attachments":[{"fullImage":{"url":"https:","type":"image/jpeg","height":906,"width":600},"url":"/photos/106549861234460267717/albums/5916010852535480865/5917844149567326002?authkey=CI-Y6e7T-46_uQE","id":"106549861234460267717.5917844149567326002","objectType":"photo","content":"","image":{"url":"https://lh6.googleusercontent.com/-9teXtUcLgrs/UiBn5mMVhzI/AAAAAAAAEAM/Auj4mg_7rEs/w506-h750/087bc5927e4bbeac2d02edb1430ecee9.jpg","type":"image/jpeg","height":750,"width":506}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z122u33ytnv1sbhve22dvb1zhtjcfbf3w/comments","totalItems":0}},"updated":"2013-08-30T09:47:40.530Z","provider":{"title":"Reshared Post"}}
-{"verb":"share","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/MjrUFnQrM2naMIUq9MV9ilH29wI\"","title":"Pancakes with Figs\n\nLayers of pancakes, ground almonds and orange zest. Add baked figs and you have ...","actor":{"displayName":"Jasmina Brozović","url":"https://plus.google.com/106549861234460267717","id":"106549861234460267717","image":{"url":"https://lh6.googleusercontent.com/-47DHlZRVy4w/AAAAAAAAAAI/AAAAAAAAAXc/ghmKzofAYUg/photo.jpg?sz=50"}},"published":"2013-08-30T09:41:04.666Z","url":"https://plus.google.com/106549861234460267717/posts/5Usa2a3mm8g","id":"z13asxjorvfgift0u23htn5abvvsx1evn","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Baking (Discussion)"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13asxjorvfgift0u23htn5abvvsx1evn/people/resharers","totalItems":0},"actor":{"displayName":"Jasmina Brozović","url":"https://plus.google.com/106549861234460267717","id":"106549861234460267717","image":{
 "url":"https://lh6.googleusercontent.com/-47DHlZRVy4w/AAAAAAAAAAI/AAAAAAAAAXc/ghmKzofAYUg/photo.jpg?sz=50"}},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13asxjorvfgift0u23htn5abvvsx1evn/people/plusoners","totalItems":0},"url":"https://plus.google.com/106549861234460267717/posts/Ve4aXTUpYn4","id":"z13gxn5bmpbmupb5f04chragoszjj3o5fig","objectType":"activity","content":"<b>Pancakes with Figs</b><br /><br />Layers of pancakes, ground almonds and orange zest. Add baked figs and you have a winner!<br /><br />Serves 16<br /><br /><i>Balsamic baked figs:</i><br /><br />6 ripe figs, cut in half lengthways<br />Balsamic glaze<br />Caster sugar<br />Set the oven grill to high. Dip the cut-side of each fig half into the sugar and arrange them, cut-side up, on a lined baking tray. Drizzle lightly with the balsamic glaze. Place under the grill, leaving at least 12 cm between the element and the figs. Grill for 5-10 minutes or until caramelised. Set aside.<br /><br /><i
 >Filling:</i><br /><br />1½ cups almond meal<br />½ cup brown sugar<br />Seeds from 1 vanilla pod<br />Zest from 2 mandarins<br />Combine all ingredients in a food processor. Pulse for a few seconds and set aside.<br />Crêpes (makes 14):<br /><br />3 eggs, beaten<br />1 cup milk<br />1/3 cup soda water<br />1 cup flour<br />3 tbsp sugar<br />¼ tsp salt<br />1 tsp vanilla extract<br />butter, or oil for frying<br />Beat the eggs with the milk. Add the soda water, stir well and then whisk in the flour, sugar, salt and vanilla until smooth.<br />Heat a 25 cm non-stick pan, or crêpe pan if you have it, over a medium-high flame. Drop in a little butter or give a quick spray of oil. Ladle in some of the batter to cover the bottom of the pan thinly, tilting it around to spread evenly. Cook for about 2 minutes or until the edges lift a little and the bottom is slightly browned. Flip over and cook the other side for about 30 seconds. Turn the crêpe onto a baking tray and sprinkle it wi
 th a little of the almond filling (about 2 tbsp).<br />Continue cooking the crêpes and layering them with the almond filling until all of the batter is used. You should get about 14 crêpes from the mixture. Leave the final crêpe bare.<br />Preheat the oven grill to medium and set the rack in the centre of the oven. Grill the stack of crêpes until the edges of the top few have browned and curled up a little. This is just to make the finished &quot;cake&quot; look nice. Keep an eye on them while you&#39;re doing this as they can burn very quickly.<br />Carefully lift the crêpe cake onto your serving plate, drizzle with the syrup and top with a  few of the baked figs and give a final zest of mandarin.<br />Eat while still warm or at room temperature.<br /><br /><i>Syrup:</i><br /><br />1 cup mandarin juice, use the mandarins you zested (top up with oranje juice if you dan&#39;t have enough)<br />1 tbsp fig balsamic (alternatively use regular)<br />Seeds from 1 vanilla pod or ½ ts
 p vanilla paste<br />1 tbsp marsala wine<br />Combine all ingredients in a small pan and simmer over low heat until reduced by half. Consistency should be glossy and syrupy. Set aside.<br /><br />Enjoy:-)<br /><br />photo via <i>google</i>","attachments":[{"fullImage":{"url":"https:","type":"image/jpeg","height":906,"width":600},"url":"/photos/106549861234460267717/albums/5916010852535480865/5917844149567326002?authkey=CI-Y6e7T-46_uQE&sqi=100067787641926231826&sqsi=6ee61a12-0612-47bb-99f3-d1674d5fac52","id":"106549861234460267717.5917844149567326002","objectType":"photo","content":"","image":{"url":"https://lh6.googleusercontent.com/-9teXtUcLgrs/UiBn5mMVhzI/AAAAAAAAEAM/Auj4mg_7rEs/w506-h750/087bc5927e4bbeac2d02edb1430ecee9.jpg","type":"image/jpeg","height":750,"width":506}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13asxjorvfgift0u23htn5abvvsx1evn/comments","totalItems":0}},"updated":"2013-08-30T09:41:04.666Z","provider":{"title":"Reshared Post"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/xx1E8yMCaw3wF2GWcijTi0BZXDI\"","title":"\"There is a shortage of professional talent...companies are focusing on the competitiveness of their...","actor":{"displayName":"PiCubed | South Africa","url":"https://plus.google.com/101839882110837437311","id":"101839882110837437311","image":{"url":"https://lh4.googleusercontent.com/-Okm2k8mk3Gk/AAAAAAAAAAI/AAAAAAAAADw/tvzxvdpcAlA/photo.jpg?sz=50"}},"published":"2013-08-30T09:41:58.648Z","url":"https://plus.google.com/101839882110837437311/posts/B5bG5bVsgvT","id":"z13ojrxbbsurdlcdw22wcvlrarjicjgyv04","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ojrxbbsurdlcdw22wcvlrarjicjgyv04/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ojrxbbsurdlcdw22wcvlrarjicjgyv04/people/plusoners","totalItems":0},
 "url":"https://plus.google.com/101839882110837437311/posts/B5bG5bVsgvT","objectType":"note","content":"&quot;There is a shortage of professional talent...companies are focusing on the competitiveness of their EVP&quot; <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23Unilever\">#Unilever</a>  <a href=\"http://bizcom.to/1/24nf\" class=\"ot-anchor\" rel=\"nofollow\">http://bizcom.to/1/24nf</a> ","attachments":[{"displayName":"Unilever tops employer list for the first time in SA","fullImage":{"url":"http://cdn.biz-file.com/c/1308/144686.jpg","type":"image/jpeg"},"url":"http://bizcom.to/1/24nf","objectType":"article","content":"Unilever has been Certified as the Top Employer in South Africa for 2014 by the Top Employers Institute with Nestlé and EY following closely on its heels.","image":{"url":"https://lh5.googleusercontent.com/proxy/NBBgpxX-QcSemH1-ug7MJsVd-4G-SqqNEsJVI2ZL23a3OY5OcQi74PJ83SB0Hoa5hIIrZSnA_i5F=w120-h120","type":"image/jpeg","height":120,"width":120}}],"repl
 ies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ojrxbbsurdlcdw22wcvlrarjicjgyv04/comments","totalItems":0}},"updated":"2013-08-30T09:41:58.648Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/1e2_alOLRqQbG6DLaji_AjBy2bc\"","title":"adidas AX 1 GTX Mid K (Toddler/Youth) Urban Sky/Chalk/Lab Lime: Product Description Adidas Kid's AX ...","actor":{"displayName":"Girls Athletic Shoes","url":"https://plus.google.com/100694434861564797276","id":"100694434861564797276","image":{"url":"https://lh3.googleusercontent.com/-so3frFIBBmY/AAAAAAAAAAI/AAAAAAAAAB4/R_nBQkBXV-U/photo.jpg?sz=50"}},"published":"2013-08-30T09:36:51.619Z","url":"https://plus.google.com/100694434861564797276/posts/3zfw4Dj9U64","id":"z12cvxoydyqsfnwsl23wc1zppqu5fxcue","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12cvxoydyqsfnwsl23wc1zppqu5fxcue/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12cvxoydyqsfnwsl23wc1zppqu5fxcue/people/plusoners","totalItems":0},"url":"ht
 tps://plus.google.com/100694434861564797276/posts/3zfw4Dj9U64","objectType":"note","content":"adidas AX 1 GTX Mid K (Toddler/Youth) Urban Sky/Chalk/Lab Lime: Product Description Adidas Kid&#39;s AX 1 GTX Mid Top Products (10/4/11) - Prosperent Community Forum Max Factor Lipfinity 3D Maxwear Lip Color - 760 Suede Seductiion 6ml/0.2oz IAC Aplia Payment Code for McEachern&#39;s Microeconomics: A Contemporary Introduction, Aplia ... adidas outlet store - BuyCheapr.com adidas outlet store - compare prices at BuyCheapr.com ... help Kick that lethargic mile time to the curve and slip into the ready-to-fly adizero Tempo 5 M from adidas! <a href=\"http://dlvr.it/3tPyZl\" class=\"ot-anchor\" rel=\"nofollow\">http://dlvr.it/3tPyZl</a>","attachments":[{"displayName":"Home - BuyCheapr.com","fullImage":{"url":"http://www.buycheapr.com/us/img/slider/autumn/outdoor.jpg","type":"image/jpeg"},"url":"http://BuyCheapr.com","objectType":"article","content":" - compare prices at BuyCheapr.com","image":{"
 url":"https://lh4.googleusercontent.com/proxy/IZd0a3efC_waGKxG2a5n9ESM2LsMVTRKSclIak5O5DXK8P66RPiq3Qbrjd55PMWR5_ap_myPt9Ci5fzKI7CRAUB79Ev5y32Ohg=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12cvxoydyqsfnwsl23wc1zppqu5fxcue/comments","totalItems":0}},"updated":"2013-08-30T09:36:51.619Z","provider":{"title":"dlvr.it"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/F5xBXRkx3aSaf2yxCmaA1UQdccE\"","title":"'EXCELLENT SELLER''","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:15:47.655Z","url":"https://plus.google.com/106676883123718531618/posts/PgwPirW5Yg9","id":"z125efhw1tfsxpoob04chfuxyuj2etnxtag","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z125efhw1tfsxpoob04chfuxyuj2etnxtag/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z125efhw1tfsxpoob04chfuxyuj2etnxtag/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/PgwPirW5Yg9","objectType":"note
 ","content":"&#39;EXCELLENT SELLER&#39;&#39;","attachments":[{"displayName":"Remington CI9538 Large Pearl Ceramic Professional Curling Wand curling iron","fullImage":{"url":"http://tinabradford.com/images/uploads/screenshot/remington_ci9538_large_pearl_ceramic_professional_curling_wand_curling_iron.png","type":"image/jpeg"},"url":"http://tinabradford.com/label/1_remington_ci9538_large_pearl_ceramic_professional_curling_wand_curling_iron","objectType":"article","content":"The Remington curl wand features a ceramic wand infused with crushed real pearl created using high-tech, patent-pending technology...","image":{"url":"https://lh5.googleusercontent.com/proxy/ni8mxM5aJChoDo2ASc8_mzp7b92piIrM011fXE0n6RngrPjXAs9_GdlUMnjv-GitFXKIJAqVZmCymZJ3jJ_4DcLYDoNoP-4kuULiOLJyTpr8vAiRpy1Y0pctBt1N4YD3xn7GyIyVf75dkEQhWaAv_UUoFCOOiKh7OMIoPaXWoMeVvUyHVkv2t5IaRW2vTM-dZ08=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z125ef
 hw1tfsxpoob04chfuxyuj2etnxtag/comments","totalItems":0}},"updated":"2013-08-30T09:15:47.655Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/qQnsDwaluML09Y3_n7lBRLPEwUo\"","title":"'Good product for the cheap price","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:16:49.985Z","url":"https://plus.google.com/106676883123718531618/posts/A1SED3rdvHe","id":"z12owrygloiuctvdp23eyrjqnsmqgzidn","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12owrygloiuctvdp23eyrjqnsmqgzidn/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12owrygloiuctvdp23eyrjqnsmqgzidn/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/A1SED3rdvHe","objectTyp
 e":"note","content":"&#39;Good product for the cheap price","attachments":[{"displayName":"Remington Curl Perfect curling iron","fullImage":{"url":"http://tinabradford.com/images/uploads/screenshot/remington_curl_perfect_curling_iron.png","type":"image/jpeg"},"url":"http://tinabradford.com/label/6_remington_curl_perfect_curling_iron","objectType":"article","content":"Frustrated with traditional wire-bound spiral curling irons that leave creases in your curls? Cut the stress out of your spirals w...","image":{"url":"https://lh4.googleusercontent.com/proxy/JIo4P5V4Q4XGp0ny2Gtq_jZzI-RP9j-rvGlP8KnC6cIpvqg-i_FClw3F13xpZWg0iexoQs2p42OGfHKz3Ld7yzTqPyYMS5dr2IbOTMdW3EjJhpglnuLO323nhisuq8tXDGQ7rU-Lii80=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12owrygloiuctvdp23eyrjqnsmqgzidn/comments","totalItems":0}},"updated":"2013-08-30T09:16:49.985Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/Irc3EFqCd4V9uZN6rmL2AFxQSe8\"","title":"'I love my new curling iron","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:17:15.491Z","url":"https://plus.google.com/106676883123718531618/posts/6RWNJsRNRtC","id":"z130wv4wztynhbhd023eyrjqnsmqgzidn","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z130wv4wztynhbhd023eyrjqnsmqgzidn/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z130wv4wztynhbhd023eyrjqnsmqgzidn/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/6RWNJsRNRtC","objectType":"no
 te","content":"&#39;I love my new curling iron","attachments":[{"displayName":"Remington S6600 Ultimate Stylist Flat Iron & Curling Iron curling iron","fullImage":{"url":"http://tinabradford.com/images/uploads/screenshot/remington_s6600_ultimate_stylist_flat_iron_amp_curling_iron_curling_iron.png","type":"image/jpeg"},"url":"http://tinabradford.com/label/8_remington_s6600_ultimate_stylist_flat_iron_amp_curling_iron_curling_iron","objectType":"article","content":"The 4-in-1 Remington S6600 Ultimate Styling Ceramic Hair Straightener lets you don a different hair-do for every other special occ...","image":{"url":"https://lh4.googleusercontent.com/proxy/qJkZ0ilrOEfYt4CaB6cFdnmVVeMCa9bwU5RprWuumLavdAWobb9d5dLdGtfI4GSykTODJD68p4yGfSE53w7ql1_PVVZwHJ6A1LzIZN-6JQpTItvX34I7drPMFLWZS-TyShJNtmg2LlwPpB2ufiCa28-3j5iOcRJhPzr5dxmbvjGdMKlhwFDT3HtAl2h7MA=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z130wv4wztynhbhd023e
 yrjqnsmqgzidn/comments","totalItems":0}},"updated":"2013-08-30T09:17:15.491Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/nhOQiFgI02AXJgJx_ozVpiBNeD4\"","title":"excellent product,my wife love it","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:07:55.813Z","url":"https://plus.google.com/106676883123718531618/posts/YS8bC39hrag","id":"z132xlyzisfxhnxpv04chfuxyuj2etnxtag","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z132xlyzisfxhnxpv04chfuxyuj2etnxtag/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z132xlyzisfxhnxpv04chfuxyuj2etnxtag/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/YS8bC39hrag","obj
 ectType":"note","content":"excellent product,my wife love it","attachments":[{"displayName":"Remington EP6025 Smooth & Silky Epilator Epilator","fullImage":{"url":"http://saraharding.com/images/uploads/screenshot/remington_ep6025_smooth_amp_silky_epilator_epilator.png","type":"image/jpeg"},"url":"http://saraharding.com/label/30_remington_ep6025_smooth_amp_silky_epilator_epilator","objectType":"article","content":"Get smooth and silky skin that can last up to six weeks with the Remington epilator hair removal kit. The Remington Smooth and Sil...","image":{"url":"https://lh6.googleusercontent.com/proxy/5H5hovLNsjH6XKvcl00G_A7s6Fpcbu7Yome9s-H69PpVea4hl-JmeTSJZXtd3_4e6cBTwA_vObApikUmOItayAVQZNefpRxDZMZjrvjgztne88uXj3W_1OJLKqv_onQApV9UplThacCWnXkiewQiVVJeVp8xXzKi=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z132xlyzisfxhnxpv04chfuxyuj2etnxtag/comments","totalItems":0}},"updated":"2013-08-30T09:07:55.813Z",
 "provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/VaJFcODdYUhtXpIECCpckzyo1Bg\"","title":"Front Office Manager at Remington Hospitality Services (Parsippany, NJ): Remington Hotels is one of ...","actor":{"displayName":"New Jersey Job Openings and Listings","url":"https://plus.google.com/113354891177063064690","id":"113354891177063064690","image":{"url":"https://lh4.googleusercontent.com/-pTZjV59x140/AAAAAAAAAAI/AAAAAAAAACY/2arOFC-4t1Y/photo.jpg?sz=50"}},"published":"2013-08-30T09:10:11.032Z","url":"https://plus.google.com/113354891177063064690/posts/2y8MjwGM2ZK","id":"z133gvnilnnayjscf22qijcrstr2tz5ef","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z133gvnilnnayjscf22qijcrstr2tz5ef/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z133gvnilnnayjscf22qijcrstr2tz5ef/people/plusoners","totalIte
 ms":0},"url":"https://plus.google.com/113354891177063064690/posts/2y8MjwGM2ZK","objectType":"note","content":"Front Office Manager at Remington Hospitality Services (Parsippany, NJ): Remington Hotels is one of the largest, privately held hotel management companies in the U.S. As a world class leader operating 70 + hotels... <a href=\"http://dlvr.it/3tPbdC\" class=\"ot-anchor\" rel=\"nofollow\">http://dlvr.it/3tPbdC</a>","attachments":[{"displayName":"Front Office Manager job in Parsippany, NJ (08/30/2013) | Simply Hired","url":"http://dlvr.it/3tPbdC","objectType":"article","content":"August 30, 2013. View the job posting for Front Office Manager at Remington Hospitality Services in Parsippany, NJ. Remington Hotels is one of the largest, "}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z133gvnilnnayjscf22qijcrstr2tz5ef/comments","totalItems":0}},"updated":"2013-08-30T09:10:11.032Z","provider":{"title":"dlvr.it"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/De2u1ue9N2U8atMypXPb2FkOc5g\"","title":"'Perfect","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:08:22.532Z","url":"https://plus.google.com/106676883123718531618/posts/CkVNn4MK8Rb","id":"z12zjddyrorrhjbua23eyrjqnsmqgzidn","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12zjddyrorrhjbua23eyrjqnsmqgzidn/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12zjddyrorrhjbua23eyrjqnsmqgzidn/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/CkVNn4MK8Rb","objectType":"note","content":"&#39
 ;Perfect","attachments":[{"displayName":"Panasonic Close Curves 3-Blade Wet/Dry Ladies Shaver Epilator","fullImage":{"url":"http://saraharding.com/images/uploads/screenshot/panasonic_close_curves_3_blade_wetdry_ladies_shaver_epilator.png","type":"image/jpeg"},"url":"http://saraharding.com/label/32_panasonic_close_curves_3_blade_wetdry_ladies_shaver_epilator","objectType":"article","content":"The Panasonic Close Curves 3-Blade Wet/Dry Ladies Shaver is all you need for silky smooth skin, and you can use it under a running...","image":{"url":"https://lh5.googleusercontent.com/proxy/V2GZWg0-n1bRY7Ti3517nvmlNrRq1PRMqzlPONPJqu2Py7wdHC7aeFF9pYh5uBPidGx_WcivRXLOHMo6wzmr6vrSnedbkI60jl58NgIFYLQncL6K0Sp9Uu00zwJQaCZmlAvzM6JO0yJtsp08gSZvfQTA-Nk7N39PU0X0qDXCK4Se=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12zjddyrorrhjbua23eyrjqnsmqgzidn/comments","totalItems":0}},"updated":"2013-08-30T09:08:22.532Z","provider":{
 "title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/ZhamqQRJ3jjiwbFxbSjSUSQu4Gg\"","title":"@EsteeLauder launches new digital experience for customers, read more:\nhttp://ow.ly/opdk0","actor":{"displayName":"Dynmark","url":"https://plus.google.com/107280972506664574599","id":"107280972506664574599","image":{"url":"https://lh6.googleusercontent.com/-mWoXOMW8WzM/AAAAAAAAAAI/AAAAAAAAABs/wS1_tzLJdQY/photo.jpg?sz=50"}},"published":"2013-08-30T09:10:20.925Z","url":"https://plus.google.com/107280972506664574599/posts/2zcqD2Z8hpX","id":"z12ifhwhgmb3vvxcf23jxvvr5m3acbkrr04","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12ifhwhgmb3vvxcf23jxvvr5m3acbkrr04/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12ifhwhgmb3vvxcf23jxvvr5m3acbkrr04/people/plusoners","totalItems":0},"url":"https://plus.google.co
 m/107280972506664574599/posts/2zcqD2Z8hpX","objectType":"note","content":"@EsteeLauder launches new digital experience for customers, read more: <br /> <a href=\"http://ow.ly/opdk0\" class=\"ot-anchor\" rel=\"nofollow\">http://ow.ly/opdk0</a>","attachments":[{"displayName":"Estee Lauder launches new digital experience for customers","fullImage":{"url":"http://i1.wp.com/dynmark.files.wordpress.com/2013/01/retail-blog.png?fit=1000%2C1000","type":"image/jpeg"},"url":"http://ow.ly/opdk0","objectType":"article","content":"  Summary: Estee Lauder customers can now take to their mobiles and PCs to share reviews of the brand's night products. Mobile customers of Estee Lauder can now share their experiences of the ...","image":{"url":"https://lh6.googleusercontent.com/proxy/dlzxW_2223Ed780lKg_JV_UcefpI5Ssx2qsEHXYNBFyXtgdZhzMkYMJ0c4holExqSInj5SWAk1noFWn8GLbhL2HG1Yt14eoOZ3AAO3e5Tcf_dMDh4kY3cfcJ93wwByZ-wcNdaA=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"http
 s://www.googleapis.com/plus/v1/activities/z12ifhwhgmb3vvxcf23jxvvr5m3acbkrr04/comments","totalItems":0}},"updated":"2013-08-30T09:10:20.925Z","provider":{"title":"HootSuite"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/hK-QHgDwWpYBy0_e9ITzCSi1F8E\"","title":"'Good Cordless epilator'' ","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:05:34.594Z","url":"https://plus.google.com/106676883123718531618/posts/Pp9BA1AaVBW","id":"z134ttnjdwzyhzggc04chfuxyuj2etnxtag","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z134ttnjdwzyhzggc04chfuxyuj2etnxtag/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z134ttnjdwzyhzggc04chfuxyuj2etnxtag/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/Pp9BA1AaVBW","objectType
 ":"note","content":"&#39;Good Cordless epilator&#39;&#39; ","attachments":[{"displayName":"Remington EP1050 Smooth & Silky Facial Tweezer System Epilator","fullImage":{"url":"http://saraharding.com/images/uploads/screenshot/remington_ep1050_smooth_amp_silky_facial_tweezer_system_epilator.png","type":"image/jpeg"},"url":"http://saraharding.com/label/25_remington_ep1050_smooth_amp_silky_facial_tweezer_system_epilator","objectType":"article","content":"The Remington Smooth & Silky Facial Tweezer System helps you make facial areas smooth and silky on the go and at home. This Re...","image":{"url":"https://lh6.googleusercontent.com/proxy/mQPbglm_yyhioNKsS2OeLOlX0bFxay0q3J2TeuFKfO9CMkpUGJ29zBQx6FB9RPkD6aofhL3oFi9_5p-xyXJXmRt4ZdJ5N5oIRgk_ki5G3pCncgDif1a4EwT13JlfgPp2x_v2f04MEJU7PLe7dZO33rquib4L2Dg8EelMunlGo59WhosFxw=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z134ttnjdwzyhzggc04chfuxyuj2etnxtag/comments","to
 talItems":0}},"updated":"2013-08-30T09:05:34.594Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/oXLNNiMMJKx3mnAEQ-Sygf0_HL8\"","title":"I love it!!!","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:05:47.266Z","url":"https://plus.google.com/106676883123718531618/posts/ePpzaTUUsuk","id":"z13lurqgtkm5j3lyz04chfuxyuj2etnxtag","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13lurqgtkm5j3lyz04chfuxyuj2etnxtag/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13lurqgtkm5j3lyz04chfuxyuj2etnxtag/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/ePpzaTUUsuk","objectType":"note","cont
 ent":"I love it!!!","attachments":[{"displayName":"Panasonic 6-in-1 Epilator","fullImage":{"url":"http://saraharding.com/images/uploads/screenshot/panasonic_6_in_1_epilator.png","type":"image/jpeg"},"url":"http://saraharding.com/label/26_panasonic_6_in_1_epilator","objectType":"article","content":"Dual disc, side-to-side gliding head with 48 rotating tweezing discs to remove hairNickel-free hypo-allergenic blades for a clean ...","image":{"url":"https://lh5.googleusercontent.com/proxy/FqZ7UKM5t_Vr9Y74ohBfCJmZayXw8JJurall1pJlsDlR8LESvhhsHgnWVH4cGjB613qHgVzdVR-LkAKv_XCfQmFvteO9KsHPNJbGyrnAgnc_zsJk0usuDd6VfjR6uQ=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13lurqgtkm5j3lyz04chfuxyuj2etnxtag/comments","totalItems":0}},"updated":"2013-08-30T09:05:47.266Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/GvkrEYvo65IKoroD02kpRo-dIpc\"","title":"'I liked the product''","actor":{"displayName":"MCSearch Labeling","url":"https://plus.google.com/106676883123718531618","id":"106676883123718531618","image":{"url":"https://lh3.googleusercontent.com/-sOPYVBu1_dA/AAAAAAAAAAI/AAAAAAAAA1A/U3HbgcMJ6PM/photo.jpg?sz=50"}},"published":"2013-08-30T09:02:41.971Z","url":"https://plus.google.com/106676883123718531618/posts/5qJo7Bzgxyy","id":"z12act3gdwmmvfwkw23eyrjqnsmqgzidn","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12act3gdwmmvfwkw23eyrjqnsmqgzidn/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12act3gdwmmvfwkw23eyrjqnsmqgzidn/people/plusoners","totalItems":0},"url":"https://plus.google.com/106676883123718531618/posts/5qJo7Bzgxyy","objectType":"note","
 content":"&#39;I liked the product&#39;&#39;","attachments":[{"displayName":"Estée Lauder DayWear Anti-Oxidant Beauty Benefit BB Creme Broad Spectrum SPF 35/1 oz. BB cream","fullImage":{"url":"http://melissaselby.com/images/uploads/screenshot/este_lauder_daywear_anti_oxidant_beauty_benefit_bb_creme_broad_spectrum_spf_351_oz_bb_cream.png","type":"image/jpeg"},"url":"http://melissaselby.com/label/23_este_lauder_daywear_anti_oxidant_beauty_benefit_bb_creme_broad_spectrum_spf_351_oz_bb_cream","objectType":"article","content":"Moisture, protection and flawless perfection all in one. This lightweight creme delivers an instant, even-toned, healthy look. Pow...","image":{"url":"https://lh6.googleusercontent.com/proxy/HLjwh3lrGGxi4soBVCMcM9ZCcHkmLx04WdTeHbxrlNltj5PjYO8TUzZs57gEmpcNGSUHHcuxMO6dD-ioAXvH_xpscy54caXshqok1UTaRX_hQzxcBGJhme1FCjIogAAr77Ed7-h1-pWOK_Rkk5AMOUqAsvkRveFkuSiUwz6jcZr9Mht9Q4b5VdiqXLYNrU5Ge0C_2opdpGthOozVfzOBAa5g=w120-h120","type":"image/jpeg","height":120,"width":120}}],"
 replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12act3gdwmmvfwkw23eyrjqnsmqgzidn/comments","totalItems":0}},"updated":"2013-08-30T09:02:41.971Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/7ChySu5vywtg3b80P2yNUPeDy8E\"","title":"#Schick Quattro Trim Style Razors Only $1.49 at Rite Aid! | #Stockup deal!!! - http://goo.gl/rt9JfT","actor":{"displayName":"Mommiez on a Mission","url":"https://plus.google.com/103806388977781503127","id":"103806388977781503127","image":{"url":"https://lh6.googleusercontent.com/-0eFkRtXqZrI/AAAAAAAAAAI/AAAAAAAAACI/Xoxq4tzGkuo/photo.jpg?sz=50"}},"published":"2013-08-30T08:55:35.397Z","url":"https://plus.google.com/103806388977781503127/posts/UYcBgn6kYRe","id":"z13gsbt4vmuwstpx404cfj4xjk2kzxlao10","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13gsbt4vmuwstpx404cfj4xjk2kzxlao10/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13gsbt4vmuwstpx404cfj4xjk2kzxlao10/people/plusoners","totalItems":0},"url":"
 https://plus.google.com/103806388977781503127/posts/UYcBgn6kYRe","objectType":"note","content":"<a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23Schick\">#Schick</a> Quattro Trim Style Razors Only $1.49 at Rite Aid! | <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23Stockup\">#Stockup</a> deal!!! - <a href=\"http://goo.gl/rt9JfT\" class=\"ot-anchor\" rel=\"nofollow\">http://goo.gl/rt9JfT</a>","attachments":[{"displayName":"Schick Quattro Trim Style Razors Only $1.49 at Rite Aid! - Mommiez on a Mission","fullImage":{"url":"http://mommiezonamission.com/wp-content/uploads/2013/08/schickrd.png","type":"image/jpeg"},"url":"http://goo.gl/rt9JfT","objectType":"article","content":"  We have a TON of hot razor deals this week! Here is one for Rite Aid shoppers Schick Quattro for Women Trim Style Razor $7.99 Buy 2 = $15.98 Use 2 $4/1 Schick Quattro printables Pay $7.98 Get a $5 +Up Reward when you buy $15 worth (limit 2 offers; valid 7/28-8/31) Final Cost […]","image":
 {"url":"https://lh4.googleusercontent.com/proxy/UcOq32JC12PcKtHnKEWikn1OZfxqQ_sX7ywvdY_FuiVbsAI5140mGRyV5z4XY-grCgvTeDNrQw3SejkjltHNV-6JHk8yt5LDHP_6P4jLvOQLpbg2=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13gsbt4vmuwstpx404cfj4xjk2kzxlao10/comments","totalItems":0}},"updated":"2013-08-30T08:55:35.397Z","provider":{"title":"Sendible"}}
-{"verb":"share","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/0NHFwv1lQWaACYCgk9PCJcCo7Cs\"","title":"The head in stars\n\n\n\nfor #10000photographersBWmonochrome +10000 Photographers BW Monochrome curated ...","actor":{"displayName":"Oups Sqzmoa","url":"https://plus.google.com/111108507143840139062","id":"111108507143840139062","image":{"url":"https://lh6.googleusercontent.com/-p5MqlfGwaJU/AAAAAAAAAAI/AAAAAAAAFdg/xRVzgkgvhSM/photo.jpg?sz=50"}},"published":"2013-08-30T08:54:28.820Z","url":"https://plus.google.com/111108507143840139062/posts/JjfMmzQVA2F","id":"z13ycfw4orvtup13e22csxewmz3hwza1j","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"- G+ Photographie - (11- Portrait - Les gens)"},"annotation":"Festival médiéval de Monflanquin <br>toujours des effets de lumière a travers des chapeaux de paille","object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ycfw4orvtup13e22csxewmz3hwza1j/people/resharers","totalItem
 s":0},"actor":{"displayName":"Oups Sqzmoa","url":"https://plus.google.com/111108507143840139062","id":"111108507143840139062","image":{"url":"https://lh6.googleusercontent.com/-p5MqlfGwaJU/AAAAAAAAAAI/AAAAAAAAFdg/xRVzgkgvhSM/photo.jpg?sz=50"}},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ycfw4orvtup13e22csxewmz3hwza1j/people/plusoners","totalItems":0},"url":"https://plus.google.com/111108507143840139062/posts/3faaajYSrpT","id":"z13ydhtxisimgfxsj22csxewmz3hwza1j","objectType":"activity","content":"The head in stars<br /><br /><br /><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%2310000photographersBWmonochrome\">#10000photographersBWmonochrome</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/118354348104191320538\" class=\"proflink\" oid=\"118354348104191320538\">10000 Photographers BW Monochrome</a></span> curated by <span class=\"proflinkWrapper\"><span class=\"proflinkPref
 ix\">+</span><a href=\"https://plus.google.com/117000139571713536948\" class=\"proflink\" oid=\"117000139571713536948\">Robert SKREINER</a></span><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23monochromeworld\">#monochromeworld</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/109109935435669747474\" class=\"proflink\" oid=\"109109935435669747474\">Monochrome World</a></span><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23AllThingsMonochrome\">#AllThingsMonochrome</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/104488912244914098950\" class=\"proflink\" oid=\"104488912244914098950\">All Things Monochrome</a></span> curated by <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/103236949470535942612\" class=\"proflink\" oid=\"103236949470535942612\">Charles Lupica</a></
 span> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/110336976038750891860\" class=\"proflink\" oid=\"110336976038750891860\">Bill Wood</a></span><br /> <br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23StreetPics\">#StreetPics</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/117667139809211458332\" class=\"proflink\" oid=\"117667139809211458332\">StreetPics</a></span><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23streetphotography\">#streetphotography</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/113332593582232559763\" class=\"proflink\" oid=\"113332593582232559763\">StreetPhotography</a></span> curated by <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/111395336413321899601\" class=\"proflink\" oid=\"111
 395336413321899601\">Tatiana Parmeeva</a></span> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/103729298155391133062\" class=\"proflink\" oid=\"103729298155391133062\">Maria Roco</a></span><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23HQSPUrbanStreetPhotos\">#HQSPUrbanStreetPhotos</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/102873089149603762163\" class=\"proflink\" oid=\"102873089149603762163\">HQSP Urban &amp; Street Photos</a></span> curated by <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/105869820195207598778\" class=\"proflink\" oid=\"105869820195207598778\">Michael Sonntag</a></span> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/116560541114804305108\" class=\"proflink\" oid=\"116560541114804305108\">Оксана �
 �рысюкова</a></span> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/104952228420449716209\" class=\"proflink\" oid=\"104952228420449716209\">Debashish Samaddar</a></span><br /><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23pixelworld\">#pixelworld</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/111030772181610401482\" class=\"proflink\" oid=\"111030772181610401482\">PixelWorld</a></span> curated by  <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/118301062646383652931\" class=\"proflink\" oid=\"118301062646383652931\">Alberto Carreras</a></span> <br /><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23CapsAndHatsWednesday\">#CapsAndHatsWednesday</a> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/10789422
 2604249683570\" class=\"proflink\" oid=\"107894222604249683570\">#CapsAndHatsWednesday</a></span> curated by <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/104868103883930365103\" class=\"proflink\" oid=\"104868103883930365103\">urszula masilela</a></span> <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/107003518085167528363\" class=\"proflink\" oid=\"107003518085167528363\">Magdalena Szczygieł</a></span><br /><br />for <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23HQSPortraits\">#HQSPortraits</a>    <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/116455706345036818534\" class=\"proflink\" oid=\"116455706345036818534\">HQSP Portraits</a></span> curated by <span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a href=\"https://plus.google.com/114654114514872937512\" class=\"proflink\
 " oid=\"114654114514872937512\">Aamir Shahzad</a></span> ","attachments":[{"displayName":"La tête dans les Etoiles","fullImage":{"url":"https:","type":"image/jpeg","height":684,"width":1024},"url":"https://plus.google.com/photos/111108507143840139062/albums/5888134113992343681/5917464403665844818?authkey=CPKryt_9rem7qgE&sqi=105242644037946382910&sqsi=7515dc46-c7d7-48bc-89ce-9e413bb1d081","id":"111108507143840139062.5917464403665844818","objectType":"photo","content":"","image":{"url":"https://lh6.googleusercontent.com/-qjGFztx81gg/Uh8OheeFelI/AAAAAAAAHIE/YVyX_sFh1F8/w506-h750/_MG_4392.jpg","type":"image/jpeg","height":750,"width":506}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ycfw4orvtup13e22csxewmz3hwza1j/comments","totalItems":0}},"updated":"2013-08-30T08:54:28.820Z","provider":{"title":"Reshared Post"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/AJ19JpbEXbXY4A82IJtFngZFCUg\"","title":"Food and content marketing are the new BFFs ...","actor":{"displayName":"Dave Colgate","url":"https://plus.google.com/103615477086273768695","id":"103615477086273768695","image":{"url":"https://lh6.googleusercontent.com/-Ye0meUQCZ_k/AAAAAAAAAAI/AAAAAAAAAJ0/dr4n86_uOYY/photo.jpg?sz=50"}},"published":"2013-08-30T08:53:08.300Z","url":"https://plus.google.com/103615477086273768695/posts/bz5WbTu9k3t","id":"z13tzhmipxmis15al04cfx0omkitttrrfc4","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13tzhmipxmis15al04cfx0omkitttrrfc4/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13tzhmipxmis15al04cfx0omkitttrrfc4/people/plusoners","totalItems":0},"url":"https://plus.google.com/103615477086273768695/posts/bz5WbTu9
 k3t","objectType":"note","content":"Food and content marketing are the new BFFs ...","attachments":[{"displayName":"Food and content marketing: The new BFFs","fullImage":{"url":"http://www.redrocketmedia.co.uk/wp-content/uploads/2013/08/happyeggs_pin-150x150.png","type":"image/jpeg"},"url":"http://www.redrocketmedia.co.uk/blog/food-and-content-marketing-the-new-bffs/","objectType":"article","content":"First things first, let’s get a couple of things straight. I love food. I love content marketing. The two combined? … Continue reading","image":{"url":"https://lh4.googleusercontent.com/proxy/cIMaz6wSv5qA4TEjxhDdSqM-2dck3JrekI5XtB0ckZMhh2tLyGapTWfWq1Yt5MPYCX79GZbVaKOxE1Iq5ag59GncYpaZNvwO1_HDPRT1u9-jOuxRd3GuXInwuDx9ybPab04H0g=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13tzhmipxmis15al04cfx0omkitttrrfc4/comments","totalItems":0}},"updated":"2013-08-30T08:53:08.300Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/O671EMc9C58j5or019tkn6nNCPQ\"","title":"","actor":{"displayName":"The Copy Cat","url":"https://plus.google.com/107323458336618444552","id":"107323458336618444552","image":{"url":"https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=50"}},"published":"2013-08-30T08:44:38.342Z","url":"https://plus.google.com/107323458336618444552/posts/5DZyBvePTXS","id":"z13qxjl4xzusj1akt232hvqoewqee5yaq04","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13qxjl4xzusj1akt232hvqoewqee5yaq04/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13qxjl4xzusj1akt232hvqoewqee5yaq04/people/plusoners","totalItems":0},"url":"https://plus.google.com/107323458336618444552/posts/5DZyBvePTXS","objectType":"note","content":"","attachme
 nts":[{"displayName":"Panasonic Olympics Sharing The Passion TVC","url":"https://www.youtube.com/watch?v=ge2Fxkb5R88&feature=autoshare","objectType":"video","embed":{"url":"https://www.youtube.com/v/ge2Fxkb5R88?version=3&autohide=1&autoplay=1&feature=autoshare","type":"application/x-shockwave-flash"},"content":"","image":{"url":"https://lh4.googleusercontent.com/proxy/68JKs_fElYTv9yQydGJquN1OAR6jIk3SGXusE9QrTTTzfMYaU6qMrcQ5i24TD36VrZwWbwJHEpmF70XiVlP2Qw=w379-h379-n","type":"image/jpeg","height":379,"width":379}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13qxjl4xzusj1akt232hvqoewqee5yaq04/comments","totalItems":0}},"updated":"2013-08-30T08:44:38.342Z","provider":{"title":"YouTube"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/O12A66C7AjSblrOsOnQfUseSFJQ\"","title":"‪#‎Coupon‬ | Save $6.00 off any one (1) Schick Hydro Silk Refill http://ow.ly/2zvbZ2","actor":{"displayName":"Couponista Queen","url":"https://plus.google.com/105512070103165817799","id":"105512070103165817799","image":{"url":"https://lh5.googleusercontent.com/-EVAb6Ix9ndU/AAAAAAAAAAI/AAAAAAAAAWw/ll-eMevJhj4/photo.jpg?sz=50"}},"published":"2013-08-30T08:35:20.290Z","url":"https://plus.google.com/105512070103165817799/posts/RXCbWF3nm62","id":"z13xute41tyay1n4m04cjfbqnznbd11pkg0","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13xute41tyay1n4m04cjfbqnznbd11pkg0/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13xute41tyay1n4m04cjfbqnznbd11pkg0/people/plusoners","totalItems":0},"url":"https://plus.
 google.com/105512070103165817799/posts/RXCbWF3nm62","objectType":"note","content":"‪#‎Coupon‬ | Save $6.00 off any one (1) Schick Hydro Silk Refill <a href=\"http://ow.ly/2zvbZ2\" class=\"ot-anchor\" rel=\"nofollow\">http://ow.ly/2zvbZ2</a>","attachments":[{"displayName":"‪#‎Coupon‬ | Save $6.00 off any one (1) Schick Hydro Silk Refill","fullImage":{"url":"http://couponistaqueen.com/wp-content/uploads/2012/12/cqhiresblk-200x200.png","type":"image/jpeg"},"url":"http://feedproxy.google.com/~r/CouponistaQueen/~3/PWR_wYujQII/","objectType":"article","content":"Printable coupon ►► $6.00 off any one (1) Schick Hydro Silk Refill You should be able to find this coupon in all zip codes. $6.00 off any one (1) Schick Hydro Silk Refill Try to print more than one coupon per session to avoid ads. You should be able...","image":{"url":"https://lh6.googleusercontent.com/proxy/W0qR424toiqshbjbSMuTRYT__Wylm6zkYxST7J_8FRkz0PqKKnZQzcIDUPT84VPjw8spTmEgVphrNIHsx6o6sb7U-PPC0tvnjwOrQGGDXA9p
 UPyseJ0keDpHFNw=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13xute41tyay1n4m04cjfbqnznbd11pkg0/comments","totalItems":0}},"updated":"2013-08-30T08:35:20.290Z","provider":{"title":"HootSuite"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/cpOIxJ4vuWEWn8e6BA5z_jlv_FY\"","title":"Panasonic to demo a 20-inch slate with 4K OLED display at IFA '13\n\nhttp://www.digital-101.com/2013/08...","actor":{"displayName":"Digital-101.com","url":"https://plus.google.com/102737350563256295145","id":"102737350563256295145","image":{"url":"https://lh5.googleusercontent.com/-nZKG0ardNRE/AAAAAAAAAAI/AAAAAAAAADI/26t1E1ExI9I/photo.jpg?sz=50"}},"published":"2013-08-30T08:30:39.160Z","url":"https://plus.google.com/102737350563256295145/posts/TAxJ94XxeoJ","id":"z124wrjqhvrid3j4w04cgpchhpffedhqnoc0k","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Android (Tablets)"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z124wrjqhvrid3j4w04cgpchhpffedhqnoc0k/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z124wrjqhvrid3j4w04cgpchhpffedhqnoc0k/people/plusoners","tot
 alItems":0},"url":"https://plus.google.com/102737350563256295145/posts/TAxJ94XxeoJ","objectType":"note","content":"Panasonic to demo a 20-inch slate with 4K OLED display at IFA &#39;13<br /><br /><a href=\"http://www.digital-101.com/2013/08/panasonic-to-demo-20-inch-slate-with-4k.html\" class=\"ot-anchor\" rel=\"nofollow\">http://www.digital-101.com/2013/08/panasonic-to-demo-20-inch-slate-with-4k.html</a>","attachments":[{"fullImage":{"url":"https:","type":"image/jpeg","height":376,"width":640},"url":"https://plus.google.com/photos/102737350563256295145/albums/5917826703050375985/5917826710144458210?authkey=CImXqtqJ26HNogE&sqi=100821581565823788798&sqsi=da90b690-c4e0-4cf2-8348-4151489b65e1","id":"102737350563256295145.5917826710144458210","objectType":"photo","content":"","image":{"url":"https://lh5.googleusercontent.com/-AENqYda-I6M/UiBYCfR6neI/AAAAAAAABkg/YEdUuIskU7o/w506-h750/digital-101-Panasonic-to-demo-a-20-inch-slate-with-4K-OLED-display-at-IFA-13.jpg","type":"image/jpeg","he
 ight":750,"width":506}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z124wrjqhvrid3j4w04cgpchhpffedhqnoc0k/comments","totalItems":0}},"updated":"2013-08-30T08:30:39.160Z","provider":{"title":"Community"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/cNw5siHKlMfK3kxxJOG-zwWfIUQ\"","title":"Who doesn't like nice scents?\nOur home currently has three scents to choose from.\nLol.\nThose two and...","actor":{"displayName":"AteeQ Khan SaDDozai","url":"https://plus.google.com/105540188676894823966","id":"105540188676894823966","image":{"url":"https://lh5.googleusercontent.com/-daAhKw-uQIg/AAAAAAAAAAI/AAAAAAAAAI4/kP2gc2RzVFQ/photo.jpg?sz=50"}},"published":"2013-08-30T08:34:21.974Z","url":"https://plus.google.com/105540188676894823966/posts/VTvQ7UDB1w4","id":"z13ryteidyu4wd5pe04cejkoat3oxfkhgtg0k","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ryteidyu4wd5pe04cejkoat3oxfkhgtg0k/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ryteidyu4wd5pe04cejkoat3oxfkhgtg0k/people/plusoners","totalItems
 ":0},"url":"https://plus.google.com/105540188676894823966/posts/VTvQ7UDB1w4","objectType":"note","content":"Who doesn&#39;t like nice scents?<br />Our home currently has three scents to choose from. <br />Lol.<br />Those two and another automatic spray by Ambi Pur. <br />I forgot what&#39;s the scent called but it was the one with a teddy bear photo on it somewhere hahaha. <br /><br />Here&#39;s some reminder,<br />you wouldn&#39;t wanna spend so much on little things like these. <br />Chances are you&#39;re gonna get bored of it..or it&#39;ll worn out..<br />so might as well get cheaper ones (but still pretty and with good quality!) and you won&#39;t feel guilty or anything if you decide to get a new one!;)<br /><br />Can&#39;t wait to get around other house things! <br />I love how we can plan on how to organize our spaces and storage cuz our house is still quite empty :]<br /><br />Let me know if you like to read more about our place, <br />and things like these!<br /><br />Blog 
 again soon lovelies!<br /><br />Stick around :]","attachments":[{"fullImage":{"url":"https:","type":"image/jpeg","height":425,"width":640},"url":"https://plus.google.com/photos/105540188676894823966/albums/5917827798733524881/5917827802430582850?authkey=CNSFutS0sa_qqAE","id":"105540188676894823966.5917827802430582850","objectType":"photo","content":"","image":{"url":"https://lh4.googleusercontent.com/-NE83CZdsPmc/UiBZCEXOMEI/AAAAAAAAAMk/vDGXZ3fNviY/w506-h750/DSC_0325.JPG","type":"image/jpeg","height":750,"width":506}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ryteidyu4wd5pe04cejkoat3oxfkhgtg0k/comments","totalItems":0}},"updated":"2013-08-30T08:34:21.974Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/D1qVGcFEt-R8pmS-u10GA0-Mgdk\"","title":"Gino 2 Pcs Battery Back Cover Case 1200mAh Silver Tone for PSP 2000 3000: Features * Product Name : ...","actor":{"displayName":"Sony PSP Accessories","url":"https://plus.google.com/117345188782394457649","id":"117345188782394457649","image":{"url":"https://lh3.googleusercontent.com/-KLu428t9Hd0/AAAAAAAAAAI/AAAAAAAAACY/jSpqVIipFhM/photo.jpg?sz=50"}},"published":"2013-08-30T08:28:21.948Z","url":"https://plus.google.com/117345188782394457649/posts/i2Zzv1w717t","id":"z12jvzobfrjfvldbp04cgfqgmtz3slzw2hc","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12jvzobfrjfvldbp04cgfqgmtz3slzw2hc/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12jvzobfrjfvldbp04cgfqgmtz3slzw2hc/people/plusoners","totalItems":0},"ur
 l":"https://plus.google.com/117345188782394457649/posts/i2Zzv1w717t","objectType":"note","content":"Gino 2 Pcs Battery Back Cover Case 1200mAh Silver Tone for PSP 2000 3000: Features * Product Name : Battery Cover;Model : for Sony PSP 2000, 3000 * Material : Plastic * Color : Silver Tone * Weight : 7g * Package Included : 2 x Battery Covers Product Description Replace your broken or lost battery back cover.Protect battery from damage, compatible with PSP 200, PSP 3000.The replacement battery cover fit for 1200mAh battery.This is a non-OEM generic product. Accessory ONLY. YouTube Search or upload videos. Popular on YouTube: Music, Sports, Gaming, Movies, TV Shows, News, Spotlight. Browse Channels. Ebay.com , ... email <a href=\"mailto:wmebay@yandex.ru\" class=\"ot-anchor\" rel=\"nofollow\">wmebay@yandex.ru</a> ! email <a href=\"mailto:wmebay@yandex.ru\" class=\"ot-anchor\" rel=\"nofollow\">wmebay@yandex.ru</a> Iron Horse Bluegrass We had a great weekend at the Athens Fiddlers Convent
 ion. We were honored to have the opportunity of performing with the great fiddle player Jim Buchanan. PSP Emulation News PSP Gaming PSP Hardware PSP Homebrew PSP ... Latest PSP News &amp;Homebrew Releases : PSP Release - 2: Geten no Hana [Treasure Box] [Japan Import] PSP Release - 2: Grisaia no Kajitsu: Le Fruit De La Grisaia [Japan ... Social Auto - auto sales 07.01.2013 MLB New York Yankees 5 PC Auto Accessories Combo Kit - Rubber Floor Mats, Seat Covers and Chrome License Plate Frame Looking for MLB New York Yankees 5 PC Auto ... Top Products (10/4/11) - Prosperent Community Forum Max Factor Lipfinity 3D Maxwear Lip Color - 760 Suede Seductiion 6ml/0.2oz IAC Aplia Payment Code for McEachern&#39;s Microeconomics: A Contemporary Introduction, Aplia ... Party Supplies at WHO WANTS 2 PARTY Who Wants 2 Party sells a huge variety of party supplies at discount prices, free shipping on orders over $100! Great, Extreme &amp; Best Deals Online Discount Vouchers &amp; Coupons ... Get the be
 st deals online from travel packages to home products to beauty services at CashCashPinoy CashCashPinoy offers great deals online for Food, Travel, Home and ... PSP Emulation News PSP Gaming PSP Hardware PSP Homebrew PSP ... Fansite dedicated to the new sony Handheld, the sony PSp. sony PSP News PSP Gaming PSP Hardware PSP Homebrew PSP Shop Buy Handheld sony PSP at Lik-Sang.com, Featuring ... VasiYogam - - Super Tutorials: Keywords Sivachithar I am a School Teacher. I am teaching Accounts, Commerce, Computer Science. I also take Yoga classes from 1996. Visit my Blog for more details <a href=\"http://dlvr.it/3tP4Gs\" class=\"ot-anchor\" rel=\"nofollow\">http://dlvr.it/3tP4Gs</a>  <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23SonyPSP\">#SonyPSP</a> ","attachments":[{"displayName":"Electronics, Cars, Fashion, Collectibles, Coupons and More Online Shopping | eBay","fullImage":{"url":"http://p.ebaystatic.com/aw/pics/globalheader/spr9.png","type":"image/jpeg"},"url":"http://
 Ebay.com","objectType":"article","content":"Buy and sell electronics, cars, fashion apparel, collectibles, sporting goods, digital cameras, baby items, coupons, and everything else on eBay, the world's online marketplace","image":{"url":"https://lh4.googleusercontent.com/proxy/oSxfsUaXAfuakaxnch-U5mw6jJrnyX-PO1I-01hOJlWfiDD7ezdOFwXdybpEsSKkMl2a3N7fz3MmNnlkLZOZFYzZMBPt=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12jvzobfrjfvldbp04cgfqgmtz3slzw2hc/comments","totalItems":0}},"updated":"2013-08-30T08:28:21.948Z","provider":{"title":"dlvr.it"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/t-qQ5r2J5r30VbYZDhlcJ44XHx0\"","title":"Colgate Wisp Plus Whitening, Portable Mini-Brush Toothbrush, Coolmint 16 ea: Just Brushed Clean. Anytime...","actor":{"displayName":"Personal Care","url":"https://plus.google.com/117926254987733802885","id":"117926254987733802885","image":{"url":"https://lh3.googleusercontent.com/-5ZzGqfHGigY/AAAAAAAAAAI/AAAAAAAAABQ/_FOiRXjqFkQ/photo.jpg?sz=50"}},"published":"2013-08-30T08:22:24.634Z","url":"https://plus.google.com/117926254987733802885/posts/Pkb2CU9SwRB","id":"z12he3rrjn2cyv0oc04cdz0prybxxd4hfjg","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12he3rrjn2cyv0oc04cdz0prybxxd4hfjg/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12he3rrjn2cyv0oc04cdz0prybxxd4hfjg/people/plusoners","totalItems":0},"url":
 "https://plus.google.com/117926254987733802885/posts/Pkb2CU9SwRB","objectType":"note","content":"Colgate Wisp Plus Whitening, Portable Mini-Brush Toothbrush, Coolmint 16 ea: Just Brushed Clean. Anytime. AnywhereBrush on the go. Single use mini-brushWhitens teeth No water or rinsing necessary Powerful breath freshening Discreet and portable Cool mint flavorBristles gently remove food and other particles. Bead freshens and whitens*; dissolves in use Soft pick gets to hard to reach areas16 Brushes with beads (4 packs of 4)Great for […] <a href=\"http://dlvr.it/3tNzHf\" class=\"ot-anchor\" rel=\"nofollow\">http://dlvr.it/3tNzHf</a>  <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23OralHygiene\">#OralHygiene</a> <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23Colgate\">#Colgate</a> <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23Coolmint\">#Coolmint</a> <a class=\"ot-hashtag\" href=\"https://plus.google.com/s/%23MiniBrush\">#MiniBrush</a> <a class=\"o
 t-hashtag\" href=\"https://plus.google.com/s/%23plus\">#plus</a> ","attachments":[{"displayName":"Colgate Wisp Plus Whitening, Portable Mini-Brush Toothbrush, Coolmint 16 ea | Personal Care Products","fullImage":{"url":"http://buy.foxtrazon.com/B003VCYJCE_500.jpg","type":"image/jpeg"},"url":"http://dlvr.it/3tNzHf","objectType":"article","content":"Just Brushed Clean. Anytime. Anywhere Brush on the go. Single use mini-brush. Whitens teeth. No water or rinsing necessary. Powerful breath freshening. Discreet and portable. Cool mint flavor. Bristles gently remove food and other particles. Bead freshens and whitens*; dissolves in use ...","image":{"url":"https://lh5.googleusercontent.com/proxy/YbnVDyiZOBilPSP3VFXjv-5NkyFsLA3GEVetq6spLCRNx0xiF2vM7LWAvlX307hgmJr-psE3D8GqH18=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12he3rrjn2cyv0oc04cdz0prybxxd4hfjg/comments","totalItems":0}},"updated":"2013-08-30T08:22:
 24.634Z","provider":{"title":"dlvr.it"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/p_XWwe96LGv8omkpy3Rc5l645Wo\"","title":"","actor":{"displayName":"rathnavath ravinaik","url":"https://plus.google.com/104889048622164289222","id":"104889048622164289222","image":{"url":"https://lh5.googleusercontent.com/-RMaWwzssUp8/AAAAAAAAAAI/AAAAAAAAAPw/MeGXTMs7kSU/photo.jpg?sz=50"}},"published":"2013-08-30T08:21:22.098Z","url":"https://plus.google.com/104889048622164289222/posts/ZG9GD9gNojZ","id":"z13ehlliip32thwa004ch1ibgraphxe5ghw","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ehlliip32thwa004ch1ibgraphxe5ghw/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ehlliip32thwa004ch1ibgraphxe5ghw/people/plusoners","totalItems":0},"url":"https://plus.google.com/104889048622164289222/posts/ZG9GD9gNojZ","objectType":"note","content":"","a
 ttachments":[{"displayName":"Panasonic P51 Specifications ~ Have A lotts","fullImage":{"url":"http://im.tech2.in.com/gallery/2013/jun/image003_111615065022_640x360.jpg","type":"image/jpeg"},"url":"http://ask-astrologer.blogspot.com/2013/08/panasonic-p51-specifications.html","objectType":"article","content":"Display. Form Factor, Bar. Screen Type, IPS Capacitive Touchscreen. Screen Size, 5.0 inches. Screen Resolution, 1280 x 720. Number of Colours, 16M. Processor. Processor, Quad Core. Speed, 1.2 GHz. Memory. Internal Memory, 4GB, 1GB RAM. Camera Features. Sensor Resolution, 8MP, 3264 x 2448 pixels ...","image":{"url":"https://lh3.googleusercontent.com/proxy/3waK7ECgM9BN0D6wDQ1FvMGZTF83yu1NRVIJy3YEwOQwx2p7zHYq8nu2ScHvIpA6jDvruX6GguBFsmpJSy3pmG9auTZFvmRH6XMf7JCXNPR2xVWBjqIumKk=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ehlliip32thwa004ch1ibgraphxe5ghw/comments","totalItems":0}},"updated":"2013-08-3
 0T08:21:22.098Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/q87YoefLu1pikdzXGVy4J9PYjaU\"","title":".22LR Rimfire @ Smith & Edwards","actor":{"displayName":"Kyle Benn","url":"https://plus.google.com/116256880519083049075","id":"116256880519083049075","image":{"url":"https://lh5.googleusercontent.com/-I5QG_-03Z-U/AAAAAAAAAAI/AAAAAAAAABo/GLodXT_Ak5Y/photo.jpg?sz=50"}},"published":"2013-08-30T08:14:12.474Z","url":"https://plus.google.com/116256880519083049075/posts/Esji82TD4HU","id":"z123vfcojtelypyem222xr3r4wvxhd1bi04","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z123vfcojtelypyem222xr3r4wvxhd1bi04/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z123vfcojtelypyem222xr3r4wvxhd1bi04/people/plusoners","totalItems":0},"url":"https://plus.google.com/116256880519083049075/posts/Esji82TD4HU","objectType":"
 note","content":".22LR Rimfire @ Smith &amp; Edwards","attachments":[{"displayName":"Remington Bucket O' Bullets 2.2LR Rimfire Ammunition @ Smith & Edwards","url":"https://www.youtube.com/watch?v=4H9t96y2Ps8&feature=autoshare","objectType":"video","embed":{"url":"https://www.youtube.com/v/4H9t96y2Ps8?version=3&autohide=1&autoplay=1&feature=autoshare","type":"application/x-shockwave-flash"},"content":"Remington Bucket O' Bullets .22LR Rimfire Ammunition I got at Smith & Edwards in Ogden,UT.","image":{"url":"https://lh6.googleusercontent.com/proxy/HSocWE66rsU-ggg0ayOc-jOHC5pRTgQ5XYiSCN3aaxTwfxuL1SGPKdkMuE5R_MMwDs0Zp9C_08sn6ii9LxdX6A=w379-h379-n","type":"image/jpeg","height":379,"width":379}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z123vfcojtelypyem222xr3r4wvxhd1bi04/comments","totalItems":0}},"updated":"2013-08-30T08:14:12.474Z","provider":{"title":"YouTube"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/hLp5TWwBmgRwkqsZ2f5reXRAy20\"","title":"$6 off ANY Schick Hydro Silk Refill Coupon!!","actor":{"displayName":"Hunt4Freebies","url":"https://plus.google.com/107140567143652888131","id":"107140567143652888131","image":{"url":"https://lh4.googleusercontent.com/-uz2BL8QpR1I/AAAAAAAAAAI/AAAAAAAAADI/UWt5xhf8KJo/photo.jpg?sz=50"}},"published":"2013-08-30T08:10:45.134Z","url":"https://plus.google.com/107140567143652888131/posts/FuRf2tfuexT","id":"z13mhx4imlbqez3et222uhthnvvyttvoj04","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13mhx4imlbqez3et222uhthnvvyttvoj04/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13mhx4imlbqez3et222uhthnvvyttvoj04/people/plusoners","totalItems":0},"url":"https://plus.google.com/107140567143652888131/posts/FuRf2tfuex
 T","objectType":"note","content":"$6 off ANY Schick Hydro Silk Refill Coupon!!","attachments":[{"displayName":"$6 off ANY Schick Hydro Silk Refill Coupon - Hunt4Freebies","fullImage":{"url":"http://hunt4freebies.com/coupons/wp-content/uploads/2012/09/Schick-Hydro-Silk-Refill.png","type":"image/jpeg"},"url":"http://hunt4freebies.com/coupons/6-off-any-schick-hydro-silk-refill-coupon/","objectType":"article","content":"HIGH VALUE: $6 off ANY Schick Hydro Silk Refill Coupon!!","image":{"url":"https://lh3.googleusercontent.com/proxy/FmVJXwcTQd2B8s3ptsVdezO259gUiby42YN7MQG8r3z66hR7kCRdedLXAPxvUNsJzPJfRdZ9zOnadAr9YzmbnAaUkMvvDaRy-Qs4WEeDuxvd1KybLeqS-VnFXxTv4tq9taE9Fjulerg=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13mhx4imlbqez3et222uhthnvvyttvoj04/comments","totalItems":0}},"updated":"2013-08-30T08:10:45.134Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/hzUeYCnYTVdWZ6Lj0KkumNnZEyk\"","title":"Pelican Imaging Receives Investment From Panasonic - PR Newswire - The Sacramento Bee http://buff.ly...","actor":{"displayName":"Teknique Limited","url":"https://plus.google.com/117185239820500839345","id":"117185239820500839345","image":{"url":"https://lh3.googleusercontent.com/-ZQwIn2utlTg/AAAAAAAAAAI/AAAAAAAAACI/alnASSAk4fk/photo.jpg?sz=50"}},"published":"2013-08-30T07:51:03.494Z","url":"https://plus.google.com/117185239820500839345/posts/Sd3JJxLbmeZ","id":"z13dhle43l24sl5wt04cip15qna5yxtqydo","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13dhle43l24sl5wt04cip15qna5yxtqydo/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13dhle43l24sl5wt04cip15qna5yxtqydo/people/plusoners","totalItems":0},"url":"
 https://plus.google.com/117185239820500839345/posts/Sd3JJxLbmeZ","objectType":"note","content":"Pelican Imaging Receives Investment From Panasonic - PR Newswire - The Sacramento Bee <a href=\"http://buff.ly/18hHrZ6\" class=\"ot-anchor\" rel=\"nofollow\">http://buff.ly/18hHrZ6</a>","replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13dhle43l24sl5wt04cip15qna5yxtqydo/comments","totalItems":0}},"updated":"2013-08-30T07:51:03.494Z","provider":{"title":"Buffer"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/BZiT4u-aSN5BcwbMjL7DYkLCCAQ\"","title":"","actor":{"displayName":"Duss Ova","url":"https://plus.google.com/107768836709833636059","id":"107768836709833636059","image":{"url":"https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=50"}},"published":"2013-08-30T07:52:41.528Z","url":"https://plus.google.com/107768836709833636059/posts/fEyY1ukM5Ex","id":"z124w3k4ckreerob404cehwh0nrqxj053ro0k","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z124w3k4ckreerob404cehwh0nrqxj053ro0k/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z124w3k4ckreerob404cehwh0nrqxj053ro0k/people/plusoners","totalItems":0},"url":"https://plus.google.com/107768836709833636059/posts/fEyY1ukM5Ex","objectType":"note","content":"","attach
 ments":[{"displayName":"DUSS OVA (aka 220 Sound) & PANASONIC (french Guyane) JAMAICAN NIGHT FEVER #13","url":"https://www.youtube.com/watch?v=KmCDjFFrsH8&feature=autoshare","objectType":"video","embed":{"url":"https://www.youtube.com/v/KmCDjFFrsH8?version=3&autohide=1&autoplay=1&feature=autoshare","type":"application/x-shockwave-flash"},"content":"Contact & booking : dussova@gmail.com\ntwitter : @220sound\nfacebook : 220 sound system\nsoundcloud : 220 sound mix cd","image":{"url":"https://lh4.googleusercontent.com/proxy/2ByIEul5dKZ3k_DMSdkqAcrLtGhqmNRi8VtXpp7GXH9CcM-evcsYkWseXZOPaonqSA9nzJ8t1uQYrZL1JO6n1w=w379-h379-n","type":"image/jpeg","height":379,"width":379}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z124w3k4ckreerob404cehwh0nrqxj053ro0k/comments","totalItems":0}},"updated":"2013-08-30T07:52:41.528Z","provider":{"title":"YouTube"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/vIobQ6lvlN9FlTVPdRgczd1FaJg\"","title":"Panasonic TX-P42ST60 TV Review http://ow.ly/2zv9Tj","actor":{"displayName":"TrustedReviews","url":"https://plus.google.com/105154920835983138602","id":"105154920835983138602","image":{"url":"https://lh5.googleusercontent.com/-mNUC5StIPJg/AAAAAAAAAAI/AAAAAAAAAEU/nMMZ_rdinzg/photo.jpg?sz=50"}},"published":"2013-08-30T07:28:07.424Z","url":"https://plus.google.com/105154920835983138602/posts/DwQtujAmaXa","id":"z130z31bwlqpclfeh22eftv4arbiu1f2h","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z130z31bwlqpclfeh22eftv4arbiu1f2h/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z130z31bwlqpclfeh22eftv4arbiu1f2h/people/plusoners","totalItems":0},"url":"https://plus.google.com/105154920835983138602/posts/DwQtujAma
 Xa","objectType":"note","content":"Panasonic TX-P42ST60 TV  Review <a href=\"http://ow.ly/2zv9Tj\" class=\"ot-anchor\" rel=\"nofollow\">http://ow.ly/2zv9Tj</a>","attachments":[{"displayName":"Panasonic TX-P42ST60  review","fullImage":{"url":"http://static.trustedreviews.com/94/000028c43/cb69_orh348w620/PanasonicP42ST60Front.jpg","type":"image/jpeg"},"url":"http://www.trustedreviews.com/panasonic-tx-p42st60_TV_review","objectType":"article","image":{"url":"https://lh6.googleusercontent.com/proxy/dFlK4aW785iyopgy2E1V-Z6JzlLCdsj5znxl09xp2ixp-mATKO6sPYWfvH4fTxtPHkwrGSprgG2IcwwqXD10gQi0SccBIyZadQcYgySf-Sfm22iDr2pbR7PCcFad61Tr266sDeu10g=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z130z31bwlqpclfeh22eftv4arbiu1f2h/comments","totalItems":0}},"updated":"2013-08-30T07:28:07.424Z","provider":{"title":"HootSuite"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/HuHD3wJDRflBDr7vBsgaW17JI44\"","title":"Strozzapreti with Spinach and Preserved Lemon - Bon Appétit  | September 2013 by Philip Krajeck Rolf...","actor":{"displayName":"Cooking With Amanda","url":"https://plus.google.com/114331900870735594203","id":"114331900870735594203","image":{"url":"https://lh3.googleusercontent.com/-kMS2kSlCV2U/AAAAAAAAAAI/AAAAAAAAABo/crjgZ0Q2F00/photo.jpg?sz=50"}},"published":"2013-08-30T07:26:58.720Z","url":"https://plus.google.com/114331900870735594203/posts/ZaJ1D4Zmq4j","id":"z13ghxjibniwxdry204cenijekb0wrfrmgg","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ghxjibniwxdry204cenijekb0wrfrmgg/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ghxjibniwxdry204cenijekb0wrfrmgg/people/plusoners","totalItems":0},"ur
 l":"https://plus.google.com/114331900870735594203/posts/ZaJ1D4Zmq4j","objectType":"note","content":"Strozzapreti with Spinach and Preserved Lemon - Bon Appétit  | September 2013  by Philip Krajeck  Rolf and Daughters, Nashville, TN          ]]&gt;         photo by Christopher Testani    yieldMakes 4 servings  This bright, vegetarian sauce features lemon three ways: juice, zest, and preserved lemon peel.            Ingredients  add to shopping list      Preparation  Heat oil and 2 tablespoons butter in a large skillet over medium heat until butter is foaming. Add garlic a... <a href=\"http://ow.ly/2zvajk\" class=\"ot-anchor\" rel=\"nofollow\">http://ow.ly/2zvajk</a>","replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13ghxjibniwxdry204cenijekb0wrfrmgg/comments","totalItems":0}},"updated":"2013-08-30T07:26:58.720Z","provider":{"title":"HootSuite"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/WtT7m0HzZHRID-ZbulRNpHS19yY\"","title":"Schick!","actor":{"displayName":"Markus Rödder","url":"https://plus.google.com/114984279699454928216","id":"114984279699454928216","image":{"url":"https://lh5.googleusercontent.com/-FUEAXe54_bo/AAAAAAAAAAI/AAAAAAAAAJk/93sk1DexHkY/photo.jpg?sz=50"}},"published":"2013-08-30T07:24:03.021Z","url":"https://plus.google.com/114984279699454928216/posts/BQiiHVQ6vB8","id":"z13vw3jy5rv4wnbdy22rclnyjyjqwz14304","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13vw3jy5rv4wnbdy22rclnyjyjqwz14304/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13vw3jy5rv4wnbdy22rclnyjyjqwz14304/people/plusoners","totalItems":0},"url":"https://plus.google.com/114984279699454928216/posts/BQiiHVQ6vB8","objectType":"note","content":"<b
 r />Schick!","attachments":[{"displayName":"Typable WordPress Theme - Okay Themes","fullImage":{"url":"http://okcdn5.okaythemes.com/wp-content/uploads/2013/07/typable-thumb1.jpg","type":"image/jpeg"},"url":"http://okaythemes.com/themes/typable-wordpress-theme/","objectType":"article","content":"Scales To All of Your Devices Typable is responsive, all the way down to mobile. Images, videos and text will scale down gracefully to iPad, iPhone and all devices in-between. Typable looks great in your pocket and on the desktop! Customize Typable Customize Typable in real time with WordPress’s new Theme Customizer! Change your site […]","image":{"url":"https://lh5.googleusercontent.com/proxy/uLDcNzsM-m6bcdNtu-nd5MmQRAUEiCjrjDUwbzIs2gN09S8ctV2VPryXH0ts2ddWIEN8kfMQe0VH6gXz6tfI_vZ35-RzeRj6waVH--qSSCJKHgUFS2N1jJru=w120-h120","type":"image/jpeg","height":120,"width":120}}],"replies":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z13vw3jy5rv4wnbdy22rclnyjyjqwz14304/comments","tota
 lItems":0}},"updated":"2013-08-30T07:24:03.021Z","provider":{"title":"Google+"}}
-{"verb":"post","kind":"plus#activity","etag":"\"r6E4NfYOn5dpL2w8XGt_3gHVskk/iEJldznfAG9aDGsG7tLG7VAFqBQ\"","title":"","actor":{"displayName":"LeighAnn Hornor","url":"https://plus.google.com/114741009520140378214","id":"114741009520140378214","image":{"url":"https://lh3.googleusercontent.com/-Wn2-88ErEQc/AAAAAAAAAAI/AAAAAAAAADc/mXK_7KebsKk/photo.jpg?sz=50"}},"published":"2013-08-30T07:07:19.619Z","url":"https://plus.google.com/114741009520140378214/posts/hzyZQjudYgT","id":"z12qch5odyi0ff3zp04cirib4pjdw1txsu40k","access":{"items":[{"type":"public"}],"kind":"plus#acl","description":"Public"},"object":{"resharers":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12qch5odyi0ff3zp04cirib4pjdw1txsu40k/people/resharers","totalItems":0},"plusoners":{"selfLink":"https://www.googleapis.com/plus/v1/activities/z12qch5odyi0ff3zp04cirib4pjdw1txsu40k/people/plusoners","totalItems":0},"url":"https://plus.google.com/114741009520140378214/posts/hzyZQjudYgT","objectType":"note","content":"",
 "attachments":[{"displayName":"","url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337?authkey=COGMxPbpt9i_uQE","id":"114741009520140378214.5917805392602098337","objectType":"album","thumbnails":[{"url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337/5917805391501034178?authkey=COGMxPbpt9i_uQE","description":"","image":{"url":"https://lh6.googleusercontent.com/-_CNJQJGWKM0/UiBEplJPgsI/AAAAAAAAANI/_4KgBPoxxzM/w379-h379-p-o/CAM00203.mp4","type":"image/jpeg","height":379,"width":379}},{"url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337/5917805393238699314?authkey=COGMxPbpt9i_uQE","description":"","image":{"url":"https://lh5.googleusercontent.com/-a_EzAx9J2L4/UiBEprniLTI/AAAAAAAAANI/9dUzJrnWhxI/w126-h126-p/CAM00017.jpg","type":"image/jpeg","height":126,"width":126}},{"url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337/5917805393669940834?authkey=COGMxP
 bpt9i_uQE","description":"","image":{"url":"https://lh5.googleusercontent.com/-38uklQMhUw0/UiBEptOWZmI/AAAAAAAAANI/lYDA7PKUt-I/w126-h126-p/e900b259-1e0c-4e9e-8331-ceae24e1ce33","type":"image/jpeg","height":126,"width":126}},{"url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337/5917805393718543810?authkey=COGMxPbpt9i_uQE","description":"","image":{"url":"https://lh3.googleusercontent.com/-W1UlFta7fBc/UiBEptZ8BcI/AAAAAAAAANI/Vthmqqmas5M/w126-h126-p/1374707576146.jpg","type":"image/jpeg","height":126,"width":126}},{"url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337/5917805390504463698?authkey=COGMxPbpt9i_uQE","description":"","image":{"url":"https://lh4.googleusercontent.com/-KtY5MFhdHOk/UiBEphbpDVI/AAAAAAAAANI/o03MwMWR2Xc/w126-h126-p/CAM00015.jpg","type":"image/jpeg","height":126,"width":126}},{"url":"https://plus.google.com/photos/114741009520140378214/albums/5917805392602098337/5917805390702363138?authkey=COGMxPbp
 t9i_uQE","description":"","image":{"url":"https://lh3.googleusercontent.com/-SjzvCD7Bml0/UiBEpiK0wgI/AAAAAAAAANI/Q5phi8valek/w126-h126-p/CAM0

<TRUNCATED>

[11/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_jsons.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_jsons.txt b/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_jsons.txt
deleted file mode 100644
index 4b63d90..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/test/resources/sysomos_jsons.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308352292995072&include_entities=true","location":{"locationString":"oakland;-ca","country":"us"},"link":"http://twitter.com/camelcamelcamel/statuses/369308352292995072","twitterFollowing":"8","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"945","tweetid":"369308352292995072","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"geo":{"city":{"properties":{"ascii_name":"Oakland","state_code":"CA","geoname_id":5378538,"elevation":13,"population":390724,"city":"Oakland","country":"US"},"type":"point","coordinates":[-122.2708,37.80437]}},"source_tag":"Master_Brand"},"content":"@rgbare ASUS RT-N66U Dual-Band Wireless-N900 Gigabit Router is now on sale for $134.02 at Amazon. Product page: http://t.co/1qG2GbbPU
 s","docid":"11199:23295337","sentiment":"NONE","title":"@rgbare ASUS RT-N66U Dual-Band Wireless-N900 Gigabit Router is now on sale for $134.02 at Amazon. Product page: http://t.co/1qG2GbbPUs","time":"2013-08-19T00:02:27-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295337","influenceLevel":"6"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369307848917803009&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/GOLF_Review/statuses/369307848917803009","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0000","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_messages","amazon","emotional"],"non_system_tags_display":["mb1_all_messages","mb1_amazon","mb1_emotional"]},"twitterFollowers":"0","tweetid":"369307848917803009","mediaType":"TWITTER","w2o":{"combined_tags":["all_messages","amazon","emotional"],"source_tag":"Master_Brand"},"content":"#AMAZON BEST SELLER #10: Callaway Men's XTT LT Saddle Golf Shoe.. http://t.co/xhgd1QH2ed #GOLF","docid":"11199:23295373","sentiment":"NONE","title":"#AMAZON BEST SELLER #10: Callaway Men's XTT LT Saddle Golf Shoe.. http://t.co/xhgd1QH2ed #GOLF","time":"2013-08
 -19T00:00:27-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295373","influenceLevel":"2"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369307859156103168&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/GOLF_Review/statuses/369307859156103168","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0000","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_verticals","technology","all_messages","amazon","emotional"],"non_system_tags_display":["mb1_all_verticals","mb1_technology","mb1_all_messages","mb1_amazon","mb1_emotional"]},"twitterFollowers":"0","tweetid":"369307859156103168","mediaType":"TWITTER","w2o":{"combined_tags":["all_verticals","technology","all_messages","amazon","emotional"],"source_tag":"Master_Brand"},"content":"#AMAZON BEST SELLER #3: Puma Golf NA Men's 5 Pocket Tech Pant.. http://t.co/wB3AVsODGg #GOLF","docid":"11199:23295265","sentiment":"NONE","title":"#AMAZON BEST SELLE
 R #3: Puma Golf NA Men's 5 Pocket Tech Pant.. http://t.co/wB3AVsODGg #GOLF","time":"2013-08-19T00:00:29-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295265","influenceLevel":"2"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308275394637824&include_entities=true","location":{"locationString":"lawrence;-ks","country":"us"},"link":"http://twitter.com/Kendyl_Lynn/statuses/369308275394637824","twitterFollowing":"321","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["sprint"],"non_system_tags_display":["mb1_sprint"]},"twitterFollowers":"381","tweetid":"369308275394637824","mediaType":"TWITTER","w2o":{"combined_tags":["sprint"],"geo":{"city":{"properties":{"ascii_name":"Lawrence","state_code":"KS","geoname_id":4274277,"elevation":263,"population":87643,"city":"Lawrence","country":"US"},"type":"point","coordinates":[-95.23525,38.97167]}},"source_tag":"Master_Brand"},"content":"Scotty Cowan, Eric Dougherty having a sprint off lol https://t.co/MnN3l9zKqz","docid":"11199:23295410","sentiment":"NONE","title":"Scotty Cowa
 n, Eric Dougherty having a sprint off lol https://t.co/MnN3l9zKqz","time":"2013-08-19T00:02:08-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295410","influenceLevel":"5","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369307788096188417&include_entities=true","location":{"locationString":"127.0.0.1","country":"unknown"},"link":"http://twitter.com/demityang2an/statuses/369307788096188417","twitterFollowing":"502","sysomos":{"system_tags":{"sentiment":"none","t":"0000","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"531","tweetid":"369307788096188417","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"source_tag":"Master_Brand"},"content":"Wow \" @Trojan7Sec: How to hack ANY amazon account in 5 minutes. DM If you have any troubles http://t.co/mk70Ed7xYn RT's are appreciated :)","docid":"11199:23295382","sentiment":"NONE","title":"Wow \" @Trojan7Sec: How to hack ANY amazon account in 5 minutes. DM If you have any troubles http://t.co/mk70Ed7xYn RT's are appreciated :)","time":"2013-08
 -19T00:00:12-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295382","influenceLevel":"5","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308010486562816&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/crazyfoo/statuses/369308010486562816","twitterFollowing":"210","sysomos":{"system_tags":{"sentiment":"none","t":"0001","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"822","tweetid":"369308010486562816","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"source_tag":"Master_Brand"},"content":"Amazon declined to comment. ?@lbennett: Well played, NYT. http://t.co/n9YWNEEjfe?","docid":"11199:23295292","sentiment":"NONE","title":"Amazon declined to comment. ?@lbennett: Well played, NYT. http://t.co/n9YWNEEjfe?","time":"2013-08-19T00:01:05-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295292","influenceLevel":"5","gender":
 "MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308795853606912&include_entities=true","location":{"locationString":"4/21/13;jaysean-rted-me4/21/13","country":"unknown"},"link":"http://twitter.com/_JANOSKIANATOR/statuses/369308795853606912","twitterFollowing":"1998","sysomos":{"system_tags":{"sentiment":"none","t":"0004","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["sprint"],"non_system_tags_display":["mb1_sprint"]},"twitterFollowers":"1078","tweetid":"369308795853606912","mediaType":"TWITTER","w2o":{"combined_tags":["sprint"],"source_tag":"Master_Brand"},"content":"RT @ayydontlukeatme @luke_brooks OMFG! LUKE SAME! I AM SO SCARED TO CROSS THE ROAD. SO LIKE WHEN I DO I HAVE TO SPRINT BECAUSE THERE WOULD BE A CARE COMING.","docid":"11199:23295463","sentiment":"NONE","title":"RT @ayydontlukeatme: @luke_brooks OMFG! LUKE SAME! I AM SO SCARED TO CROSS THE ROAD. SO LIKE WHEN I DO I HAVE TO SPR
 INT BECAUSE THERE WOULD?","time":"2013-08-19T00:04:13-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295463","influenceLevel":"6","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308118452170752&include_entities=true","location":{"locationString":"los-angeles","country":"us"},"link":"http://twitter.com/OttoVonBismarcc/statuses/369308118452170752","twitterFollowing":"61","sysomos":{"system_tags":{"sentiment":"neg","t":"0001","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["internet_broadband","all_products","verizon__all","home_security_and_monitoring","verizon_wireless","landline_telephone","generic_verizon","me"],"non_system_tags_display":["mb1_internet_broadband","mb1_all_products","mb1_verizon_all","mb1_home_security_and_monitoring","mb1_verizon_wireless","mb1_landline_telephone","mb1_generic_verizon","mb1_verizon"]},"twitterFollowers":"40","tweetid":"369308118452170752","mediaType":"TWITTER","w2o":{"combined_tags":["internet_broadband","all_products","verizon__all","home_security_and_monitoring","verizon_
 wireless","landline_telephone","generic_verizon","me"],"geo":{"city":{"properties":{"ascii_name":"Los Angeles","state_code":"CA","geoname_id":5368361,"elevation":89,"population":3792621,"city":"Los Angeles","country":"US"},"type":"point","coordinates":[-118.24368,34.05223]}},"source_tag":"Master_Brand"},"content":"@VerizonWireless that moment when your Verizon FiOS modem takes a shit on you... And only connects to certain devices.","docid":"11199:23295302","sentiment":"NEG","title":"@VerizonWireless that moment when your Verizon FiOS modem takes a shit on you... And only connects to certain devices.","time":"2013-08-19T00:01:31-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295302","influenceLevel":"2"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308049317449730&include_entities=true","location":{"locationString":"on-his-face-&-in-his-heart","country":"unknown"},"link":"http://twitter.com/GetnLikeRy/statuses/369308049317449730","twitterFollowing":"593","sysomos":{"system_tags":{"sentiment":"none","t":"0001","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["sprint"],"non_system_tags_display":["mb1_sprint"]},"twitterFollowers":"1258","tweetid":"369308049317449730","mediaType":"TWITTER","w2o":{"combined_tags":["sprint"],"source_tag":"Master_Brand"},"content":"LMFAO RT @smooth_slime:","docid":"11199:23295311","sentiment":"NONE","title":"LMFAO RT @smooth_slime: ","time":"2013-08-19T00:01:15-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295311","influenceLevel":"6"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308395284606976&include_entities=true","location":{"locationString":"where-she's-meant-to-be","country":"unknown"},"link":"http://twitter.com/PRETTY_ToLookAt/statuses/369308395284606976","twitterFollowing":"548","sysomos":{"system_tags":{"sentiment":"neg","t":"0002","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["internet_broadband","all_products","verizon__all","home_security_and_monitoring","landline_telephone","generic_verizon","me"],"non_system_tags_display":["mb1_internet_broadband","mb1_all_products","mb1_verizon_all","mb1_home_security_and_monitoring","mb1_landline_telephone","mb1_generic_verizon","mb1_verizon"]},"twitterFollowers":"650","tweetid":"369308395284606976","mediaType":"TWITTER","w2o":{"combined_tags":["internet_broadband","all_products","verizon__all","home_security_and_monitoring","landline_telephone","generic_ve
 rizon","me"],"source_tag":"Master_Brand"},"content":"@So_Far_Gone__ I have Verizon Fios at my place but I'm at my bf's house && he has IO shit is WACK !!!","docid":"11199:23295391","sentiment":"NEG","title":"@So_Far_Gone__ I have Verizon Fios at my place but I'm at my bf's house &amp;&amp; he has IO shit is WACK !!!","time":"2013-08-19T00:02:37-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295391","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308845396348928&include_entities=true","location":{"locationString":"kalamazoo;-mi","country":"us"},"link":"http://twitter.com/gardeningguru/statuses/369308845396348928","twitterFollowing":"350","sysomos":{"system_tags":{"sentiment":"none","t":"0004","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["all_messages","amazon","emotional"],"non_system_tags_display":["mb1_all_messages","mb1_amazon","mb1_emotional"]},"twitterFollowers":"13918","tweetid":"369308845396348928","mediaType":"TWITTER","w2o":{"combined_tags":["all_messages","amazon","emotional"],"geo":{"city":{"properties":{"ascii_name":"Kalamazoo","state_code":"MI","geoname_id":4997787,"elevation":239,"population":74262,"city":"Kalamazoo","country":"US"},"type":"point","coordinates":[-85.58723,42.29171]}},"source_tag":"Master_Brand"},"content":"Check out Amazon Best Selling Products, becaus
 e it's updated every hour http://t.co/KJ20CS6MCf","docid":"11199:23295436","sentiment":"NONE","title":"Check out Amazon Best Selling Products, because it's updated every hour http://t.co/KJ20CS6MCf","time":"2013-08-19T00:04:24-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295436","influenceLevel":"8","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308171107463168&include_entities=true","location":{"locationString":"modesto;-ca","country":"us"},"link":"http://twitter.com/giantslady4life/statuses/369308171107463168","twitterFollowing":"1952","sysomos":{"system_tags":{"sentiment":"none","t":"0001","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["all_products","at_and_t"],"non_system_tags_display":["mb1_all_products","mb1_at_and_t"]},"twitterFollowers":"692","tweetid":"369308171107463168","mediaType":"TWITTER","w2o":{"combined_tags":["all_products","at_and_t"],"geo":{"city":{"properties":{"ascii_name":"Modesto","state_code":"CA","geoname_id":5373900,"elevation":28,"population":201165,"city":"Modesto","country":"US"},"type":"point","coordinates":[-120.99688,37.6391]}},"source_tag":"Master_Brand"},"content":"Photo: Inside the visitor clubhouse at At&t park!! http://t.co/pZYZspJkvH","docid":
 "11199:23295319","sentiment":"NONE","title":"Photo: Inside the visitor clubhouse at At&amp;t park!! http://t.co/pZYZspJkvH","time":"2013-08-19T00:01:44-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295319","influenceLevel":"5","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308243958329345&include_entities=true","location":{"locationString":"new-jersey","country":"us"},"link":"http://twitter.com/HunterHybrid/statuses/369308243958329345","twitterFollowing":"54","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["all_products","amazon","wireless"],"non_system_tags_display":["mb1_all_products","mb1_amazon","mb1_wireless"]},"twitterFollowers":"30","tweetid":"369308243958329345","mediaType":"TWITTER","w2o":{"combined_tags":["all_products","amazon","wireless"],"source_tag":"Master_Brand"},"content":"Amazon: $5 off $25 Coupon (Requires Facebook) - http://t.co/c04F6lq4yL","docid":"11199:23295355","sentiment":"NONE","title":"Amazon: $5 off $25 Coupon (Requires Facebook) - http://t.co/c04F6lq4yL","time":"2013-08-19T00:02:01-04:00","tweetHbLink":"http://hb.sysomos.com/hb2
 /sidebar/?hid=11199&bid=23295355","influenceLevel":"2","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308381418643456&include_entities=true","location":{"locationString":"outta-this-world","country":"unknown"},"link":"http://twitter.com/ExXxquisite/statuses/369308381418643456","twitterFollowing":"429","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["sprint"],"non_system_tags_display":["mb1_sprint"]},"twitterFollowers":"416","tweetid":"369308381418643456","mediaType":"TWITTER","w2o":{"combined_tags":["sprint"],"source_tag":"Master_Brand"},"content":"RT @popthattwussy SPRINT got me fucked up","docid":"11199:23295401","sentiment":"NONE","title":"RT @popthattwussy: SPRINT got me fucked up","time":"2013-08-19T00:02:34-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295401","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308157626957827&include_entities=true","location":{"locationString":"modesto;-ca","country":"us"},"link":"http://twitter.com/giantslady4life/statuses/369308157626957827","twitterFollowing":"1952","sysomos":{"system_tags":{"sentiment":"none","t":"0001","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["at_and_t"],"non_system_tags_display":["mb1_at_and_t"]},"twitterFollowers":"692","tweetid":"369308157626957827","mediaType":"TWITTER","w2o":{"combined_tags":["at_and_t"],"geo":{"city":{"properties":{"ascii_name":"Modesto","state_code":"CA","geoname_id":5373900,"elevation":28,"population":201165,"city":"Modesto","country":"US"},"type":"point","coordinates":[-120.99688,37.6391]}},"source_tag":"Master_Brand"},"content":"Inside the visitor clubhouse at At&t park!! http://t.co/4nJuLuPDbq","docid":"11199:23295320","sentiment":"NONE","title":"Inside the 
 visitor clubhouse at At&amp;t park!! http://t.co/4nJuLuPDbq","time":"2013-08-19T00:01:40-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295320","influenceLevel":"5","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308261100826624&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/SssGarvey/statuses/369308261100826624","twitterFollowing":"18","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["sprint"],"non_system_tags_display":["mb1_sprint"]},"twitterFollowers":"0","tweetid":"369308261100826624","mediaType":"TWITTER","w2o":{"combined_tags":["sprint"],"source_tag":"Master_Brand"},"content":"RT @Milky_Montes Those thoughts when you lay down to go to bed and your mind just decides to go for a fucking sprint","docid":"11199:23295409","sentiment":"NONE","title":"RT @Milky_Montes: Those thoughts when you lay down to go to bed and your mind just decides to go for a fucking sprint","time":"2013-08-19T00:02:05-04:00","tweetHbLink":"http://hb.sysomos.co
 m/hb2/sidebar/?hid=11199&bid=23295409","influenceLevel":"0","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308435495395330&include_entities=true","location":{"locationString":"derry-n.h","country":"us"},"link":"http://twitter.com/BobbyAvila/statuses/369308435495395330","twitterFollowing":"129","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["all_products","t_mobile","wireless"],"non_system_tags_display":["mb1_all_products","mb1_t_mobile","mb1_wireless"]},"twitterFollowers":"114","tweetid":"369308435495395330","mediaType":"TWITTER","w2o":{"combined_tags":["all_products","t_mobile","wireless"],"source_tag":"Master_Brand"},"content":"When people ask me what call service I have... Look at me what do you think I have TMOBILE all black bitches do http://t.co/aZdpAV8iRK","docid":"11199:23295427","sentiment":"NONE","title":"When people ask me what call service I have... Look at me what do you think I 
 have TMOBILE all black bitches do http://t.co/aZdpAV8iRK","time":"2013-08-19T00:02:47-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295427","influenceLevel":"3","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308644547911680&include_entities=true","location":{"locationString":"niu17","country":"unknown"},"link":"http://twitter.com/AintItJAY_/statuses/369308644547911680","twitterFollowing":"775","sysomos":{"system_tags":{"sentiment":"none","t":"0003","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["at_and_t"],"non_system_tags_display":["mb1_at_and_t"]},"twitterFollowers":"1108","tweetid":"369308644547911680","mediaType":"TWITTER","w2o":{"combined_tags":["at_and_t"],"source_tag":"Master_Brand"},"content":"Lmfaoooo, LRT is me. AT&T be on straight BS!","docid":"11199:23295472","sentiment":"NONE","title":"Lmfaoooo, LRT is me. AT&amp;T be on straight BS!","time":"2013-08-19T00:03:36-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295472","influenceLevel":"6"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308315722858497&include_entities=true","location":{"locationString":"oakland;-ca","country":"us"},"link":"http://twitter.com/camelcamelcamel/statuses/369308315722858497","twitterFollowing":"8","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"945","tweetid":"369308315722858497","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"geo":{"city":{"properties":{"ascii_name":"Oakland","state_code":"CA","geoname_id":5378538,"elevation":13,"population":390724,"city":"Oakland","country":"US"},"type":"point","coordinates":[-122.2708,37.80437]}},"source_tag":"Master_Brand"},"content":"@lunarwater ASUS RT-N66U Dual-Band Wireless-N900 Gigabit Router is now on sale for $134.02 at Amazon. Product page: http://t.co/1qG2G
 bbPUs","docid":"11199:23295346","sentiment":"NONE","title":"@lunarwater ASUS RT-N66U Dual-Band Wireless-N900 Gigabit Router is now on sale for $134.02 at Amazon. Product page: http://t.co/1qG2GbbPUs","time":"2013-08-19T00:02:18-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295346","influenceLevel":"6"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308403920683008&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/221b_Books/statuses/369308403920683008","twitterFollowing":"1951","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"1066","tweetid":"369308403920683008","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"source_tag":"Master_Brand"},"content":"The Official Papers Into The Matter Known As -The Hound of the Baskervilles out in #paperback and #ebook @amazon http://t.co/IEzwLQnwoz","docid":"11199:23295454","sentiment":"NONE","title":"The Official Papers Into The Matter Known As -The Hound of the Baskervilles out in #paperback and #ebook @amazon http://t.co/IEzwLQnwoz","time":"2013-08-19T00:02:39
 -04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295454","influenceLevel":"6","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369307843146440705&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/GOLF_Review/statuses/369307843146440705","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0000","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_messages","amazon","emotional"],"non_system_tags_display":["mb1_all_messages","mb1_amazon","mb1_emotional"]},"twitterFollowers":"0","tweetid":"369307843146440705","mediaType":"TWITTER","w2o":{"combined_tags":["all_messages","amazon","emotional"],"source_tag":"Master_Brand"},"content":"#AMAZON BEST SELLER #7: PUMA Men's AMP Sport Golf Shoe.. http://t.co/qAd47HHrVf #GOLF","docid":"11199:23295274","sentiment":"NONE","title":"#AMAZON BEST SELLER #7: PUMA Men's AMP Sport Golf Shoe.. http://t.co/qAd47HHrVf #GOLF","time":"2013-08-19T00:00:25-04:00
 ","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295274","influenceLevel":"2"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308300581412865&include_entities=true","location":{"locationString":"#sfa17-?","country":"unknown"},"link":"http://twitter.com/iheartcynthiaa/statuses/369308300581412865","twitterFollowing":"193","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"252","tweetid":"369308300581412865","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"geo":{"city":{"properties":{"ascii_name":"Sfax","state_code":"32","geoname_id":2467454,"population":277278,"city":"Sfax","country":"TN"},"type":"point","coordinates":[10.76028,34.74056]}},"source_tag":"Master_Brand"},"content":"My weakness: Amazon","docid":"11199:23295364","sentiment":"NONE","title":"My weakness: Amazon","time":"2013-08-19T00:02:14-04:00","tweetHbLink":"http://hb.sysom
 os.com/hb2/sidebar/?hid=11199&bid=23295364","influenceLevel":"4","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369309138859606016&include_entities=true","location":{"locationString":"dallas;-texas","country":"us"},"link":"http://twitter.com/Paul_O_Williams/statuses/369309138859606016","twitterFollowing":"25548","sysomos":{"system_tags":{"sentiment":"none","t":"0005","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"29902","tweetid":"369309138859606016","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"geo":{"city":{"properties":{"ascii_name":"Dallas","state_code":"TX","geoname_id":4684888,"elevation":128,"population":1197816,"city":"Dallas","country":"US"},"type":"point","coordinates":[-96.80667,32.78306]}},"source_tag":"Master_Brand"},"content":"RT @bcuban @Paul_O_Williams My new book,\"Shattered Image: \"My Triumph Over Body Dysmorphic Disorder\" now available on Amazon! http:/
 /t.co/02yau7hN1H","docid":"11199:23295481","sentiment":"NONE","title":"RT @bcuban: @Paul_O_Williams   My new book,\"Shattered Image: \"My Triumph Over Body Dysmorphic Disorder\" now available  on Amazon! http://t.?","time":"2013-08-19T00:05:34-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295481","influenceLevel":"8","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369307831708565504&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/Em_Jay21/statuses/369307831708565504","twitterFollowing":"1178","sysomos":{"system_tags":{"sentiment":"none","t":"0000","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_products","t_mobile","wireless"],"non_system_tags_display":["mb1_all_products","mb1_t_mobile","mb1_wireless"]},"twitterFollowers":"1577","tweetid":"369307831708565504","mediaType":"TWITTER","w2o":{"combined_tags":["all_products","t_mobile","wireless"],"source_tag":"Master_Brand"},"content":"\"I haven't turned my phone on all week, and I got one text... and it was from tmobile\"","docid":"11199:23295328","sentiment":"NONE","title":"\"I haven't turned my phone on all week, and I got one text... and it was from tmobile\" ","time":"2013-08-19T0
 0:00:23-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295328","influenceLevel":"6"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308247872008192&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/joeswantek/statuses/369308247872008192","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_products","wireless","at_and_t"],"non_system_tags_display":["mb1_all_products","mb1_wireless","mb1_at_and_t"]},"tweetid":"369308247872008192","mediaType":"TWITTER","w2o":{"combined_tags":["all_products","wireless","at_and_t"],"source_tag":"Master_Brand"},"content":"RT @danielaevans @ATT why are you slower than other carriers in releasing the #WP8 #GDR2 update to your #Nokia #Lumia customers? #Amber","docid":"11199:23295418","sentiment":"NONE","time":"2013-08-19T00:02:02-04:00","title":"RT @danielaevans: @ATT why are you slower than other carriers in releasing the 
 #WP8 #GDR2 update to your #Nokia #Lumia customers? #Amber","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295418","influenceLevel":"0"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308216435302400&include_entities=true","location":{"locationString":"minnesota;-usa","country":"us"},"link":"http://twitter.com/AshtonLayne2/statuses/369308216435302400","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0001","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"1","tweetid":"369308216435302400","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"source_tag":"Master_Brand"},"content":"Amazon Gift Card - E-mail http://t.co/zv4WWvLenk","docid":"11199:23295256","sentiment":"NONE","title":"Amazon Gift Card - E-mail http://t.co/zv4WWvLenk","time":"2013-08-19T00:01:54-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295256","influenceLevel":"1","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308600897789952&include_entities=true","location":{"locationString":"northwestern-wisconsin","country":"us"},"link":"http://twitter.com/MarlaAMadison/statuses/369308600897789952","twitterFollowing":"8651","sysomos":{"system_tags":{"sentiment":"none","t":"0003","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["amazon"],"non_system_tags_display":["mb1_amazon"]},"twitterFollowers":"8017","tweetid":"369308600897789952","mediaType":"TWITTER","w2o":{"combined_tags":["amazon"],"source_tag":"Master_Brand"},"content":"The latest low blow for Indie Authors ? Amazon is sending out Writing Quality reprimands! Join me at, http://t.co/3dgyYHzi6j","docid":"11199:23295445","sentiment":"NONE","title":"The latest low blow for Indie Authors ? Amazon is sending out Writing Quality reprimands!\nJoin me at, http://t.co/3dgyYHzi6j","time":"2013-08-19T00:03:26-04:00
 ","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295445","influenceLevel":"7","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369308356952866816&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/PhonesF0RSale/statuses/369308356952866816","twitterFollowing":"528","sysomos":{"system_tags":{"sentiment":"none","t":"0002","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_products","verizon__all","verizon_wireless","wireless","generic_verizon","me"],"non_system_tags_display":["mb1_all_products","mb1_verizon_all","mb1_verizon_wireless","mb1_wireless","mb1_generic_verizon","mb1_verizon"]},"twitterFollowers":"383","tweetid":"369308356952866816","mediaType":"TWITTER","w2o":{"combined_tags":["all_products","verizon__all","verizon_wireless","wireless","generic_verizon","me"],"source_tag":"Master_Brand"},"content":"3 LOT - LG Cosmos 2 - VERIZON WIRELESS - CLEAR ESN $9.99 http://t.co/SxPJVyQNMg #Cell #Phone","do
 cid":"11199:23295399","sentiment":"NONE","title":"3 LOT - LG Cosmos 2 - VERIZON WIRELESS - CLEAR ESN $9.99 http://t.co/SxPJVyQNMg #Cell #Phone","time":"2013-08-19T00:02:28-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295399","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369307780403843072&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/GOLF_Review/statuses/369307780403843072","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0000","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["all_verticals","technology","all_messages","amazon","emotional"],"non_system_tags_display":["mb1_all_verticals","mb1_technology","mb1_all_messages","mb1_amazon","mb1_emotional"]},"twitterFollowers":"0","tweetid":"369307780403843072","mediaType":"TWITTER","w2o":{"combined_tags":["all_verticals","technology","all_messages","amazon","emotional"],"source_tag":"Master_Brand"},"content":"#AMAZON BEST SELLER #5: Ogio Men's Chamber Cart Bag With Silencer Technology.. http://t.co/V2KnQPUN5D #GOLF #BAG","docid":"11199:23295283","sentiment":"NONE","title"
 :"#AMAZON BEST SELLER #5: Ogio Men's Chamber Cart Bag With Silencer Technology.. http://t.co/V2KnQPUN5D #GOLF #BAG","time":"2013-08-19T00:00:10-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295283","influenceLevel":"2"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369309992253263873&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/pierho/statuses/369309992253263873","twitterFollowing":"29","sysomos":{"system_tags":{"sentiment":"none","t":"0008","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["at_and_t"],"non_system_tags_display":["mb1_at_and_t"]},"twitterFollowers":"19","tweetid":"369309992253263873","mediaType":"TWITTER","w2o":{"combined_tags":["at_and_t"],"source_tag":"Master_Brand"},"content":"John Legend concert webcast #LiveOnLetterman presented by AT&T on 8/20, 8pm ET/5pm PT-can't wait! http://t.co/e4ZGryqSQD #crowdtappers #spon","docid":"11199:23295670","sentiment":"NONE","title":"John Legend concert webcast #LiveOnLetterman presented by AT&amp;T on 8/20, 8pm ET/5pm PT-can't wait! http://t.co/e4ZGryqSQD #crowdtappers #spon","time":"2013-08
 -19T00:08:58-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11199&bid=23295670","influenceLevel":"1","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369385350101094401&include_entities=true","location":{"locationString":"brook-park;-ohio","country":"us"},"link":"http://twitter.com/ShelbyKeith12/statuses/369385350101094401","twitterFollowing":"1","sysomos":{"system_tags":{"sentiment":"none","t":"0508","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"0","tweetid":"369385350101094401","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"geo":{"city":{"properties":{"ascii_name":"Brook Park","state_code":"OH","geoname_id":5148326,"elevation":243,"population":19212,"city":"Brook Park","country":"US"},"type":"point","coordinates":[-81.80458,41.39838]}},"source_tag":"Corporate"},"content":"HTC DROID INCREDIBLE Android Phone Black (Verizon Wireless) http://t.co/jkKH8I7wHQ","docid":"11268:3442985","sentiment":"NONE","title":"HTC DROID
  INCREDIBLE Android Phone Black (Verizon Wireless) http://t.co/jkKH8I7wHQ","time":"2013-08-19T05:08:24-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442985","influenceLevel":"1","gender":"MALE"}
-{"content":"News\n2 new results for cheap iphone 4\niPhone 5C Update: Apple's (NASDAQ:AAPPL) Real Motive on Launching the ...\nInternational Business Times AU\nFor Mr Kosner, the iPhone 5C is not really about having Apple (NASDAQ:AAPPL) release an entirely cheap iPhone device. The iPhone 5C is all about Apple's inherent and keen marketing strategy to introduce an all new iPhone screen experience for the ...\nSee all stories on this topic ?\nSept 2013: new iPhone 6 70%, familiar iPhone 5S 30%, budget iPhone 5C 100%\nStabley Times\niPhone 5S: thirty percent. It's still a bit hard to argue with the precedent in which Apple released the iPhone 4S a year after the 4, and the iPhone 3GS a year after the 3G. Except that Apple appeared all set to skip the 4S and release the iPhone 5 in ...\nSee all stories on this topic ?\nWeb\n2 new results for cheap iphone 4\niPhone 4 Leather Cases ? 15+ Best & Cheap - Magazine Hive\nReal leather wallets or cases are usually expensive. The best iPhone 4 l
 eather cases made of faux leather and actually quite cheap, as featured in this site.\nwww.magazinehive.com/2013/08/iphone-4-leather-cases/\nCheap iPhone 6 Rumors, Sony Xperia Tablet Z Leaks, Android 4 2 2 ...\niphone iphone accessories new iphone iphone cases iphone verizon refurbished iphone ...\nwww.youtube.com/watch?v=-CCxDKajphk\nTip: Use quotes (\"like this\") around a set of words in your query to match them exactly. Learn more.\nDelete this alert.\nCreate another alert.\nManage your alerts.","w2o":{"combined_tags":["os_update","me"],"source_tag":"Corporate"},"docid":"11268:3443014","sentiment":"NONE","time":"2013-08-19T02:09:00-04:00","title":"Google Alert - cheap iphone 4","location":{"locationString":"unknown","country":"unknown"},"influenceLevel":"0","domainInlinkCount":"0","link":"http://iphone5-manual.blogspot.com/2013/08/google-alert-cheap-iphone-4_18.html","sysomos":{"system_tags":{"sentiment":"none","t":"0209","source":"BLOGPOST","age":"-1","assigned":"Not Assigned",
 "gender":"Unknown Gender","language":"English"},"non_system_tags":["os_update","me"],"non_system_tags_display":["corp_os_update","corp_verizon"]},"mediaType":"BLOGPOST"}
-{"content":"When we talk about video games and Microsoft, one of the enduring images or names would be Halo that defined the Xbox, marking Microsoft?s first foray into the video game console market. Well, Microsoft has certainly come a long way since the early Xbox days, and you could say that Halo: Spartan Assault happens to be Microsoft?s attempt in delivering the popular intellectual property of theirs to the mobile device platform. Having already sold millions of copies on consoles as well as on the PC, the Halo series garnered its fair share of fans, and as more titles roll out, this fan base is set to grow even further.\nHalo: Spartan Assault happens to be available on Windows Phone 8, although it was previously restricted in the US to just Verizon Wireless customers via a 30-day exclusivity deal. We are glad to say that this particular deal is no more, which means all Windows Phone 8 devices with the relevant amount of processing muscle are able to handle this title without r
 equiring you to be a Verizon Wireless customer. Would you be picking up this particular title for your Windows Phone 8 powered smartphone, or do you think that you would much rather stick to the console versions of Halo? It can be downloaded from Windows Phone Store for $6.99, and needs Windows Phone 8 and 1GB RAM to run, although it is speculated that an update for 512MB devices should be in the pipeline.\nFollow: CellPhones, Gaming, halo, spartan assault, windows phone 8, Halo: Spartan Assault Now Available Across All Windows Phone 8 Devices original content from Ubergizmo.\n","w2o":{"combined_tags":["me","lte_rollout"],"geo":{"city":{"properties":{"ascii_name":"Palo Alto","state_code":"CA","geoname_id":5380748,"elevation":9,"population":64403,"city":"Palo Alto","country":"US"},"type":"point","coordinates":[-122.14302,37.44188]}},"source_tag":"Corporate"},"docid":"11268:3443032","sentiment":"POS","time":"2013-08-19T02:54:52-04:00","title":"Halo: Spartan Assault Now Available Acros
 s All Windows Phone 8 Devices","location":{"locationString":"palo-alto;-ca;-usa","country":"us"},"influenceLevel":"10","domainInlinkCount":"3716","link":"http://www.ubergizmo.com/2013/08/halo-spartan-assault-now-available-across-all-windows-phone-8-devices/?utm_source=mainrss","sysomos":{"system_tags":{"sentiment":"pos","t":"0254","source":"BLOGPOST","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me","lte_rollout"],"non_system_tags_display":["corp_verizon","corp_lte_rollout"]},"mediaType":"BLOGPOST"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369379845601370112&include_entities=true","location":{"locationString":"san-francisco-bay-area","country":"us"},"link":"http://twitter.com/ksdwong/statuses/369379845601370112","twitterFollowing":"3952","sysomos":{"system_tags":{"sentiment":"none","t":"0446","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"4047","tweetid":"369379845601370112","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"geo":{"city":{"properties":{"ascii_name":"San Francisco","state_code":"CA","geoname_id":5391959,"elevation":16,"population":805235,"city":"San Francisco","country":"US"},"type":"point","coordinates":[-122.41942,37.77493]}},"source_tag":"Corporate"},"content":"NetZero spreads network with Verizon, Sprint MVNO deals http://t.co/MXmvIDSxZ8","docid":"11268:3442932","sentiment":"NONE","title":"
 NetZero spreads network with Verizon, Sprint MVNO deals http://t.co/MXmvIDSxZ8","time":"2013-08-19T04:46:32-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442932","influenceLevel":"7","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369378774590054400&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/CellPhoneBuy/statuses/369378774590054400","twitterFollowing":"520","sysomos":{"system_tags":{"sentiment":"none","t":"0442","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"392","tweetid":"369378774590054400","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"NEAR MINT CONDITION LOT OF 5 SAMSUNG CONVOY SCH U640 FOR VERIZON CLEAR ESN # $192.50 http://t.co/1AInWvvnDu #cellphones #Smartphones","docid":"11268:3442923","sentiment":"NONE","title":"NEAR MINT CONDITION LOT OF 5  SAMSUNG CONVOY SCH U640 FOR VERIZON CLEAR ESN # $192.50 http://t.co/1AInWvvnDu #cellphones #Smartphones","time":"2013-08-19T04:42:17-04:0
 0","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442923","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369382636893925377&include_entities=true","location":{"locationString":"san-francisco;-ca","country":"us"},"link":"http://twitter.com/Lanora_Ahlo/statuses/369382636893925377","twitterFollowing":"117","sysomos":{"system_tags":{"sentiment":"none","t":"0457","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"9","tweetid":"369382636893925377","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"geo":{"city":{"properties":{"ascii_name":"San Francisco","state_code":"CA","geoname_id":5391959,"elevation":16,"population":805235,"city":"San Francisco","country":"US"},"type":"point","coordinates":[-122.41942,37.77493]}},"source_tag":"Corporate"},"content":"#Cell Phone Lookup Name Verizon http://t.co/b75qfdvP3D","docid":"11268:3442958","sentiment":"NONE","title":"#Cell Phone Lookup 
 Name Verizon http://t.co/b75qfdvP3D","time":"2013-08-19T04:57:38-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442958","influenceLevel":"1"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369383331844337664&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/DawnAbnet/statuses/369383331844337664","twitterFollowing":"69","sysomos":{"system_tags":{"sentiment":"none","t":"0500","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["nokia","me"],"non_system_tags_display":["corp_nokia","corp_verizon"]},"twitterFollowers":"27","tweetid":"369383331844337664","mediaType":"TWITTER","w2o":{"combined_tags":["nokia","me"],"source_tag":"Corporate"},"content":"RT @ChicagoChicBlog Thanks verizon & #VZWVoices for sending me a Nokia Lumia! Now to figure it out... #style? http://t.co/vL3riS8CEe","docid":"11268:3442967","sentiment":"NONE","title":"RT @ChicagoChicBlog: Thanks verizon &amp; #VZWVoices for sending me a Nokia Lumia! Now to figure it out... #style? http://t.co/vL3riS8CEe","time":"2013
 -08-19T05:00:23-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442967","influenceLevel":"2","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369381696451645440&include_entities=true","location":{"locationString":"va;-u.s.a","country":"us"},"link":"http://twitter.com/IB_VZ/statuses/369381696451645440","twitterFollowing":"2001","sysomos":{"system_tags":{"sentiment":"none","t":"0453","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"1552","tweetid":"369381696451645440","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @RT2GAINPLUS ? RETWEET ? ONLY ? IF ? YOU ? FOLLOW ? BACK ? #TeamFollow (Follow @RT2GAINPLUS) ? 17.72","docid":"11268:3442949","sentiment":"NONE","title":"RT @RT2GAINPLUS: ? RETWEET ? ONLY ? IF ? YOU ? FOLLOW ? BACK ? #TeamFollow (Follow @RT2GAINPLUS) ? 17.72","time":"2013-08-19T04:53:53-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid
 =3442949","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369381663199232000&include_entities=true","location":{"locationString":"va;-u.s.a","country":"us"},"link":"http://twitter.com/IB_VZ/statuses/369381663199232000","twitterFollowing":"2001","sysomos":{"system_tags":{"sentiment":"none","t":"0453","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"1552","tweetid":"369381663199232000","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @RT2SuperGain ??????? ?? ??? ?????? ???? #TeamFollowBack ? #InstantFollowBack ? #AutoFollowBack ? #RT2SUPERGAIN ? #TFBJP ? #HitFollowsTeam ? 16.18","docid":"11268:3442950","sentiment":"NONE","title":"RT @RT2SuperGain: ??????? ?? ??? ?????? ???? #TeamFollowBack ? #InstantFollowBack ? #AutoFollowBack ? #RT2SUPERGAIN ? #TFBJP ?  #HitFollows?","time":"2013-08-
 19T04:53:45-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442950","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369381067314450432&include_entities=true","location":{"locationString":"va;-u.s.a","country":"us"},"link":"http://twitter.com/IB_VZ/statuses/369381067314450432","twitterFollowing":"2001","sysomos":{"system_tags":{"sentiment":"none","t":"0451","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"1552","tweetid":"369381067314450432","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @DailyFangirl FOLLOW ME, I FOLLOW BACK FOLLOW ME, I FOLLOW BACK FOLLOW ME, I FOLLOW BACK FOLLOW ME, I FOLLOW BACK FOLLOW ME, I FOLLOW BACK #PROMISE","docid":"11268:3442941","sentiment":"NONE","title":"RT @DailyFangirl: FOLLOW ME, I FOLLOW BACK\n FOLLOW ME, I FOLLOW BACK\n FOLLOW ME, I FOLLOW BACK\n FOLLOW ME, I FOLLOW BACK \nFOLLOW ME, I FOLL?","time":"201
 3-08-19T04:51:23-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3442941","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369386723165605888&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/adel_vz/statuses/369386723165605888","twitterFollowing":"56","sysomos":{"system_tags":{"sentiment":"none","t":"0513","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"27","tweetid":"369386723165605888","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @ChildhoodFacts \"The scariest thing about distance is that you don't know if they will miss you, or forget you\" - The Notebook","docid":"11268:3443049","sentiment":"NONE","title":"RT @ChildhoodFacts: \"The scariest thing about distance is that you don't know if they will miss you, or forget you\" - The Notebook","time":"2013-08-19T05:13:52-04:00","tweetHbLink":"h
 ttp://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3443049","influenceLevel":"1","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369386664667275264&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/vrak46/statuses/369386664667275264","twitterFollowing":"71","sysomos":{"system_tags":{"sentiment":"none","t":"0513","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"0","tweetid":"369386664667275264","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"#??? ??? usb modem verizon um175vw http://t.co/RRfUJTDWOP http://t.co/2st1eCZqS6","docid":"11268:3443050","sentiment":"NONE","title":"#??? ??? usb modem verizon um175vw http://t.co/RRfUJTDWOP http://t.co/2st1eCZqS6","time":"2013-08-19T05:13:38-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3443050","influenceLevel":"0"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369384397448806400&include_entities=true","location":{"locationString":"usa","country":"us"},"link":"http://twitter.com/alissa_geraghty/statuses/369384397448806400","twitterFollowing":"251","sysomos":{"system_tags":{"sentiment":"none","t":"0504","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"251","tweetid":"369384397448806400","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"Blackberry Bold 9930 - Good Condition Black Verizon Smartphone: $150.00 End Date: Saturday? http://t.co/ihZakDeOHt","docid":"11268:3442976","sentiment":"NONE","title":"Blackberry Bold 9930 - Good Condition Black Verizon Smartphone: $150.00 End Date: Saturday? http://t.co/ihZakDeOHt","time":"2013-08-19T05:04:37-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar
 /?hid=11268&bid=3442976","influenceLevel":"4","gender":"FEMALE"}
-{"content":"James asks?Any recommended touch screen mobile phones with wifi?I personally like the Lg f480 & Lg cookie but just found out they don't support wifi. Any mobile phones of this sort which support wifi please?admin answers:AT&T - iPhone\nVerizon - Blackberry Storm or Samsung Omnia\nSprint - Palm PreJohn asks?I would like anyones thoughts on touch screen mobile phones?Nearly everyone I know that has one has had a problem with the touch screen at some point. My daughter would like one\nRead more ...","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"docid":"11268:3443023","sentiment":"NONE","time":"2013-08-19T01:01:00-04:00","title":"Your Questions About Touch Screen Mobile Phones","location":{"locationString":"unknown","country":"unknown"},"influenceLevel":"1","domainInlinkCount":"1","link":"http://prepaidsmartphones.blogspot.com/2013/08/your-questions-about-touch-screen.html","sysomos":{"system_tags":{"sentiment":"none","t":"0101","source":"BLOGPOST","age":"-1","ass
 igned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"mediaType":"BLOGPOST"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369387441683042305&include_entities=true","location":{"locationString":"new-hampshire;-usa","country":"us"},"link":"http://twitter.com/CassidiCraven/statuses/369387441683042305","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0516","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"0","tweetid":"369387441683042305","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"Apple iPhone 4 16GB (Black) - Verizon http://t.co/77r8Bokkjh","docid":"11268:3443058","sentiment":"NONE","title":"Apple iPhone 4 16GB (Black) - Verizon http://t.co/77r8Bokkjh","time":"2013-08-19T05:16:43-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3443058","influenceLevel":"1"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369446431624417281&include_entities=true","location":{"locationString":"usa","country":"us"},"link":"http://twitter.com/Emily__VanCamp_/statuses/369446431624417281","twitterFollowing":"618","sysomos":{"system_tags":{"sentiment":"none","t":"0911","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"591","tweetid":"369446431624417281","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"LG vx9700 Dare Cell Phone VERIZON EVDO Bluetooth Touchscreen- Used: $25.00 End Date: Monday Aug-26-2013 5:34:29... http://t.co/xbe8VO9TId","docid":"11268:3444129","sentiment":"NONE","title":"LG vx9700 Dare Cell Phone VERIZON EVDO Bluetooth Touchscreen- Used: $25.00 End Date: Monday Aug-26-2013 5:34:29... http://t.co/xbe8VO9TId","time":"2013-08-19T09:11:07-04:00","t
 weetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444129","influenceLevel":"5","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369446283247120384&include_entities=true","location":{"locationString":"usa","country":"us"},"link":"http://twitter.com/CityInformation/statuses/369446283247120384","twitterFollowing":"339","sysomos":{"system_tags":{"sentiment":"none","t":"0910","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"133","tweetid":"369446283247120384","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @BostonDotCom To expand #MBTA cell coverage, Verizon joins AT&T, T-Mobile underground http://t.co/vFLqM3c7Dl","docid":"11268:3444130","sentiment":"NONE","title":"RT @BostonDotCom: To expand #MBTA cell coverage, Verizon joins AT&amp;T, T-Mobile underground http://t.co/vFLqM3c7Dl","time":"2013-08-19T09:10:32-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/
 sidebar/?hid=11268&bid=3444130","influenceLevel":"3"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369447126712844288&include_entities=true","location":{"locationString":"warner-robins;-ga","country":"us"},"link":"http://twitter.com/ChrisBCoon/statuses/369447126712844288","twitterFollowing":"317","sysomos":{"system_tags":{"sentiment":"none","t":"0913","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"218","tweetid":"369447126712844288","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"geo":{"city":{"properties":{"ascii_name":"Warner Robins","state_code":"GA","geoname_id":4229476,"elevation":94,"population":66588,"city":"Warner Robins","country":"US"},"type":"point","coordinates":[-83.5999,32.62098]}},"source_tag":"Corporate"},"content":"@iamalchemist06 what else you invested in? I just bought some Verizon and Ebay last week","docid":"11268:3444147","sentiment":"NONE","title
 ":"@iamalchemist06 what else you invested in?   I just bought some Verizon and Ebay last week","time":"2013-08-19T09:13:53-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444147","influenceLevel":"4","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369445451030102016&include_entities=true","location":{"locationString":"9-dime;planet-earth","country":"unknown"},"link":"http://twitter.com/ItsBryanTho/statuses/369445451030102016","twitterFollowing":"97","sysomos":{"system_tags":{"sentiment":"none","t":"0907","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"820","tweetid":"369445451030102016","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @rubens_thebard #Verizon claims its LG G2 variant has exclusive wireless charging http://t.co/8CjqREBhL5 via @engadget #Droid Cases http://t.co/km59TdrnoZ","docid":"11268:3444103","sentiment":"NONE","title":"RT @rubens_thebard: #Verizon claims its LG G2 variant has exclusive wireless charging http://t.co/8CjqREBhL5 via @engadget #Droid Cases htt?",
 "time":"2013-08-19T09:07:14-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444103","influenceLevel":"5","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369445409669668865&include_entities=true","location":{"locationString":"rochester-ny","country":"us"},"link":"http://twitter.com/VZWjohno/statuses/369445409669668865","twitterFollowing":"837","sysomos":{"system_tags":{"sentiment":"none","t":"0907","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me","lte_rollout"],"non_system_tags_display":["corp_verizon","corp_lte_rollout"]},"twitterFollowers":"775","tweetid":"369445409669668865","mediaType":"TWITTER","w2o":{"combined_tags":["me","lte_rollout"],"geo":{"city":{"properties":{"ascii_name":"Rochester","state_code":"NY","geoname_id":5134086,"elevation":154,"population":210565,"city":"Rochester","country":"US"},"type":"point","coordinates":[-77.61556,43.15478]}},"source_tag":"Corporate"},"content":"#Verizon Wireless #4G #LTE service expands in #Plattsburgh area http://t.co/efqambzpW2 via @sharethis","
 docid":"11268:3444112","sentiment":"NONE","title":"#Verizon Wireless #4G #LTE service expands in #Plattsburgh area http://t.co/efqambzpW2 via @sharethis","time":"2013-08-19T09:07:04-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444112","influenceLevel":"5","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369444351216070657&include_entities=true","location":{"locationString":"dayton;-oh","country":"us"},"link":"http://twitter.com/ohiolemonlaw/statuses/369444351216070657","twitterFollowing":"38","sysomos":{"system_tags":{"sentiment":"none","t":"0902","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"43","tweetid":"369444351216070657","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"geo":{"city":{"properties":{"ascii_name":"Dayton","state_code":"OH","geoname_id":4509884,"elevation":225,"population":141527,"city":"Dayton","country":"US"},"type":"point","coordinates":[-84.19161,39.75895]}},"source_tag":"Corporate"},"content":"@whyhellodestiny what did you get? We are switching to verizon ...I think brian wants that Iphone 5","docid":"11268:3444075","sentiment":"NONE","ti
 tle":"@whyhellodestiny what did you get? We are switching to verizon ...I think brian wants that Iphone 5","time":"2013-08-19T09:02:51-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444075","influenceLevel":"3"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369444407054843906&include_entities=true","location":{"locationString":"north-carolina","country":"us"},"link":"http://twitter.com/jmckjr/statuses/369444407054843906","twitterFollowing":"1273","sysomos":{"system_tags":{"sentiment":"none","t":"0903","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"344","tweetid":"369444407054843906","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"geo":{"city":{"properties":{"ascii_name":"Carolina","state_code":"031","geoname_id":4563243,"elevation":16,"population":170404,"city":"Carolina","country":"PR"},"type":"point","coordinates":[-65.95739,18.38078]}},"source_tag":"Corporate"},"content":"I'm at Verizon Wireless Center (Boone, NC) http://t.co/xnz1nmEfTB","docid":"11268:3444093","sentiment":"NONE","title":"I'm at Verizon Wireless Center (B
 oone, NC) http://t.co/xnz1nmEfTB","time":"2013-08-19T09:03:05-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444093","influenceLevel":"5","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369443605934395392&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/alitchie_23/statuses/369443605934395392","twitterFollowing":"145","sysomos":{"system_tags":{"sentiment":"none","t":"0859","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"366","tweetid":"369443605934395392","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"Finally going to the Verizon Center","docid":"11268:3444066","sentiment":"NONE","title":"Finally going to the Verizon Center ","time":"2013-08-19T08:59:54-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444066","influenceLevel":"5","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369442595107119105&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/i_am_hid/statuses/369442595107119105","twitterFollowing":"52","sysomos":{"system_tags":{"sentiment":"none","t":"0855","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"19","tweetid":"369442595107119105","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"@magnifika yo what can you tell me about working for Verizon doing what you do.might move to Pitt in the spring and looking into all options","docid":"11268:3444057","sentiment":"NONE","title":"@magnifika yo what can you tell me about working for Verizon doing what you do.might move to Pitt in the spring and looking into all options","time":"2013-08-19T08:5
 5:53-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444057","influenceLevel":"1"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369444174245814273&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/fn_verizon/statuses/369444174245814273","twitterFollowing":"182","sysomos":{"system_tags":{"sentiment":"none","t":"0902","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"543","tweetid":"369444174245814273","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"RT @Khairykj Presenting Orange Esports DoTA & CSGO teams w/ Harimau tracktops. DoTA came 3rd at Internationals recently. http://t.co/RflaA719yf","docid":"11268:3444084","sentiment":"NONE","title":"RT @Khairykj: Presenting Orange Esports DoTA &amp; CSGO teams w/ Harimau tracktops. DoTA came 3rd at Internationals recently. http://t.co/RflaA?","time":"2013
 -08-19T09:02:09-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444084","influenceLevel":"5"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369448932511735810&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/HeadGreg/statuses/369448932511735810","twitterFollowing":"97","sysomos":{"system_tags":{"sentiment":"none","t":"0921","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["me","share_everything"],"non_system_tags_display":["corp_verizon","corp_share_everything"]},"twitterFollowers":"40","tweetid":"369448932511735810","mediaType":"TWITTER","w2o":{"combined_tags":["me","share_everything"],"source_tag":"Corporate"},"content":"When I signed up for Verizon's Share Everything Plan I didn't know it included the NSA","docid":"11268:3444174","sentiment":"NONE","title":"When I signed up for Verizon's Share Everything Plan I didn't know it included the NSA","time":"2013-08-19T09:21:04-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sid
 ebar/?hid=11268&bid=3444174","influenceLevel":"2","gender":"MALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369446083547496450&include_entities=true","location":{"locationString":"new-jersey","country":"us"},"link":"http://twitter.com/JordanDarby8/statuses/369446083547496450","twitterFollowing":"0","sysomos":{"system_tags":{"sentiment":"none","t":"0909","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"2","tweetid":"369446083547496450","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":"Deluxe Black Case Cover W/chrome for Iphone 4 4G 4S AT&T Verizon Sprint http://t.co/ogn4fXmEWZ","docid":"11268:3444121","sentiment":"NONE","title":"Deluxe Black Case Cover W/chrome for Iphone 4 4G 4S AT&amp;T Verizon Sprint http://t.co/ogn4fXmEWZ","time":"2013-08-19T09:09:44-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444121","in
 fluenceLevel":"1"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369446590441746432&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/_KeyThugga/statuses/369446590441746432","twitterFollowing":"671","sysomos":{"system_tags":{"sentiment":"none","t":"0911","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["me"],"non_system_tags_display":["corp_verizon"]},"twitterFollowers":"906","tweetid":"369446590441746432","mediaType":"TWITTER","w2o":{"combined_tags":["me"],"source_tag":"Corporate"},"content":null,"docid":"11268:3444138","sentiment":"NONE","title":null,"time":"2013-08-19T09:11:45-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=11268&bid=3444138","influenceLevel":"6"}
-{"content":"SOURCE Zacks Investment Research, Inc.\nCHICAGO\n(Logo: http://photos.prnewswire.com/prnh/20101027/ZIRLOGO)\nToday, Zacks is promoting its ''Buy'' stock recommendations. . Here are highlights from Friday's Analyst Blog: Verizon Delays Canada Acquisitions\nVerizon Communications Inc.? (NYSE:VZ-Free Report) has reportedly postponed the acquisitions of Canadian telecom provider Wind Mobile and Mobilicity. The company is waiting for the government auction in Canada\nAccording to reports, the company is now focusing on participating in the upcoming auction of the 700-megahertz band spectrum. News reports also suggest that if Verizon? wins, it might reconsider its purchase plans or go ahead next year.? Despite the small stature, we believe these companies would mark a significant stepping stone for the company in Canada.? Wind Mobile, which began its operations in 2009, has around 600,000 customers, which has almost surpassed wirelesses subscriber base of the fourth largest wi
 reless Canadian carriers - Saskatchewan Telecommunications Holding Corporation.? Further, Mobilicity ? an acquisition targeted by Telus in the past ? has around 250, 000 subscribers. Although Mobilicity has undertaken no major expansion in the last two years, it continues to operate in key areas like Greater Toronto Area\nWe believe the company's entry into new markets like Canada\nHowever, the news of possible takeovers in Canada\nVerizon, currently has Zacks Rank #3 (Hold).\nEastern Insurance: A Strong Buy\nOn Aug 15, 2013\nWhy the Upgrade?\nEastern Insurance has been experiencing rising earnings estimates on the back of improved second-quarter 2013 results. Moreover, strong underwriting performance, agency relationships and a healthy capital position have been impressive. Additionally, this multi-line insurer delivered positive earnings surprises in all of the last 4 quarters with an average beat of 22%.\nOn Aug 1\nTotal revenue grew 21.1% year over year, driven by a 17.6% upsurg
 e in premiums along with higher investment income and realized gains. These were partially offset by 16% growth in total expenses. Other growth metrics such as combined ratio and book value per share witnessed improvement. Eastern Insurance's strategic focus on organic growth and initiatives to expand in the emerging markets are showing results. Moreover, the company is gaining traction in both its workman's compensation insurance as well as reinsurance and other businesses, given the improvement in premium retention rates. Alongside, prudent expense and risk management as well as strong capitalization scores well with the ratings agencies, reflecting a strong long-term growth potential.\nBased on Eastern Insurance's fundamental strength and capital management, the Zacks Consensus Estimate for 2013 rose 3.0% to $1.38\nMoreover, the Most Accurate Estimate for Eastern Insurance's 2013 earnings stands at $1.50\nToday, Zacks is promoting its ''Buy'' stock recommendations. . About Zacks 
 Equity Research Zacks Equity Research provides the best of quantitative and qualitative analysis to help investors know what stocks to buy and which to sell for the long-term.\nContinuous coverage is provided for a universe of 1,150 publicly traded stocks. Our analysts are organized by industry which gives them keen insights to developments that affect company profits and stock performance. Recommendations and target prices are six-month time horizons.\nZacks \"Profit from the Pros\" e-mail newsletter provides highlights of the latest analysis from Zacks Equity Research. Subscribe to this free newsletter today.\nAbout Zacks\nZacks.com is a property of Zacks Investment Research, Inc., which was formed in 1978. The later formation of the Zacks Rank, a proprietary stock picking system; continues to outperform the market by nearly a 3 to 1 margin. The best way to unlock the profitable stock recommendations and market insights of Zacks Investment Research is through our free daily email 
 newsletter; Profit from the Pros. ? In short, it's your steady flow of Profitable ideas GUARANTEED to be worth your time! . Get the full Report on VZ - FREE Get the full Report on TU - FREE Get the full Report on BCE - FREE Get the full Report on RCI - FREE Follow us on Twitter: http://twitter.com/zacksresearch\nJoin us on Facebook: http://www.facebook.com/home.php#/pages/Zacks-Investment-Research/57553657748?ref=ts\nZacks Investment Research is under common control with affiliated entities (including a broker-dealer and an investment adviser), which may engage in transactions involving the foregoing securities for the clients of such affiliates.\nMedia Contact\nZacks Investment Research\n800-767-3771 ext. 9339\nsupport@zacks.com\nhttp://www.zacks.com\nPast performance is no guarantee of future results. Inherent in any investment is the potential for loss. This material is being provided for informational purposes only and nothing herein constitutes investment, legal, accounting or 
 tax advice, or a recommendation to buy, sell or hold a security. No recommendation or advice is being given as to whether any investment is suitable for a particular investor. It should not be assumed? that any investments in securities, companies, sectors or markets identified and described were or will be profitable. All information is current as of the date of herein and? is subject to change without notice. Any views or opinions expressed may not reflect those of the firm as a whole. Zacks Investment Research does not engage in investment banking, market making or asset management activities of any securities. These returns are from hypothetical portfolios consisting of stocks with Zacks Rank = 1 that were rebalanced monthly with zero transaction costs. These are not the returns of actual portfolios of stocks. The S&P 500 is an unmanaged index. Visit http://www.zacks.com/performance for information about the performance numbers displayed in this press release.\n","w2o":{"combine
 d_tags":["upgrades","supply_chain_issues","stocks","quarter_earnings","spectrum_deals","me"],"geo":{"city":{"properties":{"ascii_name":"Mount Pleasant","state_code":"SC","geoname_id":4588165,"elevation":3,"population":67843,"city":"Mount Pleasant","country":"US"},"type":"point","coordinates":[-79.86259,32.79407]}},"source_tag":"Corporate"},"docid":"11268:3445029","sentiment":"POS","time":"2013-08-19T10:08:00-04:00","title":"The Zacks Analyst Blog Highlights: Verizon Communications, TELUS Corporation, BCE, Rogers Communications and Eastern Insurance Holdings","location":{"locationString":"mount-pleasant;-sc;-usa","country":"us"},"influenceLevel":"0","link":"http://www.abcnews4.com/story/23171210/the-zacks-analyst-blog-highlights-verizon-communications-telus-corporation-bce-rogers-communications-and-eastern-insurance-holdings","sysomos":{"system_tags":{"sentiment":"pos","t":"1008","source":"NEWS","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non
 _system_tags":["upgrades","supply_chain_issues","stocks","quarter_earnings","spectrum_deals","me"],"non_system_tags_display":["corp_upgrades","corp_supply_chain_issues","corp_stocks","corp_quarter_earnings","corp_spectrum_deals","corp_verizon"]},"mediaType":"NEWS"}
-{"content":"Verizon Wireless: WHO: Verizon Wireless, operator of the nation?s largest 4G LTE network and largest, most reliable 3G network WHAT: Verizon Wireless recently enhanced fourth generation (4G) Long Term Evolution (LTE) network coverage in Providence, Rhode Island. 4G LTE empowers Verizon Wireless customers with compatible devices to surf the Web, post status updates and photos, and download files wirelessly at speeds up to 10 times faster than customers on 3G networks. WHERE: Verizon Wireless first debuted its 4G LTE network in Rhode Island in November 2011. Recently, the Verizon Wireless 4G LTE network further expanded within Providence including the area surrounding the intersections of Routes 1, 7, 146, 246 and Interstate 95. Coverage has also been enhanced near the State House and Amtrak train station. BACKGROUND: ?4G LTE is changing the way customers interact with the world via next generation apps, devices and solutions,? commented Dave MacBeth, Executive Director of
  Network for Verizon Wireless. ?By investing in wireless broadband, we?re investing in local communities and economies where our customers live, work and play.? As of June 27, the Verizon Wireless 4G LTE network is available to more than 298 million people in 500 markets across the U.S., representing more than 99 percent of the companies? 3G footprint. For a full list of 4G LTE markets please visit: www.verizonwireless.com/lte. The growth of the 4G LTE network has fostered development of new and innovative solutions as diverse as . One solution recently brought to market is the Verizon 4G LTE Router, which can support wired and Wi-Fi-enabled devices simultaneously, allowing users to take it on vacation or business travel to stay connected. Verizon Wireless customers can also take advantage of HomeFusion? Broadband, a residential Internet solution that uses the Verizon Wireless 4G LTE network to bring reliable, high-speed Internet service to customers with limited broadband options. 
 The company also offers a full line of ?smart accessories? across the categories of health and fitness, lifestyle and toys that leverage its leading portfolio of mobile devices and networks. For a full list of smart accessories please visit: www.verizonwireless.com/smartaccessories. In 2012, Verizon Wireless completed $256 million in wireless network enhancements across New England, increasing the company's regional network investment to more than $3.3 billion since its inception in 2000. Verizon Wireless ranked highest among all other national wireless providers in New England, which includes Connecticut, Maine, Massachusetts, New Hampshire, Rhode Island and Vermont, in the , issued March 7. This is the 17th consecutive reporting period that Verizon Wireless ranks highest in the Northeast region. About Verizon Wireless Verizon Wireless operates the nation?s largest 4G LTE network and largest, most reliable 3G network. The company serves 100.1 million retail customers, including 94.
 3 million retail postpaid customers. Headquartered in Basking Ridge, N.J., with more than 73,000 employees nationwide, Verizon Wireless is a joint venture of Verizon Communications (NYSE, NASDAQ: VZ) and Vodafone (LSE, NASDAQ: VOD). For more information, visit www.verizonwireless.com. For the latest news and updates about Verizon Wireless, visit our News Center at http://news.verizonwireless.com or follow us on Twitter at http://twitter.com/VZWNews.\n","w2o":{"combined_tags":["vodafone","amtrak","me"],"source_tag":"Corporate"},"docid":"11268:3444947","sentiment":"POS","time":"2013-08-19T09:38:00-04:00","title":"Verizon Wireless Enhances 4G LTE Coverage in Providence, Rhode Island","location":{"locationString":";-;-usa","country":"us"},"influenceLevel":"10","link":"http://finance.yahoo.com/news/verizon-wireless-enhances-4g-lte-133400634.html","sysomos":{"system_tags":{"sentiment":"pos","t":"0938","source":"NEWS","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language
 ":"English"},"non_system_tags":["vodafone","amtrak","me"],"non_system_tags_display":["corp_vodafone","corp_amtrak","corp_verizon"]},"mediaType":"NEWS"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369317548665229313&include_entities=true","location":{"locationString":"indianapolis","country":"us"},"link":"http://twitter.com/_chelssss_96/statuses/369317548665229313","twitterFollowing":"64","sysomos":{"system_tags":{"sentiment":"none","t":"0038","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["at_t_no_expletives_no_boiler","at_t","top_tier"],"non_system_tags_display":["pr_wireless_at_t_no_expletives_no_boiler","pr_wireless_at_t","pr_wireless_top_tier"]},"twitterFollowers":"62","tweetid":"369317548665229313","mediaType":"TWITTER","w2o":{"combined_tags":["at_t_no_expletives_no_boiler","at_t","top_tier"],"geo":{"city":{"properties":{"ascii_name":"Indianapolis","state_code":"IN","geoname_id":4259418,"elevation":218,"population":829718,"city":"Indianapolis","country":"US"},"type":"point","coordinates":[-86.15804,39.76838]}},"source_tag":"PR_Ent
 erprise"},"content":"Seriously, is ANYONE selling an AT&T smart phone?","docid":"4810:13604222","sentiment":"NONE","title":"Seriously, is ANYONE selling an AT&amp;T smart phone?","time":"2013-08-19T00:38:59-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604222","influenceLevel":"2","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369318119761649664&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604239","twitterFollowing":"26","sysomos":{"system_tags":{"sentiment":"none","t":"0041","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["blackberry","top_tier"],"non_system_tags_display":["pr_wireless_blackberry","pr_wireless_top_tier"]},"twitterFollowers":"2","tweetid":"369318119761649664","mediaType":"TWITTER","w2o":{"combined_tags":["blackberry","top_tier"],"source_tag":"PR_Enterprise"},"content":"Tweet contents not available because of GNIP setup, click to see: http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604239","docid":"4810:13604239","sentiment":"NONE","title":"tweet","time":"2013-08-19T00:41:16-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=136
 04239","influenceLevel":"0"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369318060399681536&include_entities=true","location":{"locationString":"9/9-is-alive;-so-im-happy","country":"unknown"},"link":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604257","twitterFollowing":"88","sysomos":{"system_tags":{"sentiment":"none","t":"0041","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["smart_phones","iphone","blackberry","top_tier"],"non_system_tags_display":["pr_wireless_smartphones","pr_wireless_iphone","pr_wireless_blackberry","pr_wireless_top_tier"]},"twitterFollowers":"112","tweetid":"369318060399681536","mediaType":"TWITTER","w2o":{"combined_tags":["smart_phones","iphone","blackberry","top_tier"],"source_tag":"PR_Enterprise"},"content":"Tweet contents not available because of GNIP setup, click to see: http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604257","docid":"4810:13604257","sentiment":"NONE","t
 itle":"tweet","time":"2013-08-19T00:41:01-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604257","influenceLevel":"4"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369317327356968963&include_entities=true","location":{"locationString":"instagram:-azza_zaharuddin","country":"unknown"},"link":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604204","twitterFollowing":"256","sysomos":{"system_tags":{"sentiment":"none","t":"0038","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["blackberry","top_tier"],"non_system_tags_display":["pr_wireless_blackberry","pr_wireless_top_tier"]},"twitterFollowers":"247","tweetid":"369317327356968963","mediaType":"TWITTER","w2o":{"combined_tags":["blackberry","top_tier"],"source_tag":"PR_Enterprise"},"content":"Tweet contents not available because of GNIP setup, click to see: http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604204","docid":"4810:13604204","sentiment":"NONE","title":"tweet","time":"2013-08-19T00:38:07-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hi
 d=4810&bid=13604204","influenceLevel":"4","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369316588949741568&include_entities=true","location":{"locationString":"boston;-ma","country":"us"},"link":"http://twitter.com/whitneym02/statuses/369316588949741568","twitterFollowing":"217","sysomos":{"system_tags":{"sentiment":"none","t":"0035","source":"TWITTER","tc":"T","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["at_t_no_expletives_no_boiler","at_t","top_tier"],"non_system_tags_display":["pr_wireless_at_t_no_expletives_no_boiler","pr_wireless_at_t","pr_wireless_top_tier"]},"twitterFollowers":"224","tweetid":"369316588949741568","mediaType":"TWITTER","w2o":{"combined_tags":["at_t_no_expletives_no_boiler","at_t","top_tier"],"geo":{"city":{"properties":{"ascii_name":"Boston","state_code":"MA","geoname_id":4930956,"elevation":14,"population":617594,"city":"Boston","country":"US"},"type":"point","coordinates":[-71.05977,42.35843]}},"source_tag":"PR_Enterprise
 "},"content":"No service in an emergency situation? That's what you get for sticking with AT&T, Jax. #SOA","docid":"4810:13604167","sentiment":"NONE","title":"No service in an emergency situation? That's what you get for sticking with AT&amp;T, Jax. #SOA","time":"2013-08-19T00:35:11-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604167","influenceLevel":"4"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369317489198387201&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/Torie2k12/statuses/369317489198387201","twitterFollowing":"344","sysomos":{"system_tags":{"sentiment":"none","t":"0038","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"FEMALE","language":"English"},"non_system_tags":["sprint_no_expletives_no_boiler","sprint","expletives","top_tier"],"non_system_tags_display":["pr_wireless_sprint_no_expletives_no_boiler","pr_wireless_sprint","pr_wireless_expletives","pr_wireless_top_tier"]},"twitterFollowers":"331","tweetid":"369317489198387201","mediaType":"TWITTER","w2o":{"combined_tags":["sprint_no_expletives_no_boiler","sprint","expletives","top_tier"],"source_tag":"PR_Enterprise"},"content":"RT @Take_Thiis_Dick Sprint Service Sooooo Fucking GAY!","docid":"4810:13604194","sentiment":"NONE","title":"RT @Take_Thiis_Dick: Sprint Ser
 vice Sooooo Fucking GAY!","time":"2013-08-19T00:38:45-04:00","tweetHbLink":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604194","influenceLevel":"5","gender":"FEMALE"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369316892806496256&include_entities=true","location":{"locationString":"worldwide","country":"unknown"},"link":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604176","twitterFollowing":"26","sysomos":{"system_tags":{"sentiment":"none","t":"0036","source":"TWITTER","tc":"R","age":"-1","assigned":"Not Assigned","gender":"Unknown Gender","language":"English"},"non_system_tags":["blackberry","expletives","top_tier"],"non_system_tags_display":["pr_wireless_blackberry","pr_wireless_expletives","pr_wireless_top_tier"]},"twitterFollowers":"4815","tweetid":"369316892806496256","mediaType":"TWITTER","w2o":{"combined_tags":["blackberry","expletives","top_tier"],"source_tag":"PR_Enterprise"},"content":"Tweet contents not available because of GNIP setup, click to see: http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604176","docid":"4810:13604176","sentiment":"NONE","title":"tweet","time":"2013-08-19T00:36:23-04:00","tweetHbLi
 nk":"http://hb.sysomos.com/hb2/sidebar/?hid=4810&bid=13604176","influenceLevel":"6"}
-{"tweetJsonLink":"http://api.twitter.com/1/statuses/show.json?id=369316827689545729&include_entities=true","location":{"locationString":"unknown","country":"unknown"},"link":"http://twitter.com/edvilla15/statuses/369316827689545729","twitterFollowing":"289","sysomos":{"system_tags":{"sentiment":"none","t":"0036","source":"TWITTER","tc":"C","age":"-1","assigned":"Not Assigned","gender":"MALE","language":"English"},"non_system_tags":["smart_phones","iphone","me","top_tier"],"non_system_tags_display":["pr_wireless_smartphones","pr_wireless_iphone","pr_wireless_verizon_wireless","pr_wireless_top_tier"]},"twitterFollowers":"340","tweetid":"369316827689545729","mediaType":"TWITTER","w2o":{"combined_tags"

<TRUNCATED>

[44/71] [abbrv] git commit: applied ryan's patch for type-aware deepcopy avoiding needing to serialize member fields of writers

Posted by sb...@apache.org.
applied ryan's patch for type-aware deepcopy
avoiding needing to serialize member fields of writers

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572379 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/715e4118
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/715e4118
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/715e4118

Branch: refs/heads/master
Commit: 715e41189008779972887801eb13e2b59633fb6e
Parents: 7465065
Author: sblackmon <sb...@unknown>
Authored: Thu Feb 27 01:28:48 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Thu Feb 27 01:28:48 2014 +0000

----------------------------------------------------------------------
 .../streams-persist-elasticsearch/pom.xml       |   2 +-
 streams-contrib/streams-persist-hdfs/pom.xml    |   1 +
 .../streams/hdfs/WebHdfsPersistWriter.java      | 111 +++----------------
 .../provider/TwitterTimelineProvider.java       |   2 +-
 streams-core/pom.xml                            |  18 +++
 .../streams/core/builders/StreamComponent.java  |   9 +-
 .../streams/core/tasks/BaseStreamsTask.java     |  59 +++++++++-
 7 files changed, 100 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index 84aad95..e91ef83 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -74,7 +74,7 @@
                     <generateBuilders>true</generateBuilders>
                     <sourcePaths>
                         <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json</sourcePath>
+                        <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/HdfsWriterConfiguration.json</sourcePath>
                     </sourcePaths>
                     <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
                     <targetPackage>org.apache.streams.elasticsearch.pojo</targetPackage>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-contrib/streams-persist-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/pom.xml b/streams-contrib/streams-persist-hdfs/pom.xml
index 6392158..1142976 100644
--- a/streams-contrib/streams-persist-hdfs/pom.xml
+++ b/streams-contrib/streams-persist-hdfs/pom.xml
@@ -83,6 +83,7 @@
                     <generateBuilders>true</generateBuilders>
                     <sourcePaths>
                         <sourcePath>src/main/jsonschema/org/apache/streams/hdfs/HdfsConfiguration.json</sourcePath>
+                        <sourcePath>src/main/jsonschema/org/apache/streams/hdfs/HdfsWriterConfiguration.json</sourcePath>
                     </sourcePaths>
                     <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
                     <targetPackage>org.apache.streams.hdfs.pojo</targetPackage>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
index de21055..d005185 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
@@ -28,7 +28,7 @@ import java.security.PrivilegedExceptionAction;
 import java.util.*;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
-public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable, Flushable, Closeable
+public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Closeable
 {
     private final static Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistWriter.class);
 
@@ -44,63 +44,24 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable, Flu
     private int fileLineCounter = 0;
     private OutputStreamWriter currentWriter = null;
 
+    private static final int  BYTES_IN_MB = 1024*1024;
+    private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
+    private volatile int  totalByteCount = 0;
+    private volatile int  byteCount = 0;
+
     public boolean terminate = false;
 
     protected volatile Queue<StreamsDatum> persistQueue;
 
     private ObjectMapper mapper = new ObjectMapper();
 
-    private HdfsConfiguration config;
-
-    public WebHdfsPersistWriter() {
-        Config config = StreamsConfigurator.config.getConfig("hdfs");
-        this.config = HdfsConfigurator.detectConfiguration(config);
-        this.persistQueue  = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public WebHdfsPersistWriter(Queue<StreamsDatum> persistQueue) {
-        Config config = StreamsConfigurator.config.getConfig("hdfs");
-        this.config = HdfsConfigurator.detectConfiguration(config);
-        this.persistQueue = persistQueue;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config) {
-        this.config = config;
-        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue, Path path) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-        this.path = path;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue, Path path, String filePart) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-        this.path = path;
-        this.filePart = filePart;
-    }
+    private HdfsConfiguration hdfsConfiguration;
 
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue, Path path, String filePart, int linesPerFile) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-        this.path = path;
-        this.filePart = filePart;
-        this.linesPerFile = linesPerFile;
+    public WebHdfsPersistWriter(HdfsConfiguration hdfsConfiguration) {
+        this.hdfsConfiguration = hdfsConfiguration;
     }
 
-    private static final int  BYTES_IN_MB = 1024*1024;
-    private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
-    private volatile int  totalByteCount = 0;
-    private volatile int  byteCount = 0;
-
-    public URI getURI() throws URISyntaxException { return new URI(WebHdfsFileSystem.SCHEME + "://" + config.getHost() + ":" + config.getPort()); }
+    public URI getURI() throws URISyntaxException { return new URI(WebHdfsFileSystem.SCHEME + "://" + hdfsConfiguration.getHost() + ":" + hdfsConfiguration.getPort()); }
     public boolean isConnected() 		                { return (client != null); }
 
     public final synchronized FileSystem getFileSystem()
@@ -115,8 +76,8 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable, Flu
     {
         try
         {
-            LOGGER.info("User : {}", this.config.getUser());
-            UserGroupInformation ugi = UserGroupInformation.createRemoteUser(this.config.getUser());
+            LOGGER.info("User : {}", this.hdfsConfiguration.getUser());
+            UserGroupInformation ugi = UserGroupInformation.createRemoteUser(this.hdfsConfiguration.getUser());
             ugi.setAuthenticationMethod(UserGroupInformation.AuthenticationMethod.SIMPLE);
 
             ugi.doAs(new PrivilegedExceptionAction<Void>() {
@@ -282,55 +243,11 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable, Flu
                     .toString();
     }
 
-    public void start() {
-
-        connectToWebHDFS();
-
-    }
-
-    public void stop() {
-
-        try {
-            flush();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        try {
-            close();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-//    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-//        this.persistQueue = persistQueue;
-//    }
-//
-//    public Queue<StreamsDatum> getPersistQueue() {
-//        return persistQueue;
-//    }
-
-
-    @Override
-    public void run() {
-
-        start();
-
-        Thread task = new Thread(new WebHdfsPersistWriterTask(this));
-        task.start();
-
-        while( !terminate ) {
-            try {
-                Thread.sleep(new Random().nextInt(100));
-            } catch (InterruptedException e) { }
-        }
-
-        stop();
-    }
-
     @Override
     public void prepare(Object configurationObject) {
+        this.hdfsConfiguration = (HdfsWriterConfiguration)configurationObject;
         connectToWebHDFS();
+        path = new Path(hdfsConfiguration.getPath());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
index 4ef6672..6fb3e02 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
@@ -33,7 +33,7 @@ import java.util.concurrent.*;
  */
 public class TwitterTimelineProvider implements StreamsProvider, Serializable {
 
-    private final static String STREAMS_ID = "TwitterTimelineProvider";
+    public final static String STREAMS_ID = "TwitterTimelineProvider";
 
     private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTimelineProvider.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-core/pom.xml
----------------------------------------------------------------------
diff --git a/streams-core/pom.xml b/streams-core/pom.xml
index 8a35b24..7f22cb1 100644
--- a/streams-core/pom.xml
+++ b/streams-core/pom.xml
@@ -39,6 +39,24 @@
             <artifactId>streams-util</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-pojo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-json-org</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-pojo</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java b/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
index 2f1b14c..6243f94 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
@@ -173,8 +173,13 @@ public class StreamComponent {
             }
         }
         else if(this.writer != null) {
-            task = new StreamsPersistWriterTask((StreamsPersistWriter) SerializationUtil.cloneBySerialization(this.writer));
-            task.addInputQueue(this.inQueue);
+            if(this.numTasks > 1) {
+                task = new StreamsPersistWriterTask((StreamsPersistWriter) SerializationUtil.cloneBySerialization(this.writer));
+                task.addInputQueue(this.inQueue);
+            } else {
+                task = new StreamsPersistWriterTask(this.writer);
+                task.addInputQueue(this.inQueue);
+            }
         }
         else if(this.provider != null) {
             StreamsProvider prov = (StreamsProvider)SerializationUtil.cloneBySerialization(this.provider);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/715e4118/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
index 8c275bf..354c70b 100644
--- a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
@@ -1,10 +1,14 @@
 package org.apache.streams.core.tasks;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.streams.pojo.json.Activity;
 import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.util.SerializationUtil;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
@@ -20,6 +24,13 @@ public abstract class BaseStreamsTask implements StreamsTask {
     private List<Queue<StreamsDatum>> inQueues = new ArrayList<Queue<StreamsDatum>>();
     private List<Queue<StreamsDatum>> outQueues = new LinkedList<Queue<StreamsDatum>>();
     private int inIndex = 0;
+    private ObjectMapper mapper;
+
+    public BaseStreamsTask() {
+        this.mapper = new ObjectMapper();
+        this.mapper.registerSubtypes(Activity.class);
+    }
+
 
     @Override
     public void addInputQueue(Queue<StreamsDatum> inputQueue) {
@@ -68,9 +79,12 @@ public abstract class BaseStreamsTask implements StreamsTask {
             this.outQueues.get(0).offer(datum);
         }
         else {
+            StreamsDatum newDatum = null;
             for(Queue<StreamsDatum> queue : this.outQueues) {
                 try {
-                    queue.offer((StreamsDatum) SerializationUtil.deserialize(SerializationUtil.serialize(datum)));
+                    newDatum = cloneStreamsDatum(datum);
+                    if(newDatum != null)
+                        queue.offer(newDatum);
                 } catch (RuntimeException e) {
                     LOGGER.debug("Failed to add StreamsDatum to outgoing queue : {}", datum);
                     LOGGER.error("Exception while offering StreamsDatum to outgoing queue: {}", e);
@@ -79,6 +93,49 @@ public abstract class BaseStreamsTask implements StreamsTask {
         }
     }
 
+    /**
+     * //TODO LOCAL MODE HACK. Need to fix
+     * In order for our data streams to ported to other data flow frame works(Storm, Hadoop, Spark, etc) we need to be able to
+     * enforce the serialization required by each framework.  This needs some thought and design before a final solution is
+     * made.
+     *
+     * In order to be able to copy/clone StreamDatums the orginal idea was to force all StreamsDatums to be java serializable.
+     * This was seen as unacceptable for local mode.  So until we come up with a solution to enforce serialization and be
+     * compatiable across multiple frame works, this hack is in place.
+     *
+     * If datum.document is Serializable, we use serialization to clone a new copy.  If it is not Serializable we attempt
+     * different methods using an com.fasterxml.jackson.databind.ObjectMapper to copy/clone the StreamsDatum. If the object
+     * is not clonable by these methods, an error is reported to the logging and a NULL object is returned.
+     *
+     * @param datum
+     * @return
+     */
+    protected StreamsDatum cloneStreamsDatum(StreamsDatum datum) {
+        try {
+            if(datum.document instanceof Serializable) {
+                return (StreamsDatum) SerializationUtil.cloneBySerialization(datum);
+            }
+            else if(datum.document instanceof ObjectNode) {
+                return new StreamsDatum(((ObjectNode) datum.document).deepCopy(), datum.timestamp, datum.sequenceid);
+            }
+            else if(datum.document instanceof Activity) {
+
+                return new StreamsDatum(this.mapper.readValue(this.mapper.writeValueAsString(datum.document), Activity.class),
+                                        datum.timestamp,
+                                        datum.sequenceid);
+            }
+            else if(this.mapper.canSerialize(datum.document.getClass())){
+                return new StreamsDatum(this.mapper.readValue(this.mapper.writeValueAsString(datum.document), datum.document.getClass()),
+                                        datum.timestamp,
+                                        datum.sequenceid);
+            }
+        } catch (Exception e) {
+            LOGGER.error("Exception while trying to clone/copy StreamsDatum : {}", e);
+        }
+        LOGGER.error("Failed to clone/copy StreamsDatum with document of class : {}", datum.document.getClass().getName());
+        return null;
+    }
+
     private int getNextInputQueueIndex() {
         ++this.inIndex;
         if(this.inIndex >= this.inQueues.size()) {


[55/71] [abbrv] git commit: Cleaning up contrib modules Preparing to merge STREAMS-26

Posted by sb...@apache.org.
Cleaning up contrib modules
Preparing to merge STREAMS-26


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/f9165129
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/f9165129
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/f9165129

Branch: refs/heads/master
Commit: f916512905fc911ee7bc41fe0cef7478dc0cdefb
Parents: 3499016
Author: sblackmon <sb...@w2odigital.com>
Authored: Wed Mar 19 13:36:33 2014 -0500
Committer: sblackmon <sb...@w2odigital.com>
Committed: Wed Mar 19 13:36:33 2014 -0500

----------------------------------------------------------------------
 streams-contrib/pom.xml                         | 11 ++++----
 .../streams/hdfs/WebHdfsPersistReader.java      | 27 +++++++++++++-------
 .../streams/hdfs/WebHdfsPersistReaderTask.java  |  4 +--
 .../streams/rss/provider/RssStreamProvider.java |  2 +-
 .../streams/rss/test/Top100FeedsTest.java       |  4 ++-
 .../streams-provider-rss.iml                    | 16 +++---------
 .../apache/streams/sysomos/SysomosProvider.java | 20 +++++++--------
 7 files changed, 43 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 0cd5db7..37ee3b7 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -41,14 +41,13 @@
         <module>streams-persist-hdfs</module>
         <module>streams-persist-kafka</module>
         <module>streams-persist-mongo</module>
-        <!--<module>streams-provider-datasift</module>-->
-        <!--<module>streams-provider-facebook</module>-->
-        <!--<module>streams-provider-gnip</module>-->
+        <module>streams-provider-datasift</module>
+        <module>streams-provider-facebook</module>
+        <module>streams-provider-gnip</module>
         <module>streams-provider-moreover</module>
         <module>streams-provider-twitter</module>
-        <!--<module>streams-provider-sysomos</module>-->
-        <!--<module>streams-provider-rss</module>-->
-        <!--<module>streams-proxy-semantria</module>-->
+        <module>streams-provider-sysomos</module>
+        <module>streams-provider-rss</module>
         <module>streams-components-test</module>
     </modules>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
index 659c517..511f684 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
@@ -170,26 +170,35 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
     private void readSourceWritePersistQueue() {
         for( FileStatus fileStatus : status ) {
             BufferedReader reader;
-
-            if( fileStatus.isFile() && !fileStatus.getPath().getName().endsWith("_SUCCESS")) {
+            LOGGER.info("Found " + fileStatus.getPath().getName());
+            if( persistQueue.size() > 0 ) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException e) {
+                }
+            }
+            if( fileStatus.isFile() && !fileStatus.getPath().getName().startsWith("_")) {
+                LOGGER.info("Processing " + fileStatus.getPath().getName());
                 try {
                     reader = new BufferedReader(new InputStreamReader(client.open(fileStatus.getPath())));
 
-                    String line;
+                    String line = "";
                     do{
                         try {
                             line = reader.readLine();
-                            if( line != null ) {
+                            if( !Strings.isNullOrEmpty(line) ) {
                                 String[] fields = line.split(Character.toString(DELIMITER));
-                                persistQueue.offer(new StreamsDatum(fields[3]));
+                                StreamsDatum entry = new StreamsDatum(fields[3], fields[0], new DateTime(fields[2]));
+                                persistQueue.offer(entry);
                             }
-                        } catch (IOException e) {
-                            break;
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            LOGGER.warn(e.getMessage());
                         }
                     } while( line != null );
-                } catch (IOException e) {
+                } catch (Exception e) {
                     e.printStackTrace();
-                    break;
+                    LOGGER.warn(e.getMessage());
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
index 6cd1e79..f0bee1f 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
@@ -29,7 +29,7 @@ public class WebHdfsPersistReaderTask implements Runnable {
         for( FileStatus fileStatus : reader.status ) {
             BufferedReader bufferedReader;
 
-            if( fileStatus.isFile() && !fileStatus.getPath().getName().endsWith("_SUCCESS")) {
+            if( fileStatus.isFile() && !fileStatus.getPath().getName().startsWith("_")) {
                 try {
                     bufferedReader = new BufferedReader(new InputStreamReader(reader.client.open(fileStatus.getPath())));
 
@@ -45,7 +45,7 @@ public class WebHdfsPersistReaderTask implements Runnable {
                                 reader.persistQueue.offer(entry);
                             }
                         } catch (Exception e) {
-                            LOGGER.warn("Failed processing " + line);
+                            LOGGER.warn("Failed reading " + line);
                         }
                     } while( line != null );
                 } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
index 449f187..c4eee04 100644
--- a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
+++ b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
@@ -31,7 +31,7 @@ import java.util.concurrent.*;
 /**
  * Created by sblackmon on 12/10/13.
  */
-public class RssStreamProvider implements StreamsProvider, Serializable {
+public class RssStreamProvider implements StreamsProvider {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(RssStreamProvider.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java b/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
index 0c17979..1277553 100644
--- a/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
+++ b/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
@@ -2,6 +2,7 @@ package org.apache.streams.rss.test;
 
 import com.google.common.collect.Lists;
 import org.apache.commons.lang.StringUtils;
+import org.apache.streams.core.tasks.StreamsProviderTask;
 import org.apache.streams.pojo.json.Activity;
 import org.apache.streams.rss.FeedDetails;
 import org.apache.streams.rss.RssStreamConfiguration;
@@ -53,7 +54,8 @@ public class Top100FeedsTest{
         configuration.setFeeds(feeds);
 
         RssStreamProvider provider = new RssStreamProvider(configuration, Activity.class);
-        provider.start();
+        provider.prepare(configuration);
+        provider.startStream();
 
         try {
             Thread.sleep(10000);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/streams-provider-rss/streams-provider-rss.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/streams-provider-rss.iml b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
index 2846a74..032b03a 100644
--- a/streams-contrib/streams-provider-rss/streams-provider-rss.iml
+++ b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
@@ -1,20 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+<module type="JAVA_MODULE" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
     <output url="file://$MODULE_DIR$/target/classes" />
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jsonschema2pojo" isTestSource="false" generated="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target/classes" />
-      <excludeFolder url="file://$MODULE_DIR$/target/maven-archiver" />
-      <excludeFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" />
-      <excludeFolder url="file://$MODULE_DIR$/target/maven-status" />
-      <excludeFolder url="file://$MODULE_DIR$/target/surefire-reports" />
-      <excludeFolder url="file://$MODULE_DIR$/target/test-classes" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
@@ -35,9 +28,6 @@
     <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
     <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
     <orderEntry type="module" module-name="streams-core" />
-    <orderEntry type="module" module-name="streams-util" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
     <orderEntry type="module" module-name="streams-pojo" />
@@ -57,6 +47,8 @@
     <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
     <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
     <orderEntry type="module" module-name="streams-config" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:15.0" level="project" />
+    <orderEntry type="library" name="Maven: com.google.collections:google-collections:1.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.2.1" level="project" />
     <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:0.9.0" level="project" />
     <orderEntry type="library" name="Maven: net.minidev:json-smart:1.2" level="project" />

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/f9165129/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
index 29c0e60..4a5e3ba 100644
--- a/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
+++ b/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosProvider.java
@@ -64,7 +64,7 @@ public class SysomosProvider implements StreamsProvider {
     ScheduledExecutorService service;
 
     @Override
-    public void start() {
+    public void startStream() {
         LOGGER.trace("Starting Producer");
         if(!started) {
             LOGGER.trace("Producer not started.  Initializing");
@@ -80,27 +80,27 @@ public class SysomosProvider implements StreamsProvider {
     }
 
     @Override
-    public void stop() {
-        started = false;
+    public StreamsResultSet readCurrent() {
+        return null;
     }
 
     @Override
-    public Queue<StreamsDatum> getProviderQueue() {
-        return providerQueue;
+    public StreamsResultSet readNew(BigInteger bigInteger) {
+        return null;
     }
 
     @Override
-    public StreamsResultSet readCurrent() {
+    public StreamsResultSet readRange(DateTime dateTime, DateTime dateTime2) {
         return null;
     }
 
     @Override
-    public StreamsResultSet readNew(BigInteger bigInteger) {
-        return null;
+    public void prepare(Object configurationObject) {
+
     }
 
     @Override
-    public StreamsResultSet readRange(DateTime dateTime, DateTime dateTime2) {
-        return null;
+    public void cleanUp() {
+
     }
 }


[26/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/resources/FlickrEDC.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/resources/FlickrEDC.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/resources/FlickrEDC.xml
deleted file mode 100644
index 667d9b1..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-flickr/src/test/resources/FlickrEDC.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564697996</id>  <published>2013-08-21T15:42:53Z</published>  <updated>2013-08-21T15:42:53Z</updated>  <title type="html">Mygor posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/89791507@N04/9564697996"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per_
 page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="ht
 tp://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564697996</id>    <title type="text">Ensimismada B&amp;N</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/89791507@N04/9564697996"/>    <link rel="enclosure" href="http://farm8.static.flickr.com/7320/9564697996_7f70d41157.jpg"/>    <link rel="preview" href="http://farm8.static.flickr.com/7320/9564697996_7f70d41157_t.jpg"/>  </activity:object>  <author>    <name>Mygor</name>    <uri>http://www.flickr.com/people/89791507@N04/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr
 .com/people/89791507@N04"/>    <id>http://www.flickr.com/people/89791507@N04</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>2596523316</id>  <published>2013-08-21T15:48:00Z</published>  <updated>2013-08-21T15:48:00Z</updated>  <title type="html">Snuffy posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/81418524@N00/2596523316"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per
 _page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="h
 ttp://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:2596523316</id>    <title type="text">Notre Dame Cathedral, Lyon, France</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/81418524@N00/2596523316"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3281/2596523316_5189fc2849.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3281/2596523316_5189fc2849_t.jpg"/>    <category term="france"/>    <category term="beautiful"/>    <category term="lyon"/>    <category term="notredamecathedral"/>    <category term="worldtrekker"/>    <category term="artofimages"/>    <georss:point xmlns:georss="http://www.georss.org/georss">45.762212 4.822815</georss:point>  </activity:object>  <author>    <name>Snuffy<
 /name>    <uri>http://www.flickr.com/people/81418524@N00/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/81418524@N00"/>    <id>http://www.flickr.com/people/81418524@N00</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561899727</id>  <published>2013-08-21T15:41:41Z</published>  <updated>2013-08-21T15:41:41Z</updated>  <title type="html">Chrisser posted an image to Flickr</title>  <summary type="text">Light two-tone pink rose mallow photo made with the flower converted to black and white and the background converted to sepia using Photoshop CS5.1</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/51405405@N00/9561899727"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%
 22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystre
 a.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561899727</id>    <title type="text">Light Two-Tone Pink Rose Mallow Selective Colour B&amp;W Over Sepia 005</title>    <content type="html">Light two-tone pink rose mallow photo made with the flower converted to black and white and the background converted to sepia using Photoshop CS5.1</content>    <link rel="alternate" href="http://www.flickr.com/photos/51405405@N00/9561899727"/>    <link rel="enclosure" href="http://farm6.static.flickr.com/5500/9561899727_5c0299247f.jpg"/>    <link rel="preview" href="http://farm6.static.flickr.com/5500/9561899727_5c0299247f_t.jpg"/>    <ca
 tegory term="flowers"/>    <category term="summer"/>    <category term="ontario"/>    <category term="canada"/>    <category term="nature"/>    <category term="photoshop"/>    <category term="garden"/>    <category term="gardening"/>    <category term="hibiscus"/>    <category term="fourseasons"/>    <category term="malvaceae"/>    <category term="closeups"/>    <category term="selectivecolour"/>    <category term="rosemallows"/>    <category term="canonefs1855mmf3556islens"/>    <category term="canoneosrebelt1i"/>  </activity:object>  <author>    <name>Chrisser</name>    <uri>http://www.flickr.com/people/51405405@N00/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/51405405@N00"/>    <id>http://www.flickr.com/people/51405405@N00</id>  </activity:actor>  <gnip:matching_r
 ules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561813803</id>  <published>2013-08-21T15:44:21Z</published>  <updated>2013-08-21T15:44:21Z</updated>  <title type="html">joyfullytaken posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/98770454@N05/9561813803"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&
 amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:acti
 vity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561813803</id>    <title type="text">focus b&amp;w</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/98770454@N05/9561813803"/>    <link rel="enclosure" href="http://farm8.static.flickr.com/7402/9561813803_e88531c60d.jpg"/>    <link rel="preview" href="http://farm8.static.flickr.com/7402/9561813803_e88531c60d_t.jpg"/>  </activity:object>  <author>    <name>joyfullytaken</name>    <uri>http://www.flickr.com/people/98770454@N05/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://
 www.flickr.com/people/98770454@N05"/>    <id>http://www.flickr.com/people/98770454@N05</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561937071</id>  <published>2013-08-21T15:47:45Z</published>  <updated>2013-08-21T15:47:45Z</updated>  <title type="html">Graham Knott posted an image to Flickr</title>  <summary type="text">At The Ecclesbourne Valley Railway, Wirksworth&lt;b&gt;Click here to show my photostream &lt;a href="http://www.flickr.com/photos/grahamknott/?details=1"&gt;not justified&lt;/a&gt;&lt;/b&gt;</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/8118124@N07/9561937071"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20spark
 le%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <servi
 ce:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561937071</id>    <title type="text">Lancashire and Yorkshire Railway class 27</title>    <content type="html">At The Ecclesbourne Valley Railway, Wirksworth&lt;b&gt;Click here to show my photostream &lt;a href="http://www.flickr.com/photos/grahamknott/?details=1"&gt;not justified&lt;/a&gt;&lt;/b&gt;</content>    <link rel="alternate" href="http://www.flickr.com/photos/8118124@N07/9561937071"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3733/9561937071_4608e46abf.jpg"/>    <link rel="preview" href="http://farm4.st
 atic.flickr.com/3733/9561937071_4608e46abf_t.jpg"/>    <category term="blackandwhite"/>    <category term="derbyshire"/>    <category term="wirksworth"/>    <category term="ecclesbournevalleyrailway"/>    <category term="lancashireandyorkshirerailwayclass27"/>    <georss:point xmlns:georss="http://www.georss.org/georss">53.083108 -1.568813</georss:point>  </activity:object>  <author>    <name>Graham Knott</name>    <uri>http://www.flickr.com/people/8118124@N07/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/8118124@N07"/>    <id>http://www.flickr.com/people/8118124@N07</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "p
 aper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564608636</id>  <published>2013-08-21T15:44:16Z</published>  <updated>2013-08-21T15:44:16Z</updated>  <title type="html">joyfullytaken posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/98770454@N05/9564608636"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&
 amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:acti
 vity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564608636</id>    <title type="text">like mother like son in b&amp;w</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/98770454@N05/9564608636"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3726/9564608636_c719bc8bde.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3726/9564608636_c719bc8bde_t.jpg"/>  </activity:object>  <author>    <name>joyfullytaken</name>    <uri>http://www.flickr.com/people/98770454@N05/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length
 ="0" href="http://www.flickr.com/people/98770454@N05"/>    <id>http://www.flickr.com/people/98770454@N05</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564718050</id>  <published>2013-08-21T15:47:17Z</published>  <updated>2013-08-21T15:47:17Z</updated>  <title type="html">Ngoc T posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/39582444@N03/9564718050"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per
 _page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="h
 ttp://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564718050</id>    <title type="text">IMG_2943</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/39582444@N03/9564718050"/>    <link rel="enclosure" href="http://farm6.static.flickr.com/5511/9564718050_ed0ae1c669.jpg"/>    <link rel="preview" href="http://farm6.static.flickr.com/5511/9564718050_ed0ae1c669_t.jpg"/>    <category term="street"/>    <category term="city"/>    <category term="boy"/>    <category term="bw"/>    <category term="cute"/>    <category term="girl"/>    <category term="smile"/>    <category term="canon"/>    <category term="kid"/>    <category term="vietnam"/>    <category term="study"/>    <category term="chi"/>    <category term="ho"/>    <category 
 term="minh"/>    <category term="60d"/>  </activity:object>  <author>    <name>Ngoc T</name>    <uri>http://www.flickr.com/people/39582444@N03/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/39582444@N03"/>    <id>http://www.flickr.com/people/39582444@N03</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564711068</id>  <published>2013-08-21T15:45:11Z</published>  <updated>2013-08-21T15:45:11Z</updated>  <title type="html">shahreen | amri posted an image to Flickr</title>  <summary type="text">Location :  &lt;b&gt;Detian Town, Detian, Nanning, Guangxi, China&lt;/b&gt;&lt;b&gt;Email : shahreenphoto@gmail.comWebsite : &lt;a href="http://www.shahreenphoto.com" rel="nofollow"&gt;www.shahreenphoto.com&lt;/a&gt;&lt;/b&gt;&lt;b&gt;Thanks for the visit, comments, awards, invitations and favorites.&lt;/b&gt;&lt;b&gt;Please don't use this image on websites, blogs or other mediawithout my explicit permission.&lt;/b&gt;&lt;b&gt;&#xA9; All rights reserved &lt;/b&gt;</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/31827944@N04/9564711068"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?metho
 d=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("s
 parkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564711068</id>    <title type="text">Down Stream of Detian</title>    <content type="html">Location :  &lt;b&gt;Detian Town, Detian, Nanning, Guangxi, China&lt;/b&gt;&lt;b&gt;Email : shahreenphoto@gmail.comWebsite : &lt;a href="http://www.shahreenphoto.com
 " rel="nofollow"&gt;www.shahreenphoto.com&lt;/a&gt;&lt;/b&gt;&lt;b&gt;Thanks for the visit, comments, awards, invitations and favorites.&lt;/b&gt;&lt;b&gt;Please don't use this image on websites, blogs or other mediawithout my explicit permission.&lt;/b&gt;&lt;b&gt;&#xA9; All rights reserved &lt;/b&gt;</content>    <link rel="alternate" href="http://www.flickr.com/photos/31827944@N04/9564711068"/>    <link rel="enclosure" href="http://farm8.static.flickr.com/7411/9564711068_6db051ba24.jpg"/>    <link rel="preview" href="http://farm8.static.flickr.com/7411/9564711068_6db051ba24_t.jpg"/>  </activity:object>  <author>    <name>shahreen | amri</name>    <uri>http://www.flickr.com/people/31827944@N04/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/31827944@N04"/>    <id>http
 ://www.flickr.com/people/31827944@N04</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564733642</id>  <published>2013-08-21T15:49:23Z</published>  <updated>2013-08-21T15:49:23Z</updated>  <title type="html">Fe_Lima posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/88158633@N04/9564733642"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;pe
 r_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="
 http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564733642</id>    <title type="text">Curves</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/88158633@N04/9564733642"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3830/9564733642_b222e1d378.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3830/9564733642_b222e1d378_t.jpg"/>    <category term="bw"/>    <category term="contrast"/>    <category term="nikon"/>    <category term="curves"/>    <category term="pretoebranco"/>    <category term="d3100"/>  </activity:object>  <author>    <name>Fe_Lima</name>    <uri>http://www.flickr.com/people/88158633@N04/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">
     <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/88158633@N04"/>    <id>http://www.flickr.com/people/88158633@N04</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561912229</id>  <published>2013-08-21T15:43:41Z</published>  <updated>2013-08-21T15:43:41Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561912229"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </se
 rvice:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561912229</id>    <title type="text">s_c_b (11 of 340)b</title>    <content type="html">wedding hartlepool hart village staincliffe hotel</content>    <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561912229"/>    <link rel="enclosure" href="http://farm8.static.flickr.com/7301/9561912229_fa0d3377ec.jpg"/>    <link rel="preview" href="http://farm8.static.flickr.com/7301/9561912229_fa0d3377ec_t.jpg"/>    <category term="sarahmarkweddingmay2013"/>  </activity:object>  <author>    <name>Torrit</name>    <uri>http://www.flickr.com/people/58789603@N02/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-t
 ype>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/58789603@N02"/>    <id>http://www.flickr.com/people/58789603@N02</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561896689</id>  <published>2013-08-21T15:42:41Z</published>  <updated>2013-08-21T15:42:41Z</updated>  <title type="html">andrea gaspare posted an image to Flickr</title>  <summary type="text">So many thoughts</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/97827409@N06/9561896689"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_
 tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activit
 y:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561896689</id>    <title type="text">Please, stop.</title>    <content type="html">So many thoughts</content>    <link rel="alternate" href="http://www.flickr.com/photos/97827409@N06/9561896689"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3707/9561896689_884db05efa.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3707/9561896689_884db05efa_t.jpg"/>    <category term="bw"/>    <category term="white"/>    <category term="black"/>    <category term="me"/>    <category term="please"/>    <category term="head"/>    <category term="boom"/>    <category term="help"/>    <category term="thoughts"/>    <category term="stop"/>    <category term="thinking"/>    <category te
 rm="confused"/>    <category term="sorrow"/>    <category term="exploding"/>  </activity:object>  <author>    <name>andrea gaspare</name>    <uri>http://www.flickr.com/people/97827409@N06/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/97827409@N06"/>    <id>http://www.flickr.com/people/97827409@N06</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561900893</id>  <published>2013-08-21T15:44:06Z</published>  <updated>2013-08-21T15:44:06Z</updated>  <title type="html">shinymorning posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/85563462@N03/9561900893"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&a
 mp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activ
 ity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561900893</id>    <title type="text">untitled</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/85563462@N03/9561900893"/>    <link rel="enclosure" href="http://farm8.static.flickr.com/7360/9561900893_a6984bf791.jpg"/>    <link rel="preview" href="http://farm8.static.flickr.com/7360/9561900893_a6984bf791_t.jpg"/>    <category term="portrait"/>    <category term="blackandwhite"/>    <category term="bw"/>    <category term="blackwhite"/>    <category term="childrenportrait"/>  </activity:object>  <author>    <name>shinymorning</name>    <uri>http://www.flickr.com/people/85563462@N03/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">
     <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/85563462@N03"/>    <id>http://www.flickr.com/people/85563462@N03</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564731176</id>  <published>2013-08-21T15:48:03Z</published>  <updated>2013-08-21T15:48:03Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9564731176"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </se
 rvice:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564731176</id>    <title type="text">s_c_b (15 of 340)</title>    <content type="html">wedding hartlepool hart village staincliffe hotel</content>    <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9564731176"/>    <link rel="enclosure" href="http://farm3.static.flickr.com/2834/9564731176_21764f4cbf.jpg"/>    <link rel="preview" href="http://farm3.static.flickr.com/2834/9564731176_21764f4cbf_t.jpg"/>    <category term="sarahmarkweddingmay2013"/>  </activity:object>  <author>    <name>Torrit</name>    <uri>http://www.flickr.com/people/58789603@N02/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-ty
 pe>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/58789603@N02"/>    <id>http://www.flickr.com/people/58789603@N02</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561899795</id>  <published>2013-08-21T15:41:42Z</published>  <updated>2013-08-21T15:41:42Z</updated>  <title type="html">Chrisser posted an image to Flickr</title>  <summary type="text">Light two-tone pink rose mallow photo made with the flower converted to sepia and the background converted to black and white using Photoshop CS5.1</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/51405405@N00/9561899795"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%
 22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystre
 a.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561899795</id>    <title type="text">Light Two-Tone Pink Rose Mallow Selective Colour Sepia Over B&amp;W 005</title>    <content type="html">Light two-tone pink rose mallow photo made with the flower converted to sepia and the background converted to black and white using Photoshop CS5.1</content>    <link rel="alternate" href="http://www.flickr.com/photos/51405405@N00/9561899795"/>    <link rel="enclosure" href="http://farm6.static.flickr.com/5533/9561899795_f1fa0806a7.jpg"/>    <link rel="preview" href="http://farm6.static.flickr.com/5533/9561899795_f1fa0806a7_t.jpg"/>    <ca
 tegory term="flowers"/>    <category term="summer"/>    <category term="ontario"/>    <category term="canada"/>    <category term="nature"/>    <category term="photoshop"/>    <category term="garden"/>    <category term="gardening"/>    <category term="hibiscus"/>    <category term="fourseasons"/>    <category term="malvaceae"/>    <category term="closeups"/>    <category term="selectivecolour"/>    <category term="rosemallows"/>    <category term="canonefs1855mmf3556islens"/>    <category term="canoneosrebelt1i"/>  </activity:object>  <author>    <name>Chrisser</name>    <uri>http://www.flickr.com/people/51405405@N00/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/51405405@N00"/>    <id>http://www.flickr.com/people/51405405@N00</id>  </activity:actor>  <gnip:matching_r
 ules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561934003</id>  <published>2013-08-21T15:47:18Z</published>  <updated>2013-08-21T15:47:18Z</updated>  <title type="html">Ngoc T posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/39582444@N03/9561934003"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;per
 _page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity="h
 ttp://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561934003</id>    <title type="text">IMG_3109</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/39582444@N03/9561934003"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3682/9561934003_e86fb18c5f.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3682/9561934003_e86fb18c5f_t.jpg"/>    <category term="street"/>    <category term="city"/>    <category term="boy"/>    <category term="bw"/>    <category term="cute"/>    <category term="girl"/>    <category term="smile"/>    <category term="canon"/>    <category term="kid"/>    <category term="vietnam"/>    <category term="study"/>    <category term="chi"/>    <category term="ho"/>    <category 
 term="minh"/>    <category term="60d"/>  </activity:object>  <author>    <name>Ngoc T</name>    <uri>http://www.flickr.com/people/39582444@N03/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/39582444@N03"/>    <id>http://www.flickr.com/people/39582444@N03</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564727014</id>  <published>2013-08-21T15:47:23Z</published>  <updated>2013-08-21T15:47:23Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9564727014"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </se
 rvice:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564727014</id>    <title type="text">s_c_b (14 of 340)</title>    <content type="html">wedding hartlepool hart village staincliffe hotel</content>    <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9564727014"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3720/9564727014_629dc73bd8.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3720/9564727014_629dc73bd8_t.jpg"/>    <category term="sarahmarkweddingmay2013"/>  </activity:object>  <author>    <name>Torrit</name>    <uri>http://www.flickr.com/people/58789603@N02/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-ty
 pe>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/58789603@N02"/>    <id>http://www.flickr.com/people/58789603@N02</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561849315</id>  <published>2013-08-21T15:40:47Z</published>  <updated>2013-08-21T15:40:47Z</updated>  <title type="html">Ceshe posted an image to Flickr</title>  <summary type="text">Carrer a la Festa Major de Gr&#xE0;cia 2013</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/20661392@N07/9561849315"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name
 ,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:p
 rovider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561849315</id>    <title type="text">letra B, letra B...</title>    <content type="html">Carrer a la Festa Major de Gr&#xE0;cia 2013</content>    <link rel="alternate" href="http://www.flickr.com/photos/20661392@N07/9561849315"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3706/9561849315_1e7c179470.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3706/9561849315_1e7c179470_t.jpg"/>    <category term="barcelona"/>    <category term="catalunya"/>    <category term="gr&#xE0;cia"/>    <category term="abecedario"/>    <category term="fmgr&#xE0;cia"/>    <category term="ceshe"/>    <georss:point xmlns:georss="http://www.georss.org/georss">41.398242 2.1
 57983</georss:point>  </activity:object>  <author>    <name>Ceshe</name>    <uri>http://www.flickr.com/people/20661392@N07/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/20661392@N07"/>    <id>http://www.flickr.com/people/20661392@N07</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561897101</id>  <published>2013-08-21T15:41:17Z</published>  <updated>2013-08-21T15:41:17Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561897101"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </se
 rvice:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561897101</id>    <title type="text">s_c_b (10 of 340)</title>    <content type="html">wedding hartlepool hart village staincliffe hotel</content>    <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561897101"/>    <link rel="enclosure" href="http://farm3.static.flickr.com/2805/9561897101_fcfa54273c.jpg"/>    <link rel="preview" href="http://farm3.static.flickr.com/2805/9561897101_fcfa54273c_t.jpg"/>    <category term="sarahmarkweddingmay2013"/>  </activity:object>  <author>    <name>Torrit</name>    <uri>http://www.flickr.com/people/58789603@N02/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-ty
 pe>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/58789603@N02"/>    <id>http://www.flickr.com/people/58789603@N02</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561889245</id>  <published>2013-08-21T15:40:10Z</published>  <updated>2013-08-21T15:40:10Z</updated>  <title type="html">arbyreed posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/19779889@N00/9561889245"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,description&amp;p
 er_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:activity=
 "http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561889245</id>    <title type="text">Wooden</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/19779889@N00/9561889245"/>    <link rel="enclosure" href="http://farm4.static.flickr.com/3700/9561889245_5715ff3dd1.jpg"/>    <link rel="preview" href="http://farm4.static.flickr.com/3700/9561889245_5715ff3dd1_t.jpg"/>    <category term="wood"/>    <category term="blackandwhite"/>    <category term="bw"/>    <category term="closeup"/>    <category term="close"/>    <category term="arbyreed"/>  </activity:object>  <author>    <name>arbyreed</name>    <uri>http://www.flickr.com/people/19779889@N00/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0
 /">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/19779889@N00"/>    <id>http://www.flickr.com/people/19779889@N00</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564695430</id>  <published>2013-08-21T15:42:19Z</published>  <updated>2013-08-21T15:42:19Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9564695430"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </se
 rvice:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564695430</id>    <title type="text">s_c_b (11 of 340)a</title>    <content type="html">wedding hartlepool hart village staincliffe hotel</content>    <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9564695430"/>    <link rel="enclosure" href="http://farm3.static.flickr.com/2826/9564695430_c0c6472824.jpg"/>    <link rel="preview" href="http://farm3.static.flickr.com/2826/9564695430_c0c6472824_t.jpg"/>    <category term="sarahmarkweddingmay2013"/>  </activity:object>  <author>    <name>Torrit</name>    <uri>http://www.flickr.com/people/58789603@N02/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-t
 ype>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/58789603@N02"/>    <id>http://www.flickr.com/people/58789603@N02</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561886235</id>  <published>2013-08-21T15:40:05Z</published>  <updated>2013-08-21T15:40:05Z</updated>  <title type="html">dmtaylor14213 posted an image to Flickr</title>  <summary type="text">The Beaconsfield Inn, B &amp;amp; B, Victoria, B.C.</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/36740584@N05/9561886235"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_u
 pload,owner_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <ico
 n/>  </service:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561886235</id>    <title type="text">PacificNorthwestVictoria136</title>    <content type="html">The Beaconsfield Inn, B &amp;amp; B, Victoria, B.C.</content>    <link rel="alternate" href="http://www.flickr.com/photos/36740584@N05/9561886235"/>    <link rel="enclosure" href="http://farm6.static.flickr.com/5477/9561886235_dc71961017.jpg"/>    <link rel="preview" href="http://farm6.static.flickr.com/5477/9561886235_dc71961017_t.jpg"/>  </activity:object>  <author>    <name>dmtaylor14213</name>    <uri>http://www.flickr.com/people/36740584@N05/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activity
 strea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/36740584@N05"/>    <id>http://www.flickr.com/people/36740584@N05</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561949129</id>  <published>2013-08-21T15:49:31Z</published>  <updated>2013-08-21T15:49:31Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561949129"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </se
 rvice:provider>  <activity:verb xmlns:activity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9561949129</id>    <title type="text">s_c_b (16 of 340)</title>    <content type="html">wedding hartlepool hart village staincliffe hotel</content>    <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561949129"/>    <link rel="enclosure" href="http://farm3.static.flickr.com/2892/9561949129_a6216bfba1.jpg"/>    <link rel="preview" href="http://farm3.static.flickr.com/2892/9561949129_a6216bfba1_t.jpg"/>    <category term="sarahmarkweddingmay2013"/>  </activity:object>  <author>    <name>Torrit</name>    <uri>http://www.flickr.com/people/58789603@N02/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-ty
 pe>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/58789603@N02"/>    <id>http://www.flickr.com/people/58789603@N02</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9564685650</id>  <published>2013-08-21T15:41:38Z</published>  <updated>2013-08-21T15:41:38Z</updated>  <title type="html">shoopshoopshoop posted an image to Flickr</title>  <summary type="text"></summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/60228304@N06/9564685650"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,owner_name,tags,geo,machine_tags,descriptio
 n&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:rule>  </source>  <service:provider xmlns:service="http://activitystrea.ms/service-provider">    <name>Flickr</name>    <uri>http://www.flickr.com/</uri>    <icon/>  </service:provider>  <activity:verb xmlns:ac
 tivity="http://activitystrea.ms/spec/1.0/">http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>object:9564685650</id>    <title type="text">150/365</title>    <content type="html"></content>    <link rel="alternate" href="http://www.flickr.com/photos/60228304@N06/9564685650"/>    <link rel="enclosure" href="http://farm8.static.flickr.com/7327/9564685650_f7cf3a3d19.jpg"/>    <link rel="preview" href="http://farm8.static.flickr.com/7327/9564685650_f7cf3a3d19_t.jpg"/>    <category term="blackandwhite"/>    <category term="bw"/>    <category term="water"/>    <category term="square"/>    <category term="bottle"/>    <category term="day150"/>    <category term="project365"/>    <category term="day150365"/>    <category term="may2013"/>    <category term="project3652013"/>    <category term="3652013"/>    <category term="
 365the2013edition"/>    <category term="projectlife365"/>    <category term="30may13"/>  </activity:object>  <author>    <name>shoopshoopshoop</name>    <uri>http://www.flickr.com/people/60228304@N06/</uri>  </author>  <activity:actor xmlns:activity="http://activitystrea.ms/spec/1.0/">    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="text/html" length="0" href="http://www.flickr.com/people/60228304@N06"/>    <id>http://www.flickr.com/people/60228304@N06</id>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source" tag="Sparkle_US">(("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns:gnip="http://www.gnip.com/schemas/2010" xmlns="http://www.w3.org/2005/Atom">  <id>9561929525</id>  <published>2013-08-21T15:46:26Z</published>  <updated>2013-08-21T15:46:26Z</updated>  <title type="html">Torrit posted an image to Flickr</title>  <summary type="text">wedding hartlepool hart village staincliffe hotel</summary>  <category term="ImagePosted" label="Image Posted"/>  <link rel="alternate" href="http://www.flickr.com/photos/58789603@N02/9561929525"/>  <source>    <link rel="self" href="http://com.facebook.api.flickr.com/services/rest/?method=flickr.photos.search&amp;text=%28%28%22sparkle%20papertowel%22%20OR%20%22paper%20towel%20sparkle%22%20OR%20%22paper%20towels%20sparkle%22%20OR%20%22paper-towel%20sparkle%22%20OR%20%22paper-towels%20sparkle%22%20OR%20%22papertowels%20sparkle%22%20OR%20%22disposable%20towel%20sparkle%22%20OR%20%22disposable%20towels%20sparkle%22%20OR%20%22towel%20sparkle%22%20OR%20%22towels%20sparkle%22%20OR%20%22b&amp;extras=date_upload,own
 er_name,tags,geo,machine_tags,description&amp;per_page=100&amp;api_key=361f14d394043a9eeca7cfc44e164d03&amp;min_upload_date=Wed+Aug+21+15%3A37%3A53+UTC+2013"/>    <title>Flickr - Keyword - Search - (("sparkle papertowel" OR "paper towel sparkle" OR "paper towels sparkle" OR "paper-towel sparkle" OR "paper-towels sparkle" OR "papertowels sparkle" OR "disposable towel sparkle" OR "disposable towels sparkle" OR "towel sparkle" OR "towels sparkle" OR "b</title>    <updated>2013-08-21T08-56-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gn

<TRUNCATED>

[63/71] [abbrv] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt b/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
new file mode 100644
index 0000000..858756a
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/test/resources/datasift_jsons.txt
@@ -0,0 +1,101 @@
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361363177973366787","filter_level":"medium","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":7761,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5062,"description":"I hate everything. Especially you.","friends_count":385,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":241}},"salience":{"content":{"sentiment":5}},"klout":{"score":42},"interaction":{"schema":{"version":3},"content":"Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f7
 49b40d9ab00e0742908a9ff4d74","author":{"id":472480397,"username":"InsulinLover","name":"Alexander","link":"http://twitter.com/InsulinLover","language":"en","avatar":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/InsulinLover/statuses/361363177973366787","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361366536625201152","retweeted":{"id":"361363177973366787","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","user":{"geo_enabled":true,"statuses_count":7765,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5064,"description":"I hate everything. Especially you.","friends_count":386,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":242}},"retweet":{"id":"361366536625201152","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/#!/download/ipad\" rel=\"nofollow\">Twitter for iPad<\/a>","count":1,"created_at":"Sun, 28 Jul 2013 0
 6:04:30 +0000","user":{"location":"Henderson, NV","statuses_count":4851,"lang":"en","url":"https://www.facebook.com/DonMfPatchUFemaleDogs","utc_offset":-25200,"id":537777703,"time_zone":"Pacific Time (US & Canada)","favourites_count":1235,"description":"Otherwise known as @Slender_Sir","friends_count":240,"name":"Iram Gonzalez","created_at":"Tue, 27 Mar 2012 02:35:56 +0000","screen_name":"gonzalez_iram","id_str":"537777703","profile_image_url":"http://a0.twimg.com/profile_images/3325430053/65b2d200115a97ff3f9061e9cc672136_normal.jpeg","followers_count":232},"lang":"en"}},"salience":{"content":{"sentiment":5}},"klout":{"score":40},"interaction":{"schema":{"version":3},"content":"RT @InsulinLover: Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f74b90e3eab00e07452795b51705e","author":{"id":537777703,"username":"gonzalez_iram","name":"Iram Gonzalez","link":"http://twitter.com/gonzalez_iram","language":"en","avatar":"http://a0.twimg.com/profile_images/3325430053/65b
 2d200115a97ff3f9061e9cc672136_normal.jpeg"},"source":"Twitter for iPad","link":"http://twitter.com/gonzalez_iram/statuses/361366536625201152","created_at":"Sun, 28 Jul 2013 06:04:30 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Weather","score":0.65636122226715}]}},"facebook":{"id":"557546084284515_565003810205409","message":"To get arm and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"application":"Pages Manager for Android","source":"Pages Manager for Android (121876164619130)","created_at":"Fri, 26 Jul 2013 19:39:11 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f62b0b691a980e066608cf545f2d6","content":"To get arm 
 and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"source":"Pages Manager for Android (121876164619130)","link":"http://www.facebook.com/557546084284515_565003810205409","subtype":"status","created_at":"Fri, 26 Jul 2013 19:39:25 +0000","type":"facebook"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"beyatch":"yo","tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":6}},"facebook":{"id":"741220477_10153006009870478","message":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","created_at":"Thu, 25 Jul 2013 16:51:28 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f54a72fb6a800e06682e7cdbf4b5c","content":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","subtype":"status","created_at":"Thu, 25 Jul 2013 16:51:56 +0000","type":"f
 acebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"facebook":{"id":"165282606905632_387817134652177","message":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.com/165282606905632/picture"},"source":"web","created_at":"Sat, 27 Jul 2013 02:20:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6630a53dae80e06600495e73832a","content":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.c
 om/165282606905632/picture"},"source":"web","link":"http://www.facebook.com/165282606905632_387817134652177","subtype":"status","created_at":"Sat, 27 Jul 2013 02:20:17 +0000","type":"facebook"},"links":{"title":["Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog"],"normalized_url":["http://crazyforcouponsandfreebies.com/blog?p=60571"],"created_at":["Sat, 27 Jul 2013 02:20:27 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog","description":" You Can Get Arm & Hammer On Sale At County Market For $1.99 Each Go Here And Print Your $1/3 OP-$4.96 WYB 3 + Tax GO HERE HOT DEAL!~Cheryl","image":"http://crazyforcouponsandfreebies.com/blog/wp-content/uploads/2013/07/2013-07-24_1918.png","site_name":"The Daily Blog","type":"article","url":"http://crazyforcouponsandfreebies.com/blog/?p=60571"}],"content_type":["text/html"],"lang":["en-us"]},"
 url":["http://crazyforcouponsandfreebies.com/blog/?p=60571"]},"language":{"tag":"mt","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["Tide","ArmAndHammer"]}},"twitter":{"id":"360731330335608833","filter_level":"medium","text":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","source":"<a href=\"http://favstar.fm\" rel=\"nofollow\">Favstar.FM<\/a>","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","lang":"en","user":{"location":"Halifax, Canada","statuses_count":26676,"lang":"en","url":"http://favstar.fm/users/CindyMeakin/recent","id":267645953,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":156111,"description":"I wear sun glasses at night so people don't talk to me.","friends_count":2162,"name":"~Cindy~","created_at":"Thu, 17 Mar 2011 08:57:31 +0000","screen_name":"CindyMeakin","id_str":"267645953","profile_image_url":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg
 ","followers_count":7604,"listed_count":407}},"salience":{"content":{"sentiment":0}},"klout":{"score":61},"interaction":{"schema":{"version":3},"content":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","id":"1e2f5eaf4a2da280e074c2f2b84aa4f8","author":{"id":267645953,"username":"CindyMeakin","name":"~Cindy~","link":"http://twitter.com/CindyMeakin","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg"},"source":"Favstar.FM","link":"http://twitter.com/CindyMeakin/statuses/360731330335608833","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361614949908361217","filter_level":"medium","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","mention_ids":[106891542],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","in_reply_to_user_id":"106891542","lang":"en","mentions":["THEmrReynolds"],"user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"Memoi
 rsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":423,"listed_count":10}},"salience":{"content":{"sentiment":0}},"klout":{"score":57},"interaction":{"schema":{"version":3},"content":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d576eeeaa80e074ae7154d45ee6","author":{"id":49340813,"username":"MemoirsofaGAYsh","name":"Dominique Delacroix","link":"http://twitter.com/MemoirsofaGAYsh","language":"en","avatar":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg"},"source":"Twitter for iPhone","mention_ids":[106891542],"link":"http://twitter.com/MemoirsofaGAYsh/statuses/361614949908361217","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"youtube":{"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponing"},"title":"Cvs red box coupons week of 07/07","duration":"58","category":"entertainment","videolink":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 08 Jul 2013 02:13:58 +0000","contenttype":"html","type":"video"},"interaction":{"schema":{"version":3},"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponin
 g"},"title":"Cvs red box coupons week of 07/07","link":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 29 Jul 2013 01:22:47 +0000","type":"youtube","contenttype":"html"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["StainRemoval"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-5}},"facebook":{"id":"602766199_10151557023101200","message":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"application":"Facebook for iPhone","source":"Facebook for iPhone (6628568379)","created_at":"Tue, 30 Jul 2013 00:06:43 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f8abea632ab80e066b5fddc080fa8","content":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766
 199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"source":"Facebook for iPhone (6628568379)","subtype":"status","created_at":"Tue, 30 Jul 2013 00:06:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361950303878254592","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Mon, 29 Jul 2013 20:44:11 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Alberta,Canada ","statuses_count":208685,"lang":"en","url":"http://rocketgirl00.blogspot.com","id":23870867,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":105,"description":"I'm married,like to travel,think that friends and family are the most important thing in life.","friends_count":2842,"name":"Doris ","created_at":"Thu, 12 Mar 2009 01:36:56 +0000","screen_name":"dewinner","id_str":"23870867"
 ,"profile_image_url":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg","followers_count":2591,"listed_count":81}},"salience":{"content":{"sentiment":0}},"klout":{"score":47},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","id":"1e2f88f9f3b1af80e074bd3a2171a578","author":{"id":23870867,"username":"dewinner","name":"Doris ","link":"http://twitter.com/dewinner","language":"en","avatar":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/dewinner/statuses/361950303878254592","created_at":"Mon, 29 Jul 2013 20:44:11 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["h
 ttp://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Sun, 28 Jul 2013 22:08:38 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry
 -detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"interaction":{"schema":{"version":3},"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","author":{},"title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","created_at":"Tue, 30 Jul 2013 09:44:17 +0000","type":"board","contenttype":"html"},"language":{"tag":"en","confidence":95},"board":{"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","thread":"
 http://forum.gon.com/showthread.php?t=762688","domain":"www.gon.com","created_at":"Wed, 24 Jul 2013 11:36:00 +0000","contenttype":"html","type":"post"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"363008881179369473","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Thu, 01 Aug 2013 18:50:36 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1262903550,"friends_count":1,"name":"serenecerulean","created_at":"Tue, 12 Mar 2013 21:31:35 +0000","screen_name":"serenecerulean","id_str":"1262903550","statuses_count":6,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No problem! ARM &amp; H
 AMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","id":"1e2fadb4069ea600e074e3962995fde4","author":{"id":1262903550,"username":"serenecerulean","name":"serenecerulean","link":"http://twitter.com/serenecerulean","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png"},"source":"Tweet Button","link":"http://twitter.com/serenecerulean/statuses/363008881179369473","created_at":"Thu, 01 Aug 2013 18:50:36 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Thu, 01 Aug 2013 12:23:26 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra 
 Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-2,"topics":[{"hits":0,"name":"Beverages","score":1.0265922546387}],"entities":[{"sentiment":0,"confident":1,"name":"Danny","evidence":1,"about":1,"label":"Person","themes":["washing soda"],"type":"Person"}]}},"facebook":{"id":"506582967_10151624053632968","message":"Hate when you are getting ready to do something productive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","created_at":"Sat, 03 Aug 2013 17:30:40 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fc626a99ea000e0664766345bbd9e","content":"Hate when you are getting ready to do something pro
 ductive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","subtype":"status","created_at":"Sat, 03 Aug 2013 17:30:50 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362021838882209792","filter_level":"medium","text":"Luv da smell of gain and arm&amp;hammer washing powder","source":"<a href=\"https://path.com/\" rel=\"nofollow\">Path<\/a>","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","lang":"en","user":{"statuses_count":6590,"lang":"en","utc_offset":-10800,"id":762376266,"time_zone":"Atlantic Time (Canada)","favourites_count":133,"description":"#teamproudmommy #hardworking #independent #teamjrrockojc: Thru it all I still maintain and smile, with God on my side I don't care who's against me","friends_count":280,"name":"toya","created_at":"Thu, 16 Aug 2012 21:36:25 +0000","screen_name":"1ofakind_87","id_str":"762376266","profile_image_url":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg","followers_count":137}},"salience":{"content":{"sentiment":0}},"klout":{"score":30},"interaction":{"schema":{"version":3},"content":
 "Luv da smell of gain and arm&amp;hammer washing powder","id":"1e2f8b755662af80e0745b9f6321114e","author":{"id":762376266,"username":"1ofakind_87","name":"toya","link":"http://twitter.com/1ofakind_87","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg"},"source":"Path","link":"http://twitter.com/1ofakind_87/statuses/362021838882209792","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362230621323526145","retweeted":{"id":"362229784211750912","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"retweet":{"id":"362230621323526145","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter f
 or iPhone<\/a>","count":3,"mention_ids":[279691748],"created_at":"Tue, 30 Jul 2013 15:18:04 +0000","user":{"geo_enabled":true,"statuses_count":40607,"lang":"en","utc_offset":-18000,"id":442045360,"time_zone":"Central Time (US & Canada)","favourites_count":13074,"friends_count":190,"name":"sM","created_at":"Tue, 20 Dec 2011 17:58:45 +0000","screen_name":"SeanMeier_","id_str":"442045360","profile_image_url":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg","followers_count":1034,"listed_count":1},"mentions":["TheVikkiMinaj"],"lang":"en"}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Food","score":0.50305610895157}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"RT @legitCarll: We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92b3acd9ae00e0745976b013340a","author":{"id":442045360,"username":"SeanMei
 er_","name":"sM","link":"http://twitter.com/SeanMeier_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/SeanMeier_/statuses/362230621323526145","created_at":"Tue, 30 Jul 2013 15:18:04 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362037402786729986","filter_level":"medium","text":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","lang":"en","user":{"geo_enabled":true,"location":"North Texas","statuses_count":24770,"lang":"en","url":"http://d1ligence.tumblr.com","id":224686933,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":638,"description":"Jussa yung nicca on the virtue of internet prosperity. Artist; ? of Elev?ted collective.","friends_count":670,"name":"Paul, The Apostle ","created_at":"Thu, 09 Dec 2010 16:26:43 +0000","screen_name":"MasterChefP","id_str":"224686933","profile_image_url":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg","followers_count":939,"listed_co
 unt":6}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","id":"1e2f8bff8bb4a280e074878bb70afd4a","author":{"id":224686933,"username":"MasterChefP","name":"Paul, The Apostle ","link":"http://twitter.com/MasterChefP","language":"en","avatar":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/MasterChefP/statuses/362037402786729986","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Advertising","ConcentratedFormulas","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4,"topics":[{"hits":0,"name":"Science","score":1.2123092412949},{"hits":0,"name":"Technology","score":0.59644603729248},{"hits":0,"name":"Hardware","score":0.4546263217926}],"entities":[{"sentiment":0,"confident":1,"name":"Procter & gamble","evidence":1,"about":1,"label":"Company","themes":["liquid laundry detergent","commercial products","ea dawn","liquid offers","grease-cutting ingredients","improved formula","longer-lasting suds","sink changeover"],"type":"Company"},{"sentiment":0,"confident":1,"name":"\"Liquid Detergents (Surfactant Science)\"","evidence":1,"about":0,"label":"Quote","themes":["liquid detergents","helpful search engine","different books","actual prices","fast search"],"type":"Quote"}]}},"facebook":{"id":"1406941246186240_1407041779509520","message":"Liquid Detergents (Surfactant Science)\n\n
 If you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry detergent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant sci
 ence);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"application":"Filipspacename","source":"Filipspacename (104453219725181)","created_at":"Tue, 06 Aug 2013 22:40:46 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fee93be16ab00e066dedfa2d1c568","content":"Liquid Detergents (Surfactant Science)\n\nIf you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry deterg
 ent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant science);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"source":"Filipspacename (104453219725181)","subtype":"status","created_at":"Tue, 06 Aug 2013 22:41:01 +0
 000","type":"facebook"},"language":{"tag":"en","confidence":99}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364861019413164032","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 21:30:20 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"location":"Ontario, Canada","statuses_count":19585,"lang":"en","url":"http://yeewittlethings.com","id":438700992,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":132,"description":"#CDN Mom of 2 wonderful kids. Wife to an amazing hubby. #PR friendly #Blogger. #Reviews, #Giveaways, Random Musings & Every day living! #KinderMom","friends_count":7875,"name":"Yee Wittle Things","created_at":"Fri, 16 Dec 2011 22:33:08 +0000","screen_name":"yeewittlethings","id_str":"438700992","profile_image_url":"http://a0
 .twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg","followers_count":8712,"listed_count":58}},"salience":{"content":{"sentiment":0}},"klout":{"score":63},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","id":"1e2fedf64fcfae00e074af57bfa66a5c","author":{"id":438700992,"username":"yeewittlethings","name":"Yee Wittle Things","link":"http://twitter.com/yeewittlethings","language":"en","avatar":"http://a0.twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/yeewittlethings/statuses/364861019413164032","created_at":"Tue, 06 Aug 2013 21:30:20 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-se
 nsitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364845410017230848","filter_level":"medium","text":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","mention_ids":[326314186],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"ThatGuy_Jesse10","in_reply_to_status_id":"364845085571031041","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","in_reply_to_user_id":"326314186","lang":"en","mentions":["ThatGuy_Jesse10"],"user":{"geo_enabled":true,"location":"Phoeniquera","statuses_count":41253,"lang":"en","utc_offset":-25200,"id":403930347,"time_zone":"Arizona","favourites_count":4362,"description":"You're gonna like THIS guy he's alright, He's a Good Fella.. 93 til.","friends_count":330,"name":"Simba","created_at":"Thu, 03 Nov 2011 06:10:20 +0000","screen_name":"JuanGTho","id_str":"403930347","profile_image_url":"http://a0.twimg.com/profile_images/37880000018266
 5838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg","followers_count":359}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Hannah Montana","evidence":1,"about":1,"label":"Person","type":"Person"}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","id":"1e2fed6ba80dad00e074579fbdc03880","author":{"id":403930347,"username":"JuanGTho","name":"Simba","link":"http://twitter.com/JuanGTho","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000182665838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[326314186],"link":"http://twitter.com/JuanGTho/statuses/364845410017230848","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","type":"twitter","mentions":["ThatGuy_Jesse10"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Convenience","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-6,"topics":[{"hits":0,"name":"Beverages","score":1.056524515152}],"entities":[{"sentiment":-12,"confident":1,"name":"Target","evidence":1,"about":1,"label":"Company","themes":["brand laundry soap","cleaning team","washing soda"],"type":"Company"}]}},"facebook":{"id":"100005166043472_180980985417435","message":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/pro
 file.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Wed, 07 Aug 2013 02:32:06 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2ff098d015a700e066f80d5c4c0dd0","content":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/profile.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"source":"Mobile (2915120374)","link":"http
 ://www.facebook.com/100005166043472_180980985417435","subtype":"status","created_at":"Wed, 07 Aug 2013 02:32:23 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":2}},"facebook":{"id":"753060211_10153029318745212","message":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"application":"Facebook for Android","source":"Facebook for Android (350685531728)","created_at":"Thu, 25 Jul 2013 18:08:27 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f555341edaf80e066003d5ea01da0","content":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/
 profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"source":"Facebook for Android (350685531728)","subtype":"status","created_at":"Thu, 25 Jul 2013 18:08:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability","ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361171385718018048","filter_level":"medium","text":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","source":"<a href=\"http://satehut.com\" rel=\"nofollow\">Satehut<\/a>","domains":["dish-washers-dryers.com"],"created_at":"Sat, 27 Jul 2013 17:09:03 +0000","links":["http://dish-washers-dryers.com/?p=3858"],"lang":"en","media":[{"id":361171385722212352,"sizes":{"small":{"w":104,"h":140,"resize":"fit"},"thumb":{"w":104,"h":140,"resize":"crop"},"large":{"w":104,"h":140,"resize":"fit"},"medium":{"w":104,"h":140,"resize":"fit"}},"media_url_https":"https://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","media_url":"http://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","expanded_url":"http://twitter.com/Sate_Hut/status/361171385718018048/photo/1","id_str":"361171385722212352","display_url":"pic.twitter.com/7XvuTjDd0v","type":"photo","url
 ":"http://t.co/7XvuTjDd0v"}],"user":{"location":"Miami, FL","statuses_count":20248,"lang":"en","url":"http://SateHut.com","utc_offset":-14400,"id":342319003,"time_zone":"Eastern Time (US & Canada)","description":"For good sate (or Sateh) you can be anywhere!  We give you the recipes and ingredients to make it at home!","name":"Sate Hut","created_at":"Mon, 25 Jul 2011 20:37:12 +0000","screen_name":"Sate_Hut","id_str":"342319003","profile_image_url":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg","followers_count":15}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"8/31/13","evidence":1,"about":1,"label":"Date","type":"Pattern"}]}},"klout":{"score":13},"interaction":{"schema":{"version":3},"content":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","id":"1e2f6df3ca32a180e0745c1dc0cceda4","author":{"id":342319003,"username":"Sate_Hut","name":"Sate Hut","link":"http://
 twitter.com/Sate_Hut","language":"en","avatar":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg"},"source":"Satehut","link":"http://twitter.com/Sate_Hut/statuses/361171385718018048","created_at":"Sat, 27 Jul 2013 17:09:03 +0000","type":"twitter"},"links":{"title":["20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers"],"normalized_url":["http://dish-washers-dryers.com/?p=3858"],"created_at":["Sat, 27 Jul 2013 17:09:07 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers","description":"$0.99 (0 Bids)End Date: Saturday Jul-27-2013 19:47:26 PDTBuy It Now for only: $2.50Buy It Now | Bid now | Add to watch list","image":"http://thumbs1.ebaystatic.com/m/m5EkUMKNxAoIDYVzVioQCRg/140.jpg","site_name":"Dish-Washers & Dryers","type":"article","url":"http://dish-washers-dryers.com/?p=3858"}],"content_type":["text/html"],"lang":["en-us"
 ]},"url":["http://dish-washers-dryers.com/?p=3858"]},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0}},"facebook":{"id":"297050503659016_614567205240676","message":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","created_at":"Fri, 26 Jul 2013 23:40:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f64cb0481ae80e0668a518d22dfe2","content":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","link":"http://www.facebook.com/297050503659016_614567205240
 676","subtype":"status","created_at":"Fri, 26 Jul 2013 23:40:22 +0000","type":"facebook"},"links":{"title":["Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work"],"normalized_url":["http://cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727"],"created_at":["Fri, 26 Jul 2013 23:40:16 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p22sqw-j1g","http://www.cookcouponwork.com/?p=73114"]],"meta":{"twitter":[{"site":"@CookCouponWork","card":"summary","creator":"@CookCouponWork"}],"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work","description":"Need Laundry Detergent? Pick up a good deal on Arm & Hammer at Walgreens (til 7/27) Deal Idea: Buy (2) Arm & Hammer 2x Liquid Detergent, 25 ? 32 loads, $2.29 = $4.58 Use (1) $0.75/2 Arm & Hammer Liquid or Powder Detergent, or Fabric Softener Sheets, exp. 9/30/13 (SS 07/14/13) Pay $3.83 =$1.92 
 EACH!","image":"http://www.cookcouponwork.com/wp-content/uploads/2013/07/543-300x213.jpg","type":"article","site_name":"Cook, Coupon, Work","url":"http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"}],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362022978235531264","filter_level":"medium","text":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","hashtags":["notracist"],"lang":"en","user":{"location":"Knoxville, TN","statuses_count":3202,"lang":"en","utc_offset":-14400,"id":442907220,"time_zone":"Eastern Time (US & Canada)","favourites_count":379,"description":"Never had a headache. Unable to grow a full beard.","friends_count":52,"name":"Uncle_D","created_at":"Wed, 21 Dec 2011 16:05:22 +0000","screen_name":"_UncleD_","id_str":"442907220","profile_image_url":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg","followers_count":59}},"salience":{"content":{"sentiment":6}},"klout":{"score":40},"interac
 tion":{"schema":{"version":3},"content":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","id":"1e2f8b7f6ed8a100e074a98a4f29f3bc","author":{"id":442907220,"username":"_UncleD_","name":"Uncle_D","link":"http://twitter.com/_UncleD_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/_UncleD_/statuses/362022978235531264","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"100000487215935_704899129536321","message":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile.php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Sat, 27 Jul 2013 16:30:08 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6d9ccde6a800e06674caf5177576","content":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile
 .php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"source":"Mobile (2915120374)","link":"http://www.facebook.com/100000487215935_704899129536321","subtype":"status","created_at":"Sat, 27 Jul 2013 16:30:26 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361615185913462785","retweeted":{"id":"361614949908361217","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","in_reply_to_user_id":"106891542","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"MemoirsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":4
 23,"listed_count":10}},"retweet":{"id":"361615185913462785","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","count":1,"mention_ids":[106891542],"created_at":"Sun, 28 Jul 2013 22:32:33 +0000","user":{"location":"soundcloud.com/mrReynoldsMusic","statuses_count":13351,"lang":"en","url":"http://www.THEmrReynolds.com","id":106891542,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":1353,"description":"I Mock The Party","friends_count":1554,"name":"Mr Reynolds","created_at":"Thu, 21 Jan 2010 00:37:45 +0000","screen_name":"THEmrReynolds","id_str":"106891542","profile_image_url":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg","followers_count":7938,"listed_count":49},"mentions":["THEmrReynolds"],"lang":"en"}},"salience":{"content":{"sentiment":0}},"klout":{"score":59},"int
 eraction":{"schema":{"version":3},"content":"RT @MemoirsofaGAYsh: @THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d5984fda680e074135a4b824dd0","author":{"id":106891542,"username":"THEmrReynolds","name":"Mr Reynolds","link":"http://twitter.com/THEmrReynolds","language":"en","avatar":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg"},"source":"Twitter for Android","mention_ids":[106891542],"link":"http://twitter.com/THEmrReynolds/statuses/361615185913462785","created_at":"Sun, 28 Jul 2013 22:32:33 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362467813958500354","filter_level":"medium","text":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","source":"<a href=\"http://www.networkedblogs.com/\" rel=\"nofollow\">NetworkedBlogs<\/a>","domains":["nblo.gs"],"created_at":"Wed, 31 Jul 2013 07:00:35 +0000","links":["http://nblo.gs/NEwDq"],"lang":"en","user":{"location":"Canada","statuses_count":2034,"lang":"en","url":"http://www.zeemaid.com","id":25435820,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":17,"description":"I am Zeemaid.  Momma to 3, an avid reader and an all around sassy momma.  I own my own video business, am married to my Mr. Darcy, love to throw pots and write","friends_count":1976,"name":"Zeemaid","created_at":"Fri, 20 Mar 2009 01:59:59 +0000","screen_name":"Zeemaid","id_str":"25435820","profile_image_url":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg","followers_count":10
 27,"listed_count":30}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","id":"1e2f9aee5d36ab80e0745a0744aef83a","author":{"id":25435820,"username":"Zeemaid","name":"Zeemaid","link":"http://twitter.com/Zeemaid","language":"en","avatar":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg"},"source":"NetworkedBlogs","link":"http://twitter.com/Zeemaid/statuses/362467813958500354","created_at":"Wed, 31 Jul 2013 07:00:35 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Sensitive Skin?Review & Giveaway"],"normalized_url":["http://networkedblogs.com/NEwDq"],"created_at":["Wed, 31 Jul 2013 07:00:43 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://nblo.gs/NEwDq"]],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Sensitive Skin?Review & Giveaway","description":"When you love a product you want to stick with it bu
 t as we all know price is a huge factor as to whether we continue to buy the brand we love or go elsewhere. Fortunately, Arm & Hammer?s affordability makes it easy for me to keep my cupboard well stocked with the Arm & Hammer products I love. Not","image":"http://lh6.ggpht.com/-8PeRiK68OMk/UfhgV8guCFI/AAAAAAAACgs/ubCE0V6ffqQ/CAN_AHLL_Sensitive_203L_thumb7.jpg?imgmax=800","site_name":"In the Mommy Trenches","type":"article","url":"http://networkedblogs.com/NEwDq"}],"content_type":["text/html"],"lang":["unknown"]},"url":["http://networkedblogs.com/NEwDq"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"478623348890311_497707713648541","message":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/pictu
 re"},"source":"web","created_at":"Wed, 31 Jul 2013 06:44:42 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f9acadcb2a900e066515ce688d7d0","content":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/picture"},"source":"we
 b","link":"http://www.facebook.com/478623348890311_497707713648541","subtype":"status","created_at":"Wed, 31 Jul 2013 06:44:57 +0000","type":"facebook"},"language":{"tag":"en","confidence":74}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362269562365943809","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Tue, 30 Jul 2013 17:52:48 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Toronto,Ontario","statuses_count":29115,"lang":"en","utc_offset":-14400,"id":574859993,"time_zone":"Eastern Time (US & Canada)","favourites_count":13,"friends_count":1727,"name":"Andrew P","created_at":"Tue, 08 May 2012 23:07:45 +0000","screen_name":"apham17","id_str":"574859993","profile_image_url":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png","followers_count":455,"listed_count":7}
 },"salience":{"content":{"sentiment":0}},"klout":{"score":48},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","id":"1e2f940d87f9a800e074438bcad545f2","author":{"id":574859993,"username":"apham17","name":"Andrew P","link":"http://twitter.com/apham17","language":"en","avatar":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/apham17/statuses/362269562365943809","created_at":"Tue, 30 Jul 2013 17:52:48 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Mon, 29 Jul 2013 23:20:31 +00
 00"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-sce
 nts-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362229784211750912","filter_level":"medium","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","mention_ids":[279691748],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","lang":"en","mentions":["TheVikkiMinaj"],"user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Foo
 d","score":0.50475257635117}]}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92ac430aa080e0748f373f80284e","author":{"id":223342789,"username":"legitCarll","name":"Carlage","link":"http://twitter.com/legitCarll","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/legitCarll/statuses/362229784211750912","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"365738027701645314","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Fri, 09 Aug 2013 07:35:15 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1571552280,"friends_count":2,"name":"tim tunner","created_at":"Fri, 05 Jul 2013 23:43:28 +0000","screen_name":"timtunner0987","id_str":"1571552280","statuses_count":32,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":10},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No pro
 blem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","id":"1e300c63b51fab80e074e71f77da87ca","author":{"id":1571552280,"username":"timtunner0987","name":"tim tunner","link":"http://twitter.com/timtunner0987","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png"},"source":"Tweet Button","link":"http://twitter.com/timtunner0987/statuses/365738027701645314","created_at":"Fri, 09 Aug 2013 07:35:15 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Fri, 09 Aug 2013 07:35:18 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMM
 ER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","StainRemoval","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364421048600510464","filter_level":"medium","text":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","source":"<a href=\"http://uTweetDeals.com\" rel=\"nofollow\">U Tweet Deals<\/a>","domains":["bit.ly"],"created_at":"Mon, 05 Aug 2013 16:22:03 +0000","hashtags":["laundry"],"links":["http://bit.ly/15zY9H5"],"lang":"en","user":{"statuses_count":59620,"lang":"en","utc_offset":-25200,"id":1131374341,"time_zone":"Arizona","description":"We search for deals on Home and Garden related products. Bath, Kitchen, Furniture, Garden and more. *** I Follow Back ***","friends_count":1939,"name":"Home and Garden","created_at":"Tue, 29 Jan 2013 15:37:21 +0000","screen_name":"HomeGardenBuys","id_str":"1131374341","followers_count":1706,"profile_image_url":"http://a0.twimg.com/profile_images/3531065622/bc956b2a
 9da482ed071f2dbcdabea80b_normal.jpeg","listed_count":95}},"salience":{"content":{"sentiment":0}},"klout":{"score":49},"interaction":{"schema":{"version":3},"content":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","id":"1e2fdeb29810a780e0747af2c3544504","author":{"id":1131374341,"username":"HomeGardenBuys","name":"Home and Garden","link":"http://twitter.com/HomeGardenBuys","language":"en","avatar":"http://a0.twimg.com/profile_images/3531065622/bc956b2a9da482ed071f2dbcdabea80b_normal.jpeg"},"source":"U Tweet Deals","link":"http://twitter.com/HomeGardenBuys/statuses/364421048600510464","created_at":"Mon, 05 Aug 2013 16:22:03 +0000","type":"twitter"},"links":{"title":["10 Bottles Arm Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent | eBay"],"normalized_url":["http://ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"],"created_at":["Mon, 05 Aug 2013 16:22:47 +0000"],"retweet_
 count":[0],"code":[200],"hops":[["http://bit.ly/15zY9H5","http://rover.ebay.com/rover/1/711-53200-19255-0/1/?type=2&campid=5337311970&toolid=10001&ext=121154908808&item=121154908808"]],"meta":{"keywords":[["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","Home & Garden","Housekeeping & Organization","Laundry Supplies"]],"description":["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay"],"charset":["UTF-8"],"opengraph":[{"title":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","description":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay","image":"http://thumbs1.ebaystatic.com/d/l225/m/mSRDHPf7_rrZnR75JtQxcCA.jpg","type":"ebay-objects:item","site_name":"eBay","url":"http://www.ebay.com/itm/10-bottles-Arm-Hammer-Plus-Oxi-C
 lean-Stain-Fighters-Liquid-Laundry-Detergent-/121154908808"}],"content_type":["text/html"],"lang":["en-gb"]},"url":["http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364879533691772928","filter_level":"medium","text":"Arm and hammer carpet powder is amazing....#justsayin","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","hashtags":["justsayin"],"lang":"en","user":{"location":"Indiana US of A","statuses_count":1400,"lang":"en","url":"http://www.quirkycreative.blogspot.com","utc_offset":-14400,"id":93704952,"time_zone":"Eastern Time (US & Canada)","favourites_count":9,"description":"Writer~ Random ~Quirky ~Creative ~Wife ~Believer ~Extroverted Introvert ~Animal Person ~Brony ~Girly-Girl w/ Tomboy Tendencies @JAInspired","friends_count":493,"name":"Rachel M","created_at":"Mon, 30 Nov 2009 20:20:15 +0000","screen_name":"thisrandomgirl","id_str":"93704952","profile_image_url":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg","followers_count":102}},"sa
 lience":{"content":{"sentiment":4}},"klout":{"score":18},"interaction":{"schema":{"version":3},"content":"Arm and hammer carpet powder is amazing....#justsayin","id":"1e2fee9abeffa100e074fa86d21b91e6","author":{"id":93704952,"username":"thisrandomgirl","name":"Rachel M","link":"http://twitter.com/thisrandomgirl","language":"en","avatar":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/thisrandomgirl/statuses/364879533691772928","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","type":"twitter"},"language":{"tag":"en","confidence":61},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364749039100633088","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 14:05:22 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"statuses_count":4853,"lang":"en","url":"http://www.mykidsguide.com/","id":612438542,"favourites_count":3,"description":"Everything you need to know about educational games and  activities for kids.","friends_count":613,"name":"MyKidsGuide","created_at":"Tue, 19 Jun 2012 10:11:57 +0000","screen_name":"MyKidsGuide","id_str":"612438542","followers_count":1542,"profile_image_url":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg","listed_count":14}},"salience":{"content":{"sentiment":0}},"klout":{"score":49
 },"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","id":"1e2fea13bbd7ad00e0742b3a16342e3e","author":{"id":612438542,"username":"MyKidsGuide","name":"MyKidsGuide","link":"http://twitter.com/MyKidsGuide","language":"en","avatar":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/MyKidsGuide/statuses/364749039100633088","created_at":"Tue, 06 Aug 2013 14:05:22 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm 
 & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent","CouponUsage"],"brand":["Tide","ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Gain","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"},{"sentiment":0,"confident":1,"name":"Tide","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"}]}},"facebook":{"id":"100001334708168_529689457085540","message":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $15\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author"
 :{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif","application":"Facebook for Android","source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3","created_at":"Mon, 05 Aug 2013 13:41:25 +0000","type":"photo"},"interaction":{"schema":{"version":3},"id":"1e2fdd4b8cefa080e0663432906416b4","content":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $1
 5\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author":{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/100001334708168_529689457085540","subtype":"photo","created_at":"Mon, 05 Aug 2013 13:41:44 +0000","type":"facebook"},"links":{"title":["Photos from Albert Wells&#039;s post | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"],"created_at":["Mon, 05 Aug 2013 13:41:51 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]],"meta":{"charset":["UTF-8"],"content_type":["text/html"],"lang":["en"]},"url":["https://www.facebook.c
 om/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364070259025649666","filter_level":"medium","text":"Somebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":31708,"lang":"en","utc_offset":-18000,"id":57967571,"time_zone":"Quito","favourites_count":38,"description":"http://ask.fm/thatDudeBiggz","friends_count":727,"name":"Sen?r","created_at":"Sat, 18 Jul 2009 16:18:33 +0000","screen_name":"thatDudeBiggz","id_str":"57967571","profile_image_url":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg","followers_count":658,"listed_count":5}},"salience":{"content":{"sentiment":0}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"S
 omebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","id":"1e2fd286f28cac00e074ec9c56b152ac","author":{"id":57967571,"username":"thatDudeBiggz","name":"Sen?r","link":"http://twitter.com/thatDudeBiggz","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/thatDudeBiggz/statuses/364070259025649666","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","type":"twitter"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364267076807950339","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Mon, 05 Aug 2013 06:10:13 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"geo_enabled":true,"location":"Lumsden, Saskatchewan","statuses_count":18479,"lang":"en","url":"http://www.mommykatandkids.com/","id":106185357,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":29,"description":"Mother of two active boys, blogger and writer. Lover of hot coffee, organic chocolate and sleeping in late whenever I get the chance.","friends_count":7894,"name":"Kathryn Lavallee","created_at":"Mon, 18 Jan 2010 19:29:48 +0000","screen_name":"mommykatandkids","id_str":"106185357","profile_image
 _url":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg","followers_count":15439,"listed_count":306}},"salience":{"content":{"sentiment":0}},"klout":{"score":65},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","id":"1e2fd95b0a39a080e07405af37275d4a","author":{"id":106185357,"username":"mommykatandkids","name":"Kathryn Lavallee","link":"http://twitter.com/mommykatandkids","language":"en","avatar":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/mommykatandkids/statuses/364267076807950339","created_at":"Mon, 05 Aug 2013 06:10:13 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fres
 h-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Sun, 04 Aug 2013 21:00:19 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"twitter":{"id":"367633815277035520","filter_level":"medium","text":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","source":"<a href=\"http://www.facebook.com/twitter\" rel=\"nofollow\">Facebook<\/a>","domains":["fb.me"],"created_at":"Wed, 14 Aug 2013 13:08:26 +0000","links":["http://fb.me/2jIdLRYWm"],"lang":"en","user":{"location":"Ontario, Canada","statuses_count":11244,"lang":"en","url":"http://savebiglivebetter.com","id":465174690,"description":"The best Canadian deals, sales, coupons, freebies, recipes, money saving articles and more updated daily at http://SaveBigLiveBetter.com! HAPPY SAVING:)","friends_count":71,"name":"Save Big Live Better","created_at":"Mon, 16 Jan 2012 01:56:38 +0000","screen_name":"SBLBCanada","id_str":"465174690","followers_count":476,"profile_image_url":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401
 c696258306991b51_normal.png","listed_count":4}},"salience":{"content":{"sentiment":3}},"klout":{"score":37},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","id":"1e304e29af34a100e0742d305e733fa6","author":{"id":465174690,"username":"SBLBCanada","name":"Save Big Live Better","link":"http://twitter.com/SBLBCanada","language":"en","avatar":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401c696258306991b51_normal.png"},"source":"Facebook","link":"http://twitter.com/SBLBCanada/statuses/367633815277035520","created_at":"Wed, 14 Aug 2013 13:08:26 +0000","type":"twitter"},"links":{"title":["Timeline Photos | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"],"created_at":["Wed, 14 Aug 2013 13:08:58 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://fb.me/2jIdLRYWm"]],"meta":{"charset":["UTF-8"],"content_type":[
 "text/html"],"lang":["en"]},"url":["https://www.facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":1,"entities":[{"sentiment":-2,"confident":1,"name":"Vinegar","evidence":1,"about":0,"label":"Person","themes":["funky smell","washing machine","go-to product","regular detergent","vinegar smell"],"type":"Person"}]}},"facebook":{"id":"234885799896401_583141561737488","message":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old days.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest 
 thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":"Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","created_at":"Wed, 14 Aug 2013 17:23:45 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3050645c92a680e066aef68cf33be0","content":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old day
 s.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":
 "Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","link":"http://www.facebook.com/234885799896401_583141561737488","subtype":"status","created_at":"Wed, 14 Aug 2013 17:24:00 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer","Purex"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Beverages","score":0.92570048570633}]}},"facebook":{"id":"100000254074556_643746722310458","message":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nFill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  S
 tir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","created_at":"Fri, 09 Aug 2013 15:07:21 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3010563ad1aa80e0660e6752dee246","content":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nF
 ill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  Stir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","link":"http://www.facebook.com/100000254074556_643746722310458","subtype":"status","created_at":"Fri, 09 Aug 2013 15:07:35 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"359694365049896960","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Tue, 23 Jul 2013 15:19:54 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1546236864,"friends_count":82,"name":"Kyra Mitchell","created_at":"Tue, 25 Jun 2013 17:32:24 +0000","screen_name":"ArmyRebel0","id_str":"1546236864","statuses_count":14,"followers_count":10,"profile_image_url":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":12},"interaction":{"schema":{"ver
 sion":3},"content":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","id":"1e2f3ab537a0a900e074ec3e0933e560","author":{"id":1546236864,"username":"ArmyRebel0","name":"Kyra Mitchell","link":"http://twitter.com/ArmyRebel0","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg"},"source":"Tweet Button","link":"http://twitter.com/ArmyRebel0/statuses/359694365049896960","created_at":"Tue, 23 Jul 2013 15:19:54 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Tue, 23 Jul 2013 15:20:08 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]
 ],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-la

<TRUNCATED>

[51/71] [abbrv] git commit: updates to ES 1.0.1, perpetual read from hdfs

Posted by sb...@apache.org.
updates to ES 1.0.1, perpetual read from hdfs

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1573789 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/63a85a83
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/63a85a83
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/63a85a83

Branch: refs/heads/master
Commit: 63a85a83f5904f4362ebb91f659cbd6695a60f72
Parents: e6f3d4e
Author: sblackmon <sb...@unknown>
Authored: Mon Mar 3 22:36:59 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Mon Mar 3 22:36:59 2014 +0000

----------------------------------------------------------------------
 pom.xml                                               |  9 +++++++++
 streams-contrib/streams-persist-elasticsearch/pom.xml |  2 +-
 .../elasticsearch/ElasticsearchPersistUpdater.java    |  3 +++
 streams-contrib/streams-persist-hdfs/pom.xml          |  1 +
 .../org/apache/streams/hdfs/WebHdfsPersistWriter.java |  2 +-
 streams-contrib/streams-provider-moreover/pom.xml     |  1 +
 .../apache/streams/data/moreover/MoreoverClient.java  |  7 ++++---
 .../streams/data/moreover/MoreoverConfigurator.java   | 14 ++++++++++----
 .../streams/data/moreover/MoreoverProvider.java       |  5 +----
 .../streams/data/moreover/MoreoverProviderTask.java   | 14 ++++++++------
 .../apache/streams/data/moreover/MoreoverResult.java  |  5 ++---
 streams-pojo/pom.xml                                  |  2 --
 12 files changed, 41 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 366ae94..77d5371 100644
--- a/pom.xml
+++ b/pom.xml
@@ -155,6 +155,10 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+        </dependency>
+        <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
         </dependency>
@@ -197,6 +201,11 @@
                 <version>${slf4j.version}</version>
             </dependency>
             <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-log4j12</artifactId>
+                <version>${slf4j.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>ch.qos.logback</groupId>
                 <artifactId>logback-classic</artifactId>
                 <version>${logback.version}</version>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index ee11944..b487e58 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -35,7 +35,7 @@
         <dependency>
             <groupId>org.elasticsearch</groupId>
             <artifactId>elasticsearch</artifactId>
-            <version>1.0.0</version>
+            <version>1.0.1</version>
             <scope>compile</scope>
             <type>jar</type>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
index ef6c28d..b55ad2c 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
@@ -353,6 +353,9 @@ public class ElasticsearchPersistUpdater extends ElasticsearchPersistWriter impl
     {
         UpdateRequest updateRequest;
 
+        Preconditions.checkNotNull(id);
+        Preconditions.checkNotNull(json);
+
         // They didn't specify an ID, so we will create one for them.
         updateRequest = new UpdateRequest()
             .index(indexName)

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-persist-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/pom.xml b/streams-contrib/streams-persist-hdfs/pom.xml
index 1142976..1031205 100644
--- a/streams-contrib/streams-persist-hdfs/pom.xml
+++ b/streams-contrib/streams-persist-hdfs/pom.xml
@@ -84,6 +84,7 @@
                     <sourcePaths>
                         <sourcePath>src/main/jsonschema/org/apache/streams/hdfs/HdfsConfiguration.json</sourcePath>
                         <sourcePath>src/main/jsonschema/org/apache/streams/hdfs/HdfsWriterConfiguration.json</sourcePath>
+                        <sourcePath>src/main/jsonschema/org/apache/streams/hdfs/HdfsReaderConfiguration.json</sourcePath>
                     </sourcePaths>
                     <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
                     <targetPackage>org.apache.streams.hdfs.pojo</targetPackage>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
index 0fc8407..55c55b3 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
@@ -47,7 +47,7 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Flushable, Cl
     private OutputStreamWriter currentWriter = null;
 
     private static final int  BYTES_IN_MB = 1024*1024;
-    private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
+    private static final int  BYTES_BEFORE_FLUSH = 64 * BYTES_IN_MB;
     private volatile int  totalByteCount = 0;
     private volatile int  byteCount = 0;
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-provider-moreover/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/pom.xml b/streams-contrib/streams-provider-moreover/pom.xml
index 4988715..521a865 100644
--- a/streams-contrib/streams-provider-moreover/pom.xml
+++ b/streams-contrib/streams-provider-moreover/pom.xml
@@ -43,6 +43,7 @@
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>commons-io</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
index 2e63d9b..a43c4d8 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
@@ -28,14 +28,15 @@ public class MoreoverClient {
     public long pullTime;
     private boolean debug;
 
-    public MoreoverClient(String id, String apiKey) {
-        logger.info("Constructed new client for id:{} key:{}", id, apiKey);
+    public MoreoverClient(String id, String apiKey, String sequence) {
+        logger.info("Constructed new client for id:{} key:{} sequence:{}", id, apiKey, sequence);
         this.id = id;
         this.apiKey = apiKey;
+        this.lastSequenceId = new BigInteger(sequence);
     }
 
     public MoreoverResult getArticlesAfter(String sequenceId, int limit) throws IOException {
-        String urlString = String.format(BASE_URL, this.apiKey, limit, (sequenceId == null ? 0 : sequenceId));
+        String urlString = String.format(BASE_URL, this.apiKey, limit, sequenceId);
         logger.debug("Making call to {}", urlString);
         long start = System.nanoTime();
         MoreoverResult result = new MoreoverResult(id, getArticles(new URL(urlString)), start, System.nanoTime());

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
index d2589e0..c7e8c17 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverConfigurator.java
@@ -22,10 +22,16 @@ public class MoreoverConfigurator {
 
         List<MoreoverKeyData> apiKeys = Lists.newArrayList();
 
-        for( String key : moreover.getStringList("apiKeys")) {
-            apiKeys.add(new MoreoverKeyData().withId(key).withKey(key));
-            // TODO: implement starting sequence
-        }
+        Config apiKeysConfig = moreover.getConfig("apiKeys");
+
+        if( !apiKeysConfig.isEmpty())
+            for( String apiKeyId : apiKeysConfig.root().keySet() ) {
+                Config apiKeyConfig = apiKeysConfig.getConfig(apiKeyId);
+                apiKeys.add(new MoreoverKeyData()
+                        .withId(apiKeyConfig.getString("key"))
+                        .withKey(apiKeyConfig.getString("key"))
+                        .withStartingSequence(apiKeyConfig.getString("startingSequence")));
+            }
         moreoverConfiguration.setApiKeys(apiKeys);
 
         return moreoverConfiguration;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
index 5fd83eb..85ef7a5 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
@@ -50,17 +50,14 @@ public class MoreoverProvider implements StreamsProvider {
 
     @Override
     public synchronized StreamsResultSet readCurrent() {
-        LOGGER.debug("readCurrent");
 
-        LOGGER.info("Providing {} docs", providerQueue.size());
+        LOGGER.debug("readCurrent: {}", providerQueue.size());
 
         Collection<StreamsDatum> currentIterator = Lists.newArrayList();
         Iterators.addAll(currentIterator, providerQueue.iterator());
 
         StreamsResultSet current = new StreamsResultSet(Queues.newConcurrentLinkedQueue(currentIterator));
 
-        LOGGER.info("Exiting");
-
         providerQueue.clear();
 
         return current;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
index 5fa0298..4908ea5 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
@@ -7,6 +7,7 @@ import org.apache.streams.core.StreamsResultSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.math.BigInteger;
 import java.util.Queue;
 
 /**
@@ -18,7 +19,7 @@ public class MoreoverProviderTask implements Runnable {
     public static final int REQUIRED_LATENCY = LATENCY * 1000;
     private static Logger logger = LoggerFactory.getLogger(MoreoverProviderTask.class);
 
-    private final String lastSequence;
+    private String lastSequence;
     private final String apiKey;
     private final String apiId;
     private final Queue<StreamsDatum> results;
@@ -31,7 +32,7 @@ public class MoreoverProviderTask implements Runnable {
         this.apiKey = apiKey;
         this.results = results;
         this.lastSequence = lastSequence;
-        this.moClient = new MoreoverClient(this.apiId, this.apiKey);
+        this.moClient = new MoreoverClient(this.apiId, this.apiKey, this.lastSequence);
         initializeClient(moClient);
     }
 
@@ -40,12 +41,13 @@ public class MoreoverProviderTask implements Runnable {
         while(true) {
             try {
                 ensureTime(moClient);
-                MoreoverResult result = started ? moClient.getNextBatch() : moClient.getArticlesAfter(lastSequence, 500);
+                MoreoverResult result = moClient.getArticlesAfter(lastSequence, 500);
                 started = true;
-                result.process();
+                lastSequence = result.process().toString();
                 for(StreamsDatum entry : ImmutableSet.copyOf(result.iterator()))
                     results.offer(entry);
-                logger.info("ApiKey={}\tlastSequenceid={}", this.apiKey, result.getMaxSequencedId());
+                logger.info("ApiKey={}\tlastSequenceid={}", this.apiKey, lastSequence);
+
             } catch (Exception e) {
                 logger.error("Exception while polling moreover", e);
             }
@@ -64,7 +66,7 @@ public class MoreoverProviderTask implements Runnable {
 
     private void initializeClient(MoreoverClient moClient) {
         try {
-            moClient.getArticlesAfter("0", 2);
+            moClient.getArticlesAfter(this.lastSequence, 2);
         } catch (Exception e) {
             logger.error("Failed to start stream, {}", this.apiKey);
             logger.error("Exception : ", e);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
index ed5f305..50e3f66 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
@@ -108,7 +108,7 @@ public class MoreoverResult implements Iterable<StreamsDatum> {
         return end;
     }
 
-    public void process() {
+    public BigInteger process() {
 
         try {
             this.resultObject = xmlMapper.readValue(xmlString, ArticlesResponse.class);
@@ -124,11 +124,10 @@ public class MoreoverResult implements Iterable<StreamsDatum> {
             logger.trace("Prior max sequence Id {} current candidate {}", this.maxSequencedId, sequenceid);
             if (sequenceid.compareTo(this.maxSequencedId) > 0) {
                 this.maxSequencedId = sequenceid;
-                logger.debug("New max sequence Id {}", this.maxSequencedId);
             }
-
         }
 
+        return this.maxSequencedId;
     }
 
     public String getXmlString() {

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/63a85a83/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml
index dc75aba..72f8418 100644
--- a/streams-pojo/pom.xml
+++ b/streams-pojo/pom.xml
@@ -90,13 +90,11 @@
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
-            <version>1.6.1</version>
         </dependency>
 
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
-            <version>1.0.9</version>
         </dependency>
 
     </dependencies>


[33/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-mongo/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-mongo/pom.xml b/trunk/streams-contrib/streams-persist-mongo/pom.xml
deleted file mode 100644
index a209acb..0000000
--- a/trunk/streams-contrib/streams-persist-mongo/pom.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?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>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.mongodb</groupId>
-            <artifactId>mongo-java-driver</artifactId>
-            <version>2.12.0-rc0</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>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </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>false</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/6ea69f29/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoConfigurator.java b/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoConfigurator.java
deleted file mode 100644
index cccdeb9..0000000
--- a/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoConfigurator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.apache.streams.mongo;
-
-import com.google.common.base.Objects;
-import com.typesafe.config.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class MongoConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(MongoConfigurator.class);
-
-    public static MongoConfiguration detectConfiguration(Config mongo) {
-
-        MongoConfiguration mongoConfiguration = new MongoConfiguration();
-
-        mongoConfiguration.setHost(mongo.getString("host"));
-        mongoConfiguration.setPort(new Long(mongo.getInt("port")));
-        mongoConfiguration.setDb(mongo.getString("db"));
-        mongoConfiguration.setCollection(mongo.getString("collection"));
-
-        if( mongo.hasPath("user"))
-            mongoConfiguration.setUser(mongo.getString("user"));
-        if( mongo.hasPath("password"))
-            mongoConfiguration.setPassword(mongo.getString("password"));
-        return mongoConfiguration;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java b/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
deleted file mode 100644
index 5ab8470..0000000
--- a/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.apache.streams.mongo;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.base.Strings;
-import com.mongodb.DB;
-import com.mongodb.DBAddress;
-import com.mongodb.DBCollection;
-import com.mongodb.DBObject;
-import com.mongodb.MongoClient;
-import com.mongodb.util.JSON;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class MongoPersistWriter implements StreamsPersistWriter, Runnable
-{
-    private final static Logger LOGGER = LoggerFactory.getLogger(MongoPersistWriter.class);
-
-    protected volatile Queue<StreamsDatum> persistQueue;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private MongoConfiguration config;
-
-    protected DB client;
-    protected DBAddress dbaddress;
-    protected DBCollection collection;
-
-    protected List<DBObject> insertBatch = new ArrayList<DBObject>();
-
-    public MongoPersistWriter() {
-        Config config = StreamsConfigurator.config.getConfig("mongo");
-        this.config = MongoConfigurator.detectConfiguration(config);
-        this.persistQueue  = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public MongoPersistWriter(Queue<StreamsDatum> persistQueue) {
-        Config config = StreamsConfigurator.config.getConfig("mongo");
-        this.config = MongoConfigurator.detectConfiguration(config);
-        this.persistQueue = persistQueue;
-    }
-
-    private synchronized void connectToMongo()
-    {
-        try {
-            dbaddress = new DBAddress(config.getHost(), config.getPort().intValue(), config.getDb());
-        } catch (UnknownHostException e) {
-            e.printStackTrace();
-            return;
-        }
-
-        client = MongoClient.connect(dbaddress);
-
-        if( !Strings.isNullOrEmpty(config.getUser()) && !Strings.isNullOrEmpty(config.getPassword()))
-            client.authenticate(config.getUser(), config.getPassword().toCharArray());
-
-        if( !client.collectionExists(config.getCollection())) {
-            client.createCollection(config.getCollection(), null);
-        };
-
-        collection = client.getCollection(config.getCollection());
-    }
-    
-    @Override
-    public void write(StreamsDatum streamsDatum) {
-
-        DBObject dbObject;
-        if( streamsDatum.getDocument() instanceof String ) {
-            dbObject = (DBObject) JSON.parse((String)streamsDatum.getDocument());
-        } else {
-            try {
-                ObjectNode node = mapper.valueToTree(streamsDatum.getDocument());
-                dbObject = (DBObject) JSON.parse(node.toString());
-            } catch (Exception e) {
-                e.printStackTrace();
-                LOGGER.warn("Unsupported type: " + streamsDatum.getDocument().getClass());
-                return;
-            }
-        }
-
-        insertBatch.add(dbObject);
-
-        if( insertBatch.size() % 100 == 0)
-            try {
-                flush();
-            } catch (IOException e) {
-                e.printStackTrace();
-                return;
-            }
-    }
-
-    public void flush() throws IOException
-    {
-        collection.insert(insertBatch);
-    }
-
-    public synchronized void close() throws IOException
-    {
-        client.cleanCursors(true);
-    }
-
-    @Override
-    public void start() {
-
-        connectToMongo();
-
-    }
-
-    @Override
-    public void stop() {
-
-        try {
-            flush();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        try {
-            close();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
-    public Queue<StreamsDatum> getPersistQueue() {
-        return persistQueue;
-    }
-
-
-    @Override
-    public void run() {
-
-        start();
-
-        Thread task = new Thread(new MongoPersistWriterTask(this));
-        task.start();
-
-        try {
-            task.join();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-            return;
-        }
-
-        stop();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java b/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java
deleted file mode 100644
index 398d1cd..0000000
--- a/trunk/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.streams.mongo;
-
-import org.apache.streams.core.StreamsDatum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Random;
-
-public class MongoPersistWriterTask implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(MongoPersistWriterTask.class);
-
-    private MongoPersistWriter writer;
-
-    public MongoPersistWriterTask(MongoPersistWriter writer) {
-        this.writer = writer;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            if( writer.getPersistQueue().peek() != null ) {
-                try {
-                    StreamsDatum entry = writer.persistQueue.remove();
-                    writer.write(entry);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            try {
-                Thread.sleep(new Random().nextInt(1));
-            } catch (InterruptedException e) {}
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-mongo/src/main/jsonschema/org/apache/streams/mongo/MongoConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-mongo/src/main/jsonschema/org/apache/streams/mongo/MongoConfiguration.json b/trunk/streams-contrib/streams-persist-mongo/src/main/jsonschema/org/apache/streams/mongo/MongoConfiguration.json
deleted file mode 100644
index dc2a553..0000000
--- a/trunk/streams-contrib/streams-persist-mongo/src/main/jsonschema/org/apache/streams/mongo/MongoConfiguration.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.mongo.MongoConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "host": {
-            "type": "string",
-            "description": "Hbase host"
-        },
-        "port": {
-            "type": "integer",
-            "description": "ZK Port"
-        },
-        "user": {
-            "type": "string",
-            "description": "User"
-        },
-        "password": {
-            "type": "string",
-            "description": "Password"
-        },
-        "db": {
-            "type": "string",
-            "description": "DB"
-        },
-        "collection": {
-            "type": "string",
-            "description": "Collection"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-mongo/src/main/resources/reference.properties
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-mongo/src/main/resources/reference.properties b/trunk/streams-contrib/streams-persist-mongo/src/main/resources/reference.properties
deleted file mode 100644
index 699f655..0000000
--- a/trunk/streams-contrib/streams-persist-mongo/src/main/resources/reference.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-hbase.rootdir = "hdfs://localhost:8020/hbase"
-
-zookeeper.znode.parent = "/hbase"
-
-zookeeper.znode.rootserver = "localhost"
-
-hbase.zookeeper.quorum = "localhost"
-
-hbase.zookeeper.property.clientPort = 2181
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-datasift/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-datasift/pom.xml b/trunk/streams-contrib/streams-provider-datasift/pom.xml
deleted file mode 100644
index b49db93..0000000
--- a/trunk/streams-contrib/streams-provider-datasift/pom.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?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-datasift</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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</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</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/com/datasift/Datasift.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/com/datasift/DatasiftConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>com.datasift</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json b/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
deleted file mode 100644
index d6c973d..0000000
--- a/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/Datasift.json
+++ /dev/null
@@ -1,1205 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "javaType": "com.datasift.Datasift",
-    "properties": {
-        "blog": {
-            "javaType": "com.datasift.blog.Blog",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "author": {
-                    "type": "object",
-                    "javaType": "com.datasift.blog.BlogAuthor",
-                    "dynamic": "true",
-                    "properties": {
-                        "link": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "content": {
-                    "type": "string"
-                },
-                "contenttype": {
-                    "type": "string"
-                },
-                "created_at": {
-                    "type": "string"
-                },
-                "domain": {
-                    "type": "string"
-                },
-                "id": {
-                    "type": "string"
-                },
-                "link": {
-                    "type": "string"
-                },
-                "title": {
-                    "type": "string"
-                },
-                "type": {
-                    "type": "string"
-                }
-            }
-        },
-        "demographic": {
-            "dynamic": "true",
-            "properties": {
-                "gender": {
-                    "type": "string"
-                }
-            }
-        },
-        "facebook": {
-            "javaType": "com.datasift.config.Facebook",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "application": {
-                    "type": "string"
-                },
-                "author": {
-                    "javaType": "com.datasift.config.Author",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "avatar": {
-                            "type": "string"
-                        },
-                        "id": {
-                            "type": "string"
-                        },
-                        "link": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "created_at": {
-                    "type": "string"
-                },
-                "id": {
-                    "type": "string"
-                },
-                "likes": {
-                    "javaType": "com.datasift.config.Likes",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "count": {
-                            "type": "long"
-                        },
-                        "ids": {
-                            "type": "string"
-                        },
-                        "names": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "message": {
-                    "type": "string"
-                },
-                "source": {
-                    "type": "string"
-                },
-                "to": {
-                    "javaType": "com.datasift.config.To",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "ids": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "names": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        }
-                    }
-                },
-                "type": {
-                    "type": "string"
-                }
-            }
-        },
-        "interaction": {
-            "javaType": "com.datasift.interaction.Interaction",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "author": {
-                    "javaType": "com.datasift.interaction.Author",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "avatar": {
-                            "type": "string"
-                        },
-                        "id": {
-                            "type": "long"
-                        },
-                        "link": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        },
-                        "username": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "content": {
-                    "type": "string"
-                },
-                "contenttype": {
-                    "type": "string"
-                },
-                "created_at": {
-                    "type": "string"
-                },
-                "geo": {
-                    "javaType": "com.datasift.interaction.Geo",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "latitude": {
-                            "type": "double"
-                        },
-                        "longitude": {
-                            "type": "double"
-                        }
-                    }
-                },
-                "id": {
-                    "type": "string"
-                },
-                "link": {
-                    "type": "string"
-                },
-                "schema": {
-                    "dynamic": "true",
-                    "properties": {
-                        "version": {
-                            "type": "long"
-                        }
-                    }
-                },
-                "source": {
-                    "type": "string"
-                },
-                "tags": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "title": {
-                    "type": "string"
-                },
-                "type": {
-                    "type": "string"
-                }
-            }
-        },
-        "klout": {
-            "javaType": "com.datasift.klout.Klout",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "score": {
-                    "type": "long"
-                }
-            }
-        },
-        "language": {
-            "javaType": "com.datasift.interaction.Language",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "confidence": {
-                    "type": "long"
-                },
-                "tag": {
-                    "type": "string"
-                }
-            }
-        },
-        "links": {
-            "javaType": "com.datasift.interaction.Links",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "code": {
-                    "type": "long"
-                },
-                "created_at": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "hops": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "meta": {
-                    "dynamic": "true",
-                    "javaType": "com.datasift.interaction.Meta",
-                    "type": "object",
-                    "properties": {
-                        "charset": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "content_type": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "description": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "keywords": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "lang": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "opengraph": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "javaType": "com.datasift.interaction.meta.OpenGraph",
-                                    "type": "object",
-                                    "dynamic": "true",
-                                    "properties": {
-                                        "description": {
-                                            "type": "string"
-                                        },
-                                        "image": {
-                                            "type": "string"
-                                        },
-                                        "site_name": {
-                                            "type": "string"
-                                        },
-                                        "title": {
-                                            "type": "string"
-                                        },
-                                        "type": {
-                                            "type": "string"
-                                        },
-                                        "url": {
-                                            "type": "string"
-                                        }
-                                    }
-                                }
-                            ]
-                        },
-                        "twitter": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "javaType": "com.datasift.interaction.meta.Twitter",
-                                    "type": "object",
-                                    "dynamic": "true",
-                                    "properties": {
-                                        "card": {
-                                            "type": "string"
-                                        },
-                                        "creator": {
-                                            "type": "string"
-                                        },
-                                        "description": {
-                                            "type": "string"
-                                        },
-                                        "image": {
-                                            "type": "string"
-                                        },
-                                        "player": {
-                                            "type": "string"
-                                        },
-                                        "player_height": {
-                                            "type": "string"
-                                        },
-                                        "player_width": {
-                                            "type": "string"
-                                        },
-                                        "site": {
-                                            "type": "string"
-                                        },
-                                        "title": {
-                                            "type": "string"
-                                        },
-                                        "url": {
-                                            "type": "string"
-                                        }
-                                    }
-                                }
-                            ]
-                        }
-                    }
-                },
-                "normalized_url": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "retweet_count": {
-                    "type": "long"
-                },
-                "title": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "url": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                }
-            }
-        },
-        "salience": {
-            "javaType": "com.datasift.salience.Salience",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "content": {
-                    "javaType": "com.datasift.salience.content.Content",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "entities": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "javaType": "com.datasift.salience.content.Entities",
-                                    "type": "object",
-                                    "dynamic": "true",
-                                    "properties": {
-                                        "about": {
-                                            "type": "long"
-                                        },
-                                        "confident": {
-                                            "type": "long"
-                                        },
-                                        "evidence": {
-                                            "type": "long"
-                                        },
-                                        "label": {
-                                            "type": "string"
-                                        },
-                                        "name": {
-                                            "type": "string"
-                                        },
-                                        "sentiment": {
-                                            "type": "long"
-                                        },
-                                        "themes": {
-                                            "type": "string"
-                                        },
-                                        "type": {
-                                            "type": "string"
-                                        }
-                                    }
-                                }
-                            ]
-                        },
-                        "sentiment": {
-                            "type": "long"
-                        }
-                    }
-                },
-                "title": {
-                    "javaType": "com.datasift.salience.title.Title",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "entities": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "javaType": "com.datasift.salience.title.Entities",
-                                    "type": "object",
-                                    "dynamic": "true",
-                                    "properties": {
-                                        "about": {
-                                            "type": "long"
-                                        },
-                                        "confident": {
-                                            "type": "long"
-                                        },
-                                        "evidence": {
-                                            "type": "long"
-                                        },
-                                        "label": {
-                                            "type": "string"
-                                        },
-                                        "name": {
-                                            "type": "string"
-                                        },
-                                        "sentiment": {
-                                            "type": "long"
-                                        },
-                                        "themes": {
-                                            "type": "string"
-                                        },
-                                        "type": {
-                                            "type": "string"
-                                        }
-                                    }
-                                }
-                            ]
-                        },
-                        "sentiment": {
-                            "type": "long"
-                        }
-                    }
-                }
-            }
-        },
-        "trends": {
-            "javaType": "com.datasift.trends.Trends",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "content": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "source": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "type": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                }
-            }
-        },
-        "twitter": {
-            "javaType": "com.datasift.twitter.Twitter",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "created_at": {
-                    "type": "string"
-                },
-                "domains": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "filter_level": {
-                    "type": "string"
-                },
-                "geo": {
-                    "javaType": "com.datasift.twitter.Geo",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "latitude": {
-                            "type": "double"
-                        },
-                        "longitude": {
-                            "type": "double"
-                        }
-                    }
-                },
-                "hashtags": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "id": {
-                    "type": "string"
-                },
-                "in_reply_to_screen_name": {
-                    "type": "string"
-                },
-                "in_reply_to_status_id": {
-                    "type": "string"
-                },
-                "in_reply_to_user_id": {
-                    "type": "string"
-                },
-                "lang": {
-                    "type": "string"
-                },
-                "links": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "media": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "javaType": "com.datasift.twitter.Media",
-                            "type": "object",
-                            "dynamic": "true",
-                            "properties": {
-                                "display_url": {
-                                    "type": "string"
-                                },
-                                "expanded_url": {
-                                    "type": "string"
-                                },
-                                "id": {
-                                    "type": "long"
-                                },
-                                "id_str": {
-                                    "type": "string"
-                                },
-                                "media_url": {
-                                    "type": "string"
-                                },
-                                "media_url_https": {
-                                    "type": "string"
-                                },
-                                "sizes": {
-                                    "dynamic": "true",
-                                    "properties": {
-                                        "large": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        },
-                                        "medium": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        },
-                                        "small": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        },
-                                        "thumb": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        }
-                                    }
-                                },
-                                "source_status_id": {
-                                    "type": "long"
-                                },
-                                "source_status_id_str": {
-                                    "type": "string"
-                                },
-                                "type": {
-                                    "type": "string"
-                                },
-                                "url": {
-                                    "type": "string"
-                                }
-                            }
-                        }
-                    ]
-                },
-                "mention_ids": {
-                    "type": "long"
-                },
-                "mentions": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "place": {
-                    "javaType": "com.datasift.twitter.Place",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "attributes": {
-                            "dynamic": "true",
-                            "properties": {
-                                "street_address": {
-                                    "type": "string"
-                                }
-                            }
-                        },
-                        "country": {
-                            "type": "string"
-                        },
-                        "country_code": {
-                            "type": "string"
-                        },
-                        "full_name": {
-                            "type": "string"
-                        },
-                        "id": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        },
-                        "place_type": {
-                            "type": "string"
-                        },
-                        "url": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "retweet": {
-                    "javaType": "com.datasift.twitter.Retweet",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "count": {
-                            "type": "long"
-                        },
-                        "created_at": {
-                            "type": "string"
-                        },
-                        "domains": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "hashtags": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "id": {
-                            "type": "string"
-                        },
-                        "lang": {
-                            "type": "string"
-                        },
-                        "links": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "media": {
-                            "dynamic": "true",
-                            "properties": {
-                                "display_url": {
-                                    "type": "string"
-                                },
-                                "expanded_url": {
-                                    "type": "string"
-                                },
-                                "id": {
-                                    "type": "long"
-                                },
-                                "id_str": {
-                                    "type": "string"
-                                },
-                                "media_url": {
-                                    "type": "string"
-                                },
-                                "media_url_https": {
-                                    "type": "string"
-                                },
-                                "sizes": {
-                                    "dynamic": "true",
-                                    "properties": {
-                                        "large": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        },
-                                        "medium": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        },
-                                        "small": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        },
-                                        "thumb": {
-                                            "dynamic": "true",
-                                            "properties": {
-                                                "h": {
-                                                    "type": "long"
-                                                },
-                                                "resize": {
-                                                    "type": "string"
-                                                },
-                                                "w": {
-                                                    "type": "long"
-                                                }
-                                            }
-                                        }
-                                    }
-                                },
-                                "source_status_id": {
-                                    "type": "long"
-                                },
-                                "source_status_id_str": {
-                                    "type": "string"
-                                },
-                                "type": {
-                                    "type": "string"
-                                },
-                                "url": {
-                                    "type": "string"
-                                }
-                            }
-                        },
-                        "mention_ids": {
-                            "type": "long"
-                        },
-                        "mentions": {
-                            "type": "array",
-                            "items": [
-                                {
-                                    "type": "string"
-                                }
-                            ]
-                        },
-                        "source": {
-                            "type": "string"
-                        },
-                        "text": {
-                            "type": "string"
-                        },
-                        "user": {
-                            "javaType": "com.datasift.twitter.User",
-                            "type": "object",
-                            "dynamic": "true",
-                            "properties": {
-                                "created_at": {
-                                    "type": "string"
-                                },
-                                "description": {
-                                    "type": "string"
-                                },
-                                "followers_count": {
-                                    "type": "long"
-                                },
-                                "friends_count": {
-                                    "type": "long"
-                                },
-                                "geo_enabled": {
-                                    "type": "boolean"
-                                },
-                                "id": {
-                                    "type": "long"
-                                },
-                                "id_str": {
-                                    "type": "string"
-                                },
-                                "lang": {
-                                    "type": "string"
-                                },
-                                "listed_count": {
-                                    "type": "long"
-                                },
-                                "location": {
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "type": "string"
-                                },
-                                "profile_image_url": {
-                                    "type": "string"
-                                },
-                                "screen_name": {
-                                    "type": "string"
-                                },
-                                "statuses_count": {
-                                    "type": "long"
-                                },
-                                "time_zone": {
-                                    "type": "string"
-                                },
-                                "url": {
-                                    "type": "string"
-                                },
-                                "utc_offset": {
-                                    "type": "long"
-                                }
-                            }
-                        }
-                    }
-                },
-                "retweeted": {
-                    "javaType": "com.datasift.twitter.Retweeted",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "created_at": {
-                            "type": "string"
-                        },
-                        "geo": {
-                            "dynamic": "true",
-                            "properties": {
-                                "latitude": {
-                                    "type": "double"
-                                },
-                                "longitude": {
-                                    "type": "double"
-                                }
-                            }
-                        },
-                        "id": {
-                            "type": "string"
-                        },
-                        "place": {
-                            "dynamic": "true",
-                            "properties": {
-                                "attributes": {
-                                    "type": "object",
-                                    "dynamic": "true"
-                                },
-                                "country": {
-                                    "type": "string"
-                                },
-                                "country_code": {
-                                    "type": "string"
-                                },
-                                "full_name": {
-                                    "type": "string"
-                                },
-                                "id": {
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "type": "string"
-                                },
-                                "place_type": {
-                                    "type": "string"
-                                },
-                                "url": {
-                                    "type": "string"
-                                }
-                            }
-                        },
-                        "source": {
-                            "type": "string"
-                        },
-                        "user": {
-                            "dynamic": "true",
-                            "properties": {
-                                "created_at": {
-                                    "type": "string"
-                                },
-                                "description": {
-                                    "type": "string"
-                                },
-                                "followers_count": {
-                                    "type": "long"
-                                },
-                                "friends_count": {
-                                    "type": "long"
-                                },
-                                "geo_enabled": {
-                                    "type": "boolean"
-                                },
-                                "id": {
-                                    "type": "long"
-                                },
-                                "id_str": {
-                                    "type": "string"
-                                },
-                                "lang": {
-                                    "type": "string"
-                                },
-                                "listed_count": {
-                                    "type": "long"
-                                },
-                                "location": {
-                                    "type": "string"
-                                },
-                                "name": {
-                                    "type": "string"
-                                },
-                                "profile_image_url": {
-                                    "type": "string"
-                                },
-                                "screen_name": {
-                                    "type": "string"
-                                },
-                                "statuses_count": {
-                                    "type": "long"
-                                },
-                                "time_zone": {
-                                    "type": "string"
-                                },
-                                "url": {
-                                    "type": "string"
-                                },
-                                "utc_offset": {
-                                    "type": "long"
-                                },
-                                "verified": {
-                                    "type": "boolean"
-                                }
-                            }
-                        }
-                    }
-                },
-                "source": {
-                    "type": "string"
-                },
-                "text": {
-                    "type": "string"
-                },
-                "user": {
-                    "javaType": "com.datasift.interaction.User",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "created_at": {
-                            "type": "string"
-                        },
-                        "description": {
-                            "type": "string"
-                        },
-                        "followers_count": {
-                            "type": "long"
-                        },
-                        "friends_count": {
-                            "type": "long"
-                        },
-                        "geo_enabled": {
-                            "type": "boolean"
-                        },
-                        "id": {
-                            "type": "long"
-                        },
-                        "id_str": {
-                            "type": "string"
-                        },
-                        "lang": {
-                            "type": "string"
-                        },
-                        "listed_count": {
-                            "type": "long"
-                        },
-                        "location": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        },
-                        "profile_image_url": {
-                            "type": "string"
-                        },
-                        "screen_name": {
-                            "type": "string"
-                        },
-                        "statuses_count": {
-                            "type": "long"
-                        },
-                        "time_zone": {
-                            "type": "string"
-                        },
-                        "url": {
-                            "type": "string"
-                        },
-                        "utc_offset": {
-                            "type": "long"
-                        },
-                        "verified": {
-                            "type": "boolean"
-                        }
-                    }
-                }
-            }
-        },
-        "youtube": {
-            "javaType": "com.datasift.youtube.YouTube",
-            "type": "object",
-            "dynamic": "true",
-            "properties": {
-                "author": {
-                    "javaType": "com.datasift.youtube.Author",
-                    "type": "object",
-                    "dynamic": "true",
-                    "properties": {
-                        "link": {
-                            "type": "string"
-                        },
-                        "name": {
-                            "type": "string"
-                        }
-                    }
-                },
-                "commentslink": {
-                    "type": "string"
-                },
-                "content": {
-                    "type": "string"
-                },
-                "contenttype": {
-                    "type": "string"
-                },
-                "created_at": {
-                    "type": "string"
-                },
-                "id": {
-                    "type": "string"
-                },
-                "title": {
-                    "type": "string"
-                },
-                "type": {
-                    "type": "string"
-                },
-                "videolink": {
-                    "type": "string"
-                }
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/DatasiftConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/DatasiftConfiguration.json b/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/DatasiftConfiguration.json
deleted file mode 100644
index 531f30b..0000000
--- a/trunk/streams-contrib/streams-provider-datasift/src/main/jsonschema/com/datasift/DatasiftConfiguration.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "com.datasift.DatasiftConfiguration",
-    "properties": {
-        "apiKey": {
-            "type": "string"
-        },
-        "userName": {
-            "type": "long"
-        },
-        "streamHash": {
-            "type": "array",
-            "minItems": 1,
-            "items": {
-                "type": "string"
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-datasift/src/test/java/com/datasift/test/DatasiftSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-datasift/src/test/java/com/datasift/test/DatasiftSerDeTest.java b/trunk/streams-contrib/streams-provider-datasift/src/test/java/com/datasift/test/DatasiftSerDeTest.java
deleted file mode 100644
index 6a586d0..0000000
--- a/trunk/streams-contrib/streams-provider-datasift/src/test/java/com/datasift/test/DatasiftSerDeTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.datasift.test;
-
-import com.datasift.Datasift;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 8/20/13
- * Time: 5:57 PM
- * To change this template use File | Settings | File Templates.
- */
-public class DatasiftSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(DatasiftSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @Ignore
-    @Test
-    public void Tests()
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = DatasiftSerDeTest.class.getResourceAsStream("/datasift_jsons.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                LOGGER.debug(line);
-
-                Datasift ser = mapper.readValue(line, Datasift.class);
-
-                String de = mapper.writeValueAsString(ser);
-
-                LOGGER.debug(de);
-
-                Datasift serde = mapper.readValue(de, Datasift.class);
-
-                Assert.assertEquals(ser, serde);
-
-                LOGGER.debug(mapper.writeValueAsString(serde));
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}


[23/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
deleted file mode 100644
index fd50125..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-edc-instagram</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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</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</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo/**/*.java</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/instagram/Instagram.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>com.instagram</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/main/jsonschema/com/instagram/Instagram.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/main/jsonschema/com/instagram/Instagram.json b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/main/jsonschema/com/instagram/Instagram.json
deleted file mode 100644
index 029f6e9..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/main/jsonschema/com/instagram/Instagram.json
+++ /dev/null
@@ -1,204 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "com.instagram.pojo.Instagram",
-    "properties": {
-        "caption": {
-            "type": "object",
-            "properties": {
-                "created_time": {
-                    "format": "utc-millisec",
-                    "type": "string"
-                },
-                "from": {
-                    "$ref": "#/properties/user"
-                },
-                "id": {
-                    "type": "string"
-                },
-                "text": {
-                    "type": "string"
-                }
-            }
-        },
-        "comments": {
-            "type": "object",
-            "properties": {
-                "count": {
-                    "type": "integer"
-                },
-                "data": {
-                    "type": "array",
-                    "items": {
-                        "type": "object",
-                        "javaType" : "com.instagram.pojo.Comment",
-                        "properties": {
-                            "created_time": {
-                                "format": "utc-millisec",
-                                "type": "string"
-                            },
-                            "from": {
-                                "$ref": "#/properties/user"
-                            },
-                            "id": {
-                                "type": "string"
-                            },
-                            "text": {
-                                "type": "string"
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "created_time": {
-            "format": "utc-millisec",
-            "type": "string"
-        },
-        "filter": {
-            "type": "string"
-        },
-        "id": {
-            "type": "string"
-        },
-        "images": {
-            "type": "object",
-            "properties": {
-                "low_resolution": {
-                    "type": "object",
-                    "javaType" : "com.instagram.pojo.Media",
-                    "properties": {
-                        "height": {
-                            "type": "integer"
-                        },
-                        "url": {
-                            "format": "uri",
-                            "type": "string"
-                        },
-                        "width": {
-                            "type": "integer"
-                        }
-                    }
-                },
-                "standard_resolution": {
-                    "$ref": "#/properties/images/properties/low_resolution"
-                },
-                "thumbnail": {
-                    "$ref": "#/properties/images/properties/low_resolution"
-                }
-            }
-        },
-        "likes": {
-            "type": "object",
-            "properties": {
-                "count": {
-                    "type": "integer"
-                },
-                "data": {
-                    "type": "array",
-                    "items": {
-                        "$ref": "#/properties/user"
-                    }
-                }
-            }
-        },
-        "link": {
-            "format": "uri",
-            "type": "string"
-        },
-        "location": {
-            "type": "object",
-            "properties": {
-                "latitude": {
-                    "type": "number"
-                },
-                "longitude": {
-                    "type": "number"
-                },
-                "id": {
-                    "type": "string"
-                },
-                "street_address": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                }
-            }
-        },
-        "tags": {
-            "type": "array",
-            "items": {
-                "type": "string"
-            }
-        },
-        "type": {
-            "type": "string"
-        },
-        "user": {
-            "type": "object",
-            "javaType" : "com.instagram.pojo.User",
-            "properties": {
-                "bio": {
-                    "type": "string"
-                },
-                "full_name": {
-                    "type": "string"
-                },
-                "id": {
-                    "type": "string"
-                },
-                "profile_picture": {
-                    "format": "uri",
-                    "type": "string"
-                },
-                "username": {
-                    "type": "string"
-                },
-                "website": {
-                    "format": "uri",
-                    "type": "string"
-                }
-            }
-        },
-        "user_has_liked": {
-            "type": "boolean"
-        },
-        "users_in_photo": {
-            "type": "array",
-            "items": {
-                "type": "object",
-                "javaType" : "com.instagram.pojo.UserPosition",
-                "properties": {
-                    "user": {
-                        "$ref": "#/properties/user"
-                    },
-                    "position": {
-                        "type": "object",
-                        "javaType" : "com.instagram.pojo.Position",
-                        "properties": {
-                            "x": {
-                                "type": "number"
-                            },
-                            "y": {
-                                "type": "number"
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "videos": {
-            "type": "object",
-            "properties": {
-                "low_resolution": {
-                    "$ref": "#/properties/images/properties/low_resolution"
-                },
-                "standard_resolution": {
-                    "$ref": "#/properties/images/properties/low_resolution"
-                }
-            }
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/java/com/instagram/test/InstagramSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/java/com/instagram/test/InstagramSerDeTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/java/com/instagram/test/InstagramSerDeTest.java
deleted file mode 100644
index d91693b..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/java/com/instagram/test/InstagramSerDeTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.instagram.test;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.instagram.pojo.Instagram;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-public class InstagramSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(InstagramSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @Test
-    public void Tests()
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = InstagramSerDeTest.class.getResourceAsStream("/instagram_jsons.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                LOGGER.debug(line);
-
-                Instagram ser = mapper.readValue(line, Instagram.class);
-
-                String des = mapper.writeValueAsString(ser);
-                LOGGER.debug(des);
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/resources/instagram_jsons.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/resources/instagram_jsons.txt b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/resources/instagram_jsons.txt
deleted file mode 100644
index c24d681..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-instagram/src/test/resources/instagram_jsons.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-{ "comments": { "data": [], "count": 0 }, "caption": { "created_time": "1296710352", "text": "Inside le truc #foodtruck", "from": { "username": "kevin", "full_name": "Kevin Systrom", "id": "3" }, "id": "26621408" }, "likes": { "count": 15, "data": [{ "username": "mikeyk", "full_name": "Mike Krieger", "id": "4", "profile_picture": "..." }] }, "link": "http://instagr.am/p/BWrVZ/", "user": { "username": "kevin", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_3_75sq_1295574122.jpg", "id": "3" }, "created_time": "1296710327", "images": { "low_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/6ea7baea55774c5e81e7e3e1f6e791a7_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/6ea7baea55774c5e81e7e3e1f6e791a7_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/6ea7baea55774c5e81e7e3e1f6e791a7_7.jpg", "width":
  612, "height": 612 } }, "type": "image", "users_in_photo": [], "filter": "Earlybird", "tags": ["foodtruck"], "id": "22721881", "location": { "latitude": 37.778720183610183, "longitude": -122.3962783813477, "id": "520640", "street_address": "", "name": "Le Truc" } }
-{ "location": { "id": "833", "latitude": 37.77956816727314, "longitude": -122.41387367248539, "name": "Civic Center BART" }, "comments": { "count": 16, "data": [ ] }, "caption": null, "link": "http://instagr.am/p/BXsFz/", "likes": { "count": 190, "data": [{ "username": "shayne", "full_name": "Shayne Sweeney", "id": "20", "profile_picture": "..." }] }, "created_time": "1296748524", "images": { "low_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/03/efc502667a554329b52d9a6bab35b24a_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/03/efc502667a554329b52d9a6bab35b24a_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/03/efc502667a554329b52d9a6bab35b24a_7.jpg", "width": 612, "height": 612 } }, "type": "image", "users_in_photo": [], "filter": "Earlybird", "tags": [], "id": "22987123", "user": { "username": "kevin", "full_name": "Kevin 
 S", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_3_75sq_1295574122.jpg", "id": "3" } }
-{ "type": "image", "users_in_photo": [], "filter": "Earlybird", "tags": ["expobar"], "comments": { "data": [], "count": 0 }, "caption": { "created_time": "1296532028", "text": "@mikeyk pulls a shot on our #Expobar", "from": { "username": "josh", "full_name": "Josh Riedel", "id": "33" }, "id": "25663923" }, "likes": { "count": 35, "data": [{ "username": "mikeyk", "full_name": "Mikeyk", "id": "4", "profile_picture": "..." }] }, "link": "http://instagr.am/p/BUS3X/", "user": { "username": "josh", "profile_picture": "...", "id": "33" }, "created_time": "1296531955", "images": { "low_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/01/31/32d364527512437a8a17ba308a7c83bb_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http://distillery.s3.amazonaws.com/media/2011/01/31/32d364527512437a8a17ba308a7c83bb_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/01/31/32d364527512437a8a17ba308a7c83bb_
 7.jpg", "width": 612, "height": 612 } }, "user_has_liked": false, "id": "22097367", "location": { "latitude": 37.780885099999999, "id": "514276", "longitude": -122.3948632, "name": "Instagram" } }
-{ "type": "image", "users_in_photo": [], "filter": "Earlybird", "tags": ["snow"], "comments": { "data": [{ "created_time": "1296703540", "text": "Snow", "from": { "username": "emohatch", "full_name": "Dave", "id": "1242695" }, "id": "26589964" }, { "created_time": "1296707889", "text": "#snow", "from": { "username": "emohatch", "full_name": "Emo Hatch", "id": "1242695" }, "id": "26609649" }], "count": 3 }, "caption": { "created_time": "1296703540", "text": "#Snow", "from": { "username": "emohatch", "id": "1242695" }, "id": "26589964" }, "likes": { "count": 1, "data": [{ "username": "mikeyk", "full_name": "Mike Krieger", "id": "4", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg" }] },        "link": "http://instagr.am/p/BWl6P/", "user": { "username": "emohatch", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg", "id": "1242695", "full_name": "Dave" }, "created_time": "1296703536", 
 "images": { "low_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_7.jpg", "width": 612, "height": 612 } }, "id": "22699663", "location": null }
-{ "type": "image", "users_in_photo": [{ "user": { "username": "kevin", "full_name": "Kevin S", "id": "3", "profile_picture": "..." }, "position": { "x": 0.315, "y": 0.9111 } }], "filter": "Walden", "tags": [], "comments": { "data": [{ "created_time": "1279332030", "text": "Love the sign here", "from": { "username": "mikeyk", "full_name": "Mikey Krieger", "id": "4", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg" }, "id": "8" }, { "created_time": "1279341004", "text": "Chilako taco", "from": { "username": "kevin", "full_name": "Kevin S", "id": "3", "profile_picture": "..." }, "id": "3" }], "count": 2 }, "caption": null, "likes": { "count": 1, "data": [{ "username": "mikeyk", "full_name": "Mikeyk", "id": "4", "profile_picture": "..." }] }, "link": "http://instagr.am/p/D/", "user": { "username": "kevin", "full_name": "Kevin S", "profile_picture": "...", "bio": "...", "website": "...", "id": "3" }, "created_time": "1279340983", "image
 s": { "low_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2010/07/16/4de37e03aa4b4372843a7eb33fa41cad_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http://distillery.s3.amazonaws.com/media/2010/07/16/4de37e03aa4b4372843a7eb33fa41cad_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http://distillery.s3.amazonaws.com/media/2010/07/16/4de37e03aa4b4372843a7eb33fa41cad_7.jpg", "width": 612, "height": 612 } }, "id": "3", "location": null }
-{ "type": "video", "videos": { "low_resolution": { "url": "http://distilleryvesper9-13.ak.instagram.com/090d06dad9cd11e2aa0912313817975d_102.mp4", "width": 480, "height": 480 }, "standard_resolution": { "url": "http://distilleryvesper9-13.ak.instagram.com/090d06dad9cd11e2aa0912313817975d_101.mp4", "width": 640, "height": 640 } }, "users_in_photo": null, "filter": "Vesper", "tags": ["snow"], "comments": { "data": [{ "created_time": "1279332030", "text": "Love the sign here", "from": { "username": "mikeyk", "full_name": "Mikey Krieger", "id": "4", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg" }, "id": "8" }, { "created_time": "1279341004", "text": "Chilako taco", "from": { "username": "kevin", "full_name": "Kevin S", "id": "3", "profile_picture": "..." }, "id": "3" }], "count": 2 }, "caption": null, "likes": { "count": 1, "data": [{ "username": "mikeyk", "full_name": "Mikeyk", "id": "4", "profile_picture": "..." }] }, "link": "htt
 p://instagr.am/p/D/", "user": { "username": "kevin", "full_name": "Kevin S", "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_3_75sq_1295574122.jpg", "id": "3" }, "created_time": "1279340983", "images": { "low_resolution": { "url": "http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http://distilleryimage2.ak.instagram.com/11f75f1cd9cc11e2a0fd22000aa8039a_7.jpg", "width": 612, "height": 612 } }, "id": "363839373298", "location": { "latitude": 37.780885099999999, "id": "514276", "longitude": -122.3948632, "name": "Instagram" } }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
deleted file mode 100644
index d74def2..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-edc-reddit</artifactId>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-
-            <type>jar</type>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-xml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>jackson-xml-databind</artifactId>
-            <version>0.5.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <version>1.0.9</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-            <version>20090211</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </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>
-                <artifactId>maven-clean-plugin</artifactId>
-                <version>2.5</version>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>src/main/java/com/reddit/pojo</directory>
-                            <includes>
-                                <include>**/*</include>
-                            </includes>
-                        </fileset>
-                        <fileset>
-                            <directory>target</directory>
-                            <includes>
-                                <include>**/*</include>
-                            </includes>
-                        </fileset>
-                    </filesets>
-                </configuration>
-            </plugin>
-            <!--<plugin>-->
-                <!--<groupId>org.jsonschema2pojo</groupId>-->
-                <!--<artifactId>jsonschema2pojo-maven-plugin</artifactId>-->
-                <!---->
-                <!--<configuration>-->
-                    <!--<addCompileSourceRoot>true</addCompileSourceRoot>-->
-                    <!--<generateBuilders>true</generateBuilders>-->
-                    <!--<sourcePaths>-->
-                        <!--<sourcePath>src/main/jsonschema/com/reddit</sourcePath>-->
-                    <!--</sourcePaths>-->
-                    <!--<outputDirectory>src/main/java</outputDirectory>-->
-                    <!--<targetPackage>org.apache.streams</targetPackage>-->
-            <!--<useLongIntegers>true</useLongIntegers>-->
-            <!--<useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/main/java/com/reddit/api/RedditActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/main/java/com/reddit/api/RedditActivitySerializer.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/main/java/com/reddit/api/RedditActivitySerializer.java
deleted file mode 100644
index 3dcc66c..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/main/java/com/reddit/api/RedditActivitySerializer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.reddit.api;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.data.util.ActivityUtil;
-import org.apache.streams.gnip.powertrack.GnipActivityFixer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created with IntelliJ IDEA.
- * User: mdelaet
- * Date: 8/29/13
- * Time: 8:32 AM
- * To change this template use File | Settings | File Templates.
- */
-public class RedditActivitySerializer implements ActivitySerializer<String> {
-    private final static Logger LOGGER = LoggerFactory.getLogger(RedditActivitySerializer.class);
-
-    public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ";
-    public static final String PROVIDER_NAME = "facebook";
-
-
-    @Override
-    public String serializationFormat() {
-        return "application/reddit+xml";
-    }
-
-    @Override
-    public String serialize(Activity deserialized) {
-        ObjectMapper jsonMapper = new ObjectMapper();
-        String jsonString = new String();
-        try{
-            jsonString = jsonMapper.writeValueAsString(deserialized);
-        }catch(Exception e){
-            LOGGER.error("Exception serializing Activity Object: " + e);
-        }
-        return jsonString;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public Activity deserialize(String serialized) {
-        ObjectMapper jsonMapper = new ObjectMapper();
-        JSONObject jsonObject = new JSONObject();
-        JSONObject fixedObject = new JSONObject();
-
-        HashMap<String, String> raw = new HashMap<String, String>();
-        raw.put("original", serialized);
-
-        try{
-            jsonObject = new JSONObject(serialized);
-            fixedObject = GnipActivityFixer.fix(jsonObject);
-        }catch(Exception e){
-            LOGGER.error("Exception deserializing string: " + e);
-        }
-
-        Activity activity = new Activity();
-        try {
-            activity = jsonMapper.readValue(fixedObject.toString(), Activity.class);
-            Map<String, Object> extension = ActivityUtil.ensureExtensions(activity);
-            if (fixedObject.names().toString().contains("object")){
-                if (fixedObject.getJSONObject("object").names().toString().contains("statistics")){
-                    if (fixedObject.getJSONObject("object").getJSONObject("statistics").names().toString().contains("upVotes")){
-                        extension.put("likes", fixedObject.getJSONObject("object").getJSONObject("statistics").get("upVotes"));
-                    }
-                }
-            }
-
-        } catch( Exception e ) {
-            LOGGER.error(jsonObject.toString());
-            LOGGER.error(fixedObject.toString());
-            e.printStackTrace();
-        }
-        return activity;
-    }
-
-    @Override
-    public List<Activity> deserializeAll(List<String> serializedList) {
-        //TODO Support
-        throw new NotImplementedException("Not currently supported by this deserializer");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/java/com/reddit/api/RedditEDCAsActivityJSONTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/java/com/reddit/api/RedditEDCAsActivityJSONTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/java/com/reddit/api/RedditEDCAsActivityJSONTest.java
deleted file mode 100644
index 4bdb312..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/java/com/reddit/api/RedditEDCAsActivityJSONTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.reddit.api;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.streams.pojo.json.Activity;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
-* Created with IntelliJ IDEA.
-* User: mdelaet
-* Date: 8/30/13
-* Time: 1:21 PM
-* To change this template use File | Settings | File Templates.
-*/
-public class RedditEDCAsActivityJSONTest {
-    private final static Logger LOGGER = LoggerFactory.getLogger(RedditEDCAsActivityJSONTest.class);
-
-    private ObjectMapper jsonMapper;
-    XmlMapper xmlMapper;
-    private RedditActivitySerializer redditSerializer;
-
-    public RedditEDCAsActivityJSONTest() {
-        redditSerializer = new RedditActivitySerializer();
-        jsonMapper = new ObjectMapper();
-        xmlMapper = new XmlMapper();
-    }
-
-    @Test
-    public void Tests()   throws Exception
-    {
-        InputStream is = RedditEDCAsActivityJSONTest.class.getResourceAsStream("/RedditEDCFixed.json");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-        jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        jsonMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        jsonMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-
-                Activity activity = null;
-                try {
-                    activity = redditSerializer.deserialize(line);
-                } catch( Exception e ) {
-                    LOGGER.error(line);
-                    e.printStackTrace();
-                    Assert.fail("Exception on redditSerializer.deserialize(jsonString) : " + e);
-                }
-
-                try {
-                    String activityString = redditSerializer.serialize(activity);
-                    System.out.println(jsonMapper.writeValueAsString(activity));
-                }catch (Exception e ){
-                    LOGGER.error(activity.toString());
-                    e.printStackTrace();
-                    Assert.fail("Exception on redditSerializer.serialize(activity) : " + e);
-                }
-
-                //LOGGER.info(activity);
-            }
-        } catch( Exception e ) {
-            System.out.println("Exception: " + e);
-            LOGGER.error(e.getMessage());
-            Assert.fail("");
-        }
-    }
-
-}
-


[46/71] [abbrv] git commit: Missing a jsonbean

Posted by sb...@apache.org.
Missing a jsonbean

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572650 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/00a3a19b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/00a3a19b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/00a3a19b

Branch: refs/heads/master
Commit: 00a3a19b9d7decd378c046dc433b7fe4fba3246a
Parents: 8f4e4a5
Author: sblackmon <sb...@unknown>
Authored: Thu Feb 27 16:36:54 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Thu Feb 27 16:36:54 2014 +0000

----------------------------------------------------------------------
 .../streams/hdfs/HdfsWriterConfiguration.json     | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/00a3a19b/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsWriterConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsWriterConfiguration.json b/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsWriterConfiguration.json
new file mode 100644
index 0000000..5cadd7d
--- /dev/null
+++ b/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsWriterConfiguration.json
@@ -0,0 +1,18 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "org.apache.streams.hdfs.HdfsWriterConfiguration",
+    "extends": {"$ref":"HdfsConfiguration.json"},
+    "javaInterfaces": ["java.io.Serializable"],
+    "properties": {
+        "writerPath": {
+            "type": "string",
+            "description": "Path "
+        },
+        "writerFilePrefix": {
+            "type": "string",
+            "description": "File Prefix"
+        }
+    }
+}
\ No newline at end of file


[70/71] [abbrv] git commit: iml should not be in source control

Posted by sb...@apache.org.
iml should not be in source control


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/aaeb0217
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/aaeb0217
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/aaeb0217

Branch: refs/heads/STREAMS-26
Commit: aaeb0217911150e58333776dc211b1940a48dbcc
Parents: c614c6a
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 18:18:42 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 18:18:42 2014 -0500

----------------------------------------------------------------------
 .../streams-components-test.iml                 | 55 --------------------
 1 file changed, 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aaeb0217/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
deleted file mode 100644
index 60ae74a..0000000
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="streams-core (1)" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="module" module-name="streams-util (1)" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.1" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.1" level="project" />
-    <orderEntry type="module" module-name="streams-pojo (1)" />
-    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
-    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-


[47/71] [abbrv] git commit: Refactored to use StreamsLocalBuilder

Posted by sb...@apache.org.
Refactored to use StreamsLocalBuilder

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572750 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/728a2258
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/728a2258
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/728a2258

Branch: refs/heads/master
Commit: 728a22581839f9a45f5d887b3121fcc4a3ffdb74
Parents: 00a3a19
Author: sblackmon <sb...@unknown>
Authored: Thu Feb 27 22:08:09 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Thu Feb 27 22:08:09 2014 +0000

----------------------------------------------------------------------
 .../streams/console/ConsolePersistReader.java   |   8 +-
 .../streams-persist-elasticsearch/pom.xml       |   4 +-
 .../ElasticsearchPersistReader.java             |   2 +-
 .../ElasticsearchPersistUpdater.java            | 512 +++++++++++++++++++
 .../ElasticsearchPersistWriter.java             |  26 +-
 .../elasticsearch/PercolateProcessor.java       |   8 +-
 6 files changed, 535 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/728a2258/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
index 460d95d..2addc65 100644
--- a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
@@ -62,10 +62,14 @@ public class ConsolePersistReader implements StreamsPersistReader {
 
         }
 
-        LOGGER.info("{} providing {} docs", STREAMS_ID, persistQueue.size());
+        LOGGER.info("Providing {} docs", persistQueue.size());
+
+        StreamsResultSet result =  new StreamsResultSet(persistQueue);
+
         LOGGER.info("{} Exiting", STREAMS_ID);
 
-        return (StreamsResultSet) persistQueue;
+        return result;
+
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/728a2258/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index e91ef83..ee11944 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -35,7 +35,7 @@
         <dependency>
             <groupId>org.elasticsearch</groupId>
             <artifactId>elasticsearch</artifactId>
-            <version>0.90.5</version>
+            <version>1.0.0</version>
             <scope>compile</scope>
             <type>jar</type>
         </dependency>
@@ -74,7 +74,7 @@
                     <generateBuilders>true</generateBuilders>
                     <sourcePaths>
                         <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/HdfsWriterConfiguration.json</sourcePath>
+                        <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json</sourcePath>
                     </sourcePaths>
                     <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
                     <targetPackage>org.apache.streams.elasticsearch.pojo</targetPackage>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/728a2258/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
index 480e3bc..8dbdeb0 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
@@ -153,7 +153,7 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
 
             if( clauses > 0 ) {
                 //    search.setPostFilter(allFilters);
-                search.setFilter(allFilters);
+                search.setPostFilter(allFilters);
             }
 
             // TODO: Replace when all clusters are upgraded past 0.90.4 so we can implement a RANDOM scroll.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/728a2258/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
new file mode 100644
index 0000000..ef6c28d
--- /dev/null
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistUpdater.java
@@ -0,0 +1,512 @@
+package org.apache.streams.elasticsearch;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Objects;
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+import org.elasticsearch.action.ActionListener;
+import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
+import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
+import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
+import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
+import org.elasticsearch.action.bulk.BulkItemResponse;
+import org.elasticsearch.action.bulk.BulkRequestBuilder;
+import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.index.IndexRequest;
+import org.elasticsearch.action.search.SearchRequestBuilder;
+import org.elasticsearch.action.update.UpdateRequest;
+import org.elasticsearch.client.Client;
+import org.elasticsearch.common.settings.ImmutableSettings;
+import org.elasticsearch.index.query.IdsQueryBuilder;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.SearchHits;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.Closeable;
+import java.io.Flushable;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.util.*;
+
+//import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
+
+public class ElasticsearchPersistUpdater extends ElasticsearchPersistWriter implements StreamsPersistWriter, Flushable, Closeable
+{
+    private final static Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistUpdater.class);
+    private final static NumberFormat MEGABYTE_FORMAT = new DecimalFormat("#.##");
+    private final static NumberFormat NUMBER_FORMAT = new DecimalFormat("###,###,###,###");
+
+    protected ElasticsearchClientManager manager;
+    protected Client client;
+    private String parentID = null;
+    protected BulkRequestBuilder bulkRequest;
+    private OutputStreamWriter currentWriter = null;
+
+    protected String index = null;
+    protected String type = null;
+    private int batchSize = 50;
+    private int totalRecordsWritten = 0;
+    private boolean veryLargeBulk = false;  // by default this setting is set to false
+
+    private final static Long DEFAULT_BULK_FLUSH_THRESHOLD = 5l * 1024l * 1024l;
+    private static final long WAITING_DOCS_LIMIT = 10000;
+
+    public volatile long flushThresholdSizeInBytes = DEFAULT_BULK_FLUSH_THRESHOLD;
+
+    private volatile int totalSent = 0;
+    private volatile int totalSeconds = 0;
+    private volatile int totalOk = 0;
+    private volatile int totalFailed = 0;
+    private volatile int totalBatchCount = 0;
+    private volatile long totalSizeInBytes = 0;
+
+    private volatile long batchSizeInBytes = 0;
+    private volatile int batchItemsSent = 0;
+
+    public void setIndex(String index) {
+        this.index = index;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public void setBatchSize(int batchSize) {
+        this.batchSize = batchSize;
+    }
+
+    public void setVeryLargeBulk(boolean veryLargeBulk) {
+        this.veryLargeBulk = veryLargeBulk;
+    }
+
+    private final List<String> affectedIndexes = new ArrayList<String>();
+
+    public int getTotalOutstanding()                           { return this.totalSent - (this.totalFailed + this.totalOk); }
+    public long getFlushThresholdSizeInBytes()                 { return flushThresholdSizeInBytes; }
+    public int getTotalSent()                                  { return totalSent; }
+    public int getTotalSeconds()                               { return totalSeconds; }
+    public int getTotalOk()                                    { return totalOk; }
+    public int getTotalFailed()                                { return totalFailed; }
+    public int getTotalBatchCount()                            { return totalBatchCount; }
+    public long getTotalSizeInBytes()                          { return totalSizeInBytes; }
+    public long getBatchSizeInBytes()                          { return batchSizeInBytes; }
+    public int getBatchItemsSent()                             { return batchItemsSent; }
+    public List<String> getAffectedIndexes()                   { return this.affectedIndexes; }
+
+    public void setFlushThresholdSizeInBytes(long sizeInBytes)  { this.flushThresholdSizeInBytes = sizeInBytes; }
+
+    Thread task;
+
+    protected volatile Queue<StreamsDatum> persistQueue;
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private ElasticsearchConfiguration config;
+
+    public ElasticsearchPersistUpdater() {
+        Config config = StreamsConfigurator.config.getConfig("elasticsearch");
+        this.config = ElasticsearchConfigurator.detectConfiguration(config);
+    }
+
+    public ElasticsearchPersistUpdater(ElasticsearchConfiguration config) {
+        this.config = config;
+    }
+
+    private static final int  BYTES_IN_MB = 1024*1024;
+    private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
+    private volatile int  totalByteCount = 0;
+    private volatile int  byteCount = 0;
+
+    public boolean isConnected() 		                { return (client != null); }
+
+    @Override
+    public void write(StreamsDatum streamsDatum) {
+
+        Preconditions.checkNotNull(streamsDatum);
+        Preconditions.checkNotNull(streamsDatum.getDocument());
+        Preconditions.checkNotNull(streamsDatum.getMetadata());
+        Preconditions.checkNotNull(streamsDatum.getMetadata().get("id"));
+
+        String id;
+        String json;
+        try {
+
+            json = mapper.writeValueAsString(streamsDatum.getDocument());
+
+            id = (String) streamsDatum.getMetadata().get("id");
+
+            add(index, type, id, json);
+
+        } catch (JsonProcessingException e) {
+            LOGGER.warn("{} {}", e.getLocation(), e.getMessage());
+
+        }
+    }
+
+    public void start() {
+
+        manager = new ElasticsearchClientManager(config);
+        client = manager.getClient();
+
+        LOGGER.info(client.toString());
+    }
+
+    public void cleanUp() {
+
+        try {
+            flush();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        close();
+    }
+
+    @Override
+    public void close()
+    {
+        try
+        {
+            // before they close, check to ensure that
+            this.flush();
+
+            int count = 0;
+            // We are going to give it 5 minutes.
+            while(this.getTotalOutstanding() > 0 && count++ < 20 * 60 * 5)
+                Thread.sleep(50);
+
+            if(this.getTotalOutstanding() > 0)
+            {
+                LOGGER.error("We never cleared our buffer");
+            }
+
+
+            for(String indexName : this.getAffectedIndexes())
+            {
+                createIndexIfMissing(indexName);
+
+                if(this.veryLargeBulk)
+                {
+                    LOGGER.debug("Resetting our Refresh Interval: {}", indexName);
+                    // They are in 'very large bulk' mode and the process is finished. We now want to turn the
+                    // refreshing back on.
+                    UpdateSettingsRequest updateSettingsRequest = new UpdateSettingsRequest(indexName);
+                    updateSettingsRequest.settings(ImmutableSettings.settingsBuilder().put("refresh_interval", "5s"));
+
+                    // submit to ElasticSearch
+                    this.manager.getClient()
+                            .admin()
+                            .indices()
+                            .updateSettings(updateSettingsRequest)
+                            .actionGet();
+                }
+
+                checkIndexImplications(indexName);
+
+                LOGGER.debug("Refreshing ElasticSearch index: {}", indexName);
+                this.manager.getClient()
+                        .admin()
+                        .indices()
+                        .prepareRefresh(indexName)
+                        .execute()
+                        .actionGet();
+            }
+
+            LOGGER.info("Closed: Wrote[{} of {}] Failed[{}]", this.getTotalOk(), this.getTotalSent(), this.getTotalFailed());
+
+        }
+        catch(Exception e)
+        {
+            // this line of code should be logically unreachable.
+            LOGGER.warn("This is unexpected: {}", e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void flush() throws IOException
+    {
+        flushInternal();
+    }
+
+    public void flushInternal()
+    {
+        synchronized (this)
+        {
+            // we do not have a working bulk request, we can just exit here.
+            if(this.bulkRequest == null || batchItemsSent == 0)
+                return;
+
+            // call the flush command.
+            flush(this.bulkRequest, batchItemsSent, batchSizeInBytes);
+
+            // null the flush request, this will be created in the 'add' function below
+            this.bulkRequest = null;
+
+            // record the proper statistics, and add it to our totals.
+            this.totalSizeInBytes += this.batchSizeInBytes;
+            this.totalSent += batchItemsSent;
+
+            // reset the current batch statistics
+            this.batchSizeInBytes = 0;
+            this.batchItemsSent = 0;
+
+            try
+            {
+                int count = 0;
+                if(this.getTotalOutstanding() > WAITING_DOCS_LIMIT)
+                {
+                    /****************************************************************************
+                     * Author:
+                     * Smashew
+                     *
+                     * Date:
+                     * 2013-10-20
+                     *
+                     * Note:
+                     * With the information that we have on hand. We need to develop a heuristic
+                     * that will determine when the cluster is having a problem indexing records
+                     * by telling it to pause and wait for it to catch back up. A
+                     *
+                     * There is an impact to us, the caller, whenever this happens as well. Items
+                     * that are not yet fully indexed by the server sit in a queue, on the client
+                     * that can cause the heap to overflow. This has been seen when re-indexing
+                     * large amounts of data to a small cluster. The "deletes" + "indexes" can
+                     * cause the server to have many 'outstandingItems" in queue. Running this
+                     * software with large amounts of data, on a small cluster, can re-create
+                     * this problem.
+                     *
+                     * DO NOT DELETE THESE LINES
+                     ****************************************************************************/
+
+                    // wait for the flush to catch up. We are going to cap this at
+                    while(this.getTotalOutstanding() > WAITING_DOCS_LIMIT && count++ < 500)
+                        Thread.sleep(10);
+
+                    if(this.getTotalOutstanding() > WAITING_DOCS_LIMIT)
+                        LOGGER.warn("Even after back-off there are {} items still in queue.", this.getTotalOutstanding());
+                }
+            }
+            catch(Exception e)
+            {
+                LOGGER.info("We were broken from our loop: {}", e.getMessage());
+            }
+        }
+    }
+
+    private void flush(final BulkRequestBuilder bulkRequest, final Integer thisSent, final Long thisSizeInBytes)
+    {
+        bulkRequest.execute().addListener(new ActionListener<BulkResponse>()
+        {
+            @Override
+            public void onResponse(BulkResponse bulkItemResponses)
+            {
+                if (bulkItemResponses.hasFailures())
+                    LOGGER.warn("Bulk Uploading had totalFailed: " + bulkItemResponses.buildFailureMessage());
+
+                long thisFailed = 0;
+                long thisOk = 0;
+                long thisMillis = bulkItemResponses.getTookInMillis();
+
+                // keep track of the number of totalFailed and items that we have totalOk.
+                for(BulkItemResponse resp : bulkItemResponses.getItems())
+                {
+                    if(resp.isFailed())
+                        thisFailed++;
+                    else
+                        thisOk++;
+                }
+
+                totalOk += thisOk;
+                totalFailed += thisFailed;
+                totalSeconds += (thisMillis / 1000);
+
+                if(thisSent != (thisOk + thisFailed))
+                    LOGGER.error("We sent more items than this");
+
+                LOGGER.debug("Batch[{}mb {} items with {} failures in {}ms] - Total[{}mb {} items with {} failures in {}seconds] {} outstanding]",
+                        MEGABYTE_FORMAT.format((double) thisSizeInBytes / (double)(1024*1024)), NUMBER_FORMAT.format(thisOk), NUMBER_FORMAT.format(thisFailed), NUMBER_FORMAT.format(thisMillis),
+                        MEGABYTE_FORMAT.format((double) totalSizeInBytes / (double)(1024*1024)), NUMBER_FORMAT.format(totalOk), NUMBER_FORMAT.format(totalFailed), NUMBER_FORMAT.format(totalSeconds), NUMBER_FORMAT.format(getTotalOutstanding()));
+            }
+
+            @Override
+            public void onFailure(Throwable e)
+            {
+                LOGGER.error("Error bulk loading: {}", e.getMessage());
+                e.printStackTrace();
+            }
+        });
+
+        this.notify();
+    }
+
+    public void add(String indexName, String type, String id, String json)
+    {
+        UpdateRequest updateRequest;
+
+        // They didn't specify an ID, so we will create one for them.
+        updateRequest = new UpdateRequest()
+            .index(indexName)
+            .type(type)
+            .id(id)
+            .doc(json);
+
+        add(updateRequest);
+
+    }
+
+    public void add(UpdateRequest updateRequest)
+    {
+        Preconditions.checkNotNull(updateRequest);
+        synchronized (this)
+        {
+            checkAndCreateBulkRequest();
+            checkIndexImplications(updateRequest.index());
+            bulkRequest.add(updateRequest);
+            try {
+                Optional<Integer> size = Objects.firstNonNull(
+                        Optional.fromNullable(updateRequest.doc().source().length()),
+                        Optional.fromNullable(updateRequest.script().length()));
+                trackItemAndBytesWritten(size.get().longValue());
+            } catch( NullPointerException x) {
+                trackItemAndBytesWritten(1000);
+            }
+        }
+    }
+
+    private void trackItemAndBytesWritten(long sizeInBytes)
+    {
+        batchItemsSent++;
+        batchSizeInBytes += sizeInBytes;
+
+        // If our queue is larger than our flush threashold, then we should flush the queue.
+        if(batchSizeInBytes > flushThresholdSizeInBytes)
+            flushInternal();
+    }
+
+    private void checkAndCreateBulkRequest()
+    {
+        // Synchronize to ensure that we don't lose any records
+        synchronized (this)
+        {
+            if(bulkRequest == null)
+                bulkRequest = this.manager.getClient().prepareBulk();
+        }
+    }
+
+    private void checkIndexImplications(String indexName)
+    {
+
+        // check to see if we have seen this index before.
+        if(this.affectedIndexes.contains(indexName))
+            return;
+
+        // we haven't log this index.
+        this.affectedIndexes.add(indexName);
+
+        // Check to see if we are in 'veryLargeBulk' mode
+        // if we aren't, exit early
+        if(!this.veryLargeBulk)
+            return;
+
+
+        // They are in 'very large bulk' mode we want to turn off refreshing the index.
+
+        // Create a request then add the setting to tell it to stop refreshing the interval
+        UpdateSettingsRequest updateSettingsRequest = new UpdateSettingsRequest(indexName);
+        updateSettingsRequest.settings(ImmutableSettings.settingsBuilder().put("refresh_interval", -1));
+
+        // submit to ElasticSearch
+        this.manager.getClient()
+                .admin()
+                .indices()
+                .updateSettings(updateSettingsRequest)
+                .actionGet();
+    }
+
+    public void createIndexIfMissing(String indexName) {
+        if(!this.manager.getClient()
+                .admin()
+                .indices()
+                .exists(new IndicesExistsRequest(indexName))
+                .actionGet()
+                .isExists())
+        {
+            // It does not exist... So we are going to need to create the index.
+            // we are going to assume that the 'templates' that we have loaded into
+            // elasticsearch are sufficient to ensure the index is being created properly.
+            CreateIndexResponse response = this.manager.getClient().admin().indices().create(new CreateIndexRequest(indexName)).actionGet();
+
+            if(response.isAcknowledged())
+            {
+                LOGGER.info("Index {} did not exist. The index was automatically created from the stored ElasticSearch Templates.", indexName);
+            }
+            else
+            {
+                LOGGER.error("Index {} did not exist. While attempting to create the index from stored ElasticSearch Templates we were unable to get an acknowledgement.", indexName);
+                LOGGER.error("Error Message: {}", response.toString());
+                throw new RuntimeException("Unable to create index " + indexName);
+            }
+        }
+    }
+
+    public void add(String indexName, String type, Map<String, Object> toImport)
+    {
+        for (String id : toImport.keySet())
+            add(indexName, type, id, (String)toImport.get(id));
+    }
+
+    private void checkThenAddBatch(String index, String type, Map<String, String> workingBatch)
+    {
+        Set<String> invalidIDs = checkIds(workingBatch.keySet(), index, type);
+
+        for(String toAddId : workingBatch.keySet())
+            if(!invalidIDs.contains(toAddId))
+                add(index, type, toAddId, workingBatch.get(toAddId));
+
+        LOGGER.info("Adding Batch: {} -> {}", workingBatch.size(), invalidIDs.size());
+    }
+
+
+    private Set<String> checkIds(Set<String> input, String index, String type) {
+
+        IdsQueryBuilder idsFilterBuilder = new IdsQueryBuilder();
+
+        for(String s : input)
+            idsFilterBuilder.addIds(s);
+
+        SearchRequestBuilder searchRequestBuilder = this.manager.getClient()
+                .prepareSearch(index)
+                .setTypes(type)
+                .setQuery(idsFilterBuilder)
+                .addField("_id")
+                .setSize(input.size());
+
+        SearchHits hits = searchRequestBuilder.execute()
+                .actionGet()
+                .getHits();
+
+        Set<String> toReturn = new HashSet<String>();
+
+        for(SearchHit hit : hits) {
+            toReturn.add(hit.getId());
+        }
+
+        return toReturn;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        start();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/728a2258/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
index 1feb373..e4302dd 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
@@ -14,8 +14,7 @@ import org.elasticsearch.action.ActionListener;
 import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
 import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
-//import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
-import org.elasticsearch.action.admin.indices.settings.UpdateSettingsRequest;
+import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
 import org.elasticsearch.action.bulk.BulkItemResponse;
 import org.elasticsearch.action.bulk.BulkRequestBuilder;
 import org.elasticsearch.action.bulk.BulkResponse;
@@ -52,8 +51,6 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
     private BulkRequestBuilder bulkRequest;
     private OutputStreamWriter currentWriter = null;
 
-    private String index = null;
-    private String type = null;
     private int batchSize = 50;
     private int totalRecordsWritten = 0;
     private boolean veryLargeBulk = false;  // by default this setting is set to false
@@ -73,14 +70,6 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
     private volatile long batchSizeInBytes = 0;
     private volatile int batchItemsSent = 0;
 
-    public void setIndex(String index) {
-        this.index = index;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
     public void setBatchSize(int batchSize) {
         this.batchSize = batchSize;
     }
@@ -111,14 +100,14 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
 
     private ObjectMapper mapper = new ObjectMapper();
 
-    private ElasticsearchConfiguration config;
+    private ElasticsearchWriterConfiguration config;
 
     public ElasticsearchPersistWriter() {
         Config config = StreamsConfigurator.config.getConfig("elasticsearch");
-        this.config = ElasticsearchConfigurator.detectConfiguration(config);
+        this.config = (ElasticsearchWriterConfiguration) ElasticsearchConfigurator.detectConfiguration(config);
     }
 
-    public ElasticsearchPersistWriter(ElasticsearchConfiguration config) {
+    public ElasticsearchPersistWriter(ElasticsearchWriterConfiguration config) {
         this.config = config;
     }
 
@@ -135,9 +124,12 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
         String json;
         try {
 
-            json = mapper.writeValueAsString(streamsDatum.getDocument());
+            if( streamsDatum.getDocument() instanceof String )
+                json = streamsDatum.getDocument().toString();
+            else
+                json = mapper.writeValueAsString(streamsDatum.getDocument());
 
-            add(index, type, null, json);
+            add(config.getIndex(), config.getType(), null, json);
 
         } catch (JsonProcessingException e) {
             LOGGER.warn("{} {}", e.getLocation(), e.getMessage());

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/728a2258/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
index e625381..72df97c 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
@@ -98,12 +98,14 @@ public class PercolateProcessor implements StreamsProcessor, Runnable
             json = node.asText();
         }
 
-        PercolateResponse response = manager.getClient().preparePercolate(config.getIndex(), config.getType()).setSource(json).execute().actionGet();
+        PercolateResponse response = manager.getClient().preparePercolate().setDocumentType(config.getType()).setSource(json).execute().actionGet();
 
         ArrayNode tagArray = JsonNodeFactory.instance.arrayNode();
 
-        for( String match : response.getMatches())
-            tagArray.add(match);
+        for( PercolateResponse.Match match : response.getMatches()) {
+            tagArray.add(match.getId().string());
+
+        }
 
         // need utility methods for get / create specific node
         ObjectNode extensions = (ObjectNode) node.get("extensions");


[41/71] [abbrv] git commit: adding uncommitted core classes, and updates to twitter, es, mongo, hdfs

Posted by sb...@apache.org.
adding uncommitted core classes, and updates to twitter, es, mongo, hdfs


git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572204 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/4705fcb7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/4705fcb7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/4705fcb7

Branch: refs/heads/master
Commit: 4705fcb7597550fb5fae9c85c2ec537264291038
Parents: c028136
Author: sblackmon <sb...@unknown>
Authored: Wed Feb 26 19:15:42 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Wed Feb 26 19:15:42 2014 +0000

----------------------------------------------------------------------
 streams-contrib/pom.xml                         |   1 +
 .../streams-persist-elasticsearch/pom.xml       |   1 +
 .../ElasticsearchPersistWriter.java             |   4 +
 .../elasticsearch/PercolateProcessor.java       | 150 +++++++++++
 .../ElasticsearchWriterConfiguration.json       |  18 ++
 .../streams/hdfs/WebHdfsPersistWriter.java      |  18 +-
 .../streams/hdfs/WebHdfsPersistWriterTask.java  |   2 +-
 .../streams/mongo/MongoPersistWriter.java       |  36 +--
 .../streams/mongo/MongoPersistWriterTask.java   |  38 ---
 .../twitter/provider/TwitterEventProcessor.java | 194 --------------
 .../provider/TwitterProfileProcessor.java       | 111 --------
 .../twitter/provider/TwitterStreamProvider.java |   1 +
 .../provider/TwitterTimelineProvider.java       | 195 +++++++++-----
 .../provider/TwitterTimelineProviderTask.java   |   2 +-
 .../twitter/provider/TwitterTypeConverter.java  | 199 --------------
 .../apache/streams/core/StreamsOperation.java   |  23 ++
 .../core/builders/InvalidStreamException.java   |  23 ++
 .../core/builders/LocalStreamBuilder.java       | 256 +++++++++++++++++++
 .../streams/core/builders/StreamBuilder.java    |  97 +++++++
 .../streams/core/builders/StreamComponent.java  | 217 ++++++++++++++++
 .../streams/core/tasks/BaseStreamsTask.java     |  89 +++++++
 .../streams/core/tasks/StreamsMergeTask.java    |  58 +++++
 .../core/tasks/StreamsPersistWriterTask.java    | 103 ++++++++
 .../core/tasks/StreamsProcessorTask.java        | 102 ++++++++
 .../streams/core/tasks/StreamsProviderTask.java | 132 ++++++++++
 .../apache/streams/core/tasks/StreamsTask.java  |  58 +++++
 26 files changed, 1490 insertions(+), 638 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index ad559d8..07660ee 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -40,6 +40,7 @@
         <module>streams-persist-elasticsearch</module>
         <module>streams-persist-hdfs</module>
         <module>streams-persist-kafka</module>
+        <module>streams-persist-mongo</module>
         <!--<module>streams-provider-datasift</module>-->
         <!--<module>streams-provider-facebook</module>-->
         <!--<module>streams-provider-gnip</module>-->

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index 2b99973..84aad95 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -74,6 +74,7 @@
                     <generateBuilders>true</generateBuilders>
                     <sourcePaths>
                         <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json</sourcePath>
+                        <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json</sourcePath>
                     </sourcePaths>
                     <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
                     <targetPackage>org.apache.streams.elasticsearch.pojo</targetPackage>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
index 6afe959..12d6d06 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
@@ -116,6 +116,10 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
         this.config = ElasticsearchConfigurator.detectConfiguration(config);
     }
 
+    public ElasticsearchPersistWriter(ElasticsearchConfiguration config) {
+        this.config = config;
+    }
+
     private static final int  BYTES_IN_MB = 1024*1024;
     private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
     private volatile int  totalByteCount = 0;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
new file mode 100644
index 0000000..e625381
--- /dev/null
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/PercolateProcessor.java
@@ -0,0 +1,150 @@
+package org.apache.streams.elasticsearch;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+import org.apache.streams.pojo.json.Activity;
+import org.elasticsearch.action.percolate.PercolateResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ * References:
+ * Some helpful references to help
+ * Purpose              URL
+ * -------------        ----------------------------------------------------------------
+ * [Status Codes]       http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
+ * [Test Cases]         http://greenbytes.de/tech/tc/httpredirects/
+ * [t.co behavior]      https://dev.twitter.com/docs/tco-redirection-behavior
+ */
+
+public class PercolateProcessor implements StreamsProcessor, Runnable
+{
+    private final static Logger LOGGER = LoggerFactory.getLogger(PercolateProcessor.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    protected Queue<StreamsDatum> inQueue;
+    protected Queue<StreamsDatum> outQueue;
+
+    private ElasticsearchWriterConfiguration config;
+    private ElasticsearchClientManager manager;
+
+    public PercolateProcessor(Queue<StreamsDatum> inQueue) {
+        this.inQueue = inQueue;
+        this.outQueue = new LinkedBlockingQueue<StreamsDatum>();
+    }
+
+    public ElasticsearchClientManager getManager() {
+        return manager;
+    }
+
+    public void setManager(ElasticsearchClientManager manager) {
+        this.manager = manager;
+    }
+
+    public ElasticsearchWriterConfiguration getConfig() {
+        return config;
+    }
+
+    public void setConfig(ElasticsearchWriterConfiguration config) {
+        this.config = config;
+    }
+
+    public void start() {
+        Preconditions.checkNotNull(config);
+        Preconditions.checkNotNull(manager);
+        Preconditions.checkNotNull(manager.getClient());
+    }
+
+    public void stop() {
+
+    }
+
+    public Queue<StreamsDatum> getProcessorOutputQueue() {
+        return outQueue;
+    }
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        List<StreamsDatum> result = Lists.newArrayList();
+
+        String json;
+        ObjectNode node;
+        // first check for valid json
+        if( entry.getDocument() instanceof String ) {
+            json = (String) entry.getDocument();
+            try {
+                node = (ObjectNode) mapper.readTree(json);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return null;
+            }
+        } else {
+            node = (ObjectNode) entry.getDocument();
+            json = node.asText();
+        }
+
+        PercolateResponse response = manager.getClient().preparePercolate(config.getIndex(), config.getType()).setSource(json).execute().actionGet();
+
+        ArrayNode tagArray = JsonNodeFactory.instance.arrayNode();
+
+        for( String match : response.getMatches())
+            tagArray.add(match);
+
+        // need utility methods for get / create specific node
+        ObjectNode extensions = (ObjectNode) node.get("extensions");
+        ObjectNode w2o = (ObjectNode) extensions.get("w2o");
+        w2o.put("tags", tagArray);
+
+        result.add(entry);
+
+        return result;
+
+    }
+
+    @Override
+    public void prepare(Object o) {
+        start();
+    }
+
+    @Override
+    public void cleanUp() {
+        stop();
+    }
+
+    @Override
+    public void run() {
+
+        while(true) {
+            StreamsDatum item;
+            try {
+                item = inQueue.poll();
+
+                Thread.sleep(new Random().nextInt(100));
+
+                for( StreamsDatum entry : process(item)) {
+                    outQueue.offer(entry);
+                }
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
+
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json b/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json
new file mode 100644
index 0000000..21aad5c
--- /dev/null
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json
@@ -0,0 +1,18 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "org.apache.streams.elasticsearch.ElasticsearchWriterConfiguration",
+    "extends": {"$ref":"ElasticsearchConfiguration.json"},
+    "javaInterfaces": ["java.io.Serializable"],
+    "properties": {
+        "index": {
+            "type": "string",
+            "description": "Index to write to"
+        },
+        "type": {
+            "type": "string",
+            "description": "Type to write as"
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
index de87ba5..de21055 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
@@ -18,6 +18,8 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.streams.hdfs.HdfsConfiguration;
 
+import java.io.Closeable;
+import java.io.Flushable;
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.net.URI;
@@ -26,7 +28,7 @@ import java.security.PrivilegedExceptionAction;
 import java.util.*;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
-public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable
+public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable, Flushable, Closeable
 {
     private final static Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistWriter.class);
 
@@ -300,13 +302,13 @@ public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable
         }
     }
 
-    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-        this.persistQueue = persistQueue;
-    }
-
-    public Queue<StreamsDatum> getPersistQueue() {
-        return persistQueue;
-    }
+//    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
+//        this.persistQueue = persistQueue;
+//    }
+//
+//    public Queue<StreamsDatum> getPersistQueue() {
+//        return persistQueue;
+//    }
 
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
index 02e4519..2e90a00 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
@@ -20,7 +20,7 @@ public class WebHdfsPersistWriterTask implements Runnable {
     public void run() {
 
         while(true) {
-            if( writer.getPersistQueue().peek() != null ) {
+            if( writer.persistQueue.peek() != null ) {
                 try {
                     StreamsDatum entry = writer.persistQueue.remove();
                     writer.write(entry);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java b/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
index 5ab8470..8d8d4b3 100644
--- a/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
+++ b/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriter.java
@@ -21,6 +21,7 @@ import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Queue;
+import java.util.Random;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 public class MongoPersistWriter implements StreamsPersistWriter, Runnable
@@ -110,14 +111,12 @@ public class MongoPersistWriter implements StreamsPersistWriter, Runnable
         client.cleanCursors(true);
     }
 
-    @Override
     public void start() {
 
         connectToMongo();
 
     }
 
-    @Override
     public void stop() {
 
         try {
@@ -132,32 +131,39 @@ public class MongoPersistWriter implements StreamsPersistWriter, Runnable
         }
     }
 
-    @Override
     public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
         this.persistQueue = persistQueue;
     }
 
-    @Override
     public Queue<StreamsDatum> getPersistQueue() {
         return persistQueue;
     }
 
-
-    @Override
     public void run() {
 
-        start();
+        while(true) {
+            if( persistQueue.peek() != null ) {
+                try {
+                    StreamsDatum entry = persistQueue.remove();
+                    write(entry);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            try {
+                Thread.sleep(new Random().nextInt(1));
+            } catch (InterruptedException e) {}
+        }
 
-        Thread task = new Thread(new MongoPersistWriterTask(this));
-        task.start();
+    }
 
-        try {
-            task.join();
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-            return;
-        }
+    @Override
+    public void prepare(Object configurationObject) {
+        start();
+    }
 
+    @Override
+    public void cleanUp() {
         stop();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java b/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java
deleted file mode 100644
index 398d1cd..0000000
--- a/streams-contrib/streams-persist-mongo/src/main/java/org/apache/streams/mongo/MongoPersistWriterTask.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.streams.mongo;
-
-import org.apache.streams.core.StreamsDatum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Random;
-
-public class MongoPersistWriterTask implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(MongoPersistWriterTask.class);
-
-    private MongoPersistWriter writer;
-
-    public MongoPersistWriterTask(MongoPersistWriter writer) {
-        this.writer = writer;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            if( writer.getPersistQueue().peek() != null ) {
-                try {
-                    StreamsDatum entry = writer.persistQueue.remove();
-                    writer.write(entry);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            try {
-                Thread.sleep(new Random().nextInt(1));
-            } catch (InterruptedException e) {}
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
deleted file mode 100644
index 871c5f0..0000000
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
+++ /dev/null
@@ -1,194 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProcessor;
-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.serializer.TwitterJsonDeleteActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Queue;
-import java.util.Random;
-import java.util.concurrent.BlockingQueue;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterEventProcessor implements StreamsProcessor, Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterEventProcessor.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private BlockingQueue<String> inQueue;
-    private Queue<StreamsDatum> outQueue;
-
-    private Class inClass;
-    private Class outClass;
-
-    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
-    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
-    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
-
-    public final static String TERMINATE = new String("TERMINATE");
-
-    public TwitterEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class inClass, Class outClass) {
-        this.inQueue = inQueue;
-        this.outQueue = outQueue;
-        this.inClass = inClass;
-        this.outClass = outClass;
-    }
-
-    public TwitterEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class outClass) {
-        this.inQueue = inQueue;
-        this.outQueue = outQueue;
-        this.outClass = outClass;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            String item;
-            try {
-                item = inQueue.poll();
-                if(item instanceof String && item.equals(TERMINATE)) {
-                    LOGGER.info("Terminating!");
-                    break;
-                }
-
-                ObjectNode objectNode = (ObjectNode) mapper.readTree(item);
-
-                StreamsDatum rawDatum = new StreamsDatum(objectNode);
-
-                for( StreamsDatum entry : process(rawDatum)) {
-                    outQueue.offer(entry);
-                }
-
-            } catch (Exception e) {
-                e.printStackTrace();
-
-            }
-        }
-    }
-
-    public Object convert(ObjectNode event, Class inClass, Class outClass) {
-
-        LOGGER.debug(event.toString());
-
-        Object result = null;
-
-        if( outClass.equals( Activity.class )) {
-            if( inClass.equals( Delete.class )) {
-                LOGGER.debug("ACTIVITY DELETE");
-                result = twitterJsonDeleteActivitySerializer.convert(event);
-            } else if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("ACTIVITY RETWEET");
-                result = twitterJsonRetweetActivitySerializer.convert(event);
-            } else if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("ACTIVITY TWEET");
-                result = twitterJsonTweetActivitySerializer.convert(event);
-            } else {
-                return null;
-            }
-        } else if( outClass.equals( Tweet.class )) {
-            if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("TWEET");
-                result = mapper.convertValue(event, Tweet.class);
-            }
-        } else if( outClass.equals( Retweet.class )) {
-            if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("RETWEET");
-                result = mapper.convertValue(event, Retweet.class);
-            }
-        } else if( outClass.equals( Delete.class )) {
-            if ( inClass.equals( Delete.class )) {
-                LOGGER.debug("DELETE");
-                result = mapper.convertValue(event, Delete.class);
-            }
-        } else if( outClass.equals( ObjectNode.class )) {
-            LOGGER.debug("OBJECTNODE");
-            result = mapper.convertValue(event, ObjectNode.class);
-        }
-
-            // no supported conversion were applied
-        if( result != null )
-            return result;
-
-        LOGGER.debug("CONVERT FAILED");
-
-        return null;
-
-    }
-
-    public boolean validate(Object document, Class klass) {
-
-        // TODO
-        return true;
-    }
-
-    public boolean isValidJSON(final String json) {
-        boolean valid = false;
-        try {
-            final JsonParser parser = new ObjectMapper().getJsonFactory()
-                    .createJsonParser(json);
-            while (parser.nextToken() != null) {
-            }
-            valid = true;
-        } catch (JsonParseException jpe) {
-            LOGGER.warn("validate: {}", jpe);
-        } catch (IOException ioe) {
-            LOGGER.warn("validate: {}", ioe);
-        }
-
-        return valid;
-    }
-
-    @Override
-    public List<StreamsDatum> process(StreamsDatum entry) {
-
-        // first check for valid json
-        ObjectNode node = (ObjectNode) entry.getDocument();
-
-        String json = node.asText();
-
-        // since data is coming from outside provider, we don't know what type the events are
-        Class inClass = TwitterEventClassifier.detectClass(json);
-
-        // if the target is string, just pass-through
-        if( java.lang.String.class.equals(outClass))
-            return Lists.newArrayList(new StreamsDatum(json));
-        else {
-            // convert to desired format
-            Object out = convert(node, inClass, outClass);
-
-            if( out != null && validate(out, outClass))
-                return Lists.newArrayList(new StreamsDatum(out));
-        }
-
-        return Lists.newArrayList();
-
-    }
-
-    @Override
-    public void prepare(Object configurationObject) {
-
-    }
-
-    @Override
-    public void cleanUp() {
-
-    }
-};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java
deleted file mode 100644
index 3f9c24b..0000000
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProcessor;
-import org.apache.streams.pojo.json.Activity;
-import org.apache.streams.twitter.pojo.Retweet;
-import org.apache.streams.twitter.pojo.Tweet;
-import org.apache.streams.twitter.pojo.User;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.Queue;
-import java.util.Random;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterProfileProcessor implements StreamsProcessor, Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterProfileProcessor.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private Queue<StreamsDatum> inQueue;
-    private Queue<StreamsDatum> outQueue;
-
-    public final static String TERMINATE = new String("TERMINATE");
-
-    @Override
-    public void run() {
-
-        while(true) {
-            StreamsDatum item;
-                try {
-                    item = inQueue.poll();
-                    if(item.getDocument() instanceof String && item.equals(TERMINATE)) {
-                        LOGGER.info("Terminating!");
-                        break;
-                    }
-
-                    Thread.sleep(new Random().nextInt(100));
-
-                    for( StreamsDatum entry : process(item)) {
-                        outQueue.offer(entry);
-                    }
-
-
-            } catch (Exception e) {
-                e.printStackTrace();
-
-            }
-        }
-    }
-
-    @Override
-    public List<StreamsDatum> process(StreamsDatum entry) {
-
-        List<StreamsDatum> result = Lists.newArrayList();
-        String item;
-        try {
-            // first check for valid json
-            // since data is coming from outside provider, we don't know what type the events are
-            if( entry.getDocument() instanceof String) {
-                item = (String) entry.getDocument();
-            } else {
-                item = mapper.writeValueAsString((ObjectNode)entry.getDocument());
-            }
-
-            Class inClass = TwitterEventClassifier.detectClass(item);
-
-            User user;
-
-            if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("TWEET");
-                Tweet tweet = mapper.readValue(item, Tweet.class);
-                user = tweet.getUser();
-                result.add(new StreamsDatum(user));
-            }
-            else if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("RETWEET");
-                Retweet retweet = mapper.readValue(item, Retweet.class);
-                user = retweet.getRetweetedStatus().getUser();
-                result.add(new StreamsDatum(user));
-            } else {
-                return Lists.newArrayList();
-            }
-
-            return result;
-        } catch (Exception e) {
-            e.printStackTrace();
-            LOGGER.warn("Error processing " + entry.toString());
-            return Lists.newArrayList();
-        }
-    }
-
-    @Override
-    public void prepare(Object o) {
-
-    }
-
-    @Override
-    public void cleanUp() {
-
-    }
-};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
index 0520b0f..34b3ab1 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
@@ -20,6 +20,7 @@ import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.core.StreamsProvider;
 import org.apache.streams.core.StreamsResultSet;
 import org.apache.streams.twitter.TwitterStreamConfiguration;
+import org.apache.streams.twitter.processor.TwitterEventProcessor;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
index a91a7ec..052a360 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
@@ -2,6 +2,10 @@ package org.apache.streams.twitter.provider;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
+import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
@@ -15,13 +19,14 @@ import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-import twitter4j.Twitter;
-import twitter4j.TwitterFactory;
+import twitter4j.*;
 import twitter4j.conf.ConfigurationBuilder;
+import twitter4j.json.DataObjectFactory;
 
 import java.io.Serializable;
 import java.math.BigInteger;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Queue;
 import java.util.Random;
 import java.util.concurrent.*;
@@ -29,7 +34,9 @@ import java.util.concurrent.*;
 /**
  * Created by sblackmon on 12/10/13.
  */
-public class TwitterTimelineProvider implements StreamsProvider, Serializable, Runnable {
+public class TwitterTimelineProvider implements StreamsProvider, Serializable {
+
+    private final static String STREAMS_ID = "TwitterTimelineProvider";
 
     private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTimelineProvider.class);
 
@@ -45,11 +52,10 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable, R
         this.config = config;
     }
 
-    protected volatile BlockingQueue<String> inQueue = new LinkedBlockingQueue<String>(10000);
-
     protected volatile Queue<StreamsDatum> providerQueue = new LinkedBlockingQueue<StreamsDatum>();
 
     protected Twitter client;
+    protected Iterator<Long> ids;
 
     ListenableFuture providerTaskComplete;
 //
@@ -92,69 +98,118 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable, R
         return this.providerQueue;
     }
 
-    public void run() {
-
-        executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
-
-        Preconditions.checkNotNull(providerQueue);
+//    public void run() {
+//
+//        LOGGER.info("{} Running", STREAMS_ID);
+//
+//        while( ids.hasNext() ) {
+//            Long currentId = ids.next();
+//            LOGGER.info("Provider Task Starting: {}", currentId);
+//            captureTimeline(currentId);
+//        }
+//
+//        LOGGER.info("{} Finished.  Cleaning up...", STREAMS_ID);
+//
+//        client.shutdown();
+//
+//        LOGGER.info("{} Exiting", STREAMS_ID);
+//
+//        while(!providerTaskComplete.isDone() && !providerTaskComplete.isCancelled() ) {
+//            try {
+//                Thread.sleep(100);
+//            } catch (InterruptedException e) {}
+//        }
+//    }
 
-        Preconditions.checkNotNull(this.klass);
+    private void captureTimeline(long currentId) {
+
+        Paging paging = new Paging(1, 200);
+        List<Status> statuses = null;
+        boolean KeepGoing = true;
+        boolean hadFailure = false;
+
+        do
+        {
+            int keepTrying = 0;
+
+            // keep trying to load, give it 5 attempts.
+            //while (keepTrying < 10)
+            while (keepTrying < 1)
+            {
+
+                try
+                {
+                    statuses = client.getUserTimeline(currentId, paging);
+
+                    for (Status tStat : statuses)
+                    {
+//                        if( provider.start != null &&
+//                                provider.start.isAfter(new DateTime(tStat.getCreatedAt())))
+//                        {
+//                            // they hit the last date we wanted to collect
+//                            // we can now exit early
+//                            KeepGoing = false;
+//                        }
+                        // emit the record
+                        String json = DataObjectFactory.getRawJSON(tStat);
+
+                        providerQueue.offer(new StreamsDatum(json));
+
+                    }
+
+                    paging.setPage(paging.getPage() + 1);
+
+                    keepTrying = 10;
+                }
+                catch(TwitterException twitterException) {
+                    keepTrying += TwitterErrorHandler.handleTwitterError(client, twitterException);
+                }
+                catch(Exception e)
+                {
+                    hadFailure = true;
+                    keepTrying += TwitterErrorHandler.handleTwitterError(client, e);
+                }
+                finally
+                {
+                    // Shutdown the twitter to release the resources
+                    client.shutdown();
+                }
+            }
+        }
+        while ((statuses != null) && (statuses.size() > 0) && KeepGoing);
+    }
 
-        Preconditions.checkNotNull(config.getOauth().getConsumerKey());
-        Preconditions.checkNotNull(config.getOauth().getConsumerSecret());
-        Preconditions.checkNotNull(config.getOauth().getAccessToken());
-        Preconditions.checkNotNull(config.getOauth().getAccessTokenSecret());
+    public StreamsResultSet readCurrent() {
 
-        Preconditions.checkNotNull(config.getFollow());
+        Preconditions.checkArgument(ids.hasNext());
 
-        Preconditions.checkArgument(config.getEndpoint().equals("statuses/user_timeline"));
+        LOGGER.info("{} readCurrent", STREAMS_ID);
 
-        Boolean jsonStoreEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getJsonStoreEnabled()))).or(true);
-        Boolean includeEntitiesEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getIncludeEntities()))).or(true);
-
-        Iterator<Long> ids = config.getFollow().iterator();
         while( ids.hasNext() ) {
-            Long id = ids.next();
-
-            String baseUrl = config.getProtocol() + "://" + config.getHost() + ":" + config.getPort() + "/" + config.getVersion() + "/";
-
-            ConfigurationBuilder builder = new ConfigurationBuilder()
-                    .setOAuthConsumerKey(config.getOauth().getConsumerKey())
-                    .setOAuthConsumerSecret(config.getOauth().getConsumerSecret())
-                    .setOAuthAccessToken(config.getOauth().getAccessToken())
-                    .setOAuthAccessTokenSecret(config.getOauth().getAccessTokenSecret())
-                    .setIncludeEntitiesEnabled(includeEntitiesEnabled)
-                    .setJSONStoreEnabled(jsonStoreEnabled)
-                    .setAsyncNumThreads(3)
-                    .setRestBaseURL(baseUrl);
-
-            Twitter twitter = new TwitterFactory(builder.build()).getInstance();
-
-            providerTaskComplete = executor.submit(new TwitterTimelineProviderTask(this, twitter, id));
+            Long currentId = ids.next();
+            LOGGER.info("Provider Task Starting: {}", currentId);
+            captureTimeline(currentId);
         }
 
-        for (int i = 0; i < 1; i++) {
-            executor.submit(new TwitterEventProcessor(inQueue, providerQueue, klass));
-        }
-    }
+        LOGGER.info("{} Finished.  Cleaning up...", STREAMS_ID);
 
-    @Override
-    public StreamsResultSet readCurrent() {
-        run();
-        StreamsResultSet result = (StreamsResultSet)providerQueue.iterator();
+        StreamsResultSet result = (StreamsResultSet) ImmutableList.copyOf(Iterators.consumingIterator(providerQueue.iterator()));
+        LOGGER.info("{} providing {} docs", STREAMS_ID, providerQueue.size());
+        LOGGER.info("{} Exiting", STREAMS_ID);
         return result;
+
     }
 
-    @Override
     public StreamsResultSet readNew(BigInteger sequence) {
+        LOGGER.debug("{} readNew", STREAMS_ID);
         throw new NotImplementedException();
     }
 
-    @Override
     public StreamsResultSet readRange(DateTime start, DateTime end) {
+        LOGGER.debug("{} readRange", STREAMS_ID);
         this.start = start;
         this.end = end;
-        run();
+        readCurrent();
         StreamsResultSet result = (StreamsResultSet)providerQueue.iterator();
         return result;
     }
@@ -181,6 +236,8 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable, R
     @Override
     public void prepare(Object o) {
 
+        executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
         Preconditions.checkNotNull(providerQueue);
 
         Preconditions.checkNotNull(this.klass);
@@ -197,33 +254,29 @@ public class TwitterTimelineProvider implements StreamsProvider, Serializable, R
         Boolean jsonStoreEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getJsonStoreEnabled()))).or(true);
         Boolean includeEntitiesEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getIncludeEntities()))).or(true);
 
-        Iterator<Long> ids = config.getFollow().iterator();
-        while( ids.hasNext() ) {
-            Long id = ids.next();
-
-            String baseUrl = config.getProtocol() + "://" + config.getHost() + ":" + config.getPort() + "/" + config.getVersion() + "/";
-
-            ConfigurationBuilder builder = new ConfigurationBuilder()
-                    .setOAuthConsumerKey(config.getOauth().getConsumerKey())
-                    .setOAuthConsumerSecret(config.getOauth().getConsumerSecret())
-                    .setOAuthAccessToken(config.getOauth().getAccessToken())
-                    .setOAuthAccessTokenSecret(config.getOauth().getAccessTokenSecret())
-                    .setIncludeEntitiesEnabled(includeEntitiesEnabled)
-                    .setJSONStoreEnabled(jsonStoreEnabled)
-                    .setAsyncNumThreads(3)
-                    .setRestBaseURL(baseUrl);
-
-            Twitter twitter = new TwitterFactory(builder.build()).getInstance();
-            providerTaskComplete = executor.submit(new TwitterTimelineProviderTask(this, twitter, id));
-        }
+        ids = config.getFollow().iterator();
+
+        String baseUrl = config.getProtocol() + "://" + config.getHost() + ":" + config.getPort() + "/" + config.getVersion() + "/";
+
+        ConfigurationBuilder builder = new ConfigurationBuilder()
+                .setOAuthConsumerKey(config.getOauth().getConsumerKey())
+                .setOAuthConsumerSecret(config.getOauth().getConsumerSecret())
+                .setOAuthAccessToken(config.getOauth().getAccessToken())
+                .setOAuthAccessTokenSecret(config.getOauth().getAccessTokenSecret())
+                .setIncludeEntitiesEnabled(includeEntitiesEnabled)
+                .setJSONStoreEnabled(jsonStoreEnabled)
+                .setAsyncNumThreads(3)
+                .setRestBaseURL(baseUrl);
+
+        client = new TwitterFactory(builder.build()).getInstance();
 
-        for (int i = 0; i < 1; i++) {
-            executor.submit(new TwitterEventProcessor(inQueue, providerQueue, klass));
-        }
     }
 
     @Override
     public void cleanUp() {
+
+        client.shutdown();
+
         shutdownAndAwaitTermination(executor);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
index fcab6f5..9619f4f 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
@@ -60,7 +60,7 @@ public class TwitterTimelineProviderTask implements Runnable {
                         // emit the record
                         String json = DataObjectFactory.getRawJSON(tStat);
 
-                        provider.inQueue.offer(json);
+                        //provider.offer(json);
 
                     }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java
deleted file mode 100644
index 0b0507d..0000000
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProcessor;
-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.serializer.TwitterJsonDeleteActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Queue;
-import java.util.Random;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterTypeConverter implements StreamsProcessor, Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTypeConverter.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private Queue<StreamsDatum> inQueue;
-    private Queue<StreamsDatum> outQueue;
-
-    private Class inClass;
-    private Class outClass;
-
-    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
-    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
-    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
-
-    public final static String TERMINATE = new String("TERMINATE");
-
-    public TwitterTypeConverter(Class inClass, Class outClass) {
-        this.inClass = inClass;
-        this.outClass = outClass;
-    }
-
-    public Queue<StreamsDatum> getProcessorOutputQueue() {
-        return outQueue;
-    }
-
-    public void setProcessorInputQueue(Queue<StreamsDatum> inputQueue) {
-        inQueue = inputQueue;
-    }
-
-    public Object convert(ObjectNode event, Class inClass, Class outClass) {
-
-        LOGGER.debug(event.toString());
-
-        Object result = null;
-
-        if( outClass.equals( Activity.class )) {
-            if( inClass.equals( Delete.class )) {
-                LOGGER.debug("ACTIVITY DELETE");
-                result = twitterJsonDeleteActivitySerializer.convert(event);
-            } else if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("ACTIVITY RETWEET");
-                result = twitterJsonRetweetActivitySerializer.convert(event);
-            } else if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("ACTIVITY TWEET");
-                result = twitterJsonTweetActivitySerializer.convert(event);
-            } else {
-                return null;
-            }
-        } else if( outClass.equals( Tweet.class )) {
-            if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("TWEET");
-                result = mapper.convertValue(event, Tweet.class);
-            }
-        } else if( outClass.equals( Retweet.class )) {
-            if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("RETWEET");
-                result = mapper.convertValue(event, Retweet.class);
-            }
-        } else if( outClass.equals( Delete.class )) {
-            if ( inClass.equals( Delete.class )) {
-                LOGGER.debug("DELETE");
-                result = mapper.convertValue(event, Delete.class);
-            }
-        } else if( outClass.equals( ObjectNode.class )) {
-            LOGGER.debug("OBJECTNODE");
-            result = mapper.convertValue(event, ObjectNode.class);
-        }
-
-            // no supported conversion were applied
-        if( result != null )
-            return result;
-
-        LOGGER.debug("CONVERT FAILED");
-
-        return null;
-
-    }
-
-    public boolean validate(Object document, Class klass) {
-
-        // TODO
-        return true;
-    }
-
-    public boolean isValidJSON(final String json) {
-        boolean valid = false;
-        try {
-            final JsonParser parser = new ObjectMapper().getJsonFactory()
-                    .createJsonParser(json);
-            while (parser.nextToken() != null) {
-            }
-            valid = true;
-        } catch (JsonParseException jpe) {
-            LOGGER.warn("validate: {}", jpe);
-        } catch (IOException ioe) {
-            LOGGER.warn("validate: {}", ioe);
-        }
-
-        return valid;
-    }
-
-    @Override
-    public List<StreamsDatum> process(StreamsDatum entry) {
-
-        StreamsDatum result = null;
-
-        try {
-
-            Object item = entry.getDocument();
-            ObjectNode node;
-
-            if( item instanceof String ) {
-
-                // if the target is string, just pass-through
-                if( String.class.equals(outClass))
-                    outQueue.offer(entry);
-                else {
-                    // first check for valid json
-                    node = (ObjectNode)mapper.readTree((String)item);
-
-                    // since data is coming from outside provider, we don't know what type the events are
-                    Class inClass = TwitterEventClassifier.detectClass((String)item);
-
-                    Object out = convert(node, inClass, outClass);
-
-                    if( out != null && validate(out, outClass))
-                        result = new StreamsDatum(out);
-                }
-
-            } else if( item instanceof ObjectNode ) {
-
-                // first check for valid json
-                node = (ObjectNode)mapper.valueToTree(item);
-
-                // since data is coming from outside provider, we don't know what type the events are
-                Class inClass = TwitterEventClassifier.detectClass((String)item);
-
-                Object out = convert(node, inClass, outClass);
-
-                if( out != null && validate(out, outClass))
-                    result = new StreamsDatum(out);
-
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        if( result != null )
-            return Lists.newArrayList(result);
-        else
-            return Lists.newArrayList();
-    }
-
-    @Override
-    public void prepare(Object o) {
-
-    }
-
-    @Override
-    public void cleanUp() {
-
-    }
-
-    @Override
-    public void run() {
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/StreamsOperation.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/StreamsOperation.java b/streams-core/src/main/java/org/apache/streams/core/StreamsOperation.java
new file mode 100644
index 0000000..213b09d
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/StreamsOperation.java
@@ -0,0 +1,23 @@
+package org.apache.streams.core;
+
+import java.io.Serializable;
+
+/**
+ *
+ */
+public interface StreamsOperation extends Serializable {
+
+    /**
+     * This method will be called after initialization/serialization. Initialize any non-serializable objects here.
+     * @param configurationObject Any object to help intialize the operation. ie. Map, JobContext, Properties, etc. The type
+     *                            will be based on where the operation is being run (ie. hadoop, storm, locally, etc.)
+     */
+    public void prepare(Object configurationObject);
+
+    /**
+     * No guarantee that this method will ever be called.  But upon shutdown of the stream, an attempt to call this method
+     * will be made.
+     * Use this method to terminate connections, etc.
+     */
+    public void cleanUp();
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/builders/InvalidStreamException.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/InvalidStreamException.java b/streams-core/src/main/java/org/apache/streams/core/builders/InvalidStreamException.java
new file mode 100644
index 0000000..43c5a4c
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/InvalidStreamException.java
@@ -0,0 +1,23 @@
+package org.apache.streams.core.builders;
+
+/**
+ * Exception that indicates a malformed data stream in some way.
+ */
+public class InvalidStreamException extends RuntimeException {
+
+    public InvalidStreamException() {
+        super();
+    }
+
+    public InvalidStreamException(String s) {
+        super(s);
+    }
+
+    public InvalidStreamException(String s, Throwable throwable) {
+        super(s, throwable);
+    }
+
+    public InvalidStreamException(Throwable throwable) {
+        super(throwable);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
new file mode 100644
index 0000000..76e925f
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -0,0 +1,256 @@
+package org.apache.streams.core.builders;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+import org.apache.streams.core.StreamsProcessor;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.tasks.StreamsProviderTask;
+import org.apache.streams.core.tasks.StreamsTask;
+import org.apache.streams.util.SerializationUtil;
+import org.joda.time.DateTime;
+
+import java.math.BigInteger;
+import java.util.*;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * {@link org.apache.streams.core.builders.StreamBuilder} implementation to run a data processing stream in a single
+ * JVM across many threads.  Depending on your data stream, the JVM heap may need to be set to a high value. Default
+ * implementation uses unbound {@link java.util.concurrent.ConcurrentLinkedQueue} to connect stream components.
+ */
+public class LocalStreamBuilder implements StreamBuilder{
+
+    private Map<String, StreamComponent> providers;
+    private Map<String, StreamComponent> components;
+    private Queue<StreamsDatum> queue;
+    private Map<String, Object> streamConfig;
+    private ExecutorService executor;
+    private int totalTasks;
+
+    /**
+     *
+     */
+    public LocalStreamBuilder(){
+        this(new ConcurrentLinkedQueue<StreamsDatum>(), null);
+    }
+
+    /**
+     *
+     * @param streamConfig
+     */
+    public LocalStreamBuilder(Map<String, Object> streamConfig) {
+        this(new ConcurrentLinkedQueue<StreamsDatum>(), streamConfig);
+    }
+
+    /**
+     *
+     * @param queueType
+     */
+    public LocalStreamBuilder(Queue<StreamsDatum> queueType) {
+        this(queueType, null);
+    }
+
+    /**
+     *
+     * @param queueType
+     * @param streamConfig
+     */
+    public LocalStreamBuilder(Queue<StreamsDatum> queueType, Map<String, Object> streamConfig) {
+        this.queue = queueType;
+        this.providers = new HashMap<String, StreamComponent>();
+        this.components = new HashMap<String, StreamComponent>();
+        this.streamConfig = streamConfig;
+        this.totalTasks = 0;
+    }
+
+    @Override
+    public StreamBuilder newReadCurrentStream(String id, StreamsProvider provider) {
+        validateId(id);
+        this.providers.put(id, new StreamComponent(id, provider));
+        ++this.totalTasks;
+        return this;
+    }
+
+    @Override
+    public StreamBuilder newReadNewStream(String id, StreamsProvider provider, BigInteger sequence) {
+        validateId(id);
+        this.providers.put(id, new StreamComponent(id, provider, sequence));
+        ++this.totalTasks;
+        return this;
+    }
+
+    @Override
+    public StreamBuilder newReadRangeStream(String id, StreamsProvider provider, DateTime start, DateTime end) {
+        validateId(id);
+        this.providers.put(id, new StreamComponent(id, provider, start, end));
+        ++this.totalTasks;
+        return this;
+    }
+
+    @Override
+    public StreamBuilder addStreamsProcessor(String id, StreamsProcessor processor, int numTasks, String... inBoundIds) {
+        validateId(id);
+        StreamComponent comp = new StreamComponent(id, processor, cloneQueue(), numTasks);
+        this.components.put(id, comp);
+        connectToOtherComponents(inBoundIds, comp);
+        this.totalTasks += numTasks;
+        return this;
+    }
+
+    @Override
+    public StreamBuilder addStreamsPersistWriter(String id, StreamsPersistWriter writer, int numTasks, String... inBoundIds) {
+        validateId(id);
+        StreamComponent comp = new StreamComponent(id, writer, cloneQueue(), numTasks);
+        this.components.put(id, comp);
+        connectToOtherComponents(inBoundIds, comp);
+        this.totalTasks += numTasks;
+        return this;
+    }
+
+    /**
+     * Runs the data stream in the this JVM and blocks till completion.
+     */
+    @Override
+    public void start() {
+        boolean isRunning = true;
+        this.executor = Executors.newFixedThreadPool(this.totalTasks);
+        Map<String, StreamsProviderTask> provTasks = new HashMap<String, StreamsProviderTask>();
+        Map<String, List<StreamsTask>> streamsTasks = new HashMap<String, List<StreamsTask>>();
+        try {
+            for(StreamComponent comp : this.components.values()) {
+                int tasks = comp.getNumTasks();
+                List<StreamsTask> compTasks = new LinkedList<StreamsTask>();
+                for(int i=0; i < tasks; ++i) {
+                    StreamsTask task = comp.createConnectedTask();
+                    task.setStreamConfig(this.streamConfig);
+                    this.executor.submit(task);
+                    compTasks.add(task);
+                }
+                streamsTasks.put(comp.getId(), compTasks);
+            }
+            for(StreamComponent prov : this.providers.values()) {
+                StreamsTask task = prov.createConnectedTask();
+                task.setStreamConfig(this.streamConfig);
+                this.executor.submit(task);
+                provTasks.put(prov.getId(), (StreamsProviderTask) task);
+            }
+
+            while(isRunning) {
+                isRunning = false;
+                for(StreamsProviderTask task : provTasks.values()) {
+                    isRunning = isRunning || task.isRunning();
+                }
+                if(isRunning) {
+                    Thread.sleep(10000);
+                }
+            }
+            this.executor.shutdown();
+            //complete stream shut down gracfully 
+            for(StreamComponent prov : this.providers.values()) {
+                shutDownTask(prov, streamsTasks);
+            }
+            //need to make this configurable
+            if(!this.executor.awaitTermination(10, TimeUnit.SECONDS)) { // all threads should have terminated already.
+                this.executor.shutdownNow();
+                this.executor.awaitTermination(10, TimeUnit.SECONDS);
+            }
+        } catch (InterruptedException e){
+            //give the stream 30secs to try to shutdown gracefully, then force shutdown otherwise
+            for(List<StreamsTask> tasks : streamsTasks.values()) {
+                for(StreamsTask task : tasks) {
+                    task.stopTask();
+                }
+            }
+            this.executor.shutdown();
+            try {
+                if(!this.executor.awaitTermination(30, TimeUnit.SECONDS)){
+                    this.executor.shutdownNow();
+                }
+            }catch (InterruptedException ie) {
+                this.executor.shutdownNow();
+                throw new RuntimeException(ie);
+            }
+        }
+
+    }
+
+    /**
+     * Shutsdown the running tasks in sudo depth first search kind of way. Checks that the upstream components have
+     * finished running before shutting down. Waits till inbound queue is empty to shutdown.
+     * @param comp StreamComponent to shut down.
+     * @param streamTasks the list of non-StreamsProvider tasks for this stream.
+     * @throws InterruptedException
+     */
+    private void shutDownTask(StreamComponent comp, Map<String, List<StreamsTask>> streamTasks) throws InterruptedException {
+        List<StreamsTask> tasks = streamTasks.get(comp.getId());
+        if(tasks != null) { //not a StreamProvider
+            boolean parentsShutDown = true;
+            for(StreamComponent parent : comp.getUpStreamComponents()) {
+                List<StreamsTask> parentTasks = streamTasks.get(parent.getId());
+                //if parentTask == null, its a provider and is not running anymore
+                if(parentTasks != null) {
+                    for(StreamsTask task : parentTasks) {
+                        parentsShutDown = parentsShutDown && !task.isRunning();
+                    }
+                }
+            }
+            if(parentsShutDown) {
+                for(StreamsTask task : tasks) {
+                    task.stopTask();
+                }
+                for(StreamsTask task : tasks) {
+                    while(task.isRunning()) {
+                        Thread.sleep(500);
+                    }
+                }
+            }
+        }
+        Collection<StreamComponent> children = comp.getDownStreamComponents();
+        if(children != null) {
+            for(StreamComponent child : comp.getDownStreamComponents()) {
+                shutDownTask(child, streamTasks);
+            }
+        }
+    }
+
+    /**
+     * NOT IMPLEMENTED.
+     */
+    @Override
+    public void stop() {
+
+    }
+
+    private void connectToOtherComponents(String[] conntectToIds, StreamComponent toBeConnected) {
+        for(String id : conntectToIds) {
+            StreamComponent upStream = null;
+            if(this.providers.containsKey(id)) {
+                upStream = this.providers.get(id);
+            }
+            else if(this.components.containsKey(id)) {
+                upStream = this.components.get(id);
+            }
+            else {
+                throw new InvalidStreamException("Cannot connect to id, "+id+", because id does not exist.");
+            }
+            upStream.addOutBoundQueue(toBeConnected, toBeConnected.getInBoundQueue());
+            toBeConnected.addInboundQueue(upStream);
+        }
+    }
+
+    private void validateId(String id) {
+        if(this.providers.containsKey(id) || this.components.containsKey(id)) {
+            throw new InvalidStreamException("Duplicate id. "+id+" is already assigned to another component");
+        }
+    }
+
+
+    private Queue<StreamsDatum> cloneQueue() {
+        return (Queue<StreamsDatum>)SerializationUtil.cloneBySerialization(this.queue);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
new file mode 100644
index 0000000..918eb7a
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/StreamBuilder.java
@@ -0,0 +1,97 @@
+package org.apache.streams.core.builders;
+
+import org.apache.streams.core.*;
+import org.joda.time.DateTime;
+
+import java.math.BigInteger;
+import java.util.Queue;
+
+/**
+ * Interface for building data streams.
+ *
+ * <pre>
+ *     StreamBuilder builder = ...
+ *     builder.newReadCurrentStream(. . .)
+ *            .addStreamsProcessor(. . .)
+ *            ...
+ *            .addStreamsPersistWriter(. . .)
+ *     builder.run();
+ * </pre>
+ *
+ */
+public interface StreamBuilder {
+
+
+    /**
+     * Add a {@link org.apache.streams.core.StreamsProcessor} to the data processing stream.
+     * @param processorId unique id for this processor - must be unique across the entire stream
+     * @param processor the processor to execute
+     * @param numTasks the number of instances of this processor to run concurrently
+     * @param connectToIds the ids of the {@link org.apache.streams.core.StreamsOperation} that this process will
+     *                     receive data from.
+     * @return this
+     */
+    public StreamBuilder addStreamsProcessor(String processorId, StreamsProcessor processor, int numTasks, String... connectToIds);
+
+    /**
+     * Add a {@link org.apache.streams.core.StreamsPersistWriter} to the data processing stream.
+     * @param persistWriterId unique id for this processor - must be unique across the entire stream
+     * @param writer the writer to execute
+     * @param numTasks the number of instances of this writer to run concurrently
+     * @param connectToIds the ids of the {@link org.apache.streams.core.StreamsOperation} that this process will
+     *                     receive data from.
+     * @return this
+     */
+    public StreamBuilder addStreamsPersistWriter(String persistWriterId, StreamsPersistWriter writer, int numTasks, String... connectToIds);
+
+    /**
+     * Add a {@link org.apache.streams.core.StreamsProvider} to the data processing stream.  The provider will execute
+     * {@link org.apache.streams.core.StreamsProvider:readCurrent()} to produce data.
+     * @param streamId unique if for this provider - must be unique across the entire stream.
+     * @param provider provider to execute
+     * @return this
+     */
+    public StreamBuilder newReadCurrentStream(String streamId, StreamsProvider provider);
+
+    /**
+     * Add a {@link org.apache.streams.core.StreamsProvider} to the data processing stream.  The provider will execute
+     * {@link org.apache.streams.core.StreamsProvider:readNext(BigInteger)} to produce data.
+     * @param streamId unique if for this provider - must be unique across the entire stream.
+     * @param provider provider to execute
+     * @param sequence sequence to pass to {@link org.apache.streams.core.StreamsProvider:readNext(BigInteger)} method
+     * @return this
+     */
+    public StreamBuilder newReadNewStream(String streamId, StreamsProvider provider, BigInteger sequence);
+
+    /**
+     * Add a {@link org.apache.streams.core.StreamsProvider} to the data processing stream.  The provider will execute
+     * {@link org.apache.streams.core.StreamsProvider:readRange(DateTime, DateTime)} to produce data. Whether the start
+     * and end dates are inclusive or exclusive is up to the implementation.
+     * @param streamId unique if for this provider - must be unique across the entire stream.
+     * @param provider provider to execute
+     * @param start start date
+     * @param end end date
+     * @return this
+     */
+    public StreamBuilder newReadRangeStream(String streamId, StreamsProvider provider, DateTime start, DateTime end);
+
+    /**
+     * Builds the stream, and starts it or submits it based on implementation.
+     */
+    public void start();
+
+    /**
+     * Stops the streams processing.  No guarantee on a smooth shutdown. Optional method, may not be implemented in
+     * all cases.
+     */
+    public void stop();
+
+
+
+
+
+
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java b/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
new file mode 100644
index 0000000..2f1b14c
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/StreamComponent.java
@@ -0,0 +1,217 @@
+package org.apache.streams.core.builders;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+import org.apache.streams.core.StreamsProcessor;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.tasks.StreamsPersistWriterTask;
+import org.apache.streams.core.tasks.StreamsProcessorTask;
+import org.apache.streams.core.tasks.StreamsProviderTask;
+import org.apache.streams.core.tasks.StreamsTask;
+import org.apache.streams.util.SerializationUtil;
+import org.joda.time.DateTime;
+
+import java.math.BigInteger;
+import java.util.*;
+
+/**
+ * Stores the implementations of {@link org.apache.streams.core.StreamsOperation}, the StreamsOperations it is connected
+ * to and the necessary metadata to construct a data stream.
+ */
+public class StreamComponent {
+
+    private static final int START = 1;
+    private static final int END = 2;
+
+    private String id;
+    private Set<StreamComponent> inBound;
+    private Map<StreamComponent, Queue<StreamsDatum>> outBound;
+    private Queue<StreamsDatum> inQueue;
+    private StreamsProvider provider;
+    private StreamsProcessor processor;
+    private StreamsPersistWriter writer;
+    private DateTime[] dateRange;
+    private BigInteger sequence;
+    private int numTasks = 1;
+
+    /**
+     *
+     * @param id
+     * @param provider
+     */
+    public StreamComponent(String id, StreamsProvider provider) {
+        this.id = id;
+        this.provider = provider;
+        initializePrivateVariables();
+    }
+
+    /**
+     *
+     * @param id
+     * @param provider
+     * @param start
+     * @param end
+     */
+    public StreamComponent(String id, StreamsProvider provider, DateTime start, DateTime end) {
+        this.id = id;
+        this.provider = provider;
+        this.dateRange = new DateTime[2];
+        this.dateRange[START] = start;
+        this.dateRange[END] = end;
+        initializePrivateVariables();
+    }
+
+
+    /**
+     *
+     * @param id
+     * @param provider
+     * @param sequence
+     */
+    public StreamComponent(String id, StreamsProvider provider, BigInteger sequence) {
+        this.id = id;
+        this.provider = provider;
+        this.sequence = sequence;
+    }
+
+    /**
+     *
+     * @param id
+     * @param processor
+     * @param inQueue
+     * @param numTasks
+     */
+    public StreamComponent(String id, StreamsProcessor processor, Queue<StreamsDatum> inQueue, int numTasks) {
+        this.id = id;
+        this.processor = processor;
+        this.inQueue = inQueue;
+        this.numTasks = numTasks;
+        initializePrivateVariables();
+    }
+
+    /**
+     *
+     * @param id
+     * @param writer
+     * @param inQueue
+     * @param numTasks
+     */
+    public StreamComponent(String id, StreamsPersistWriter writer, Queue<StreamsDatum> inQueue, int numTasks) {
+        this.id = id;
+        this.writer = writer;
+        this.inQueue = inQueue;
+        this.numTasks = numTasks;
+        initializePrivateVariables();
+    }
+
+    private void initializePrivateVariables() {
+        this.inBound = new HashSet<StreamComponent>();
+        this.outBound = new HashMap<StreamComponent, Queue<StreamsDatum>>();
+    }
+
+    /**
+     * Add an outbound queue for this component. The queue should be an inbound queue of a downstream component.
+     * @param component the component that this supplying their inbound queue
+     * @param queue the queue to to put post processed/provided datums on
+     */
+    public void addOutBoundQueue(StreamComponent component, Queue<StreamsDatum> queue) {
+        this.outBound.put(component, queue);
+    }
+
+    /**
+     * Add a component that supplies data through the inbound queue.
+     * @param component that supplies data through the inbound queue
+     */
+    public void addInboundQueue(StreamComponent component) {
+        this.inBound.add(component);
+    }
+
+    /**
+     * The components that are immediately downstream of this component (aka child nodes)
+     * @return Collection of child nodes of this component
+     */
+    public Collection<StreamComponent> getDownStreamComponents() {
+        return this.outBound.keySet();
+    }
+
+    /**
+     * The components that are immediately upstream of this component (aka parent nodes)
+     * @return Collection of parent nodes of this component
+     */
+    public Collection<StreamComponent> getUpStreamComponents() {
+        return this.inBound;
+    }
+
+    /**
+     * The inbound queue for this component
+     * @return inbound queue
+     */
+    public Queue<StreamsDatum> getInBoundQueue() {
+        return this.inQueue;
+    }
+
+    /**
+     * The number of tasks this to run this component
+     * @return
+     */
+    public int getNumTasks() {
+        return this.numTasks;
+    }
+
+    /**
+     * Creates a {@link org.apache.streams.core.tasks.StreamsTask} that is running a clone of this component whose
+     * inbound and outbound queues are appropriately connected to the parent and child nodes.
+     * @return StreamsTask for this component
+     */
+    public StreamsTask createConnectedTask() {
+        StreamsTask task;
+        if(this.processor != null) {
+            task =  new StreamsProcessorTask((StreamsProcessor)SerializationUtil.cloneBySerialization(this.processor));
+            task.addInputQueue(this.inQueue);
+            for(Queue<StreamsDatum> q : this.outBound.values()) {
+                task.addOutputQueue(q);
+            }
+        }
+        else if(this.writer != null) {
+            task = new StreamsPersistWriterTask((StreamsPersistWriter) SerializationUtil.cloneBySerialization(this.writer));
+            task.addInputQueue(this.inQueue);
+        }
+        else if(this.provider != null) {
+            StreamsProvider prov = (StreamsProvider)SerializationUtil.cloneBySerialization(this.provider);
+            if(this.dateRange == null && this.sequence == null)
+                task = new StreamsProviderTask(prov);
+            else if(this.sequence != null)
+                task = new StreamsProviderTask(prov, this.sequence);
+            else
+                task = new StreamsProviderTask(prov, this.dateRange[0], this.dateRange[1]);
+            for(Queue<StreamsDatum> q : this.outBound.values()) {
+                task.addOutputQueue(q);
+            }
+        }
+        else {
+            throw new InvalidStreamException("Underlying StreamComponoent was NULL.");
+        }
+        return task;
+    }
+
+    /**
+     * The unique of this component
+     * @return
+     */
+    public String getId() {
+        return this.id;
+    }
+
+    @Override
+    public int hashCode() {
+        return this.id.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if(o instanceof StreamComponent)
+            return this.id.equals(((StreamComponent) o).id);
+        else
+            return false;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
new file mode 100644
index 0000000..8c275bf
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
@@ -0,0 +1,89 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.util.SerializationUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+/**
+ *
+ */
+public abstract class BaseStreamsTask implements StreamsTask {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(BaseStreamsTask.class);
+
+    private List<Queue<StreamsDatum>> inQueues = new ArrayList<Queue<StreamsDatum>>();
+    private List<Queue<StreamsDatum>> outQueues = new LinkedList<Queue<StreamsDatum>>();
+    private int inIndex = 0;
+
+    @Override
+    public void addInputQueue(Queue<StreamsDatum> inputQueue) {
+        this.inQueues.add(inputQueue);
+    }
+
+    @Override
+    public void addOutputQueue(Queue<StreamsDatum> outputQueue) {
+        this.outQueues.add(outputQueue);
+    }
+
+    @Override
+    public List<Queue<StreamsDatum>> getInputQueues() {
+        return this.inQueues;
+    }
+
+    @Override
+    public List<Queue<StreamsDatum>> getOutputQueues() {
+        return this.outQueues;
+    }
+
+    /**
+     * NOTE NECCESSARY AT THE MOMENT.  MAY BECOME NECESSARY AS WE LOOK AT MAKING JOIN TASKS. CURRENTLY ALL TASK HAVE MAX
+     * OF 1 INPUT QUEUE.
+     * Round Robins through input queues to get the next StreamsDatum. If all input queues are empty, it will return null.
+     * @return the next StreamsDatum or null if all input queues are empty.
+     */
+    protected StreamsDatum getNextDatum() {
+        int startIndex = this.inIndex;
+        int index = startIndex;
+        StreamsDatum datum = null;
+        do {
+            datum = this.inQueues.get(index).poll();
+            index = getNextInputQueueIndex();
+        } while( datum == null && startIndex != index);
+        return datum;
+    }
+
+    /**
+     * Adds a StreamDatum to the outgoing queues.  If there are multiple queues, it uses serialization to create
+     * clones of the datum and adds a new clone to each queue.
+     * @param datum
+     */
+    protected void addToOutgoingQueue(StreamsDatum datum) {
+        if(this.outQueues.size() == 1) {
+            this.outQueues.get(0).offer(datum);
+        }
+        else {
+            for(Queue<StreamsDatum> queue : this.outQueues) {
+                try {
+                    queue.offer((StreamsDatum) SerializationUtil.deserialize(SerializationUtil.serialize(datum)));
+                } catch (RuntimeException e) {
+                    LOGGER.debug("Failed to add StreamsDatum to outgoing queue : {}", datum);
+                    LOGGER.error("Exception while offering StreamsDatum to outgoing queue: {}", e);
+                }
+            }
+        }
+    }
+
+    private int getNextInputQueueIndex() {
+        ++this.inIndex;
+        if(this.inIndex >= this.inQueues.size()) {
+            this.inIndex = 0;
+        }
+        return this.inIndex;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsMergeTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsMergeTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsMergeTask.java
new file mode 100644
index 0000000..f3ad0cc
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsMergeTask.java
@@ -0,0 +1,58 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * NOT USED.  When joins/partions are implemented, a similar pattern could be followed. Done only as basic proof
+ * of concept.
+ */
+public class StreamsMergeTask extends BaseStreamsTask {
+
+    private AtomicBoolean keepRunning;
+    private long sleepTime;
+
+    public StreamsMergeTask() {
+        this(DEFAULT_SLEEP_TIME_MS);
+    }
+
+    public StreamsMergeTask(long sleepTime) {
+        this.sleepTime = sleepTime;
+        this.keepRunning = new AtomicBoolean(true);
+    }
+
+
+    @Override
+    public void stopTask() {
+        this.keepRunning.set(false);
+    }
+
+    @Override
+    public void setStreamConfig(Map<String, Object> config) {
+
+    }
+
+    @Override
+    public boolean isRunning() {
+        return false;
+    }
+
+    @Override
+    public void run() {
+        while(this.keepRunning.get()) {
+            StreamsDatum datum = super.getNextDatum();
+            if(datum != null) {
+                super.addToOutgoingQueue(datum);
+            }
+            else {
+                try {
+                    Thread.sleep(this.sleepTime);
+                } catch (InterruptedException e) {
+                    this.keepRunning.set(false);
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsPersistWriterTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsPersistWriterTask.java
new file mode 100644
index 0000000..1a701a7
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsPersistWriterTask.java
@@ -0,0 +1,103 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ *
+ */
+public class StreamsPersistWriterTask extends BaseStreamsTask {
+
+
+
+    private StreamsPersistWriter writer;
+    private long sleepTime;
+    private AtomicBoolean keepRunning;
+    private Map<String, Object> streamConfig;
+    private Queue<StreamsDatum> inQueue;
+    private AtomicBoolean isRunning;
+
+    /**
+     * Default constructor.  Uses default sleep of 500ms when inbound queue is empty.
+     * @param writer writer to execute in task
+     */
+    public StreamsPersistWriterTask(StreamsPersistWriter writer) {
+        this(writer, DEFAULT_SLEEP_TIME_MS);
+    }
+
+    /**
+     *
+     * @param writer writer to execute in task
+     * @param sleepTime time to sleep when inbound queue is empty.
+     */
+    public StreamsPersistWriterTask(StreamsPersistWriter writer, long sleepTime) {
+        this.writer = writer;
+        this.sleepTime = sleepTime;
+        this.keepRunning = new AtomicBoolean(true);
+        this.isRunning = new AtomicBoolean(true);
+    }
+
+    @Override
+    public void setStreamConfig(Map<String, Object> config) {
+        this.streamConfig = config;
+    }
+
+    @Override
+    public void addInputQueue(Queue<StreamsDatum> inputQueue) {
+        this.inQueue = inputQueue;
+    }
+
+    @Override
+    public boolean isRunning() {
+        return this.isRunning.get();
+    }
+
+    @Override
+    public void run() {
+        try {
+            this.writer.prepare(this.streamConfig);
+            StreamsDatum datum = this.inQueue.poll();
+            while(datum != null || this.keepRunning.get()) {
+                if(datum != null) {
+                    this.writer.write(datum);
+                }
+                else {
+                    try {
+                        Thread.sleep(this.sleepTime);
+                    } catch (InterruptedException e) {
+                        this.keepRunning.set(false);
+                    }
+                }
+                datum = this.inQueue.poll();
+            }
+
+        } finally {
+            this.writer.cleanUp();
+            this.isRunning.set(false);
+        }
+    }
+
+    @Override
+    public void stopTask() {
+        this.keepRunning.set(false);
+    }
+
+
+    @Override
+    public void addOutputQueue(Queue<StreamsDatum> outputQueue) {
+        throw new UnsupportedOperationException(this.getClass().getName()+" does not support method - setOutputQueue()");
+    }
+
+    @Override
+    public List<Queue<StreamsDatum>> getInputQueues() {
+        List<Queue<StreamsDatum>> queues = new LinkedList<Queue<StreamsDatum>>();
+        queues.add(this.inQueue);
+        return queues;
+    }
+}


[19/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFlattened.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFlattened.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFlattened.xml
deleted file mode 100644
index fb9af4f..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFlattened.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7fgd</id>		<published>2013-08-27T20:07:28Z</published>		<updated>2013-08-27T20:07:28Z</updated>		<title>TerriblePterodactyl posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/longrange/comments/1l7fgd/need_advice_selecting_between_two_rifles/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Remington%22&amp;limit=100&amp;after=t3_135v09"/>			<title>Reddit - Keyword - Search (Recent) - "Remington"</title>			<updated>2013-08-28T19-54-43Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Remington"            </gnip:rule>		</source>		<service
 :provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7fgd</id>			<title>Need advice; Selecting Between Two Rifles</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;So, I have an opportunity to purchase a Remington 700 in .308, with a Vortex Viper 4-16X50 scope, Harris bipod and Standard Stock.  The other option is the Remington 700P in .308 with a Leupold Mark V 4.5-14x50 scope, Harris bipod and the HS stock.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The regular 700 with the Vortex is $200 cheaper.  This will be my first rifle, so I&amp;amp;#39;m looking to get in as low as possible, and still get a quality option.  Eventually, I&amp;amp;#39;d like to save up some money for the Savage 110 BA in .338, but I figured I
 &amp;amp;#39;d like the simplicity of the Remington, while still having options to upgrade the stock, get the action trued (if necessary) and even have a gunsmith work over to get the barrel truly free-floating.  I&amp;amp;#39;m not sure if any of that will be entirely necessary at first, as I&amp;amp;#39;m still learning the tricks.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Any advice on which one I should be leaning toward?&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/longrange/comments/1l7fgd/need_advice_selecting_between_two_rifles/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="11" downVotes="0"/>		</activity:object>		<author>			<name>TerriblePterodactyl</name>			<uri>http://www.reddit.com/user/TerriblePterodactyl</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel=
 "alternate" type="text/html" length="0" href="http://www.reddit.com/user/TerriblePterodactyl"/>			<id>http://www.reddit.com/user/TerriblePterodactyl</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="remington">"Remington"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l8rv5</id>		<published>2013-08-28T06:54:37Z</published>		<updated>2013-08-28T06:54:37Z</updated>		<title>darcgecko posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/KerbalSpaceProgram/comments/1l8rv5/tip_choosing_a_jet_engine_based_on_velocity/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Max%20Factor%22&amp;limit=100&amp;after=t3_19h0y5"/>			<title>Reddit - Keyword - Search (Recent) - "Max Factor"</title>			<updated>2013-08-28T19-54-00Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Max Factor"            </gnip:rule>		</source>		<
 service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l8rv5</id>			<title>TIP: Choosing a jet engine based on velocity curves, efficiency, and thrust:mass ratios</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;As you may know, jet engines in this game have a property called a velocity curve. At max throttle, they will output a percentage of the listed max thrust (in the VAB) based on the velocity of the ship. This &amp;amp;#39;&amp;amp;#39;curve&amp;amp;#39;&amp;amp;#39; is defined at several points based on parameters in the part .cfg file, and should be considered when picking what jets to use on your ship.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;VELOCITY&amp;lt;/strong&amp;gt;&amp;l
 t;/p&amp;gt;&amp;lt;p&amp;gt;For the stock turbojet, the values are as follows:&amp;lt;/p&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;velocityCurve&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 0 0.5 0 0    key = 1000 1 0 0    key = 2000 0.5 0 0    key = 2400 0 0 0&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;p&amp;gt;As you can see, the jet produces max thrust at 1000 m/s, and 0 thrust at 2400 m/s. This makes it useful for high speed cruising/ssto design. Furthermore, a quick test I ran gave me an output of 170 ish kn of thrust at 500 m/s, which is 75% of 225, and thus it seems that the scaling on this &amp;amp;#39;&amp;amp;#39;curve&amp;amp;#39;&amp;amp;#39; is in fact linear between the points designated.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The normal stock jet, meanwhile, looks like this:&amp;lt;/p&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;velocityCurve&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;&a
 mp;lt;code&amp;gt;    key = 1000 0 0 0    key = 850 0.2 0 0    key = 0 1 0 0&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;p&amp;gt;As you can see, this jet is designed for lower speed, and indeed has a far lower thrust:mass ratio at max thrust than the turbojet (150:1 compared to 187.5:1). However, it should theoretically make up for this by being more fuel efficient at high pressure (i.e. low altitude).&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If we ignore efficiency for the moment, and simply graph the two in terms of thrust:mass ratio and velocity, it turns out that the equivalence point (past which turbojets are more powerful in all situations) happens at 239.4 m/s. 239 m/s is reaaaaaally slow, and so in cases where speed is the objective, the turbojets are going to be more effective than the standard jets.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;EFFICIENCY&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Of course, this doesn&amp;amp;#39;t factor in efficien
 cy. From the information in the VAB, it would appear that turbojets have an isp far lower than standard jets, as they range from only 800-1200. This data is misleading, however, as there is yet another &amp;amp;#39;curve&amp;amp;#39; parameter in the .cfg that controls isp relative to atmospheric pressure. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The curve for the turbojet is as follows:&amp;lt;/p&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;atmosphereCurve&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 0 1200    key = 0.3 2500    key = 1 800&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;p&amp;gt;and for the normal jet:&amp;lt;/p&amp;gt;&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;atmosphereCurve&amp;lt;/p&amp;gt;&amp;lt;/blockquote&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 0 1000    key = 0.3 1800    key = 1 2000&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;p&amp;gt;As you can see, while the normal jet gets less efficien
 t the higher you are, turbojets actually get &amp;lt;em&amp;gt;more&amp;lt;/em&amp;gt; efficient, until 0.3 atm (6020m, based on the equation for kerbin&amp;amp;#39;s atmo density on the wiki), before becoming less efficient as you get closer to vac. as they end up at 1200 isp in vac compared to the normal jet&amp;amp;#39;s 1000, it follows that after the you get high enough for the turbojet to become more efficient than the normal jet, it stays that way. This first intersection happens at 0.557 atm, which is only 2900m of altitude. Any higher than this, and turbojets are more efficient than normal jets.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;TO SUM UP&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;As you can see, in basically all situations, the turbojets are better than the normal jets. The same sort of analysis can be performed on mod parts, as all the info is in their part .cfg&amp;amp;#39;s. This also gives you an option if you really like a part&amp;
 amp;#39;s model or idea but think it&amp;amp;#39;s op - you can just modify the part .cfg until its stats line up with what you feel is balanced/realistic.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;TLDR: Basically, never use the normal jets. They&amp;amp;#39;re both less efficient and less powerful, unless you want to cruise around at below 240 m/s or below 2900m.&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/KerbalSpaceProgram/comments/1l8rv5/tip_choosing_a_jet_engine_based_on_velocity/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="5" downVotes="2"/>		</activity:object>		<author>			<name>darcgecko</name>			<uri>http://www.reddit.com/user/darcgecko</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user
 /darcgecko"/>			<id>http://www.reddit.com/user/darcgecko</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="max_factor">"Max Factor"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7v1p</id>		<published>2013-08-27T23:09:46Z</published>		<updated>2013-08-27T23:09:46Z</updated>		<title>Tylopodas posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/electronic_cigarette/comments/1l7v1p/first_mech_ordered_what_am_i_missing/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Panasonic%22&amp;limit=100&amp;after=t3_168ejl"/>			<title>Reddit - Keyword - Search (Recent) - "Panasonic"</title>			<updated>2013-08-28T19-47-07Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Panasonic"            </gnip:rule>		</source>		<service:pr
 ovider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7v1p</id>			<title>First mech ordered, what am I missing?</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Here&amp;amp;#39;s the list of stuff I ordered from various vendors:&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-Sigelei 8w&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-Sigelei kick clone&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-Nitecore I4&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-AW IMR 18490 x2&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-Panasonic NCR18650PD 18650 x2&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-IGO-W RDA (with monkeycan)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;-RSST RBA&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Already have a multimeter, a couple feet of 2mm ekowool and some 32awg kanthal to get m
 e through until I can try out a few different style wicks/coils so I know what to order for mesh/silica/kanthal.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Anything I am missing that will greatly improve my first mech experience?&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/electronic_cigarette/comments/1l7v1p/first_mech_ordered_what_am_i_missing/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="7" downVotes="0"/>		</activity:object>		<author>			<name>Tylopodas</name>			<uri>http://www.reddit.com/user/Tylopodas</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/Tylopodas"/>			<id>http://www.reddit.com/user/Tylopodas</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag=
 "panasonic">"Panasonic"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l9kpj</id>		<published>2013-08-28T23:57:46Z</published>		<updated>2013-08-28T23:57:46Z</updated>		<title>SemiCharmedMike posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/videography/comments/1l9kpj/advice_dslr_vs_camcorders_for_wedding_videography/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Panasonic%22&amp;limit=100&amp;after=t3_168ejl"/>			<title>Reddit - Keyword - Search (Recent) - "Panasonic"</title>			<updated>2013-08-28T19-47-07Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Panasonic"            </gnip:rule>		</source>		<
 service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l9kpj</id>			<title>Advice: DSLR vs. Camcorders for Wedding Videography</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Hi everyone,&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I just stumbled across this subreddit today and have lost an hour or so reading submissions. I am hoping you all will be able to help me out with a question I have.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I am about to get into wedding videography and I&amp;amp;#39;m looking for the perfect (or as close to it as i can get to it) camera. For the last 5 years I have used camcorders for all of my productions (Panasonic Panasonic HVX200&amp;amp;#39;s to be exact) and I&amp;amp;#39;m familiar wi
 th them. Though lately I have been noticing that a lot of videographers are using DSLRs.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;In your opinion, which is better? I had myself talked into a Canon 7D until I started reading posts and now I&amp;amp;#39;m thinking about looking into Panasonic&amp;amp;#39;s G6.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;And then there is a voice in the back of my head that I should go with a camcorder, hah. See my dilemma?&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The main venue I will be producing the wedding videos at has outside ceremonies so I&amp;amp;#39;m not worried about low lighting there...but the reception hall can get dark so I may need a camera that can record well in low lighting.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;BTW - I have about $2000 budget for the camera and another $2000 for accessories/other equipment.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;P.S. Also planning on shooting short films with this camera.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Thoughts? Suggestions? Th
 anks in advance!&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/videography/comments/1l9kpj/advice_dslr_vs_camcorders_for_wedding_videography/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="2" downVotes="1"/>		</activity:object>		<author>			<name>SemiCharmedMike</name>			<uri>http://www.reddit.com/user/SemiCharmedMike</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/SemiCharmedMike"/>			<id>http://www.reddit.com/user/SemiCharmedMike</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="panasonic">"Panasonic"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7xtm</id>		<published>2013-08-27T23:44:57Z</published>		<updated>2013-08-27T23:44:57Z</updated>		<title>AnyelevNokova posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/RandomActsofMakeup/comments/1l7xtm/contest_im_hungry_go_make_me_something/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22L%27oreal%22%20%22loreal%22&amp;limit=100&amp;after=t3_sa7ex"/>			<title>Reddit - Keyword - Search (Recent) - "L'oreal" "loreal"</title>			<updated>2013-08-28T19-46-28Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"L'oreal" "loreal"            </gn
 ip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7xtm</id>			<title>[Contest] I'm Hungry; Go Make Me Something!</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Hey ladies (and men.) I&amp;amp;#39;ve never actually posted over this way before, though I&amp;amp;#39;ve browsed a bit. After digging through my battlestation, I realized that I have a lot of stuff that I used once or haven&amp;amp;#39;t even opened! I&amp;amp;#39;m not 100% sure if this kind of thing is even allowed or interesting to people, but I&amp;amp;#39;d like to give what I&amp;amp;#39;ve got away because, honestly, I&amp;amp;#39;m super lazy when it comes to returning things.&amp;lt;/p&amp;gt;&amp;lt;p&amp
 ;gt;SO. Because of the sheer quantity of stuff I have, I&amp;amp;#39;m going to be doing this Beauty Box style. I have three boxes which I have sorted based upon interest. That means there are &amp;lt;em&amp;gt;three&amp;lt;/em&amp;gt; people I am going to be sending these to. &amp;lt;/p&amp;gt;&amp;lt;hr/&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;What&amp;amp;#39;s in the Boxes?&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/yFM3p6H.jpg"&amp;gt;Yeah, Elves Work At Drugstores&amp;lt;/a&amp;gt;: ELF Contouring Blush &amp;amp;amp; Bronzer (lightly used), ELF High Definition Powder (sealed), ELF Eyebrow Kit (used once), ELF Eyelid Primer (lightly used), ELF Eye Primer &amp;amp;amp; Line Sealer (sealed), L&amp;amp;#39;Oreal Voluminous Mascara in Black-Brown (lightly used), Maybelline Color Tattoo Pure Pigments in Black Mystery and Buff &amp;amp;amp; Tuff (sealed), Maybelline Color Tattoo &amp;lt;em&amp;
 gt;creams&amp;lt;/em&amp;gt; in Pomegranate Punk and Bold Gold (sealed), Boscia Lavender Blotting Linens (opened and wearing on edges from purse travel; otherwise unused) &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/ImSV4k6.jpg"&amp;gt;Let&amp;amp;#39;s Talk About Color&amp;lt;/a&amp;gt;: Revlon Photoready Perfecting Primer (sealed), Wet n Wild Eyeshadow Trios in I&amp;amp;#39;m Feeling Retro and Don&amp;amp;#39;t Steal My Thunder (sealed), Wet n Wild Color Icon Eyeshadow in Comfort Zone (sealed), Revlon Lip Butters in Creamsicle and Candy Apple (sealed), Revlon Lip Butter in Strawberry Shortcake (used once.) Not pictured but in the box: Boots No7 Beautiful Eyebrow Pencil in Brown (used once)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rp2JGWX.jpg"&amp;gt;Foxy Lady&amp;lt;/a&amp;gt;: Sephora Smokey Eye Brush (sealed), bareMinerals Marvelous Moxie Lipstick in Be
  Free (used once), Sephora Color Token Eyeshadow in Pink Casino (sealed), Tarte Amazonian Clay Full Coverage Airbrush Foundation in Light Beige (used once), Urban Decay Vitamin-Infused Complexion Prep Spray deluxe sample size (no seal, never used), Lady Gaga Fame deluxe sample size (no seal, never used)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;p&amp;gt;I&amp;amp;#39;ll also be tossing some random samples in the boxes as room allows.&amp;lt;/p&amp;gt;&amp;lt;hr/&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rules! Rules! Rules!&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;US only. Sorry, but international shipping is eugh :(&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;I will &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; be redistributing product within the boxes. What&amp;amp;#39;s in the box is in the box. If you win a box and don&amp;amp;#39;t want something in it, you&amp;amp;#39;re welcome
  to tell me and I&amp;amp;#39;ll remove the item. But no mix and match. If you don&amp;amp;#39;t like the boxes, don&amp;amp;#39;t enter.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;One box per person. When you enter the contest, please list the three boxes in order of most wanted to least wanted. First winner gets their first pick. Second winner gets their first pick that isn&amp;amp;#39;t taken. Third winner gets the box that remains. If you are only interested in one or two boxes, you can choose to only list one or two, but you must explicitly specify that you &amp;lt;em&amp;gt;do not want&amp;lt;/em&amp;gt; the other(s). If you are selected as a winner, but the box(es) you listed were already taken, I&amp;amp;#39;ll move onto a runner-up who was less particular.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You must have a valid street address. No PO/FPO/APO/DPO.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;p&a
 mp;gt;No lurkers (I know, ironic) and/or new (&amp;amp;lt;30 day) accounts. I &amp;lt;em&amp;gt;will&amp;lt;/em&amp;gt; check your comment history.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;hr/&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Ok, what do I have to do?&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Make food. Take a picture of it. Post the picture alongside a description of what it is. Describe your dish to us. What does it taste like? How does it smell? What kind of texture does it have? Get creative here. Recipe is optional. I&amp;amp;#39;m not necessarily looking for the most tasty &amp;lt;em&amp;gt;looking&amp;lt;/em&amp;gt; dish; I&amp;amp;#39;m looking for the combination of picture and dish that makes me go OMG GIVE IT TO ME NOW. Yes: this is a very subjective contest. I have no criteria for meal or ingredients; however, it must be a singular dish. You may garnish, but I&amp;amp;#39;m not looking for Steak + Potatoes + Beans + Wine 
 + Candles. Show me the steak on a plate, and then tell me about it. Seriously. I&amp;amp;#39;m hungry!&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;The deadline for entries will be Wednesday, September 4th at 11:59 PM. I will announce winners by Friday morning.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Edit: Changed the deadline so people had more time to plan and cook.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/RandomActsofMakeup/comments/1l7xtm/contest_im_hungry_go_make_me_something/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="12" downVotes="2"/>		</activity:object>		<author>			<name>AnyelevNokova</name>			<uri>http://www.reddit.com/user/AnyelevNokova</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<
 link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/AnyelevNokova"/>			<id>http://www.reddit.com/user/AnyelevNokova</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="l'oreal">"L'oreal" "loreal"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l8bju</id>		<published>2013-08-28T02:45:46Z</published>		<updated>2013-08-28T02:45:46Z</updated>		<title>Badger4You posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/headphones/comments/1l8bju/recommendations_for_a_recreational_gaming_pc/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Max%20Factor%22&amp;limit=100&amp;after=t3_156seg"/>			<title>Reddit - Keyword - Search (Recent) - "Max Factor"</title>			<updated>2013-08-28T19-39-36Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Max Factor"            </gnip:rule>		</source>		<servic
 e:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l8bju</id>			<title>Recommendations for a Recreational Gaming PC Headphones/Headset</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;[Price Range $80 to $120 max]  I&amp;amp;#39;m building my first PC and am looking for a nice quality pair of headphones to go with a modmic &amp;lt;a href="http://www.modmic.com/"&amp;gt;http://www.modmic.com/&amp;lt;/a&amp;gt; or just a headset but from what I read that&amp;amp;#39;s not the best idea. I really want surround sound and some good bass for a realistic feel, but I&amp;amp;#39;d still to have some sense of direction ie footsteps in call of duty, but overall sound quality is my priority for playing Mmorpgs or ga
 mes like Skyrim. I&amp;amp;#39;m pretty dead set on having a closed over ear style. I&amp;amp;#39;m not positive what kind of connections I have with my Asus motherboard &amp;lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16813131872&amp;amp;amp;nm_mc=EMC-IGNEFL082713&amp;amp;amp;cm_mmc=EMC-IGNEFL082713-_-EMC-082713-Index-_-AMDMotherboards-_-13131872-L0D"&amp;gt;http://www.newegg.com/Product/Product.aspx?Item=N82E16813131872&amp;amp;amp;nm_mc=EMC-IGNEFL082713&amp;amp;amp;cm_mmc=EMC-IGNEFL082713-_-EMC-082713-Index-_-AMDMotherboards-_-13131872-L0D&amp;lt;/a&amp;gt;. I do not have a sound card, so if you&amp;amp;#39;d recommend one please factor that into the price as well as an amp. Thanks!!&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/headphones/comments/1l8bju/recommendations_for_a_recreational_gaming_pc/"/>			<gnip:statistics upVotes="2" downVotes="0"/>		</activity:
 object>		<author>			<name>Badger4You</name>			<uri>http://www.reddit.com/user/Badger4You</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/Badger4You"/>			<id>http://www.reddit.com/user/Badger4You</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="max_factor">"Max Factor"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7vbs</id>		<published>2013-08-27T23:13:25Z</published>		<updated>2013-08-27T23:13:25Z</updated>		<title>flip69 posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SanDiegoClassifieds/comments/1l7vbs/anyone_need_a_large_hepa_filter_ive_got_a_two/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22lysol%22&amp;limit=100"/>			<title>Reddit - Keyword - Search (Recent) - "lysol"</title>			<updated>2013-08-28T19-35-40Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"lysol"            </gnip:rule>		</source>		<service:provider>			<name>Reddit</nam
 e>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7vbs</id>			<title>Anyone need a LARGE HEPA Filter I've got a two person filter with flow hood for sale!!! it comes with a pre-filter addition.</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;You read that right... perfect for lab work and all the other things a person might want to do...  it&amp;amp;#39;s a dual seat/person HEPA filter with clear flow hood that&amp;amp;#39;s perfect for those people that want to work in a sterile environment. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Same model as being sold for over $1,600.00 but I&amp;amp;#39;ll let it go for less than 1/3 that it&amp;amp;#39;s used and will have to be hit with lysol but at this price... it can&amp;amp;#39;t be beat.&amp
 ;lt;/p&amp;gt;&amp;lt;p&amp;gt;24 x 36  scanned 99.99% efficient micron filter, maximizing your sterile work area. Comes with a prefilter assembly, a powerful 1⁄2 HP blower, and grounded plug and cord. Truly the &amp;amp;quot;Cadillac&amp;amp;quot; of Laminar Flow Hoods! &amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SanDiegoClassifieds/comments/1l7vbs/anyone_need_a_large_hepa_filter_ive_got_a_two/"/>			<gnip:statistics upVotes="1" downVotes="0"/>		</activity:object>		<author>			<name>flip69</name>			<uri>http://www.reddit.com/user/flip69</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/flip69"/>			<id>http://www.reddit.com/user/flip69</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Lys
 ol">"lysol"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l9ek9</id>		<published>2013-08-28T22:40:15Z</published>		<updated>2013-08-28T22:40:15Z</updated>		<title>beautiful_sausage posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Fapucational/comments/1l9ek9/by_1890_many_variations_of_soap_were_offered_with/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22colgate%22&amp;limit=100&amp;after=t3_1cfq0r"/>			<title>Reddit - Keyword - Search (Recent) - "colgate"</title>			<updated>2013-08-28T19-34-16Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"colgate"            </gnip:rule>		</source>		<ser
 vice:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l9ek9</id>			<title>By 1890 many variations of soap were offered, with the five major companies being, Colgate, Morse Taylor, Albert, Pears, and Bailey.</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Fapucational/comments/1l9ek9/by_1890_many_variations_of_soap_were_offered_with/"/>			<link rel="enclosure" type="text/html" href="http://i.imgur.com/RItI7sq.jpg"/>			<link rel="preview" type="image/jpeg" href="nsfw"/>			<gnip:statistics upVotes="11" downVotes="0"/>		</activity:object>		<author>			<name>beautiful_sausage</name>			<uri>http://www.reddit.com/user/beautiful_sausage</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity
 :object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/beautiful_sausage"/>			<id>http://www.reddit.com/user/beautiful_sausage</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Colgate">"colgate"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l9u33</id>		<published>2013-08-29T01:49:52Z</published>		<updated>2013-08-29T01:49:52Z</updated>		<title>SeleneNyx posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l9u33/been_sick_for_days_but_gifts_from_loreal_perked/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22L%27oreal%22%20%22loreal%22&amp;limit=100&amp;after=t3_1a5xa8"/>			<title>Reddit - Keyword - Search (Recent) - "L'oreal" "loreal"</title>			<updated>2013-08-28T19-32-14Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"L'oreal" "loreal"            <
 /gnip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l9u33</id>			<title>Been sick for days, but gifts from L'Oreal perked me up! (info in comments)</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l9u33/been_sick_for_days_but_gifts_from_loreal_perked/"/>			<link rel="enclosure" type="text/html" href="http://i.imgur.com/2K18XEq.jpg"/>			<link rel="preview" type="image/jpeg" href="http://b.thumbs.redditmedia.com/TsOwJ_IrneE_d3NO.jpg"/>			<gnip:statistics upVotes="9" downVotes="2"/>		</activity:object>		<author>			<name>SeleneNyx</name>			<uri>http://www.reddit.com/user/SeleneNyx</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activ
 ity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/SeleneNyx"/>			<id>http://www.reddit.com/user/SeleneNyx</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="l'oreal">"L'oreal" "loreal"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l9g7d</id>		<published>2013-08-28T23:02:22Z</published>		<updated>2013-08-28T23:02:22Z</updated>		<title>cucumm2 posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/amazonsdeal/comments/1l9g7d/amazon_lysol_disinfecting_wipes_upto_35_off_plus/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22lysol%22&amp;limit=100&amp;after=t3_10zvhy"/>			<title>Reddit - Keyword - Search (Recent) - "lysol"</title>			<updated>2013-08-28T19-28-30Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"lysol"            </gnip:rule>		</source>		<service:provider>			<
 name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l9g7d</id>			<title>Amazon: Lysol Disinfecting Wipes upto 35% off plus buy 4 get 1 free</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/amazonsdeal/comments/1l9g7d/amazon_lysol_disinfecting_wipes_upto_35_off_plus/"/>			<link rel="enclosure" type="text/html" href="http://www.usmomdeal.com/amazon-lysol-disinfecting-wipes-upto-35-plus-buy-4-get-1-free/"/>			<link rel="preview" type="image/jpeg" href="http://c.thumbs.redditmedia.com/dam2sY5sFiayvl6J.jpg"/>			<gnip:statistics upVotes="1" downVotes="0"/>		</activity:object>		<author>			<name>cucumm2</name>			<uri>http://www.reddit.com/user/cucumm2</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:
 object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/cucumm2"/>			<id>http://www.reddit.com/user/cucumm2</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Lysol">"lysol"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7ym9</id>		<published>2013-08-27T23:55:46Z</published>		<updated>2013-08-27T23:55:46Z</updated>		<title>vash3g posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shotguns/comments/1l7ym9/remington_1100_stock/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Remington%22&amp;limit=100&amp;after=t3_1fk3mo"/>			<title>Reddit - Keyword - Search (Recent) - "Remington"</title>			<updated>2013-08-28T19-25-58Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Remington"            </gnip:rule>		</source>		<service:provider>			<name>Reddit</name>		
 	<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7ym9</id>			<title>Remington 1100 stock</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;I am purchasing a Remington 1100 20 Guage from gunbroker at a great price. The seller called me last night to say that the stock was not adult sized and short. I&amp;amp;#39;m assuming it might be a youth stock. Where is the best place outside of Remington direct to get a nice monte carlo checkered stock to replace it?&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shotguns/comments/1l7ym9/remington_1100_stock/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="7" downV
 otes="1"/>		</activity:object>		<author>			<name>vash3g</name>			<uri>http://www.reddit.com/user/vash3g</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/vash3g"/>			<id>http://www.reddit.com/user/vash3g</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="remington">"Remington"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1la0ec</id>		<published>2013-08-29T03:03:30Z</published>		<updated>2013-08-29T03:03:30Z</updated>		<title>skincarerevamp posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Aveeno%22&amp;limit=100"/>			<title>Reddit - Keyword - Search (Recent) - "Aveeno"</title>			<updated>2013-08-28T19-24-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Aveeno"            </gnip:rule>		</source>		<service:provider>			<name>Reddit<
 /name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1la0ec</id>			<title>Need help finding a new skincare routine.</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;I recently found this subreddit, and since then have discovered the many errors of my skincare ways. I am a 26(F) who has been using Proactiv for about 3-4 years now. I know that there are less expensive products I can use that would be better on my skin.  &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Skin: I have somewhat oily skin, my forehead can get shiny. The pores on my nose and chin clog easily but my cheeks are always really smooth and clear. My biggest annoyance is my nose, which has been red and tends to flake since I was a teenager. I will get the occasional breakout, almo
 st always hormonal. As long as I use Proactiv religiously, my skin stays overall pretty decent looking.  Also I have dark circles/uneven skin tone under my eyes and have tried many products without finding one I really love.  &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Routine: I think I have overdone it with my routine in the past. I have recently stopped exfoliating as often, but I will list my previous routine.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;AM – St. Ives scrub, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv repairing treatment, Simple protecting light moisturizer SPF 15, Clean &amp;amp;amp; Clear Advantage Spot Treatment, eye cream/serum (either Philosophy Eye Believe or Genifique Yeux Light-Pearl)&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;PM – Ponds makeup removing wipes, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv clarifying night cream, Proactiv repairing treatment, Simple protecting light moisturi
 zer SPF 15, eye cream/serum&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Also once or twice a week I may use Proactiv refining mask, Proactiv blackhead dissolving gel, or   Proactiv glycolic acid peel&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Over the past few weeks I have stopped using the St. Ives Scrub and switched to an Aveeno scrub, which I can tell is a lot more gentle on my face. I only use the scrub now a couple times a week and my Clarisonic every few days at night.  &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;So basically I’m looking for advice because this routine is quite tedious/expensive and it works decently but not great.  Thanks!&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="1" downVotes="0"/>		</activity:object>		<author>			<name>ski
 ncarerevamp</name>			<uri>http://www.reddit.com/user/skincarerevamp</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/skincarerevamp"/>			<id>http://www.reddit.com/user/skincarerevamp</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="aveeno">"Aveeno"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l85hv</id>		<published>2013-08-28T01:24:53Z</published>		<updated>2013-08-28T01:24:53Z</updated>		<title>justateburrito posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shave_Bazaar/comments/1l85hv/fs_den_clearance_fatboy_rocket_simpson/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22schick%22&amp;limit=100&amp;after=t3_13oj1g"/>			<title>Reddit - Keyword - Search (Recent) - "schick"</title>			<updated>2013-08-28T19-22-35Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"schick"            </gnip:rule>		</source>		<service:provider>			
 <name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l85hv</id>			<title>FS: Den Clearance, Fatboy, Rocket, Simpson, Penahaligon's, Bakelite, Soaps, Razors</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Gentlemen(and ladies), I&amp;amp;#39;m looking to clear out some items that I enjoy having around, but don&amp;amp;#39;t show enough love to. I hope you can find a place in your den for them. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I will only ship CONUS and accept payments though Paypal. If you see a comment below that a PM was sent about a specific item, it does not mean a sale was made until I mark it sold. I may need a couple of days to get these items shipped out, but will do my best to be speedy. Items will ship USPS t
 o your confirmed Paypal address only. If you&amp;amp;#39;re interested in multiple items I will knock something off total price, depending on the items.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The only items I would be willing to make a trade for would be a Mint Merkur 37G(the gold slant) or a minty Aristocrat #66.  &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Razors&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Gillette Fatboy, date code G2. This is nice and shiny. I touched up the numbers with enamel paint when I first received it. This comes in the case which seems to be in pretty good shape as well. Also included is the blade case which appears to have a few blades in it, not sure how many. Price $100&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/o8CWQDS.jpg"&amp;gt;http://i.imgur.com/o8CWQDS.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href=
 "http://i.imgur.com/soiDjtF.jpg"&amp;gt;http://i.imgur.com/soiDjtF.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/E6lETDo.jpg"&amp;gt;http://i.imgur.com/E6lETDo.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/2Wk1VmL.jpg"&amp;gt;http://i.imgur.com/2Wk1VmL.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Gillette British Rocket HD, with the case. Both are in nice condition, the case isn&amp;amp;#39;t cracked and the razor is shiny. I purchased this on the BST in March and haven&amp;amp;#39;t used it much. Price $ 85&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/sIYtnK5.jpg"&amp;gt;http://i.imgur.com/sIYtnK5.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rtcTROt.jpg"&amp;gt;http://i.imgur.com/rtcTROt.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&a
 mp;gt;&amp;lt;a href="http://i.imgur.com/cLXpwH3.jpg"&amp;gt;http://i.imgur.com/cLXpwH3.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/RvUP4ro.jpg"&amp;gt;http://i.imgur.com/RvUP4ro.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;NOS Bakelite Slant w/case. This is the one that was being sold a few months back. It was my backup and I never used it. I am not sure I want to let it go, but I will for the right price. Listing this one at $100&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/AUhHfLj.jpg"&amp;gt;http://i.imgur.com/AUhHfLj.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/eq5anFc.jpg"&amp;gt;http://i.imgur.com/eq5anFc.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Schick Injector - I believe this is a G3, it is all metal. I purchased it in it&amp;amp;#39;s cu
 rrent condition with the intent of cleaning it up but haven&amp;amp;#39;t gotten too it. There are no dents in it, although the head has a slight wiggle where the arrow is pointing in the picture. I&amp;amp;#39;m sure it&amp;amp;#39;s easily remedied. The plating is not good, but I do not see these often and it would make a nice piece for a re-plate. Price $25&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/5DhODtQ.jpg"&amp;gt;http://i.imgur.com/5DhODtQ.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/VZ5iayO.jpg"&amp;gt;http://i.imgur.com/VZ5iayO.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/291YUGv.jpg"&amp;gt;http://i.imgur.com/291YUGv.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Razor lot. I bought these razors with the intention of cleaning them up and using them but just haven&amp;am
 p;#39;t had time. The lot includes a slim adjustable(L1), Ericsson open comb, and a Christy razor. the adjustable seems to open/close and adjust. If you want to clean these up and see if they&amp;amp;#39;re in useable condition, give it a shot. Price $30&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/KgrqSfO.jpg"&amp;gt;http://i.imgur.com/KgrqSfO.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/fxipANp.jpg"&amp;gt;http://i.imgur.com/fxipANp.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Brushes&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Simspon Duke 2 in Best. You know what it is. It&amp;amp;#39;s in good condition with the sticker still attached and lettering nice and clear. Comes with the original box. Price $65&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&
 amp;gt;&amp;lt;a href="http://i.imgur.com/kuuUd6t.jpg"&amp;gt;http://i.imgur.com/kuuUd6t.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/cSRZ5vN.jpg"&amp;gt;http://i.imgur.com/cSRZ5vN.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;SOLD &amp;lt;del&amp;gt;Whipped Dog Silvertip 24mm in Black Resin. Bought this because I just wanted to try a Whipped Dog Silvertip since so many people talk about them. I used it very briefly and purchased a 30mm from WD so this just sits on the shelf. It sheds every now and then, but not terribly. Price $20&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/ir4OYUB.jpg"&amp;gt;http://i.imgur.com/ir4OYUB.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/W1nKbd0.jpg"&amp;gt;http://i.imgur.com/W1nKbd0.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&am
 p;gt;&amp;lt;strong&amp;gt;Soaps&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;SOLD &amp;lt;del&amp;gt;New unused Tabac in the bowl and new/unused Razorock Cacao(discontinued) selling these as package, not splitting it up. Price $30&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pic&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/2eoxSmM.jpg"&amp;gt;http://i.imgur.com/2eoxSmM.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;D. R. Harris Arlington Soap in Mahogany bowl and Aftershave Milk. This stuff is great, I simply have too many soaps. There is at least 90-95% left of these, selling together with the original boxes. Price $50&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rwuB4wv.jpg"&amp;gt;http://i.imgur.com/rwuB4wv.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.
 imgur.com/jx6UqU4.jpg"&amp;gt;http://i.imgur.com/jx6UqU4.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/43z4GRc.jpg"&amp;gt;http://i.imgur.com/43z4GRc.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;SOLD &amp;lt;del&amp;gt;Vintage Penhaligon&amp;amp;#39;s English Fern. This is from Bullgoose. I used a vegetable peeler on the side to fit it in the oak bowl, the &amp;amp;quot;peelings&amp;amp;quot; are underneath the puck in the bowl. I used this somewhere between 3-5 times. The lettering is still visible on the top of the puck. I will also include the remainder or a Penhaligon&amp;amp;#39;s English Fern Cologne decant, there is approx 2ml left. The oak bowl was purchased separately and I will sell it with or without the bowl. Price with the bowl $60 without the bowl $55&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.co
 m/YnwFZwR.jpg"&amp;gt;http://i.imgur.com/YnwFZwR.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/VbF1RCy.jpg"&amp;gt;http://i.imgur.com/VbF1RCy.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Soap Lot. I enjoy all of these, but simply can&amp;amp;#39;t shave often enough to go through them all. Razorock Chianti Lavender, this is a soft soap, I do not believe he currently makes it anymore at least 80% left. Mama Bear&amp;amp;#39;s Indian Tobacco Flower &amp;amp;amp; Ye Olde Barbershoppe, both at least 90% left. RazoRock Mudder Focker (limited edition) at least 90% left. Valobra Menthol Croap, used 3-5 times and formed into a Boston Market side dish bowl. Also including the Proraso White Balm shown in the pictures, only used 2-3 times. Price $50&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/wrRkEjd.jpg"&amp;gt;http://i.imgur.com/wrRkEj
 d.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/IsrUQJM.jpg"&amp;gt;http://i.imgur.com/IsrUQJM.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Items&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Slim Zippo Lighter - I haven&amp;amp;#39;t used this, I purchased it in it&amp;amp;#39;s current condition. The flint produces a spark. There is a tiny hole on one side as shown in the picture although the picture makes it seem larger than it actually is. Price $10 sold with another item only.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/RVm6RhS.jpg"&amp;gt;http://i.imgur.com/RVm6RhS.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/fbbQ7FR.jpg"&amp;gt;http://i.imgur.com/fbbQ7FR.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Custom B
 allpoint Pen by Elite Razor. This is Tourmaline Quartz with platinum fittings. Very nice piece with great weight to it. I paid $85. Asking $60&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rhcgVUa.jpg"&amp;gt;http://i.imgur.com/rhcgVUa.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/6Ca67w5.jpg"&amp;gt;http://i.imgur.com/6Ca67w5.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Whipped Dog Poor Man&amp;amp;#39;s Strop Kit. I used this once before deciding straights weren&amp;amp;#39;t for me. This strop isn&amp;amp;#39;t perfect, but it&amp;amp;#39;s useable for a beginner. There is a tiny nick shown in the pictures, not sure if this would make a difference, it&amp;amp;#39;s how I received it. Price $20&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&amp;lt;p&amp;gt;&amp;amp;quot;The Poor Man strop kit contains a 2&amp;amp;quot; x 26&amp;amp;quo
 t; leather strop and a balsa strop to which abrasives have been added. It also includes a hook for wall mounting, and a small packet of Neatsfoot oil for treating the leather strop. The leather strop can also be looped around a towel rod as shown in the pictures.The balsa wood has been treated on one side with 0.3 micron chromium oxide (green) and with 0.1 micron iron oxide (red) on the other side. Additional supply of these abrasives are included.&amp;amp;quot;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/flDEJyv.jpg"&amp;gt;http://i.imgur.com/flDEJyv.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/8ft7E62.jpg"&amp;gt;http://i.imgur.com/8ft7E62.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shave_Bazaar/comments/1l85hv/fs_den_clearance_fatboy_rocket_simpson/
 "/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="9" downVotes="2"/>		</activity:object>		<author>			<name>justateburrito</name>			<uri>http://www.reddit.com/user/justateburrito</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/justateburrito"/>			<id>http://www.reddit.com/user/justateburrito</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Schick ">"schick"</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7tb6</id>		<published>2013-08-27T22:49:12Z</published>		<updated>2013-08-27T22:49:12Z</updated>		<title>oh_rio_rio posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l7tb6/need_help_any_opinions_about_loreal_cosmetics/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22L%27oreal%22%20%22loreal%22%20%29&amp;limit=100&amp;after=t3_107krl"/>			<title>Reddit - Keyword - Search (Recent) - ("L'oreal" "loreal" )</title>			<updated>2013-08-28T18-40-15Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("L'oreal" "loreal" 
 )            </gnip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7tb6</id>			<title>Need help! Any opinions about L'Oreal Cosmetics? Event coming up...</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Hi you guys!&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Lucky me, I have been chosen as an artist for the event I&amp;amp;#39;ve linked to below. It&amp;amp;#39;s the Cosmo magazine and L&amp;amp;#39;Oreal Cosmetic Campus Tour! I&amp;amp;#39;m really excited, but a little concerned. I&amp;amp;#39;m a stylist with a medium-sized Aveda salon, and I&amp;amp;#39;m more than comfortable with professional application and session work. I am not, however, familiar AT ALL with L&amp;amp;#39;Ore
 al makeup. The only training I will be receiving is the consumer website and about two hours the morning of the event! Does anyone have any opinions, feedback, knowledge of these products?? I&amp;amp;#39;d love any help??&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://www.cosmopolitan.com/hairstyles-beauty/skin-care-makeup/cosmo-campus-tour"&amp;gt;http://www.cosmopolitan.com/hairstyles-beauty/skin-care-makeup/cosmo-campus-tour&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l7tb6/need_help_any_opinions_about_loreal_cosmetics/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="3" downVotes="1"/>		</activity:object>		<author>			<name>oh_rio_rio</name>			<uri>http://www.reddit.com/user/oh_rio_rio</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</acti
 vity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/oh_rio_rio"/>			<id>http://www.reddit.com/user/oh_rio_rio</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="l'oreal">("L'oreal" "loreal" )</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l7btz</id>		<published>2013-08-27T19:25:31Z</published>		<updated>2013-08-27T19:25:31Z</updated>		<title>NickPressnall posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EarthPorn/comments/1l7btz/cutthroat_pass_pacific_crest_trail_wa_2560x1920/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22crest%22%20%29%20-%20%28%22pacific%20crest%22%20%29&amp;limit=100&amp;after=t3_10m52h"/>			<title>Reddit - Keyword - Search (Recent) - ("crest" ) - ("pacific crest" )</title>			<updated>2013-08-28T18-03-31Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas
 /2010">("crest" ) - ("pacific crest" )            </gnip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l7btz</id>			<title>Cutthroat Pass, Pacific Crest Trail, WA [2560x1920]</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EarthPorn/comments/1l7btz/cutthroat_pass_pacific_crest_trail_wa_2560x1920/"/>			<link rel="enclosure" type="text/html" href="http://imgur.com/ndkVEBK"/>			<link rel="preview" type="image/jpeg" href="http://a.thumbs.redditmedia.com/tdar1BPz9bv3JmGx.jpg"/>			<gnip:statistics upVotes="8" downVotes="1"/>		</activity:object>		<author>			<name>NickPressnall</name>			<uri>http://www.reddit.com/user/NickPressnall</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/s
 chema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/NickPressnall"/>			<id>http://www.reddit.com/user/NickPressnall</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Crest">("crest" ) - ("pacific crest" )</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l842y</id>		<published>2013-08-28T01:05:58Z</published>		<updated>2013-08-28T01:05:58Z</updated>		<title>mittens2248 posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MLPLounge/comments/1l842y/colgate_beadsprite_courtesy_of_opti/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22colgate%22%20%29&amp;limit=100&amp;after=t3_j7xv0"/>			<title>Reddit - Keyword - Search (Recent) - ("colgate" )</title>			<updated>2013-08-28T18-03-27Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("colgate" )            </gnip:rule>		</source>		<service:prov
 ider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l842y</id>			<title>Colgate Beadsprite, courtesy of Opti</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MLPLounge/comments/1l842y/colgate_beadsprite_courtesy_of_opti/"/>			<link rel="enclosure" type="text/html" href="http://i.imgur.com/FbGICCJ.jpg"/>			<gnip:statistics upVotes="45" downVotes="3"/>		</activity:object>		<author>			<name>mittens2248</name>			<uri>http://www.reddit.com/user/mittens2248</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/mittens2248"/>			<id>http://www.reddit.com/user/mittens2248</id>		</activity:actor>		<gni
 p:matching_rules>			<gnip:matching_rule rel="source" tag="Colgate">("colgate" )</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1l8qmr</id>		<published>2013-08-28T06:29:57Z</published>		<updated>2013-08-28T06:29:57Z</updated>		<title>dejoblue posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EQNext/comments/1l8qmr/raids_without_loot/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22Max%20Factor%22%20%29&amp;limit=100&amp;after=t3_zkcy0"/>			<title>Reddit - Keyword - Search (Recent) - ("Max Factor" )</title>			<updated>2013-08-28T18-01-30Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("Max Factor" )            </gnip:rule>		</source>		<service:provider>			<nam
 e>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1l8qmr</id>			<title>Raids Without Loot</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;I was thinking about not having levels and about what can be a motivating factor. As usual I resorted to my end game conclusion. Once you get to max level there is no more leveling, no more XP, what drives players? Character progression of some sort, usually in the form of a gear treadmill.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;What can we do that is different than the traditional loot drop from random raid boss X?&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;I thought back to my Nintendo upbringing to Mario and Zelda and Final Fantasy.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Saving the princess, making the
  triforce, defeating all the bosses and saving the world.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The princess can be kidnapped over and over, many magical items can be forged and the world will need saving many times over.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;This is what could be the driving force for EQN. Instead of loot drops perhaps a boss is guarding a magical cavern filled with rare ore to be mined.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Maybe the boss has captured an Orc princess and when we save her we learn the Orc language which helps us discover some hidden treasure because we can read the orcish map we found at the beginning of the quest to save the princess.&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;The ubiquitous forging of a magical blade could be the reason to defeat a raid boss, plunge your already forged weapon into the dragon&amp;amp;#39;s steaming dead body and seal in it&amp;amp;#39;s magical powers to infuse your weapon with might and power!&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;What o
 ther non loot scenarios can you think of guys?!&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EQNext/comments/1l8qmr/raids_without_loot/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="13" downVotes="5"/>		</activity:object>		<author>			<name>dejoblue</name>			<uri>http://www.reddit.com/user/dejoblue</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/dejoblue"/>			<id>http://www.reddit.com/user/dejoblue</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="max_factor">("Max Factor" )</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1brddb</id>		<published>2013-04-05T22:29:01Z</published>		<updated>2013-04-05T22:29:01Z</updated>		<title>lemon_zest posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/realasians/comments/1brddb/i_guess_ill_go_outside_after_this_sunshine_ftw_d/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </
 gnip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1brddb</id>			<title>I guess I'll go outside after this; sunshine ftw :D</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/realasians/comments/1brddb/i_guess_ill_go_outside_after_this_sunshine_ftw_d/"/>			<link rel="enclosure" type="text/html" href="http://imgur.com/oyhmkzU"/>			<link rel="preview" type="image/jpeg" href="http://b.thumbs.redditmedia.com/TykUrjG05wYU0wiy.jpg"/>			<gnip:statistics upVotes="71" downVotes="68"/>		</activity:object>		<author>			<name>lemon_zest</name>			<uri>http://www.reddit.com/user/lemon_zest</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="a
 lternate" type="text/html" length="0" href="http://www.reddit.com/user/lemon_zest"/>			<id>http://www.reddit.com/user/lemon_zest</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>i5fxh</id>		<published>2011-06-21T19:06:20Z</published>		<updated>2011-06-21T19:06:20Z</updated>		<title>_Laurana posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/trees/comments/i5fxh/chronic_cheesecake_recipe/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </gnip:rule>		</source>		<service:
 provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>i5fxh</id>			<title>Chronic Cheesecake Recipe...</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Crust&amp;lt;/strong&amp;gt;3 cups graham cracker crumbs,2 tablespoons sugar,3/4 cup cannabutter warmed to liquid.Press into the bottom of a large springform pan and set aside. I used a 10 inch pan. &amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Filling&amp;lt;/strong&amp;gt;2 lb. cream cheese (softened),1/2 cup of cannabutter warmed to liquid,1 lb. sour cream,1/2 cup whole milk,6 eggs (at room temperature),2 cups sugar,1 cup flour,pinch of salt,2 tablespoons lemon zest,2 tablespoons vanilla extract.&amp;lt;/p&amp;gt;&amp;lt;p&amp
 ;gt;&amp;lt;strong&amp;gt;Directions&amp;lt;/strong&amp;gt;This recipe takes a lot of mixing to completely mix ingredients ans ensure a smooth texture. Place cream cheese and sour cream in a large bowl. Mix for 30 seconds. Add whole milk and cannabutter, mix for another 30 seconds. Add sugar, flour, salt, vanilla and lemon zest. Mix until smooth, scraping the sides of the bowl with a spatula occasionally. Then add eggs one at a time, mixing 30 seconds between each egg. Pour mixture into springform pan with crust. Now to keep the top of your cake from cracking, you can place the springform pan into a baking pan that has about 1 to 1 1/2 inches of water in it. I prefer using a really wet towel and wrapping it around the springform pan. Make sure to place it on a large cookie sheet. Bake @ 350f for 1 1/2 hours or until a wooden toothpick inserted into the center comes out clean. When you remove cake from oven, make sure to let it cool for about 1 hour before placing it in the fridge to
  chill. I would hill it for at least 3 hours before serving. Make sure to run a knife along the edge of the springform pan before opening it! Hope everyone enjoys. I use super potent cannabutter. It ensures my cake always turns out the best! Hope all you enjoy!&amp;lt;/p&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;I had lots of request for this recipe. I hope everyone gets it that wanted it. I posted the recipe in the comment thread of my yesterdays post as well as in a new post. Ents Enjoy! &amp;lt;a href="http://www.reddit.com/r/trees/comments/i4pqp/i_made_a_chronic_cheesecake_10/"&amp;gt;Chronic Cheesecake&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/trees/comments/i5fxh/chronic_cheesecake_recipe/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics upVotes="88" downVotes="10"/>		</activity:object>		<author>			<name>_Lau
 rana</name>			<uri>http://www.reddit.com/user/_Laurana</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/_Laurana"/>			<id>http://www.reddit.com/user/_Laurana</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>y8nml</id>		<published>2012-08-15T03:37:25Z</published>		<updated>2012-08-15T03:37:25Z</updated>		<title>dinkleberg31 posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/todayilearned/comments/y8nml/til_that_the_average_lemon_has_2_oz_of_lemon/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </g
 nip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>y8nml</id>			<title>TIL that the average lemon has 2 oz of lemon juice and one ounce of zest.</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/todayilearned/comments/y8nml/til_that_the_average_lemon_has_2_oz_of_lemon/"/>			<link rel="enclosure" type="text/html" href="http://www.howmuchisin.com/produce_converters/how-much-juice-in-a-lemon"/>			<link rel="preview" type="image/jpeg" href="http://c.thumbs.redditmedia.com/HVK6XcTIOu3JIXD2.jpg"/>			<gnip:statistics upVotes="39" downVotes="15"/>		</activity:object>		<author>			<name>dinkleberg31</name>			<uri>http://www.reddit.com/user/dinkleberg31</uri>		</author>		<activity:actor>			<activity:object-type>http://act
 ivitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/dinkleberg31"/>			<id>http://www.reddit.com/user/dinkleberg31</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1ax1ok</id>		<published>2013-03-24T17:07:41Z</published>		<updated>2013-03-24T17:07:41Z</updated>		<title>NinjaNerd posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/wicked_edge/comments/1ax1ok/anyone_ever_try_lathering_up_a_soap_not/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </gnip:rule
 >		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1ax1ok</id>			<title>Anyone ever try lathering up a soap not specifically made for shaving?</title>			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Anyone ever try this?  Curious to know whether you&amp;amp;#39;d be able to shave with any &amp;amp;#39;ol bar of soap, like one you&amp;amp;#39;d use in the shower for example (irish spring/zest/lever 2000).&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/wicked_edge/comments/1ax1ok/anyone_ever_try_lathering_up_a_soap_not/"/>			<link rel="preview" type="image/jpeg" href="self"/>			<gnip:statistics u
 pVotes="7" downVotes="2"/>		</activity:object>		<author>			<name>NinjaNerd</name>			<uri>http://www.reddit.com/user/NinjaNerd</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/NinjaNerd"/>			<id>http://www.reddit.com/user/NinjaNerd</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1c8oyd</id>		<published>2013-04-13T01:04:28Z</published>		<updated>2013-04-13T01:04:28Z</updated>		<title>substance_d posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/FoodPorn/comments/1c8oyd/potato_and_yam_fries_with_parsley_and_lemon_zest/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </g
 nip:rule>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1c8oyd</id>			<title>Potato and yam fries, with parsley and lemon zest. [612X612]</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/FoodPorn/comments/1c8oyd/potato_and_yam_fries_with_parsley_and_lemon_zest/"/>			<link rel="enclosure" type="text/html" href="http://i.imgur.com/t90QUxO.jpg"/>			<link rel="preview" type="image/jpeg" href="http://b.thumbs.redditmedia.com/ejqTTzQzftksFL-g.jpg"/>			<gnip:statistics upVotes="38" downVotes="4"/>		</activity:object>		<author>			<name>substance_d</name>			<uri>http://www.reddit.com/user/substance_d</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>		
 	<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/substance_d"/>			<id>http://www.reddit.com/user/substance_d</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching_rules>	</entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"		xmlns:gnip="http://www.gnip.com/schemas/2010">		<id>1k9npy</id>		<published>2013-08-13T10:00:28Z</published>		<updated>2013-08-13T10:00:28Z</updated>		<title>YamiSC2 posted an article Reddit</title>		<category term="ArticlePosted" label="Article Posted"/>		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/starcraft/comments/1k9npy/2013_wcg_korea_national_final_parting_vs_rain/"/>		<source>			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>			<updated>2013-08-28T17-54-04Z</updated>			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""            </gnip:ru
 le>		</source>		<service:provider>			<name>Reddit</name>			<uri>www.reddit.com</uri>		</service:provider>		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>		<activity:object>			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>			<id>1k9npy</id>			<title>2013 WCG Korea National Final :: PartinG vs. Rain :: Zest vs. INnoVation :: 02:00 (PST)</title>			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/starcraft/comments/1k9npy/2013_wcg_korea_national_final_parting_vs_rain/"/>			<link rel="enclosure" type="text/html" href="http://www.twitch.tv/ongamenet"/>			<link rel="preview" type="image/jpeg" href="http://a.thumbs.redditmedia.com/hP-mFydtcg2jEO3Z.jpg"/>			<gnip:statistics upVotes="40" downVotes="9"/>		</activity:object>		<author>			<name>YamiSC2</name>			<uri>http://www.reddit.com/user/YamiSC2</uri>		</author>		<activity:actor>			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:obj
 ect-type>			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/YamiSC2"/>			<id>http://www.reddit.com/user/YamiSC2</id>		</activity:actor>		<gnip:matching_rules>			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>		</gnip:matching

<TRUNCATED>

[64/71] [abbrv] git commit: adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
adding google provider, tweaks to localbuilder and hdfs reader


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/61592dc0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/61592dc0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/61592dc0

Branch: refs/heads/master
Commit: 61592dc0742bcae969c0c34c9d4158d5d164eddc
Parents: 2ec7fe8
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 14:44:13 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 14:44:13 2014 -0500

----------------------------------------------------------------------
 pom.xml                                         |   2 +-
 streams-contrib/pom.xml                         |   1 +
 .../streams-components-test.iml                 |  39 +++-
 .../apache/streams/hdfs/HdfsConfigurator.java   |  15 ++
 .../streams/hdfs/WebHdfsPersistReader.java      |  63 ++----
 .../streams/hdfs/WebHdfsPersistReaderTask.java  |  49 ++---
 .../google-gmail/pom.xml                        | 135 +++++++++++++
 .../com/google/gmail/GMailConfigurator.java     |  27 +++
 .../gmail/provider/GMailImapProviderTask.java   |  58 ++++++
 .../GMailMessageActivitySerializer.java         | 194 +++++++++++++++++++
 .../google/gmail/provider/GMailProvider.java    | 131 +++++++++++++
 .../gmail/provider/GMailRssProviderTask.java    |  36 ++++
 .../com/google/gmail/GMailConfiguration.json    |  14 ++
 .../gmail/test/GMailMessageSerDeTest.java       |  53 +++++
 .../src/test/resources/datasift_jsons.txt       | 101 ++++++++++
 .../google-gplus/pom.xml                        | 145 ++++++++++++++
 .../gplus/provider/GPlusActivitySerializer.java | 117 +++++++++++
 .../gplus/provider/GPlusConfigurator.java       |  36 ++++
 .../gplus/provider/GPlusEventProcessor.java     |  79 ++++++++
 .../provider/GPlusHistoryProviderTask.java      |  88 +++++++++
 .../google/gplus/provider/GPlusProvider.java    | 166 ++++++++++++++++
 .../com/google/gplus/GPlusConfiguration.json    |  58 ++++++
 .../src/main/resources/reference.conf           |  11 ++
 .../gmail/test/GMailMessageSerDeTest.java       |  53 +++++
 .../src/test/resources/datasift_jsons.txt       | 101 ++++++++++
 streams-contrib/streams-provider-google/pom.xml |  44 +++++
 .../core/builders/LocalStreamBuilder.java       |  11 +-
 .../streams/core/tasks/BaseStreamsTask.java     |   2 +-
 .../core/tasks/LocalStreamMonitorThread.java    |  69 +++++++
 29 files changed, 1821 insertions(+), 77 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1fec2b7..b358dc6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,7 +70,7 @@
         <jaxbutil.version>1.2.6</jaxbutil.version>
         <junit.version>4.11</junit.version>
         <slf4j.version>1.7.6</slf4j.version>
-        <logback.version>1.0.9</logback.version>
+        <logback.version>1.1.1</logback.version>
         <commons-io.version>2.4</commons-io.version>
         <commons-lang3.version>3.1</commons-lang3.version>
         <typesafe.config.version>1.2.0</typesafe.config.version>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 896bb9b..239644b 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -43,6 +43,7 @@
         <module>streams-persist-mongo</module>
         <module>streams-provider-datasift</module>
         <module>streams-provider-facebook</module>
+        <module>streams-provider-google</module>
         <module>streams-provider-gnip</module>
         <module>streams-provider-moreover</module>
         <module>streams-provider-twitter</module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
index fbec879..60ae74a 100644
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ b/streams-contrib/streams-components-test/streams-components-test.iml
@@ -11,11 +11,44 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="streams-core (1)" />
+    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
+    <orderEntry type="module" module-name="streams-util (1)" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.1" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.1" level="project" />
+    <orderEntry type="module" module-name="streams-pojo (1)" />
+    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
+    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
   </component>
   <component name="POM File Configuration" pomFile="" />
 </module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
index dc2b338..dfbc273 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
@@ -1,5 +1,6 @@
 package org.apache.streams.hdfs;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.typesafe.config.Config;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -11,6 +12,8 @@ public class HdfsConfigurator {
 
     private final static Logger LOGGER = LoggerFactory.getLogger(HdfsConfigurator.class);
 
+    private final static ObjectMapper mapper = new ObjectMapper();
+
     public static HdfsConfiguration detectConfiguration(Config hdfs) {
         String host = hdfs.getString("host");
         Long port = hdfs.getLong("port");
@@ -29,4 +32,16 @@ public class HdfsConfigurator {
         return hdfsConfiguration;
     }
 
+    public static HdfsReaderConfiguration detectReaderConfiguration(Config hdfs) {
+
+        HdfsConfiguration hdfsConfiguration = detectConfiguration(hdfs);
+        HdfsReaderConfiguration hdfsReaderConfiguration  = mapper.convertValue(hdfsConfiguration, HdfsReaderConfiguration.class);
+
+        String readerPath = hdfs.getString("readerPath");
+
+        hdfsReaderConfiguration.setReaderPath(readerPath);
+
+        return hdfsReaderConfiguration;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
index 511f684..e01d9d4 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
@@ -1,13 +1,14 @@
 package org.apache.streams.hdfs;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.*;
+import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.streams.core.StreamsDatum;
@@ -17,16 +18,16 @@ import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.math.BigInteger;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.security.PrivilegedExceptionAction;
 import java.util.Collection;
 import java.util.Queue;
-import java.util.concurrent.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
 
 /**
  * Created by sblackmon on 2/28/14.
@@ -117,11 +118,19 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
         connectToWebHDFS();
         path = new Path(hdfsConfiguration.getPath() + "/" + hdfsConfiguration.getReaderPath());
         try {
-            status = client.listStatus(path);
+            if( client.isFile(path)) {
+                FileStatus fileStatus = client.getFileStatus(path);
+                status = new FileStatus[1];
+                status[0] = fileStatus;
+            } else if( client.isDirectory(path)){
+                status = client.listStatus(path);
+            } else {
+                LOGGER.error("Neither file nor directory, wtf");
+            }
         } catch (IOException e) {
             e.printStackTrace();
         }
-        persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        persistQueue = new LinkedBlockingQueue<StreamsDatum>(10000);
         executor = Executors.newSingleThreadExecutor();
     }
 
@@ -132,7 +141,7 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
 
     @Override
     public StreamsResultSet readAll() {
-        readSourceWritePersistQueue();
+        startStream();
         return new StreamsResultSet(persistQueue);
     }
 
@@ -167,40 +176,4 @@ public class WebHdfsPersistReader implements StreamsPersistReader {
         return null;
     }
 
-    private void readSourceWritePersistQueue() {
-        for( FileStatus fileStatus : status ) {
-            BufferedReader reader;
-            LOGGER.info("Found " + fileStatus.getPath().getName());
-            if( persistQueue.size() > 0 ) {
-                try {
-                    Thread.sleep(1000);
-                } catch (InterruptedException e) {
-                }
-            }
-            if( fileStatus.isFile() && !fileStatus.getPath().getName().startsWith("_")) {
-                LOGGER.info("Processing " + fileStatus.getPath().getName());
-                try {
-                    reader = new BufferedReader(new InputStreamReader(client.open(fileStatus.getPath())));
-
-                    String line = "";
-                    do{
-                        try {
-                            line = reader.readLine();
-                            if( !Strings.isNullOrEmpty(line) ) {
-                                String[] fields = line.split(Character.toString(DELIMITER));
-                                StreamsDatum entry = new StreamsDatum(fields[3], fields[0], new DateTime(fields[2]));
-                                persistQueue.offer(entry);
-                            }
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                            LOGGER.warn(e.getMessage());
-                        }
-                    } while( line != null );
-                } catch (Exception e) {
-                    e.printStackTrace();
-                    LOGGER.warn(e.getMessage());
-                }
-            }
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
index f0bee1f..dc6ea16 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
@@ -3,15 +3,11 @@ package org.apache.streams.hdfs;
 import com.google.common.base.Strings;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.streams.core.StreamsDatum;
-import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
-import java.io.IOException;
 import java.io.InputStreamReader;
-import java.util.Calendar;
-import java.util.Random;
 
 public class WebHdfsPersistReaderTask implements Runnable {
 
@@ -28,30 +24,39 @@ public class WebHdfsPersistReaderTask implements Runnable {
 
         for( FileStatus fileStatus : reader.status ) {
             BufferedReader bufferedReader;
-
+            LOGGER.info("Found " + fileStatus.getPath().getName());
             if( fileStatus.isFile() && !fileStatus.getPath().getName().startsWith("_")) {
+                LOGGER.info("Processing " + fileStatus.getPath().getName());
                 try {
                     bufferedReader = new BufferedReader(new InputStreamReader(reader.client.open(fileStatus.getPath())));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    LOGGER.error(e.getMessage());
+                    return;
+                }
 
-                    String line = "";
-                    do{
-                        try {
-                            line = bufferedReader.readLine();
-                            if( !Strings.isNullOrEmpty(line) ) {
-                                String[] fields = line.split(Character.toString(reader.DELIMITER));
-                                Calendar cal = Calendar.getInstance();
-                                cal.setTimeInMillis(new Long(fields[2]));
-                                StreamsDatum entry = new StreamsDatum(fields[3], fields[0], new DateTime(cal.getTime()));
-                                reader.persistQueue.offer(entry);
+                String line = "";
+                do{
+                    try {
+                        line = bufferedReader.readLine();
+                        if( !Strings.isNullOrEmpty(line) ) {
+                            String[] fields = line.split(Character.toString(reader.DELIMITER));
+                            StreamsDatum entry = new StreamsDatum(fields[3], fields[0]);
+                            boolean success;
+                            do {
+                                success = reader.persistQueue.offer(entry);
+                                Thread.yield();
                             }
-                        } catch (Exception e) {
-                            LOGGER.warn("Failed reading " + line);
+                            while( success == false );
+
                         }
-                    } while( line != null );
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    break;
-                }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                        LOGGER.warn(e.getMessage());
+                    }
+                } while( !Strings.isNullOrEmpty(line) );
+                LOGGER.info("Finished Processing " + fileStatus.getPath().getName());
+
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/pom.xml b/streams-contrib/streams-provider-google/google-gmail/pom.xml
new file mode 100644
index 0000000..84e0346
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/pom.xml
@@ -0,0 +1,135 @@
+<?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-provider-google</artifactId>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>google-gmail</artifactId>
+
+    <repositories>
+        <repository>
+            <id>typesafe</id>
+            <name>typesafe</name>
+            <url>http://repo.typesafe.com/typesafe/repo</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.typesafe</groupId>
+            <artifactId>config</artifactId>
+        </dependency>
+        <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>org.jsonschema2pojo</groupId>
+            <artifactId>jsonschema2pojo-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</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>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path-assert</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.googlecode.gmail4j</groupId>
+            <artifactId>gmail4j</artifactId>
+            <version>0.5-SNAPSHOT</version>
+        </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</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/com/google/gmail</sourcePath>
+                    </sourcePaths>
+                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+                    <targetPackage>org.apache.streams.google.gmail.pojo</targetPackage>
+                    <useLongIntegers>true</useLongIntegers>
+                    <useJodaDates>false</useJodaDates>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java
new file mode 100644
index 0000000..2d2d2aa
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/GMailConfigurator.java
@@ -0,0 +1,27 @@
+package com.google.gmail;
+
+import com.google.gmail.GMailConfiguration;
+import com.typesafe.config.Config;
+import com.typesafe.config.ConfigException;
+import org.apache.streams.config.StreamsConfigurator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailConfigurator {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailConfigurator.class);
+
+    public static GMailConfiguration detectConfiguration(Config gmail) {
+
+        GMailConfiguration gmailConfiguration = new GMailConfiguration();
+
+        gmailConfiguration.setUserName(gmail.getString("username"));
+        gmailConfiguration.setPassword(gmail.getString("password"));
+
+        return gmailConfiguration;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
new file mode 100644
index 0000000..068c214
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailImapProviderTask.java
@@ -0,0 +1,58 @@
+package com.google.gmail.provider;
+
+import com.googlecode.gmail4j.GmailClient;
+import com.googlecode.gmail4j.GmailMessage;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.pojo.json.Activity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.List;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailImapProviderTask implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailImapProviderTask.class);
+
+    private GMailProvider provider;
+
+    public GMailImapProviderTask(GMailProvider provider) {
+        this.provider = provider;
+    }
+
+    @Override
+    public void run() {
+
+        Calendar calendar = new GregorianCalendar();
+
+        calendar.set(Calendar.YEAR, 2000);
+        calendar.set(Calendar.MONTH, 0);
+        calendar.set(Calendar.DAY_OF_MONTH, 0);
+        calendar.set(Calendar.HOUR, 0);
+        calendar.set(Calendar.MINUTE, 0);
+        calendar.set(Calendar.SECOND, 0);
+        calendar.set(Calendar.MILLISECOND, 0);
+
+        final List<GmailMessage> messages = this.provider.imapClient.getMessagesBy(
+                GmailClient.EmailSearchStrategy.DATE_GT,
+                calendar.getTime().toString()
+        );
+
+        for (GmailMessage message : messages) {
+
+            Activity activity;
+            GMailMessageActivitySerializer serializer = new GMailMessageActivitySerializer( this.provider );
+            activity = serializer.deserialize(message);
+            StreamsDatum entry = new StreamsDatum(activity);
+            this.provider.providerQueue.offer(entry);
+
+        }
+
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
new file mode 100644
index 0000000..6c49bda
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailMessageActivitySerializer.java
@@ -0,0 +1,194 @@
+package com.google.gmail.provider;
+
+import com.fasterxml.jackson.annotation.JsonBackReference;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.googlecode.gmail4j.GmailException;
+import com.googlecode.gmail4j.GmailMessage;
+import com.googlecode.gmail4j.javamail.JavaMailGmailMessage;
+import com.sun.mail.imap.IMAPFolder;
+import com.sun.mail.imap.IMAPMessage;
+import com.sun.mail.imap.IMAPSSLStore;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivitySerializer;
+import org.apache.streams.pojo.json.*;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.mail.internet.MimeMultipart;
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.streams.data.util.ActivityUtil.ensureExtensions;
+
+/**
+* Created with IntelliJ IDEA.
+* User: mdelaet
+* Date: 9/30/13
+* Time: 9:24 AM
+* To change this template use File | Settings | File Templates.
+*/
+public class GMailMessageActivitySerializer implements ActivitySerializer<GmailMessage> {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(GMailMessageActivitySerializer.class);
+
+    GMailProvider provider;
+
+    ObjectMapper mapper = new ObjectMapper();
+
+    public GMailMessageActivitySerializer(GMailProvider provider) {
+
+        this.provider = provider;
+
+        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, Boolean.FALSE);
+
+        mapper.addMixInAnnotations(IMAPSSLStore.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(IMAPFolder.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(IMAPMessage.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(MimeMultipart.class, MessageMixIn.class);
+        mapper.addMixInAnnotations(JavaMailGmailMessage.class, MessageMixIn.class);
+
+    }
+
+    public GMailMessageActivitySerializer() {
+    }
+
+    @Override
+    public String serializationFormat() {
+        return "gmail.v1";
+    }
+
+    @Override
+    public GmailMessage serialize(Activity activity) {
+        return null;
+    }
+
+    @Override
+    public Activity deserialize(GmailMessage gmailMessage) {
+
+        Activity activity = new Activity();
+        activity.setId(formatId(this.provider.getConfig().getUserName(), String.valueOf(gmailMessage.getMessageNumber())));
+        activity.setPublished(gmailMessage.getSendDate());
+        Provider provider = new Provider();
+        provider.setId("http://gmail.com");
+        provider.setDisplayName("GMail");
+        activity.setProvider(provider);
+        Actor actor = new Actor();
+        actor.setId(gmailMessage.getFrom().getEmail());
+        actor.setDisplayName(gmailMessage.getFrom().getName());
+        activity.setActor(actor);
+        activity.setVerb("email");
+        ActivityObject object = new ActivityObject();
+        try {
+            object.setId(gmailMessage.getTo().get(0).getEmail());
+            object.setDisplayName(gmailMessage.getTo().get(0).getName());
+        } catch( GmailException e ) {
+            LOGGER.warn(e.getMessage());
+        }
+        activity.setTitle(gmailMessage.getSubject());
+        try {
+            activity.setContent(gmailMessage.getContentText());
+        } catch( GmailException e ) {
+            LOGGER.warn(e.getMessage());
+        }
+        activity.setObject(object);
+
+//        try {
+//            // if jackson can't serialize the object, find out now
+//            String jsonString = mapper.writeValueAsString(gmailMessage);
+//            ObjectNode jsonObject = mapper.valueToTree(gmailMessage);
+//            // since it can, write the entire source object to extensions.gmail
+//            Map<String, Object> extensions = Maps.newHashMap();
+//            extensions.put("gmail", gmailMessage);
+//            activity.setAdditionalProperty("extensions", extensions);
+//        } catch (JsonProcessingException e) {
+//            LOGGER.debug("Failed Json Deserialization");
+//            e.printStackTrace();
+//        }
+
+        return activity;
+    }
+
+    @Override
+    public List<Activity> deserializeAll(List<GmailMessage> serializedList) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+    public Activity convert(ObjectNode event) {
+        return null;
+    }
+
+    public static Generator buildGenerator(ObjectNode event) {
+        return null;
+    }
+
+    public static Icon getIcon(ObjectNode event) {
+        return null;
+    }
+
+    public static Provider buildProvider(ObjectNode event) {
+        Provider provider = new Provider();
+        provider.setId("id:providers:gmail");
+        return provider;
+    }
+
+    public static List<Object> getLinks(ObjectNode event) {
+        return null;
+    }
+
+    public static String getUrls(ObjectNode event) {
+        return null;
+    }
+
+    public static void addGMailExtension(Activity activity, GmailMessage gmailMessage) {
+        Map<String, Object> extensions = ensureExtensions(activity);
+        extensions.put("gmail", gmailMessage);
+    }
+
+    public static String formatId(String... idparts) {
+        return Joiner.on(":").join(Lists.asList("id:gmail", idparts));
+    }
+
+    interface MessageMixIn {
+        @JsonManagedReference
+        @JsonIgnore
+        IMAPSSLStore getDefaultFolder(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        IMAPSSLStore getPersonalNamespaces(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        IMAPFolder getStore(); // we don't need it!
+        //        @JsonManagedReference
+//        @JsonIgnore
+//        @JsonBackReference
+        //IMAPFolder getParent(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        @JsonBackReference
+        IMAPMessage getFolder(); // we don't need it!
+        @JsonManagedReference
+        @JsonIgnore
+        @JsonProperty("parent")
+        @JsonBackReference
+        MimeMultipart getParent();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java
new file mode 100644
index 0000000..7ec157e
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailProvider.java
@@ -0,0 +1,131 @@
+package com.google.gmail.provider;
+
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import com.google.gmail.GMailConfiguration;
+import com.google.gmail.GMailConfigurator;
+import com.googlecode.gmail4j.GmailClient;
+import com.googlecode.gmail4j.GmailConnection;
+import com.googlecode.gmail4j.http.HttpGmailConnection;
+import com.googlecode.gmail4j.javamail.ImapGmailClient;
+import com.googlecode.gmail4j.javamail.ImapGmailConnection;
+import com.googlecode.gmail4j.rss.RssGmailClient;
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.math.BigInteger;
+import java.util.Queue;
+import java.util.concurrent.*;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailProvider implements StreamsProvider {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailProvider.class);
+
+    private GMailConfiguration config;
+
+    private Class klass;
+
+    public GMailConfiguration getConfig() {
+        return config;
+    }
+
+    public void setConfig(GMailConfiguration config) {
+        this.config = config;
+    }
+
+    protected BlockingQueue inQueue = new LinkedBlockingQueue<String>(10000);
+
+    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+
+    public BlockingQueue<Object> getInQueue() {
+        return inQueue;
+    }
+
+    protected GmailClient rssClient;
+    protected ImapGmailClient imapClient;
+
+    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
+    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
+        return new ThreadPoolExecutor(nThreads, nThreads,
+                5000L, TimeUnit.MILLISECONDS,
+                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
+    }
+
+    public GMailProvider() {
+        Config config = StreamsConfigurator.config.getConfig("gmail");
+        this.config = GMailConfigurator.detectConfiguration(config);
+    }
+
+    public GMailProvider(GMailConfiguration config) {
+        this.config = config;
+    }
+
+    public GMailProvider(Class klass) {
+        Config config = StreamsConfigurator.config.getConfig("gmail");
+        this.config = GMailConfigurator.detectConfiguration(config);
+        this.klass = klass;
+    }
+
+    public GMailProvider(GMailConfiguration config, Class klass) {
+        this.config = config;
+        this.klass = klass;
+    }
+
+    @Override
+    public void startStream() {
+        new Thread(new GMailImapProviderTask(this)).start();
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return null;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+        Preconditions.checkNotNull(this.klass);
+
+        Preconditions.checkNotNull(config.getUserName());
+        Preconditions.checkNotNull(config.getPassword());
+
+        rssClient = new RssGmailClient();
+        GmailConnection rssConnection = new HttpGmailConnection(config.getUserName(), config.getPassword().toCharArray());
+        rssClient.setConnection(rssConnection);
+
+        imapClient = new ImapGmailClient();
+        GmailConnection imapConnection = new ImapGmailConnection();
+        imapConnection.setLoginCredentials(config.getUserName(), config.getPassword().toCharArray());
+        imapClient.setConnection(imapConnection);
+    }
+
+    @Override
+    public void cleanUp() {
+        try {
+            executor.awaitTermination(5, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java
new file mode 100644
index 0000000..73b6d77
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/java/com/google/gmail/provider/GMailRssProviderTask.java
@@ -0,0 +1,36 @@
+package com.google.gmail.provider;
+
+import com.googlecode.gmail4j.GmailMessage;
+import org.apache.streams.core.StreamsDatum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GMailRssProviderTask implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailRssProviderTask.class);
+
+    private GMailProvider provider;
+
+    public GMailRssProviderTask(GMailProvider provider) {
+        this.provider = provider;
+    }
+
+    @Override
+    public void run() {
+
+        final List<GmailMessage> messages = this.provider.rssClient.getUnreadMessages();
+        for (GmailMessage message : messages) {
+
+            StreamsDatum entry = new StreamsDatum(message);
+
+            this.provider.providerQueue.offer(entry);
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json b/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json
new file mode 100644
index 0000000..b25d5e0
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/main/jsonschema/com/google/gmail/GMailConfiguration.json
@@ -0,0 +1,14 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "com.google.gmail.GMailConfiguration",
+    "properties": {
+        "userName": {
+            "type": "string"
+        },
+        "password": {
+            "type": "string"
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java b/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
new file mode 100644
index 0000000..e9641fc
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
@@ -0,0 +1,53 @@
+package com.google.gmail.test;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: sblackmon
+ * Date: 8/20/13
+ * Time: 5:57 PM
+ * To change this template use File | Settings | File Templates.
+ */
+@Ignore
+public class GMailMessageSerDeTest {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailMessageSerDeTest.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    @Ignore
+    @Test
+    public void Tests()
+    {
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+
+        InputStream is = GMailMessageSerDeTest.class.getResourceAsStream("/datasift_jsons.txt");
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+
+        try {
+            while (br.ready()) {
+                String line = br.readLine();
+                LOGGER.debug(line);
+
+                // implement
+            }
+        } catch( Exception e ) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+}


[43/71] [abbrv] git commit: some refactoring for dataflow

Posted by sb...@apache.org.
some refactoring for dataflow

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572361 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/74650657
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/74650657
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/74650657

Branch: refs/heads/master
Commit: 74650657f1693ba4ca2ba539990d23a0e2a0bab1
Parents: 396eb4a
Author: sblackmon <sb...@unknown>
Authored: Thu Feb 27 00:13:52 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Thu Feb 27 00:13:52 2014 +0000

----------------------------------------------------------------------
 .../streams/console/ConsolePersistReader.java   | 80 ++++++++++++++++++++
 .../streams/console/ConsolePersistWriter.java   | 10 +--
 .../twitter/provider/TwitterStreamProvider.java |  2 +
 3 files changed, 84 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/74650657/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
new file mode 100644
index 0000000..460d95d
--- /dev/null
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistReader.java
@@ -0,0 +1,80 @@
+package org.apache.streams.console;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Preconditions;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistReader;
+import org.apache.streams.core.StreamsPersistWriter;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedInputStream;
+import java.io.InputStream;
+import java.math.BigInteger;
+import java.util.Queue;
+import java.util.Scanner;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+public class ConsolePersistReader implements StreamsPersistReader {
+
+    private final static String STREAMS_ID = "ConsolePersistReader";
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ConsolePersistReader.class);
+
+    protected volatile Queue<StreamsDatum> persistQueue;
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    public ConsolePersistReader() {
+        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+    }
+
+    public ConsolePersistReader(Queue<StreamsDatum> persistQueue) {
+        this.persistQueue = persistQueue;
+    }
+
+    public void prepare(Object o) {
+
+    }
+
+    public void cleanUp() {
+
+    }
+
+    @Override
+    public StreamsResultSet readAll() {
+        return readCurrent();
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+
+        LOGGER.info("{} readCurrent", STREAMS_ID);
+
+        Scanner sc = new Scanner(System.in);
+
+        while( sc.hasNextLine() ) {
+
+            persistQueue.offer(new StreamsDatum(sc.nextLine()));
+
+        }
+
+        LOGGER.info("{} providing {} docs", STREAMS_ID, persistQueue.size());
+        LOGGER.info("{} Exiting", STREAMS_ID);
+
+        return (StreamsResultSet) persistQueue;
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return readCurrent();
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return readCurrent();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/74650657/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
index 8f56821..b86beb9 100644
--- a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
@@ -12,7 +12,7 @@ import org.slf4j.LoggerFactory;
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
-public class ConsolePersistWriter implements StreamsPersistWriter, Runnable {
+public class ConsolePersistWriter implements StreamsPersistWriter {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ConsolePersistWriter.class);
 
@@ -29,7 +29,7 @@ public class ConsolePersistWriter implements StreamsPersistWriter, Runnable {
     }
 
     public void prepare(Object o) {
-
+        Preconditions.checkNotNull(persistQueue);
     }
 
     public void cleanUp() {
@@ -51,10 +51,4 @@ public class ConsolePersistWriter implements StreamsPersistWriter, Runnable {
 
     }
 
-    @Override
-    public void run() {
-        Preconditions.checkNotNull(persistQueue);
-        new Thread(new ConsolePersistWriterTask(this)).start();
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/74650657/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
index 34b3ab1..7f9f4b5 100644
--- a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
@@ -36,6 +36,8 @@ import java.util.concurrent.*;
  */
 public class TwitterStreamProvider implements StreamsProvider, Serializable {
 
+    private final static String STREAMS_ID = "TwitterStreamProvider";
+
     private final static Logger LOGGER = LoggerFactory.getLogger(TwitterStreamProvider.class);
 
     private TwitterStreamConfiguration config;


[28/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/resources/FacebookEDC.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/resources/FacebookEDC.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/resources/FacebookEDC.xml
deleted file mode 100644
index 2d4aa9d..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/resources/FacebookEDC.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100001748653889_539429962791954</id>  <created>2013-08-21T15:45:12+00:00</created>  <published>2013-08-21T15:45:12+00:00</published>  <updated>2013-08-21T15:45:12+00:00</updated>  <title>Lợn Con posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100001748653889/posts/539429962791954"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A44%3A42+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-45-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp;G
 </gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>100001748653889_539429962791954</id>    <title>Hôm qua nc vs cái mấy ng cũ, hni ngồi bùn tự nhiên xem lại cái này, lại thấy pùn cười quá :)):))...Thế mà cg gần đc năm rồi.....Chuẩn bị 20.10 nữa lại đến rồi.....hihihttp://www.youtube.com/watch?v=j5S3Gj8uhm4Thưởng em đâu sếp - BibomartVideo được thực hiện bởi http://bibomart.com.vn http://facebook.com/bibomart.com.vn Clip phục vụ hội thao công ty TNHH Quốc Tế B&amp;B Việt Nam 20/10/2012 P/S: X...</title>    <content>Hôm qua nc vs cái mấy ng cũ, hni ngồi bùn tự nhiên xem lại cái này, lại thấy pùn cười quá :)):))...Thế mà c
 g gần đc năm rồi.....Chuẩn bị 20.10 nữa lại đến rồi.....hihihttp://www.youtube.com/watch?v=j5S3Gj8uhm4Thưởng em đâu sếp - BibomartVideo được thực hiện bởi http://bibomart.com.vn http://facebook.com/bibomart.com.vn Clip phục vụ hội thao công ty TNHH Quốc Tế B&amp;B Việt Nam 20/10/2012 P/S: X...</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100001748653889/posts/539429962791954"/>  </activity:object>  <author>    <name>Lợn Con</name>    <uri>http://www.facebook.com/profile.php?id=100001748653889</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=100001748653889"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>186045008073540_536295969757283</id>  <created>2013-08-21T15:45:10+00:00</created>  <published>2013-08-21T15:45:10+00:00</published>  <updated>2013-08-21T15:45:10+00:00</updated>  <title>Pferd+Sport posted a bookmark to Facebook</title>  <category term="BookmarkPosted" label="Bookmark Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/186045008073540/posts/536295969757283"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2347471856">Notes</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A44%3A42+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>  
   <updated>2013-08-21T15-45-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/bookmark</activity:object-type>    <id>186045008073540_536295969757283</id>    <title>Baltic Horse Show Kiel – bald geht es los</title>    <content>(Kiel) Das Reitsportereignis kommt vom 10. bis 13. Oktober wieder nach Kiel: Internationaler Reitsport mit der Baltic Horse Show bestimmt den Takt mitten in der Landeshauptstadt und für die Besucher geht es mit günstigen Ticketpreisen genauso weiter wie im vergangenen Jahr. Die Baltic Horse Show ist ein absolutes Spitzenereignis mit einer einzigartigen Vielfalt: Nur in Kiel gibt es das spektakuläre Hansano Fahrduell über zwei Runden mit drei Manns
 chaften. Dann kurven Mannschaften aus Schleswig-Holstein, Mecklenburg-Vorpommern und Dänemark/ Schweden jeweils im Vierspänner, Zweispänner und Zweispänner Ponys in einem Hindernisfahren im Weltcup-Style durch das Hallenoval und schenken sich keine einzige Sekunde….  Schleswig-Holsteins Nachwuchs im Spring- und Dressursattel erobert die internationale Sportbühne zu den Finals im LVM Cup Springen und Dressur und in der Sparda-Bank Trophy. Der Hauptsponsor Sparda-Bank  holt die internationalen Springreiter genauso wie die nächste Generation am Sonntag zum Familientag zur Baltic Horse Show – dann geht es auch um den von der Sparda-Bank präsentierten Großen Preis von Schleswig-Holstein. Auch am Samstag steht Top-Sport mit der Warsteiner Winning Round und dem Championat von Kiel, präsentiert von MVK auf dem Programm. Insgesamt neun internationale Prüfungen verleihen der Baltic Horse Show sportliches Gewicht. Nicht zufällig sind regelmäßig Teilnehmer aus bis zu 15 Nati
 onen in Kiel dabei.  Zu den Glanzlichtern zählen zudem das witzige Kostümspringen der Kieler Nachrichten, das von Autokraft präsentierte Herzschlagfinale – Mannschaftsspringen der Reiterbünde und der Holsteiner Abend am Freitag mit dem Holsteiner Masters Zukunftspreis. Kommentiert wird der Preis von keinem Geringeren als dem einstigen Nationenpreisreiter und Pferdekenner Tjark Nagel! Evers &amp; Frank Druck- und Mediengruppe präsentiert im Anschluss die Youngster Tour für die sieben und acht Jahre alten Pferde.   Stabil günstig – die Tickets!Tickets kosten für Erwachsene von Freitag bis Sonntag 18 Euro für einen ganzen Tag bei der Baltic Horse Show. Am Donnerstag gibt es Tickets für sieben und fünf Euro (Kinder), freitags haben alle unter 17 Jahren freien Eintritt und am Samstag und Sonntag sind Kinder für je neun Euro dabei. Und an allen Tagen gilt frei Platzwahl Neu: Wer es ganz bequem haben möchte und Kiels Reitsportereignis für Kunden und Gäste oder mit F
 reunden nutzen will, hat die Möglichkeit, Business Seats, also nummerierte und gepolsterte Sitzplätze für 35 Euro zu buchen.  </content>    <link rel="alternate" type="html" href="http://www.facebook.com/186045008073540/posts/536295969757283"/>    <link rel="related" href="http://www.facebook.com/notes/pferdsport/baltic-horse-show-kiel-bald-geht-es-los/536295969757283"/>  </activity:object>  <author>    <name>Pferd+Sport</name>    <uri>http://www.facebook.com/profile.php?id=186045008073540</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=186045008073540"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100002487987363_489880114438250</id>  <created>2013-08-21T15:45:08+00:00</created>  <published>2013-08-21T15:45:08+00:00</published>  <updated>2013-08-21T15:45:08+00:00</updated>  <title>Baliram Ram posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100002487987363/posts/489880114438250"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A44%3A42+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-45-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp
 ;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>100002487987363_489880114438250</id>    <title>SEARCH ALL INTERNATIONAL REALTYBaliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.comService Name Service NumberA P Telecom Public Grievance Cell  12727Aids Help Line Service  1097Air Lines Booking  1402Air Lines Enquiry  1400Air Lines Enquiry  1401Ambulance  102Apollo Hospital  1066Blood Bank Information Service  1910Call Centre &amp; Information  1991Catastrophe &amp; Trauma Service  1099Change Number Announcement (Hindi) 1951Changed Number Announcement (English) 1952Changed Number Announcement (In case Of Shift) 1954Changed Number Announcement (Regional Language) 1953Children In Difficulty/ Child Distres
 s Service 1098City Traffic Help Line 1073Control Room Of District Collector/Magistrate 1077Crime Stopper Cell Of Police In Andhra Pradesh 1090Dial A Doctor 1911Directory Enquiry Service 197Dish Net Communication Ltd 1250Earth-Quake Helpline Service 1092Electricity Comp 155333Electricity Comp 1912Eye Bank Information Service 1919Fire Control 101Free Phone Enquiry 1600Free Phone Services 1800Help Desk Service At All Nodes Of Nib 1957Hindi-Telugu Viseshaseva 177I V R S Information Centre Of LIC Of India Comp 1251Indane Gas H/Line Comp 1260India Telephone Card Enquiry 1602International Trunk Enquiry 187International Trunk Booking 186International Trunk Delay Information 188Internet Help Desk 12678Internet Net Node 12737Just Dial Service (Talking Yellow Pages) 12614L P G Help Line (B P C L ) Comp 12664L P G Help Line (H P C L) Manual 12665Leased Cct Complaints 12676Leased Circuits Fault Booking 1918M C H Complaints 155304M/S Care Hospital 1061National Call Centre (Thomas Cook India Ltd) 
 12613National Directory Enquiry(Ndq)Service 183 183Natural Disaster Control Room 1096Phone Plus Facilities 1507Phonogram (Inland/International) 1585Phonogram (Regional Language) 1584Police Emergency 100Pollution Control (Rta) 1074Public Grievance Cell Telecom Circle Hqs 1094Railway General Enq 131Railway Recorded Announcement (English) 1331Railway Recorded Announcement (Hindi) 1332Railway Recorded Announcement (Telugu) 1333Railway Reservation Enq Comp 135Railway Reservation Recorded Announcement 1345Relief Commissioners Of Central/ State/ Union Territory 1070S T D Complaints 1582S T D Information 1583State Govt Call Centre For Formers 1100Std Complaints 182Telephone Bill Enq (English) 1501Telephone Bill Enq (Hindi) 1502Telephone Bill Enq (Telegu) 1503Telephone Complaint Booking 198Telex Complaints 189Time In All Languages 174Time In All Languages 175Tourism Of A P State 1364Tourist Office Govt Of India 1363Trunk Assistance 1581Trunk Assistance 181Trunk Booking 1580Trunk Booking 180T
 runk Booking (International) 1586Trunk Delay Information 1588Trunk Enquiry (International) 1587Water Supply Complaints 155313Women Complaints (Mahila Dakshata Samithi) 10922Women Complaints (Mahila Mandali Samakhya) 10921Women Crisis Response 1091Baliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.com</title>    <content>SEARCH ALL INTERNATIONAL REALTYBaliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.comService Name Service NumberA P Telecom Public Grievance Cell  12727Aids Help Line Service  1097Air Lines Booking  1402Air Lines Enquiry  1400Air Lines Enquiry  1401Ambulance  102Apollo Hospital  1066Blood Bank Information Service  1910Call Centre &amp; Information  1991Catastrophe &amp; Trauma Service  1099Change Number Announcement (Hindi) 1951Changed Number Announcement (English) 1952Changed Number Announcement (In case Of Shift) 1954Changed Number Announcement (Regional Language) 1953Children In Difficulty/ Child Distress Service 1098City Traffic He
 lp Line 1073Control Room Of District Collector/Magistrate 1077Crime Stopper Cell Of Police In Andhra Pradesh 1090Dial A Doctor 1911Directory Enquiry Service 197Dish Net Communication Ltd 1250Earth-Quake Helpline Service 1092Electricity Comp 155333Electricity Comp 1912Eye Bank Information Service 1919Fire Control 101Free Phone Enquiry 1600Free Phone Services 1800Help Desk Service At All Nodes Of Nib 1957Hindi-Telugu Viseshaseva 177I V R S Information Centre Of LIC Of India Comp 1251Indane Gas H/Line Comp 1260India Telephone Card Enquiry 1602International Trunk Enquiry 187International Trunk Booking 186International Trunk Delay Information 188Internet Help Desk 12678Internet Net Node 12737Just Dial Service (Talking Yellow Pages) 12614L P G Help Line (B P C L ) Comp 12664L P G Help Line (H P C L) Manual 12665Leased Cct Complaints 12676Leased Circuits Fault Booking 1918M C H Complaints 155304M/S Care Hospital 1061National Call Centre (Thomas Cook India Ltd) 12613National Directory Enqui
 ry(Ndq)Service 183 183Natural Disaster Control Room 1096Phone Plus Facilities 1507Phonogram (Inland/International) 1585Phonogram (Regional Language) 1584Police Emergency 100Pollution Control (Rta) 1074Public Grievance Cell Telecom Circle Hqs 1094Railway General Enq 131Railway Recorded Announcement (English) 1331Railway Recorded Announcement (Hindi) 1332Railway Recorded Announcement (Telugu) 1333Railway Reservation Enq Comp 135Railway Reservation Recorded Announcement 1345Relief Commissioners Of Central/ State/ Union Territory 1070S T D Complaints 1582S T D Information 1583State Govt Call Centre For Formers 1100Std Complaints 182Telephone Bill Enq (English) 1501Telephone Bill Enq (Hindi) 1502Telephone Bill Enq (Telegu) 1503Telephone Complaint Booking 198Telex Complaints 189Time In All Languages 174Time In All Languages 175Tourism Of A P State 1364Tourist Office Govt Of India 1363Trunk Assistance 1581Trunk Assistance 181Trunk Booking 1580Trunk Booking 180Trunk Booking (International) 
 1586Trunk Delay Information 1588Trunk Enquiry (International) 1587Water Supply Complaints 155313Women Complaints (Mahila Dakshata Samithi) 10922Women Complaints (Mahila Mandali Samakhya) 10921Women Crisis Response 1091Baliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.com</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100002487987363/posts/489880114438250"/>  </activity:object>  <author>    <name>Baliram Ram</name>    <uri>http://www.facebook.com/profile.php?id=100002487987363</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=100002487987363"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100004080435007_310554759090536</id>  <created>2013-08-21T15:44:38+00:00</created>  <published>2013-08-21T15:44:38+00:00</published>  <updated>2013-08-21T15:44:38+00:00</updated>  <title>Dänïëlïtö Cüütë posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100004080435007/posts/310554759090536"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A44%3A42+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-45-24Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas
 /2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>100004080435007_310554759090536</id>    <title>M,g &amp; Mira Tu Muro :oSolo Funciona En las que Agregen a Pïö Sänchëz</title>    <content>M,g &amp; Mira Tu Muro :oSolo Funciona En las que Agregen a Pïö Sänchëz</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100004080435007/posts/310554759090536"/>  </activity:object>  <author>    <name>Dänïëlïtö Cüütë</name>    <uri>http://www.facebook.com/profile.php?id=100004080435007</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.faceb
 ook.com/profile.php?id=100004080435007"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>1791027514_4562252952971</id>  <created>2013-08-21T15:45:25+00:00</created>  <published>2013-08-21T15:45:25+00:00</published>  <updated>2013-08-21T15:45:25+00:00</updated>  <title>Meo Nguyễn posted a photo to Facebook</title>  <category term="PhotoPosted" label="Photo Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/1791027514/posts/4562252952971"/>  <generator uri="http://www.facebook.com/apps/application.php?id=6628568379">Facebook for iPhone</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Crest&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A44%3A55+-0400+2013"/>    <title>Facebook - Keyword - Search - Crest</title>    <updated
 >2013-08-21T15-45-40Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Crest</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>1791027514_4562252952971</id>    <title>Miếng dán trắng răng vô cùng hiệu quả Crest 3D White-Mỗi gói có 2 miếng dán cho hàm trên và hàm dưới,dán ở bề mặt ngoài và gấp vào bên trong-Crest 3D White có 3 loại dành cho bạn lựa chọn-Crest 3D số 3 dành cho răng thường(màu răng k quá ố vàng) loại này chăm sóc và làm sáng dần sau 5 ngày sử dụng,k gây ê buốt ( loại này có 14 miếng dán)-Crest 3D số 4 làm trắng khá nhanh nhưng k gây ê buốt,cách dùng là dán 3-5 ngày Liên tiếp,mỗi
  ngày dán 30 phút trước khi đi ngủ và nhớ đánh răng trước kho dán nhé ^^ (loại này có 20 miếng dán và hiện tại mình đang sử dụng)-Crest 3D số 5 làm trắng cấp tốc dành cho răng xỉn màu,ố vàng(loại này có 5 gói dành cho 5 ngày)1 nụ cười tươi và hàm răng trắng sáng,cực kỳ dễ dùng k Cần phải tới phòng khám răng cực kỳ lằng nhằng và mất thời gian,cái này các bạn oder nhé,chỉ sau 5-7 ngày là có,chỉ Cần dùng xong 1 hộp là bạn có 1 hàm răng siêu siêu siêu trắng luôn ý ^^Hot line:89623968888</title>    <content>Miếng dán trắng răng vô cùng hiệu quả Crest 3D White-Mỗi gói có 2 miếng dán cho hàm trên và hàm dưới,dán ở bề mặt ngoài và gấp vào bên trong-Crest 3D White có 3 loại dành cho bạn lựa chọn-Crest 3D số 3 dành cho răng thường(màu răng k quá ố vàng) loại này chăm sóc và làm sáng dần sa
 u 5 ngày sử dụng,k gây ê buốt ( loại này có 14 miếng dán)-Crest 3D số 4 làm trắng khá nhanh nhưng k gây ê buốt,cách dùng là dán 3-5 ngày Liên tiếp,mỗi ngày dán 30 phút trước khi đi ngủ và nhớ đánh răng trước kho dán nhé ^^ (loại này có 20 miếng dán và hiện tại mình đang sử dụng)-Crest 3D số 5 làm trắng cấp tốc dành cho răng xỉn màu,ố vàng(loại này có 5 gói dành cho 5 ngày)1 nụ cười tươi và hàm răng trắng sáng,cực kỳ dễ dùng k Cần phải tới phòng khám răng cực kỳ lằng nhằng và mất thời gian,cái này các bạn oder nhé,chỉ sau 5-7 ngày là có,chỉ Cần dùng xong 1 hộp là bạn có 1 hàm răng siêu siêu siêu trắng luôn ý ^^Hot line:89623968888</content>    <link rel="alternate" type="html" href="http://www.facebook.com/1791027514/posts/4562252952971"/>    <link rel="related" href="http://www.facebook.com/photo.php?fbid=45621039
 49246&amp;set=pcb.4562252952971&amp;type=1&amp;relevant_count=8"/>    <link rel="preview" href="http://photos-h.ak.fbcdn.net/hphotos-ak-prn2/v/1082250_4561499094125_1152273849_t.jpg?oh=974ea596827e44e5f002f1d46a3fe71b&amp;oe=52173676&amp;__gda__=1377246580_866546d4f9bb778e670f2076588542f2"/>  </activity:object>  <author>    <name>Meo Nguyễn</name>    <uri>http://www.facebook.com/profile.php?id=1791027514</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=1791027514"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Crest</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>421161771308420_506727376085192</id>  <created>2013-08-21T15:45:31+00:00</created>  <published>2013-08-21T15:45:31+00:00</published>  <updated>2013-08-21T15:45:31+00:00</updated>  <title>ALLP Soluções Contabeis posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/421161771308420/posts/506727376085192"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A01+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-45-42Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schem
 as/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>421161771308420_506727376085192</id>    <title>Produtividade é desafio para manter crescimentoAlém do contexto internacional de incertezas e da baixa taxa de investimento, o desempenho da economia brasileira já começa a enfrentar um desafio adicional: a contribuição dada pela incorporação de novos trabalhadores ao mercado mostra esgotamento.Para retomar taxas mais significativas de crescimento nos próximos anos, o país dependerá crescentemente da expansão de sua eficiência produtiva. E, neste ponto, emerge um gargalo: “A produtividade do trabalho tem mostrado crescimento historicamente baixo nos últimas três décadas. Embora mais elevadas
  de 2001 a 2011, permaneceram inferiores à taxa de expansão do Produto Interno Bruto (PIB) per capita”, afirma Fernanda de Negri, diretora de Estudos Setoriais do Instituto de Pesquisa Econômica Aplicada (Ipea). A conclusão integra os resultados de uma pesquisa a ser divulgada por pesquisadores do Ipea em setembro. “O foco em políticas de elevação da produtividade da economia é decisivo de agora em diante”, acrescenta Fernanda, uma das autoras do estudo, que examinou a evolução dos indicadores de produtividade no Brasil, em especial a produtividade do trabalho e seus componentes.Os pesquisadores do Ipea fizeram a decomposição do crescimento do PIB per capita entre 1992 e 2011 nos seus três fatores constituintes: crescimento da produtividade do trabalho (PIB sobre pessoal ocupado); crescimento da taxa de ocupação (número de ocupados em relação à população economicamente ativa); e taxa de participação da população economicamente ativa na população tota
 l. Os dois últimos refletem fortemente a inclusão de mão de obra no mercado de trabalho.De 2001 a 2009, quase metade do crescimento do PIB per capita anual médio (48,79%) resultou da incorporação de parte do contingente de população ao mercado de trabalho — ou seja, do aumento das taxas de ocupação e participação. Para o período de 2001 a 2011, que incorpora mais dois anos à média, os pesos desses dois indicadores caem para 12,21% e 17,16% respectivamente (tabela). A integração de novos contingentes populacionais ao mercado de trabalho e a redução dos níveis de desemprego passam a explicar, portanto, 29,37% do crescimento do PIB per capita. “Não são esperadas contribuições significativas das taxas de ocupação e participação nos próximos anos. Assim, a manutenção de taxas de crescimento do PIB per capita só poderá ser alcançada se houver um crescimento representativo da produtividade”, reitera Fernanda.Ganhos de produtividade no trabalho são o
 btidos a partir da melhoria da qualidade da mão de obra – investimentos em treinamento e educação básica, aí incluídos os ensinos fundamental e especialmente o médio - e investimentos em tecnologia e inovação. São fatores que, junto com a falta de infraestrutura, puxam o Brasil para baixo nos rankings mundiais de competitividade. Além das questões de infraestrutura. “Avançou-se muito nos investimentos em P&amp;D no Brasil. No entanto, ainda apresentamos uma baixa taxa de inovação, por exemplo”, observa a pesquisadora.Ao examinar a produtividade do trabalho no setor industrial, a pesquisa do Ipea aponta que é a indústria de transformação (que inclui têxteis, fármacos, alimentos, metalurgia e eletrônicos, entre outros) a que mais preocupa. Tomando-se como indicadores as Contas Nacionais, a produtividade média anual deste segmento mostra queda de 0,8% para o período de 2000 a 2009, contra um aumento de 2% na produtividade da indústria extrativa (que inclu
 i a extração de petróleo, gás natural e minérios). Considerando-se relação entre a produção física obtida pelo IBGE na Pesquisa Industrial Mensal (PIM-PF) e as horas pagas, os dois segmentos mostram produtividade positiva, mas, ainda assim, a indústria de transformação tem desempenho inferior.O próximo passo dos pesquisadores do Ipea é tentar contribuir com um diagnóstico mais preciso a respeito da produtividade do capital. Está em andamento uma segunda pesquisa, junto aos empresários, com o objetivo de entrar nos detalhes sobre as causas para a baixa produtividade.</title>    <content>Produtividade é desafio para manter crescimentoAlém do contexto internacional de incertezas e da baixa taxa de investimento, o desempenho da economia brasileira já começa a enfrentar um desafio adicional: a contribuição dada pela incorporação de novos trabalhadores ao mercado mostra esgotamento.Para retomar taxas mais significativas de crescimento nos próximos anos, o país 
 dependerá crescentemente da expansão de sua eficiência produtiva. E, neste ponto, emerge um gargalo: “A produtividade do trabalho tem mostrado crescimento historicamente baixo nos últimas três décadas. Embora mais elevadas de 2001 a 2011, permaneceram inferiores à taxa de expansão do Produto Interno Bruto (PIB) per capita”, afirma Fernanda de Negri, diretora de Estudos Setoriais do Instituto de Pesquisa Econômica Aplicada (Ipea). A conclusão integra os resultados de uma pesquisa a ser divulgada por pesquisadores do Ipea em setembro. “O foco em políticas de elevação da produtividade da economia é decisivo de agora em diante”, acrescenta Fernanda, uma das autoras do estudo, que examinou a evolução dos indicadores de produtividade no Brasil, em especial a produtividade do trabalho e seus componentes.Os pesquisadores do Ipea fizeram a decomposição do crescimento do PIB per capita entre 1992 e 2011 nos seus três fatores constituintes: crescimento da produtivida
 de do trabalho (PIB sobre pessoal ocupado); crescimento da taxa de ocupação (número de ocupados em relação à população economicamente ativa); e taxa de participação da população economicamente ativa na população total. Os dois últimos refletem fortemente a inclusão de mão de obra no mercado de trabalho.De 2001 a 2009, quase metade do crescimento do PIB per capita anual médio (48,79%) resultou da incorporação de parte do contingente de população ao mercado de trabalho — ou seja, do aumento das taxas de ocupação e participação. Para o período de 2001 a 2011, que incorpora mais dois anos à média, os pesos desses dois indicadores caem para 12,21% e 17,16% respectivamente (tabela). A integração de novos contingentes populacionais ao mercado de trabalho e a redução dos níveis de desemprego passam a explicar, portanto, 29,37% do crescimento do PIB per capita. “Não são esperadas contribuições significativas das taxas de ocupação e participação n
 os próximos anos. Assim, a manutenção de taxas de crescimento do PIB per capita só poderá ser alcançada se houver um crescimento representativo da produtividade”, reitera Fernanda.Ganhos de produtividade no trabalho são obtidos a partir da melhoria da qualidade da mão de obra – investimentos em treinamento e educação básica, aí incluídos os ensinos fundamental e especialmente o médio - e investimentos em tecnologia e inovação. São fatores que, junto com a falta de infraestrutura, puxam o Brasil para baixo nos rankings mundiais de competitividade. Além das questões de infraestrutura. “Avançou-se muito nos investimentos em P&amp;D no Brasil. No entanto, ainda apresentamos uma baixa taxa de inovação, por exemplo”, observa a pesquisadora.Ao examinar a produtividade do trabalho no setor industrial, a pesquisa do Ipea aponta que é a indústria de transformação (que inclui têxteis, fármacos, alimentos, metalurgia e eletrônicos, entre outros) a que mais p
 reocupa. Tomando-se como indicadores as Contas Nacionais, a produtividade média anual deste segmento mostra queda de 0,8% para o período de 2000 a 2009, contra um aumento de 2% na produtividade da indústria extrativa (que inclui a extração de petróleo, gás natural e minérios). Considerando-se relação entre a produção física obtida pelo IBGE na Pesquisa Industrial Mensal (PIM-PF) e as horas pagas, os dois segmentos mostram produtividade positiva, mas, ainda assim, a indústria de transformação tem desempenho inferior.O próximo passo dos pesquisadores do Ipea é tentar contribuir com um diagnóstico mais preciso a respeito da produtividade do capital. Está em andamento uma segunda pesquisa, junto aos empresários, com o objetivo de entrar nos detalhes sobre as causas para a baixa produtividade.</content>    <link rel="alternate" type="html" href="http://www.facebook.com/421161771308420/posts/506727376085192"/>  </activity:object>  <author>    <name>ALLP Soluções Con
 tabeis</name>    <uri>http://www.facebook.com/profile.php?id=421161771308420</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=421161771308420"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100003122579275_444114199035995</id>  <created>2013-08-21T15:45:20+00:00</created>  <published>2013-08-21T15:45:20+00:00</published>  <updated>2013-08-21T15:45:20+00:00</updated>  <title>Dilan Kurdistaneme posted a video to Facebook</title>  <category term="VideoPosted" label="Video Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100003122579275/posts/444114199035995"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A01+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-45-42Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2
 010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/video</activity:object-type>    <id>100003122579275_444114199035995</id>    <title>Esed Kimyasal Silahla Saldırdı 1188 şehit 21.08.2013</title>    <subtitle>www.youtube.com</subtitle>    <content>SURİYE'DE SON DAKİKA!!!!!!! Kimyasal saldırı sonucu 1188 kişi hayatını kaybetti İslam Tugayı Türk Basın Sorumlusu Maher Mahmoud'un islahhaber.net sitemize ve...</content>    <summary>SURİYE'DE SON DAKİKA!!!!!!! Kimyasal saldırı sonucu 1188 kişi hayatını kaybettiİslam Tugayı Türk Basın Sorumlusu Maher Mahmoud'un islahhaber.net sitemize vermiş olduğu bilgiye göre;Suriye'de bu sabah saat 02:12'de halk uykuda iken Esed rejim güçleri Şam banliyöleri Doğu Guta bölgesinde ye
 r alan Juber, Zamalkah,Ayn Termeh ve Hazaah kentlerine eş zamanlı 19 kimyasal füze ile vurdu. Saldırı sonrasında hastaneler yaralı ve ölüler ile doldu. Kimyasal saldırlar sonucu şu ana kadar 1188 masum sivil hayatını kaybettiği ve 5000 den fazla insanında kimyasaldan etkilendiği rapor edildi.Ölenlerin arasında daha çok kadın ve çocukların bulunduğu söyleniyor. Doktorlar a göre Esed rejim güçleri zehirli sarin gazı kullandığı yönünde. Sarin gazı canlılar üzerinde çok büyük tahribata yol açıyor. Öyleki 11 aydan beri Esed rejimi ablukaya aldığı bölgede Tıbbı ilaç ve malzeme yok denilecek kadar az. Yaralı halk burada imkansızlıktan ölüyorUzmanlara göre Sarin gazi insanlarda nefes darlığı, kusma, göz bebeklerinde küçülme kaynaklı görme düşüklüğü ve bilinç kaybına yol açtığı söyleniyor.Doktorlar acil olarak bölgede tıbbi malzeme ihtiyaç duyulduğunu vurguladılar. Diğer taraftan Esed rejimine bağlı jetler 4
  hava saldırı daha gerçekleştirdiler . Doğu guta bölgesi rejim güçleri tarafından füzeler ile bombalanmaya devam ediliyor. İslam Tugayı Türk Basın Sorumlusu Maher Mahmoud'un vermiş olduğu bilgilere göre Zamalkah kentine girmeye çalışan Esed rejimi ile direnişçiler arasında şiddetli çatışmaların sürdüğü ve direnişçilerin Esed askerlerini geri püskürttüğü söyleniyor. Doğu Guta bölgesi 11 aydan beri kuşatma altında olduğu için yiyecek ve tıbbı malzeme tükenmiş durumdaİslam Tugayı Türk Basın Sorumlusu Maher Mahmoud islahhaber.nethttp://www.youtube.com/watch?v=J7y5SsZbGbk&amp;feature=youtu.be</summary>    <link rel="alternate" type="html" href="http://www.facebook.com/100003122579275/posts/444114199035995"/>    <link rel="related" href="http://www.youtube.com/watch?v=J7y5SsZbGbk&amp;feature=youtu.be"/>    <link rel="enclosure" href="http://www.youtube.com/v/J7y5SsZbGbk?autohide=1&amp;version=3&amp;autoplay=1"/>    <link rel="preview" 
 href="http://external.ak.fbcdn.net/safe_image.php?d=AQCuE-fccx1885AW&amp;w=130&amp;h=130&amp;url=http%3A%2F%2Fi1.ytimg.com%2Fvi%2FJ7y5SsZbGbk%2Fhqdefault.jpg%3Ffeature%3Dog"/>  </activity:object>  <author>    <name>Dilan Kurdistaneme</name>    <uri>http://www.facebook.com/profile.php?id=100003122579275</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=100003122579275"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>177378642394187_355012837964099</id>  <created>2013-08-21T15:45:36+00:00</created>  <published>2013-08-21T15:45:36+00:00</published>  <updated>2013-08-21T15:45:36+00:00</updated>  <title>UnutulmayaN SözleR posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/177378642394187/posts/355012837964099"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A06+-0400+2013"/>    <title>Facebook - Keyword - Search - Olay</title>    <updated>2013-08-21T15-45-56Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">O
 lay</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>177378642394187_355012837964099</id>    <title>PudrayLa beyaz tenLi oLayım derken, BöyLe bi tövbe bismillah rahmetLi gibi oLan kızLar var</title>    <content>PudrayLa beyaz tenLi oLayım derken, BöyLe bi tövbe bismillah rahmetLi gibi oLan kızLar var</content>    <link rel="alternate" type="html" href="http://www.facebook.com/177378642394187/posts/355012837964099"/>  </activity:object>  <author>    <name>UnutulmayaN SözleR</name>    <uri>http://www.facebook.com/profile.php?id=177378642394187</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0"
  href="http://www.facebook.com/profile.php?id=177378642394187"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>774745488_10151815441745489</id>  <created>2013-08-21T15:45:31+00:00</created>  <published>2013-08-21T15:45:31+00:00</published>  <updated>2013-08-21T15:45:31+00:00</updated>  <title>TC Zülal Haksever posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/774745488/posts/10151815441745489"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A06+-0400+2013"/>    <title>Facebook - Keyword - Search - Olay</title>    <updated>2013-08-21T15-45-56Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Olay</gnip
 :rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>774745488_10151815441745489</id>    <title>Gezi Parkı protestoları sadece Gezi Parkındaki ağaçlar için değil, AKP PKK arasında yapılan Çözüm süreci adı altında yapılan anlaşmalara karşı , TSK ya yurtseverlere yapılan tutuklamalara, sahte delil, döküman üreterek yapılan sözde yargılamaya karşı yapılan bir tepki idi...Dolayısı ile Gezi Parkı eylemlerinin PKK ile en ufak bir ilişkisi olamaz...Ancak, Dünyanın en anlamlı sivil direnişine çamur atmak isteyen şer güçlerin çalışmaları nedeni ile bu onurlu direnişe PKK çamuru atılmaya çalışılmaktadır...nasıl mı?PKK dünyada terör örgütü olarak tanımlanmaktadır...BDP liler PKK
  adına çalışmalar yapmakta , eylem ve söylemde bulunmakta müzakerelerde bulunmaktadır..Dolayısı ile PKK= BDP= TERÖR ÖRGÜTÜErtuğrul Kürkçü, eski devyolcu...Yeni BDP li...Yani dönek takımından BDP=PKK lıBu adamın da içinde bulunduğu bir grup Gezi parkı direnişinde ölen gençle ilgili olarak Antalya dan Ankara ya yürümeye başlamışlar!!!!!!!!!!!Oysaki Ertuğrul Kürkçü BDP milletvekili...Gezi Parkı direnişinde bulunan insanlar Türkiyenin PKK ile müzaker etmesine,Türkiye ni,n Uniter yapısının bozulmasına,ABD İsrail emperyalizmine karşı Atatürk çü, Cumhuriyetçi insanlar...Dolayısı ile bu direniş aynı zamanda terör örgütü PKK, BDP ve onlarla işbirliği yapanlarada karşı...Ancak, Haberlerde sürekli BDP MV Ertuğrul Kürkçü olayının adının öne çıkması bu onurlu direnişin yönünü çevirmeye yönelik bir HİLE dir....Türkiye nin parçalanması konusunda çalışan, eylem ve söylemde bulunan insanlar bu GEZİ PARKI dir
 enişinde olamaz....Dikkatli olunuz...</title>    <content>Gezi Parkı protestoları sadece Gezi Parkındaki ağaçlar için değil, AKP PKK arasında yapılan Çözüm süreci adı altında yapılan anlaşmalara karşı , TSK ya yurtseverlere yapılan tutuklamalara, sahte delil, döküman üreterek yapılan sözde yargılamaya karşı yapılan bir tepki idi...Dolayısı ile Gezi Parkı eylemlerinin PKK ile en ufak bir ilişkisi olamaz...Ancak, Dünyanın en anlamlı sivil direnişine çamur atmak isteyen şer güçlerin çalışmaları nedeni ile bu onurlu direnişe PKK çamuru atılmaya çalışılmaktadır...nasıl mı?PKK dünyada terör örgütü olarak tanımlanmaktadır...BDP liler PKK adına çalışmalar yapmakta , eylem ve söylemde bulunmakta müzakerelerde bulunmaktadır..Dolayısı ile PKK= BDP= TERÖR ÖRGÜTÜErtuğrul Kürkçü, eski devyolcu...Yeni BDP li...Yani dönek takımından BDP=PKK lıBu adamın da içinde bulunduğu bir grup Gezi parkı direnişinde ölen g
 ençle ilgili olarak Antalya dan Ankara ya yürümeye başlamışlar!!!!!!!!!!!Oysaki Ertuğrul Kürkçü BDP milletvekili...Gezi Parkı direnişinde bulunan insanlar Türkiyenin PKK ile müzaker etmesine,Türkiye ni,n Uniter yapısının bozulmasına,ABD İsrail emperyalizmine karşı Atatürk çü, Cumhuriyetçi insanlar...Dolayısı ile bu direniş aynı zamanda terör örgütü PKK, BDP ve onlarla işbirliği yapanlarada karşı...Ancak, Haberlerde sürekli BDP MV Ertuğrul Kürkçü olayının adının öne çıkması bu onurlu direnişin yönünü çevirmeye yönelik bir HİLE dir....Türkiye nin parçalanması konusunda çalışan, eylem ve söylemde bulunan insanlar bu GEZİ PARKI direnişinde olamaz....Dikkatli olunuz...</content>    <link rel="alternate" type="html" href="http://www.facebook.com/774745488/posts/10151815441745489"/>  </activity:object>  <author>    <name>TC Zülal Haksever</name>    <uri>http://www.facebook.com/profile.php?id=774745488</uri>  </author>  <ac
 tivity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=774745488"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100000481193375_709418675750832</id>  <created>2013-08-21T15:45:24+00:00</created>  <published>2013-08-21T15:45:24+00:00</published>  <updated>2013-08-21T15:45:58+00:00</updated>  <title>Malez Nhama Bikhin posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100000481193375/posts/709418675750832"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2915120374">Mobile</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A01+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <u
 pdated>2013-08-21T15-45-59Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>100000481193375_709418675750832</id>    <title>bot gue mati, gara2 eksekusi token GAGAL tros!</title>    <content>bot gue mati, gara2 eksekusi token GAGAL tros!</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100000481193375/posts/709418675750832"/>  </activity:object>  <author>    <name>Malez Nhama Bikhin</name>    <uri>http://www.facebook.com/profile.php?id=100000481193375</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" lengt
 h="0" href="http://www.facebook.com/profile.php?id=100000481193375"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>388065427977227_426688447448258</id>  <created>2013-08-21T15:46:07+00:00</created>  <published>2013-08-21T15:46:07+00:00</published>  <updated>2013-08-21T15:46:07+00:00</updated>  <title>Bay_Bayan_Eşleştirme_Eleştirme_Sohbet posted a photo to Facebook</title>  <category term="PhotoPosted" label="Photo Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/388065427977227/posts/426688447448258"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2305272732">Photos</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A37+-0400+2013"/>    <title>Facebook - Keyword - Search
  - Olay</title>    <updated>2013-08-21T15-46-13Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Olay</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>388065427977227_426688447448258</id>    <title>Burak Güven's Photos</title>    <content>HOŞGELDIN ;) ARKADAŞLAR LÜTFEN SAYFAYI BEGENELİM ELİNİZE YAPISMAZ HERKESİ PAYLAŞIYORUZ HİÇ KIMSE KUYUDA KÖŞEDE KALMICAK BUDUR OLAY :).EDA.. ♥♥♥</content>    <link rel="alternate" type="html" href="http://www.facebook.com/388065427977227/posts/426688447448258"/>    <link rel="related" href="http://www.facebook.com/photo.php?fbid=1391788794381214&amp;set=p.1391788794381214&amp;type=1"/>    <link rel="preview" href="http://photos-a.xx.fbcdn.net/hp
 hotos-prn2/1175447_1391788794381214_803655053_s.jpg"/>  </activity:object>  <author>    <name>Bay_Bayan_Eşleştirme_Eleştirme_Sohbet</name>    <uri>http://www.facebook.com/profile.php?id=388065427977227</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=388065427977227"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>388065427977227_426688380781598</id>  <created>2013-08-21T15:45:54+00:00</created>  <published>2013-08-21T15:45:54+00:00</published>  <updated>2013-08-21T15:45:54+00:00</updated>  <title>Bay_Bayan_Eşleştirme_Eleştirme_Sohbet posted a photo to Facebook</title>  <category term="PhotoPosted" label="Photo Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/388065427977227/posts/426688380781598"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2305272732">Photos</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A37+-0400+2013"/>    <title>Facebook - Keyword - Search
  - Olay</title>    <updated>2013-08-21T15-46-13Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Olay</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>388065427977227_426688380781598</id>    <title>Tc Şahander Efe's Photos</title>    <content>HOŞGELDIN ;) ARKADAŞLAR LÜTFEN SAYFAYI BEGENELİM ELİNİZE YAPISMAZ HERKESİ PAYLAŞIYORUZ HİÇ KIMSE KUYUDA KÖŞEDE KALMICAK BUDUR OLAY :).EDA.. ♥♥♥</content>    <link rel="alternate" type="html" href="http://www.facebook.com/388065427977227/posts/426688380781598"/>    <link rel="related" href="http://www.facebook.com/photo.php?fbid=267389656741289&amp;set=p.267389656741289&amp;type=1"/>    <link rel="preview" href="http://photos-b.ak.fbcdn.net/
 hphotos-ak-frc1/308334_267389656741289_901662885_s.jpg"/>  </activity:object>  <author>    <name>Bay_Bayan_Eşleştirme_Eleştirme_Sohbet</name>    <uri>http://www.facebook.com/profile.php?id=388065427977227</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=388065427977227"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100002487987363_489880391104889</id>  <created>2013-08-21T15:46:03+00:00</created>  <published>2013-08-21T15:46:03+00:00</published>  <updated>2013-08-21T15:46:03+00:00</updated>  <title>Baliram Ram posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100002487987363/posts/489880391104889"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A33+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-46-17Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp
 ;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>100002487987363_489880391104889</id>    <title>BSNL:SEARCH ALL INTERNATIONAL REALTYBaliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.comService Name Service NumberA P Telecom Public Grievance Cell  12727Aids Help Line Service  1097Air Lines Booking  1402Air Lines Enquiry  1400Air Lines Enquiry  1401Ambulance  102Apollo Hospital  1066Blood Bank Information Service  1910Call Centre &amp; Information  1991Catastrophe &amp; Trauma Service  1099Change Number Announcement (Hindi) 1951Changed Number Announcement (English) 1952Changed Number Announcement (In case Of Shift) 1954Changed Number Announcement (Regional Language) 1953Children In Difficulty/ Child Di
 stress Service 1098City Traffic Help Line 1073Control Room Of District Collector/Magistrate 1077Crime Stopper Cell Of Police In Andhra Pradesh 1090Dial A Doctor 1911Directory Enquiry Service 197Dish Net Communication Ltd 1250Earth-Quake Helpline Service 1092Electricity Comp 155333Electricity Comp 1912Eye Bank Information Service 1919Fire Control 101Free Phone Enquiry 1600Free Phone Services 1800Help Desk Service At All Nodes Of Nib 1957Hindi-Telugu Viseshaseva 177I V R S Information Centre Of LIC Of India Comp 1251Indane Gas H/Line Comp 1260India Telephone Card Enquiry 1602International Trunk Enquiry 187International Trunk Booking 186International Trunk Delay Information 188Internet Help Desk 12678Internet Net Node 12737Just Dial Service (Talking Yellow Pages) 12614L P G Help Line (B P C L ) Comp 12664L P G Help Line (H P C L) Manual 12665Leased Cct Complaints 12676Leased Circuits Fault Booking 1918M C H Complaints 155304M/S Care Hospital 1061National Call Centre (Thomas Cook India 
 Ltd) 12613National Directory Enquiry(Ndq)Service 183 183Natural Disaster Control Room 1096Phone Plus Facilities 1507Phonogram (Inland/International) 1585Phonogram (Regional Language) 1584Police Emergency 100Pollution Control (Rta) 1074Public Grievance Cell Telecom Circle Hqs 1094Railway General Enq 131Railway Recorded Announcement (English) 1331Railway Recorded Announcement (Hindi) 1332Railway Recorded Announcement (Telugu) 1333Railway Reservation Enq Comp 135Railway Reservation Recorded Announcement 1345Relief Commissioners Of Central/ State/ Union Territory 1070S T D Complaints 1582S T D Information 1583State Govt Call Centre For Formers 1100Std Complaints 182Telephone Bill Enq (English) 1501Telephone Bill Enq (Hindi) 1502Telephone Bill Enq (Telegu) 1503Telephone Complaint Booking 198Telex Complaints 189Time In All Languages 174Time In All Languages 175Tourism Of A P State 1364Tourist Office Govt Of India 1363Trunk Assistance 1581Trunk Assistance 181Trunk Booking 1580Trunk Booking
  180Trunk Booking (International) 1586Trunk Delay Information 1588Trunk Enquiry (International) 1587Water Supply Complaints 155313Women Complaints (Mahila Dakshata Samithi) 10922Women Complaints (Mahila Mandali Samakhya) 10921Women Crisis Response 1091Baliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.com</title>    <content>BSNL:SEARCH ALL INTERNATIONAL REALTYBaliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.comService Name Service NumberA P Telecom Public Grievance Cell  12727Aids Help Line Service  1097Air Lines Booking  1402Air Lines Enquiry  1400Air Lines Enquiry  1401Ambulance  102Apollo Hospital  1066Blood Bank Information Service  1910Call Centre &amp; Information  1991Catastrophe &amp; Trauma Service  1099Change Number Announcement (Hindi) 1951Changed Number Announcement (English) 1952Changed Number Announcement (In case Of Shift) 1954Changed Number Announcement (Regional Language) 1953Children In Difficulty/ Child Distress Service 1098City 
 Traffic Help Line 1073Control Room Of District Collector/Magistrate 1077Crime Stopper Cell Of Police In Andhra Pradesh 1090Dial A Doctor 1911Directory Enquiry Service 197Dish Net Communication Ltd 1250Earth-Quake Helpline Service 1092Electricity Comp 155333Electricity Comp 1912Eye Bank Information Service 1919Fire Control 101Free Phone Enquiry 1600Free Phone Services 1800Help Desk Service At All Nodes Of Nib 1957Hindi-Telugu Viseshaseva 177I V R S Information Centre Of LIC Of India Comp 1251Indane Gas H/Line Comp 1260India Telephone Card Enquiry 1602International Trunk Enquiry 187International Trunk Booking 186International Trunk Delay Information 188Internet Help Desk 12678Internet Net Node 12737Just Dial Service (Talking Yellow Pages) 12614L P G Help Line (B P C L ) Comp 12664L P G Help Line (H P C L) Manual 12665Leased Cct Complaints 12676Leased Circuits Fault Booking 1918M C H Complaints 155304M/S Care Hospital 1061National Call Centre (Thomas Cook India Ltd) 12613National Direc
 tory Enquiry(Ndq)Service 183 183Natural Disaster Control Room 1096Phone Plus Facilities 1507Phonogram (Inland/International) 1585Phonogram (Regional Language) 1584Police Emergency 100Pollution Control (Rta) 1074Public Grievance Cell Telecom Circle Hqs 1094Railway General Enq 131Railway Recorded Announcement (English) 1331Railway Recorded Announcement (Hindi) 1332Railway Recorded Announcement (Telugu) 1333Railway Reservation Enq Comp 135Railway Reservation Recorded Announcement 1345Relief Commissioners Of Central/ State/ Union Territory 1070S T D Complaints 1582S T D Information 1583State Govt Call Centre For Formers 1100Std Complaints 182Telephone Bill Enq (English) 1501Telephone Bill Enq (Hindi) 1502Telephone Bill Enq (Telegu) 1503Telephone Complaint Booking 198Telex Complaints 189Time In All Languages 174Time In All Languages 175Tourism Of A P State 1364Tourist Office Govt Of India 1363Trunk Assistance 1581Trunk Assistance 181Trunk Booking 1580Trunk Booking 180Trunk Booking (Inter
 national) 1586Trunk Delay Information 1588Trunk Enquiry (International) 1587Water Supply Complaints 155313Women Complaints (Mahila Dakshata Samithi) 10922Women Complaints (Mahila Mandali Samakhya) 10921Women Crisis Response 1091Baliram RamSAI Realty Welcome Letter.doc - Google Drivedocs.google.com</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100002487987363/posts/489880391104889"/>  </activity:object>  <author>    <name>Baliram Ram</name>    <uri>http://www.facebook.com/profile.php?id=100002487987363</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=100002487987363"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100000219037776_705041672846461</id>  <created>2013-08-21T15:45:57+00:00</created>  <published>2013-08-21T15:45:57+00:00</published>  <updated>2013-08-21T15:45:57+00:00</updated>  <title>Winter Child posted a bookmark to Facebook</title>  <category term="BookmarkPosted" label="Bookmark Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100000219037776/posts/705041672846461"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A33+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <updated>2013-08-21T15-46-17Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schema
 s/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/bookmark</activity:object-type>    <id>100000219037776_705041672846461</id>    <title>Đêm nhạc từ thiện "Thương lắm những vùng cao"  được diễn ra vào 19h30 ngày 23/08/2013 tại quán Cafe Xí Nghiệp để gây quỹ ủng hộ cho nhân dân ở 3 bản Lủng Vải, Khên Lền và Cốc Nọt (https://www.facebook.com/events/324146661054095/) -  3 bản khó khăn nhất của xã Công Bằng, huyện Pắc Nặm, Bắc Cạn. Đêm nhạc hứa hẹn sẽ là một bữa tiệc mang đầy cảm xúc , yêu thương ... với sự góp mặt của Guitarist Việt Johan, Xuân Hà, Phong Bống, CLB guitar Kiến Trúc, ca sỹ Thành Nam, ca sỹ Đặng 
 Thủy, Ngọc Dịu Dàng &amp; ban nhạc Acoustic Wave cùng một số khách mời ... Rất mong sự có mặt và ủng hộ của các bạn trong đêm nhạc</title>    <content>Đêm nhạc từ thiện "Thương lắm những vùng cao"  được diễn ra vào 19h30 ngày 23/08/2013 tại quán Cafe Xí Nghiệp để gây quỹ ủng hộ cho nhân dân ở 3 bản Lủng Vải, Khên Lền và Cốc Nọt (https://www.facebook.com/events/324146661054095/) -  3 bản khó khăn nhất của xã Công Bằng, huyện Pắc Nặm, Bắc Cạn. Đêm nhạc hứa hẹn sẽ là một bữa tiệc mang đầy cảm xúc , yêu thương ... với sự góp mặt của Guitarist Việt Johan, Xuân Hà, Phong Bống, CLB guitar Kiến Trúc, ca sỹ Thành Nam, ca sỹ Đặng Thủy, Ngọc Dịu Dàng &amp; ban nhạc Acoustic Wave cùng một số khách mời ... Rất mong sự có mặt và ủng hộ của các bạn trong đêm nhạc</content>    <li
 nk rel="alternate" type="html" href="http://www.facebook.com/100000219037776/posts/705041672846461"/>    <link rel="related" href="http://www.facebook.com/events/210352755790539/"/>  </activity:object>  <author>    <name>Winter Child</name>    <uri>http://www.facebook.com/profile.php?id=100000219037776</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=100000219037776"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>135547393146693_703098453037283</id>  <created>2013-08-21T15:45:52+00:00</created>  <published>2013-08-21T15:45:52+00:00</published>  <updated>2013-08-21T15:45:52+00:00</updated>  <title>Baltic Horse Show posted a bookmark to Facebook</title>  <category term="BookmarkPosted" label="Bookmark Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/135547393146693/posts/703098453037283"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2347471856">Notes</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A33+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</ti
 tle>    <updated>2013-08-21T15-46-17Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/bookmark</activity:object-type>    <id>135547393146693_703098453037283</id>    <title>Baltic Horse Show Kiel – bald geht es los</title>    <content>(Kiel) Das Reitsportereignis kommt vom 10. bis 13. Oktober wieder nach Kiel: Internationaler Reitsport mit der Baltic Horse Show bestimmt den Takt mitten in der Landeshauptstadt und für die Besucher geht es mit günstigen Ticketpreisen genauso weiter wie im vergangenen Jahr. Die Baltic Horse Show ist ein absolutes Spitzenereignis mit einer einzigartigen Vielfalt: Nur in Kiel gibt es das spektakuläre Hansano Fahrduell über zwei Runden mit drei
  Mannschaften. Dann kurven Mannschaften aus Schleswig-Holstein, Mecklenburg-Vorpommern und Dänemark/ Schweden jeweils im Vierspänner, Zweispänner und Zweispänner Ponys in einem Hindernisfahren im Weltcup-Style durch das Hallenoval und schenken sich keine einzige Sekunde….  Schleswig-Holsteins Nachwuchs im Spring- und Dressursattel erobert die internationale Sportbühne zu den Finals im LVM Cup Springen und Dressur und in der Sparda-Bank Trophy. Der Hauptsponsor Sparda-Bank  holt die internationalen Springreiter genauso wie die nächste Generation am Sonntag zum Familientag zur Baltic Horse Show – dann geht es auch um den von der Sparda-Bank präsentierten Großen Preis von Schleswig-Holstein. Auch am Samstag steht Top-Sport mit der Warsteiner Winning Round und dem Championat von Kiel, präsentiert von MVK auf dem Programm. Insgesamt neun internationale Prüfungen verleihen der Baltic Horse Show sportliches Gewicht. Nicht zufällig sind regelmäßig Teilnehmer aus bis zu 1
 5 Nationen in Kiel dabei.  Zu den Glanzlichtern zählen zudem das witzige Kostümspringen der Kieler Nachrichten, das von Autokraft präsentierte Herzschlagfinale – Mannschaftsspringen der Reiterbünde und der Holsteiner Abend am Freitag mit dem Holsteiner Masters Zukunftspreis. Kommentiert wird der Preis von keinem Geringeren als dem einstigen Nationenpreisreiter und Pferdekenner Tjark Nagel! Evers &amp; Frank Druck- und Mediengruppe präsentiert im Anschluss die Youngster Tour für die sieben und acht Jahre alten Pferde.   Stabil günstig – die Tickets!Tickets kosten für Erwachsene von Freitag bis Sonntag 18 Euro für einen ganzen Tag bei der Baltic Horse Show. Am Donnerstag gibt es Tickets für sieben und fünf Euro (Kinder), freitags haben alle unter 17 Jahren freien Eintritt und am Samstag und Sonntag sind Kinder für je neun Euro dabei. Und an allen Tagen gilt frei Platzwahl Neu: Wer es ganz bequem haben möchte und Kiels Reitsportereignis für Kunden und Gäste oder
  mit Freunden nutzen will, hat die Möglichkeit, Business Seats, also nummerierte und gepolsterte Sitzplätze für 35 Euro zu buchen.  </content>    <link rel="alternate" type="html" href="http://www.facebook.com/135547393146693/posts/703098453037283"/>    <link rel="related" href="http://www.facebook.com/notes/baltic-horse-show/baltic-horse-show-kiel-bald-geht-es-los/703098453037283"/>  </activity:object>  <author>    <name>Baltic Horse Show</name>    <uri>http://www.facebook.com/profile.php?id=135547393146693</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=135547393146693"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>320348968021858_562411503815602</id>  <created>2013-08-21T15:46:12+00:00</created>  <published>2013-08-21T15:46:12+00:00</published>  <updated>2013-08-21T15:46:12+00:00</updated>  <title>Made by Marianne posted a bookmark to Facebook</title>  <category term="BookmarkPosted" label="Bookmark Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/320348968021858/posts/562411503815602"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Pampers&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A42+-0400+2013"/>    <title>Facebook - Keyword - Search - Pampers</title>    <updated>2013-08-21T15-46-19Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/
 schemas/2010">Pampers</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/bookmark</activity:object-type>    <id>320348968021858_562411503815602</id>    <title>Asgard Photography</title>    <content>Asgard Photography is newly established business specializing in Portrait and Wedding Photography. At Asgard Photography we have the latest equipment and editing software. With a good eye, experience and equipment we capture great images for you.  </content>    <summary>Supporting local businesses with The Inspire Network (a free network for all North East Business women). Here are a few of the businesses worth checking out! Baby Bumpkins Lolly's Kitchen Hollin House Beauty, Children's &amp; Teens Pamper Parties Name it Baby and https://www.facebook.com/AsgardPh
 otography?fref=ts</summary>    <link rel="alternate" type="html" href="http://www.facebook.com/320348968021858/posts/562411503815602"/>    <link rel="related" href="http://www.facebook.com/AsgardPhotography"/>    <link rel="preview" href="http://profile-b.xx.fbcdn.net/hprofile-prn1/1075974_622848401068974_1554959767_n.jpg"/>  </activity:object>  <author>    <name>Made by Marianne</name>    <uri>http://www.facebook.com/profile.php?id=320348968021858</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=320348968021858"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Pampers</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>666841801_10151928462241802</id>  <created>2013-08-21T15:46:03+00:00</created>  <published>2013-08-21T15:46:03+00:00</published>  <updated>2013-08-21T15:46:03+00:00</updated>  <title>Roxy Cox-Mobley posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/666841801/posts/10151928462241802"/>  <generator uri="http://www.facebook.com/apps/application.php?id=6628568379">Facebook for iPhone</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Pampers&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A42+-0400+2013"/>    <title>Facebook - Keyword - Search - Pampers</title>  
   <updated>2013-08-21T15-46-19Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Pampers</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>666841801_10151928462241802</id>    <title>Ahhh some mom pamper time</title>    <content>Ahhh some mom pamper time</content>    <link rel="alternate" type="html" href="http://www.facebook.com/666841801/posts/10151928462241802"/>  </activity:object>  <author>    <name>Roxy Cox-Mobley</name>    <uri>http://www.facebook.com/profile.php?id=666841801</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=6668
 41801"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Pampers</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>194770597245239_533028793419416</id>  <created>2013-08-21T15:46:28+00:00</created>  <published>2013-08-21T15:46:28+00:00</published>  <updated>2013-08-21T15:46:28+00:00</updated>  <title>Pegamo posted a bookmark to Facebook</title>  <category term="BookmarkPosted" label="Bookmark Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/194770597245239/posts/533028793419416"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2347471856">Notes</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A45%3A58+-0400+2013"/>    <title>Facebook - Keyword - Search - P&amp;G</title>    <up
 dated>2013-08-21T15-46-34Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/bookmark</activity:object-type>    <id>194770597245239_533028793419416</id>    <title>Baltic Horse Show Kiel – bald geht es los</title>    <content>(Kiel) Das Reitsportereignis kommt vom 10. bis 13. Oktober wieder nach Kiel: Internationaler Reitsport mit der Baltic Horse Show bestimmt den Takt mitten in der Landeshauptstadt und für die Besucher geht es mit günstigen Ticketpreisen genauso weiter wie im vergangenen Jahr. Die Baltic Horse Show ist ein absolutes Spitzenereignis mit einer einzigartigen Vielfalt: Nur in Kiel gibt es das spektakuläre Hansano Fahrduell über zwei Runden mit drei Mannschaft
 en. Dann kurven Mannschaften aus Schleswig-Holstein, Mecklenburg-Vorpommern und Dänemark/ Schweden jeweils im Vierspänner, Zweispänner und Zweispänner Ponys in einem Hindernisfahren im Weltcup-Style durch das Hallenoval und schenken sich keine einzige Sekunde….  Schleswig-Holsteins Nachwuchs im Spring- und Dressursattel erobert die internationale Sportbühne zu den Finals im LVM Cup Springen und Dressur und in der Sparda-Bank Trophy. Der Hauptsponsor Sparda-Bank  holt die internationalen Springreiter genauso wie die nächste Generation am Sonntag zum Familientag zur Baltic Horse Show – dann geht es auch um den von der Sparda-Bank präsentierten Großen Preis von Schleswig-Holstein. Auch am Samstag steht Top-Sport mit der Warsteiner Winning Round und dem Championat von Kiel, präsentiert von MVK auf dem Programm. Insgesamt neun internationale Prüfungen verleihen der Baltic Horse Show sportliches Gewicht. Nicht zufällig sind regelmäßig Teilnehmer aus bis zu 15 Nationen 
 in Kiel dabei.  Zu den Glanzlichtern zählen zudem das witzige Kostümspringen der Kieler Nachrichten, das von Autokraft präsentierte Herzschlagfinale – Mannschaftsspringen der Reiterbünde und der Holsteiner Abend am Freitag mit dem Holsteiner Masters Zukunftspreis. Kommentiert wird der Preis von keinem Geringeren als dem einstigen Nationenpreisreiter und Pferdekenner Tjark Nagel! Evers &amp; Frank Druck- und Mediengruppe präsentiert im Anschluss die Youngster Tour für die sieben und acht Jahre alten Pferde.   Stabil günstig – die Tickets!Tickets kosten für Erwachsene von Freitag bis Sonntag 18 Euro für einen ganzen Tag bei der Baltic Horse Show. Am Donnerstag gibt es Tickets für sieben und fünf Euro (Kinder), freitags haben alle unter 17 Jahren freien Eintritt und am Samstag und Sonntag sind Kinder für je neun Euro dabei. Und an allen Tagen gilt frei Platzwahl Neu: Wer es ganz bequem haben möchte und Kiels Reitsportereignis für Kunden und Gäste oder mit Freund
 en nutzen will, hat die Möglichkeit, Business Seats, also nummerierte und gepolsterte Sitzplätze für 35 Euro zu buchen.  </content>    <link rel="alternate" type="html" href="http://www.facebook.com/194770597245239/posts/533028793419416"/>    <link rel="related" href="http://www.facebook.com/notes/pegamo/baltic-horse-show-kiel-bald-geht-es-los/533028793419416"/>  </activity:object>  <author>    <name>Pegamo</name>    <uri>http://www.facebook.com/profile.php?id=194770597245239</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=194770597245239"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">P&amp;G</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>548863647_10151786684988648</id>  <created>2013-08-21T15:46:38+00:00</created>  <published>2013-08-21T15:46:38+00:00</published>  <updated>2013-08-21T15:46:38+00:00</updated>  <title>Murat Girgin posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/548863647/posts/10151786684988648"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A46%3A08+-0400+2013"/>    <title>Facebook - Keyword - Search - Olay</title>    <updated>2013-08-21T15-46-48Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Olay</gnip:rule>
   </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>548863647_10151786684988648</id>    <title>Kadın yada Erkek, istediğı kadar çirkin olsun benim deyip sahiplenebiliyormusun,benimsiyebiliyormusun,en güzel anını ilk onla paylaşıyorsan,sıkıntılı gününde yüzünü güldürebiliyorsa,o hastalandıgında içinizde birşeyler eksiliyorsa, olay bitmiştir, senin için en güzel insan odur işte .......</title>    <content>Kadın yada Erkek, istediğı kadar çirkin olsun benim deyip sahiplenebiliyormusun,benimsiyebiliyormusun,en güzel anını ilk onla paylaşıyorsan,sıkıntılı gününde yüzünü güldürebiliyorsa,o hastalandıgında içinizde birşeyler eksiliyorsa, olay bitmiştir, senin için en güzel insan odur i�
 �te .......</content>    <link rel="alternate" type="html" href="http://www.facebook.com/548863647/posts/10151786684988648"/>  </activity:object>  <author>    <name>Murat Girgin</name>    <uri>http://www.facebook.com/profile.php?id=548863647</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=548863647"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100005729834534_154977254703268</id>  <created>2013-08-21T15:46:34+00:00</created>  <published>2013-08-21T15:46:34+00:00</published>  <updated>2013-08-21T15:46:34+00:00</updated>  <title>Efkanceyda Çevik posted a note to Facebook</title>  <category term="NotePosted" label="Note Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100005729834534/posts/154977254703268"/>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A46%3A08+-0400+2013"/>    <title>Facebook - Keyword - Search - Olay</title>    <updated>2013-08-21T15-46-48Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Ola
 y</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>    <id>100005729834534_154977254703268</id>    <title>aşkım gel ve ara bütün olay bir sorun mu vardı aramadın istanbul a consolosluğa gidiyorum</title>    <content>aşkım gel ve ara bütün olay bir sorun mu vardı aramadın istanbul a consolosluğa gidiyorum</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100005729834534/posts/154977254703268"/>  </activity:object>  <author>    <name>Efkanceyda Çevik</name>    <uri>http://www.facebook.com/profile.php?id=100005729834534</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0"
  href="http://www.facebook.com/profile.php?id=100005729834534"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>100003311672346_426536660800053</id>  <created>2013-08-21T15:46:49+00:00</created>  <published>2013-08-21T15:46:49+00:00</published>  <updated>2013-08-21T15:46:49+00:00</updated>  <title>Elli Üç posted a photo to Facebook</title>  <category term="PhotoPosted" label="Photo Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/100003311672346/posts/426536660800053"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2305272732">Photos</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A46%3A19+-0400+2013"/>    <title>Facebook - Keyword - Search - Olay</title>    <updated>201
 3-08-21T15-47-06Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Olay</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>100003311672346_426536660800053</id>    <title>Timeline Photos</title>    <content>Sakalının TeL!ne Sonsuzlarkez Kurban Olayımmmm</content>    <link rel="alternate" type="html" href="http://www.facebook.com/100003311672346/posts/426536660800053"/>    <link rel="related" href="http://www.facebook.com/photo.php?fbid=710873342275583&amp;set=a.108200882542835.11916.108183789211211&amp;type=1"/>    <link rel="preview" href="http://photos-b.ak.fbcdn.net/hphotos-ak-ash3/602743_710873342275583_1751907161_s.jpg"/>  </activity:object>  <author>    <name>Elli Üç</name>    <uri>http://w
 ww.facebook.com/profile.php?id=100003311672346</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=100003311672346"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>388065427977227_426688574114912</id>  <created>2013-08-21T15:46:45+00:00</created>  <published>2013-08-21T15:46:45+00:00</published>  <updated>2013-08-21T15:46:45+00:00</updated>  <title>Bay_Bayan_Eşleştirme_Eleştirme_Sohbet posted a photo to Facebook</title>  <category term="PhotoPosted" label="Photo Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/388065427977227/posts/426688574114912"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2305272732">Photos</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=Olay&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A46%3A19+-0400+2013"/>    <title>Facebook - Keyword - Search
  - Olay</title>    <updated>2013-08-21T15-47-06Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">Olay</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/photo</activity:object-type>    <id>388065427977227_426688574114912</id>    <title>Ecem Özsüt's Photos</title>    <content>HOŞGELDIN ;) ARKADAŞLAR LÜTFEN SAYFAYI BEGENELİM ELİNİZE YAPISMAZ HERKESİ PAYLAŞIYORUZ HİÇ KIMSE KUYUDA KÖŞEDE KALMICAK BUDUR OLAY :).EDA.. ♥♥♥</content>    <link rel="alternate" type="html" href="http://www.facebook.com/388065427977227/posts/426688574114912"/>    <link rel="related" href="http://www.facebook.com/photo.php?fbid=357728617693016&amp;set=p.357728617693016&amp;type=1"/>    <link rel="preview" href="http://photos-c.ak.fbcdn.net/hpho
 tos-ak-prn2/1185329_357728617693016_1635768430_s.jpg"/>    <gnip:statistics favoriteCount=""/>  </activity:object>  <author>    <name>Bay_Bayan_Eşleştirme_Eleştirme_Sohbet</name>    <uri>http://www.facebook.com/profile.php?id=388065427977227</uri>  </author>  <activity:actor>    <activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>    <link rel="alternate" type="html" length="0" href="http://www.facebook.com/profile.php?id=388065427977227"/>  </activity:actor>  <gnip:matching_rules>    <gnip:matching_rule rel="source">Olay</gnip:matching_rule>  </gnip:matching_rules></entry>
-<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:service="http://activitystrea.ms/service-provider" xmlns:gnip="http://www.gnip.com/schemas/2010">  <id>143094865894941_155476257990135</id>  <created>2013-08-21T15:47:03+00:00</created>  <published>2013-08-21T15:47:03+00:00</published>  <updated>2013-08-21T15:47:03+00:00</updated>  <title>Nhật ký CLB Taekwondo ĐH Thăng Long posted a bookmark to Facebook</title>  <category term="BookmarkPosted" label="Bookmark Posted"/>  <link rel="alternate" type="html" href="http://www.facebook.com/143094865894941/posts/155476257990135"/>  <generator uri="http://www.facebook.com/apps/application.php?id=2347471856">Notes</generator>  <source>    <link rel="self" type="application/json" href="https://graph.facebook.com/search?q=P%26G&amp;type=post&amp;limit=75&amp;access_token=409672089139044%7CPQAQVLCXtfT9hTVcwlBk0RYTztA&amp;since=Wed+Aug+21+11%3A46%3A33+-0400+2013"/>    <title>Facebook - Keyword
  - Search - P&amp;G</title>    <updated>2013-08-21T15-47-09Z</updated>    <gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">P&amp;G</gnip:rule>  </source>  <service:provider>    <name>Facebook</name>    <uri>www.facebook.com</uri>    <icon/>  </service:provider>  <activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>  <activity:object>    <activity:object-type>http://activitystrea.ms/schema/1.0/bookmark</activity:object-type>    <id>143094865894941_155476257990135</id>    <title>thứ 2 19-8-2013 rút lui vào hầm</title>    <content>viết lúc 10h11 tối 21-8-2013 thứ 4 rằm tháng 7 mưa rơi ngày thú 2 19-8-2013 ngày cách mạng tháng 8,1 ngày trọng đại,độc lập tự do là  vô giá, không gì có thể quý hơn http://mp3.zing.vn/bai-hat/Muoi-Chin-Thang-Tam-Top-Ca/IWZB8WO6.html http://www.congan.com.vn/?mod=detnews&amp;catid=882&amp;id=52299 có nhiều người chẳng biết học thuyết của Mác là gì nhưng mà đề
 u coi thường nóvà chạy theo những lý luận kinh tế của mỹ , chạy theochưa bao giờ là 1 việc khôn ngoan,có nhiều sinh viên ngành kinh tế gặp khó khăn khi giải thích các vấn đề kinh tếđó là tại họ chưa được đọc tư bản luận và các tác phẩm kinh điền khác của Mác-Ăng ghenhọ chỉ học cái ngọn đó là những lý thuyết đã được người Mỹ làm đơn giả

<TRUNCATED>

[71/71] [abbrv] git commit: Merge branch 'STREAMS-26'

Posted by sb...@apache.org.
Merge branch 'STREAMS-26'


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/d72d6b43
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/d72d6b43
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/d72d6b43

Branch: refs/heads/master
Commit: d72d6b4318e169b05d350f70a29bde6d96f7aa9f
Parents: 1e29516 aaeb021
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 18:19:22 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 18:19:22 2014 -0500

----------------------------------------------------------------------
 pom.xml                                         |  13 +-
 provision/provision.iml                         |   7 +-
 streams-config-graph/pom.xml                    |   3 +-
 streams-config/pom.xml                          |  12 -
 streams-contrib/pom.xml                         |   4 +-
 streams-contrib/streams-components-test/pom.xml |  46 ++
 .../component/ExpectedDatumsPersistWriter.java  |  54 ++
 .../test/component/FileReaderProvider.java      |  98 ++++
 .../test/component/StreamsDatumConverter.java   |  13 +
 .../component/StringToDocumentConverter.java    |  15 +
 .../tests/TestCompoentsLocalStream.java         |  23 +
 .../tests/TestExpectedDatumsPersitWriter.java   |  38 ++
 .../component/tests/TestFileReaderProvider.java |  39 ++
 .../src/test/resources/TestFile.txt             |   4 +
 .../streams/console/ConsolePersistReader.java   |  89 ++++
 .../streams/console/ConsolePersistWriter.java   |  24 +-
 .../console/ConsolePersistWriterTask.java       |   4 +-
 .../streams-persist-elasticsearch/pom.xml       |   4 +-
 .../ElasticsearchPersistReader.java             | 197 ++++---
 .../ElasticsearchPersistReaderTask.java         |  36 +-
 .../ElasticsearchPersistUpdater.java            | 515 +++++++++++++++++++
 .../ElasticsearchPersistWriter.java             | 118 ++---
 .../ElasticsearchPersistWriterTask.java         |   2 +-
 .../elasticsearch/PercolateProcessor.java       | 152 ++++++
 .../ElasticsearchReaderConfiguration.json       |  18 +
 .../ElasticsearchWriterConfiguration.json       |  18 +
 streams-contrib/streams-persist-hdfs/pom.xml    |   4 +-
 .../apache/streams/hdfs/HdfsConfigurator.java   |  15 +
 .../streams/hdfs/WebHdfsPersistReader.java      | 179 +++++++
 .../streams/hdfs/WebHdfsPersistReaderTask.java  |  65 +++
 .../streams/hdfs/WebHdfsPersistWriter.java      | 107 +---
 .../streams/hdfs/WebHdfsPersistWriterTask.java  |   2 +-
 .../streams/hdfs/HdfsReaderConfiguration.json   |  14 +
 .../streams/hdfs/HdfsWriterConfiguration.json   |  18 +
 .../streams/kafka/KafkaPersistReader.java       |  51 +-
 .../streams/kafka/KafkaPersistWriter.java       |  22 +-
 .../streams/mongo/MongoPersistWriter.java       |  36 +-
 .../streams/mongo/MongoPersistWriterTask.java   |  38 --
 .../google-gmail/pom.xml                        | 138 +++++
 .../com/google/gmail/GMailConfigurator.java     |  27 +
 .../gmail/provider/GMailImapProviderTask.java   |  58 +++
 .../GMailMessageActivitySerializer.java         | 194 +++++++
 .../google/gmail/provider/GMailProvider.java    | 131 +++++
 .../gmail/provider/GMailRssProviderTask.java    |  36 ++
 .../com/google/gmail/GMailConfiguration.json    |  14 +
 .../google-gplus/pom.xml                        | 145 ++++++
 .../gplus/provider/GPlusActivitySerializer.java | 117 +++++
 .../gplus/provider/GPlusConfigurator.java       |  36 ++
 .../gplus/provider/GPlusEventProcessor.java     |  79 +++
 .../provider/GPlusHistoryProviderTask.java      |  88 ++++
 .../google/gplus/provider/GPlusProvider.java    | 166 ++++++
 .../com/google/gplus/GPlusConfiguration.json    |  58 +++
 .../src/main/resources/reference.conf           |  11 +
 .../gmail/test/GMailMessageSerDeTest.java       |  53 ++
 .../src/test/resources/datasift_jsons.txt       | 101 ++++
 streams-contrib/streams-provider-google/pom.xml |  44 ++
 .../streams-provider-moreover/pom.xml           |   5 +
 .../streams/data/moreover/MoreoverClient.java   |  21 +-
 .../data/moreover/MoreoverConfigurator.java     |  14 +-
 .../streams/data/moreover/MoreoverProvider.java |  77 +--
 .../data/moreover/MoreoverProviderTask.java     |  29 +-
 .../streams/data/moreover/MoreoverResult.java   |  85 ++-
 .../data/moreover/MoreoverResultSetWrapper.java |  31 +-
 .../com/moreover/MoreoverConfiguration.json     |   1 +
 .../streams/rss/provider/RssStreamProvider.java |  42 +-
 .../streams/rss/test/Top100FeedsTest.java       |   4 +-
 .../streams-provider-rss.iml                    |  24 +-
 .../streams-provider-twitter (2).iml            |  75 ---
 .../streams-provider-twitter.iml                |  18 -
 .../apache/streams/sysomos/SysomosProvider.java |  20 +-
 .../processor/TwitterEventProcessor.java        | 195 +++++++
 .../processor/TwitterProfileProcessor.java      | 109 ++++
 .../twitter/processor/TwitterTypeConverter.java | 217 ++++++++
 .../twitter/provider/TwitterEventProcessor.java | 161 ------
 .../twitter/provider/TwitterStreamProvider.java |  87 ++--
 .../provider/TwitterTimelineProvider.java       | 235 ++++++---
 .../provider/TwitterTimelineProviderTask.java   |   2 +-
 .../TwitterJsonDeleteActivitySerializer.java    |   2 +
 .../TwitterJsonEventActivitySerializer.java     |   7 +-
 .../TwitterJsonRetweetActivitySerializer.java   |  13 +
 .../TwitterJsonTweetActivitySerializer.java     |  13 +-
 streams-core/pom.xml                            |  26 +-
 .../org/apache/streams/core/StreamsDatum.java   |  64 ++-
 .../org/apache/streams/core/StreamsFilter.java  |  40 ++
 .../apache/streams/core/StreamsOperation.java   |  23 +
 .../streams/core/StreamsPersistReader.java      |  14 +-
 .../streams/core/StreamsPersistWriter.java      |  12 +-
 .../apache/streams/core/StreamsProcessor.java   |  15 +-
 .../apache/streams/core/StreamsProvider.java    |   8 +-
 .../apache/streams/core/StreamsResultSet.java   |  32 +-
 .../core/builders/InvalidStreamException.java   |  23 +
 .../core/builders/LocalStreamBuilder.java       | 265 ++++++++++
 .../streams/core/builders/StreamBuilder.java    | 106 ++++
 .../streams/core/builders/StreamComponent.java  | 229 +++++++++
 .../streams/core/tasks/BaseStreamsTask.java     | 148 ++++++
 .../core/tasks/LocalStreamMonitorThread.java    |  69 +++
 .../streams/core/tasks/StreamsMergeTask.java    |  58 +++
 .../core/tasks/StreamsPersistWriterTask.java    | 103 ++++
 .../core/tasks/StreamsProcessorTask.java        | 102 ++++
 .../streams/core/tasks/StreamsProviderTask.java | 153 ++++++
 .../apache/streams/core/tasks/StreamsTask.java  |  58 +++
 .../core/builders/LocalStreamBuilderTest.java   | 161 ++++++
 .../core/builders/ToyLocalBuilderExample.java   |  28 +
 .../streams/core/tasks/BasicTasksTest.java      | 285 ++++++++++
 .../test/processors/DoNothingProcessor.java     |  32 ++
 .../PassthroughDatumCounterProcessor.java       |  49 ++
 .../test/providers/NumericMessageProvider.java  | 104 ++++
 .../core/test/writer/DatumCounterWriter.java    |  31 ++
 .../core/test/writer/DoNothingWriter.java       |  24 +
 .../core/test/writer/SystemOutWriter.java       |  24 +
 streams-pojo/pom.xml                            |   7 -
 .../org/apache/streams/pojo/json/activity.json  |   1 +
 .../org/apache/streams/pojo/json/object.json    |   1 +
 .../apache/streams/util/SerializationUtil.java  |  50 ++
 114 files changed, 6379 insertions(+), 1046 deletions(-)
----------------------------------------------------------------------



[04/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/test/ActivityExtendedSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/test/ActivityExtendedSerDeTest.java b/trunk/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/test/ActivityExtendedSerDeTest.java
deleted file mode 100644
index 5abd42d..0000000
--- a/trunk/streams-pojo-extensions/src/test/java/org/apache/streams/pojo/test/ActivityExtendedSerDeTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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.pojo.json.test;
-
-import com.google.common.base.Joiner;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.input.BoundedInputStream;
-import org.apache.streams.pojo.json.ActivityExtended;
-import org.apache.streams.pojo.json.Activity;
-import org.apache.streams.pojo.json.Extensions;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.Ignore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.InputStream;
-import java.util.Map;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 8/20/13
- * Time: 5:57 PM
- * To change this template use File | Settings | File Templates.
- */
-public class ActivityExtendedSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(ActivityExtendedSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @Test
-    public void TestActivity()
-    {
-        mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = ActivityExtendedSerDeTest.class.getResourceAsStream("/gnip_twitter_extended.json");
-        Joiner joiner = Joiner.on(" ").skipNulls();
-        is = new BoundedInputStream(is, 10000);
-        String json;
-        try {
-            json = joiner.join(IOUtils.readLines(is));
-            LOGGER.debug(json);
-
-            Activity ser = mapper.readValue(json, Activity.class);
-
-            String des = mapper.writeValueAsString(ser);
-            LOGGER.debug(des);
-
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-
-    @Ignore
-    @Test
-    public void TestActivityExtended()
-    {
-        mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = ActivityExtendedSerDeTest.class.getResourceAsStream("/gnip_twitter_extended.json");
-        Joiner joiner = Joiner.on(" ").skipNulls();
-        is = new BoundedInputStream(is, 10000);
-        String json;
-        try {
-            json = joiner.join(IOUtils.readLines(is));
-            LOGGER.debug(json);
-
-            ActivityExtended ser = mapper.readValue(json, ActivityExtended.class);
-
-            Extensions extensions = ser.getExtensions();
-
-            String des = mapper.writeValueAsString(extensions);
-
-            Assert.assertTrue(extensions.getAdditionalProperties().size() > 0);
-            LOGGER.debug(des);
-
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo-extensions/src/test/resources/gnip_twitter_extended.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo-extensions/src/test/resources/gnip_twitter_extended.json b/trunk/streams-pojo-extensions/src/test/resources/gnip_twitter_extended.json
deleted file mode 100644
index ee764cb..0000000
--- a/trunk/streams-pojo-extensions/src/test/resources/gnip_twitter_extended.json
+++ /dev/null
@@ -1,146 +0,0 @@
-{
-    "gnip": {
-        "matching_rules": [
-            {
-                "tag": "cascade_CA_CA_en"
-            }
-        ],
-        "klout_score": 10,
-        "urls": [
-            {
-                "expanded_url": "https://itunes.apple.com/us/app/smurfs-village/id399648212?mt=8",
-                "url": "http://t.co/Ytn45Pbttk"
-            }
-        ],
-        "klout_profile": {
-            "topics": [],
-            "klout_user_id": "257268143479895040",
-            "link": "http://klout.com/user/id/257268143479895040"
-        },
-        "language": {
-            "value": "fr"
-        }
-    },
-    "body": "Le Grand Schtroumpf confirme que la cascade magique n'est \"Plus tr?�s loin.\" http://t.co/Ytn45Pbttk #SmurfsVillage @BeelineGames",
-    "favoritesCount": 0,
-    "link": "http://twitter.com/spoffff/statuses/372802927385403392",
-    "retweetCount": 0,
-    "twitter_lang": "fr",
-    "postedTime": "2013-08-28T19:28:38.000Z",
-    "provider": {
-        "id": "{link}",
-        "upstreamDuplicates": [],
-        "link": "http://www.twitter.com",
-        "attachments": [],
-        "displayName": "Twitter",
-        "objectType": "service",
-        "downstreamDuplicates": []
-    },
-    "links": [],
-    "actor": {
-        "twitterTimeZone": "Brussels",
-        "friendsCount": 6,
-        "favoritesCount": 0,
-        "link": "http://www.twitter.com/spoffff",
-        "image": {
-            "url": "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png"
-        },
-        "postedTime": "2012-05-18T15:14:35.000Z",
-        "links": [
-            {
-                "rel": "me",
-                "href": null
-            }
-        ],
-        "listedCount": 0,
-        "downstreamDuplicates": [],
-        "id": "id:twitter.com:583891967",
-        "upstreamDuplicates": [],
-        "languages": [
-            "fr"
-        ],
-        "verified": false,
-        "utcOffset": "7200",
-        "followersCount": 0,
-        "attachments": [],
-        "displayName": "Sabine Chappuis",
-        "preferredUsername": "spoffff",
-        "statusesCount": 87,
-        "objectType": "person"
-    },
-    "object": {
-        "id": "object:search.twitter.com,2005:372802927385403392",
-        "summary": "Le Grand Schtroumpf confirme que la cascade magique n'est \"Plus tr?�s loin.\" http://t.co/Ytn45Pbttk #SmurfsVillage @BeelineGames",
-        "upstreamDuplicates": [],
-        "link": "http://twitter.com/spoffff/statuses/372802927385403392",
-        "postedTime": "2013-08-28T19:28:38.000Z",
-        "attachments": [],
-        "objectType": "note",
-        "downstreamDuplicates": []
-    },
-    "twitter_entities": {
-        "symbols": [],
-        "urls": [
-            {
-                "expanded_url": "http://bit.ly/hUmoRz",
-                "indices": [
-                    77,
-                    99
-                ],
-                "display_url": "bit.ly/hUmoRz",
-                "url": "http://t.co/Ytn45Pbttk"
-            }
-        ],
-        "hashtags": [
-            {
-                "text": "SmurfsVillage",
-                "indices": [
-                    100,
-                    114
-                ]
-            }
-        ],
-        "user_mentions": [
-            {
-                "id": 188075479,
-                "name": "Beeline Interactive",
-                "indices": [
-                    115,
-                    128
-                ],
-                "screen_name": "BeelineGames",
-                "id_str": "188075479"
-            }
-        ]
-    },
-    "extensions": {
-        "w2o": {
-            "tags": [
-                "brand-cascade",
-                "language-en",
-                "country-ca"
-            ],
-            "provider": "twitter",
-            "analyzer": "romance_analyzer",
-            "lang": {
-                "primaryLanguage": "en"
-            }
-        }
-    },
-    "twitter_filter_level": "medium",
-    "guid": "A8fccSz7rpKfDJY078VLyw==_201308",
-    "content": "Le Grand Schtroumpf confirme que la cascade magique n'est \"Plus tr?�s loin.\" http://t.co/Ytn45Pbttk #SmurfsVillage @BeelineGames",
-    "id": "tag:search.twitter.com,2005:372802927385403392",
-    "verb": "post",
-    "generator": {
-        "id": "{link}",
-        "upstreamDuplicates": [],
-        "link": "https://itunes.apple.com/us/app/smurfs-village/id399648212?mt=8&uo=4",
-        "attachments": [],
-        "displayName": "Smurfs' Village on iOS",
-        "downstreamDuplicates": []
-    },
-    "published": "2013-08-28T19:28:38Z",
-    "objectType": "activity"
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/pom.xml b/trunk/streams-pojo/pom.xml
deleted file mode 100644
index dc75aba..0000000
--- a/trunk/streams-pojo/pom.xml
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.streams</groupId>
-        <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
-    </parent>
-
-    <artifactId>streams-pojo</artifactId>
-
-    <name>streams-pojo</name>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-            <type>jar</type>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-xml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>jackson-xml-databind</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>joda-time</groupId>
-            <artifactId>joda-time</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>nz.net.ultraq.jaxb</groupId>
-            <artifactId>jaxb-utilities</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <version>1.0.9</version>
-        </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</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>
-                <version>0.4.0</version>
-                <configuration>
-                    <addCompileSourceRoot>true</addCompileSourceRoot>
-                    <generateBuilders>true</generateBuilders>
-                    <sourcePaths>
-                        <sourcePath>src/main/jsonschema/org/apache/streams/pojo/json/activity.json</sourcePath>
-                        <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>
-                    <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>
-                <version>0.8.3</version>
-                <configuration>
-                    <schemaDirectory>src/main/xmlschema/org/apache/streams/pojo/xml</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>org.apache.streams.pojo.xml</generatePackage>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java b/trunk/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java
deleted file mode 100644
index ae01fed..0000000
--- a/trunk/streams-pojo/src/main/java/org/apache/streams/data/ActivitySerializer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * 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.data;
-
-import org.apache.streams.pojo.json.Activity;
-
-import java.util.List;
-
-/**
- * Serializes and deserializes Activities
- */
-public interface ActivitySerializer<T> {
-
-    /**
-     * Gets the supported content type that can be deserialized/serialized
-     *
-     * @return A string representing the format name.  Can be an IETF MIME type or other
-     */
-    String serializationFormat();
-
-    /**
-     * Converts the activity to a POJO representation.
-     *
-     * @param deserialized the string
-     * @return a fully populated Activity object
-     */
-    T serialize(Activity deserialized);
-
-    /**
-     * Converts a POJO into an Activity
-     * @param serialized the string representation
-     * @return a fully populated Activity object
-     */
-    Activity deserialize(T serialized);
-
-    /**
-     * Converts multiple documents into a list of Activity objects
-     * @param serializedList a typed List of documents
-     * @return a list of fully populated activities
-     */
-    List<Activity> deserializeAll(List<T> serializedList);
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/ActivityUtil.java
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/ActivityUtil.java b/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/ActivityUtil.java
deleted file mode 100644
index f1fcf44..0000000
--- a/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/ActivityUtil.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.data.util;
-
-import org.apache.streams.pojo.json.Activity;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Utility class for managing activities
- */
-public class ActivityUtil {
-    private ActivityUtil() {}
-
-    /**
-     * Property on the activity object to use for extensions
-     */
-    public static final String EXTENSION_PROPERTY = "extensions";
-    /**
-     * The number of +1, Like, favorites, etc that the post has received
-     */
-    public static final String LIKES_EXTENSION = "likes";
-    /**
-     * The number of retweets, shares, etc that the post has received
-     */
-    public static final String REBROADCAST_EXTENSION = "rebroadcasts";
-    /**
-     * The language of the post
-     */
-    public static final String LANGUAGE_EXTENSION = "language";
-    /**
-     * Location that the post was made or the actor's residence
-     */
-    public static final String LOCATION_EXTENSION = "location";
-    /**
-     * Country that the post was made
-     */
-    public static final String LOCATION_EXTENSION_COUNTRY = "country";
-    /**
-     * Specific JSON-geo coordinates (long,lat)
-     */
-    public static final String LOCATION_EXTENSION_COORDINATES = "coordinates";
-
-    /**
-     * Creates a standard extension property
-     * @param activity activity to create the property in
-     * @return the Map representing the extensions property
-     */
-    @SuppressWarnings("unchecked")
-    public static Map<String, Object> ensureExtensions(Activity activity) {
-        Map<String, Object> properties = (Map)activity.getAdditionalProperties().get(EXTENSION_PROPERTY);
-        if(properties == null) {
-            properties = new HashMap<String, Object>();
-            activity.setAdditionalProperty(EXTENSION_PROPERTY, properties);
-        }
-        return properties;
-    }
-
-    /**
-     * Gets a formatted ID
-     * @param providerName name of the provider
-     * @param personId ID of the person within the system
-     * @return id:<providerName>:people:<personId>
-     */
-    public static String getPersonId(String providerName, String personId) {
-        return String.format("id:%s:people:%s", providerName, personId);
-    }
-
-    /**
-     * Gets a formatted provider ID
-     * @param providerName name of the provider
-     * @return id:providers:<providerName>
-     */
-    public static String getProviderId(String providerName) {
-        return String.format("id:providers:%s", providerName);
-    }
-
-    /**
-     * Gets a formatted object ID
-     * @param provider name of the provider
-     * @param objectType type of the object
-     * @param objectId the ID of the object
-     * @return id:<provider>:<objectType>s:<objectId>
-     */
-    public static String getObjectId(String provider, String objectType, String objectId) {
-        return String.format("id:%s:%ss:%s", provider, objectType, objectId);
-    }
-
-    /**
-     * Gets a formatted activity ID
-     * @param providerName name of the provider
-     * @param activityId ID of the provider
-     * @return id:<providerName>:activities:<activityId>
-     */
-    public static String getActivityId(String providerName, String activityId) {
-        return String.format("id:%s:activities:%s", providerName, activityId);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/JsonUtil.java
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/JsonUtil.java b/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/JsonUtil.java
deleted file mode 100644
index d49ef2a..0000000
--- a/trunk/streams-pojo/src/main/java/org/apache/streams/data/util/JsonUtil.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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.data.util;
-
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import java.io.*;
-import java.util.List;
-
-/**
- * JSON utilities
- */
-public class JsonUtil {
-
-    private JsonUtil() {}
-
-    public static JsonNode jsonToJsonNode(String json) {
-        ObjectMapper mapper = new ObjectMapper();
-        JsonFactory factory = mapper.getFactory();
-
-        JsonNode node;
-        try {
-            JsonParser jp = factory.createJsonParser(json);
-            node = mapper.readTree(jp);
-        } catch (IOException e) {
-            throw new RuntimeException("IO exception while reading JSON", e);
-        }
-        return node;
-    }
-
-    public static String jsonNodeToJson(JsonNode node) {
-        ObjectMapper mapper = new ObjectMapper();
-        try {
-            return mapper.writeValueAsString(node);
-        } catch (JsonProcessingException e) {
-            throw new RuntimeException("IO exception while writing JSON", e);
-        }
-    }
-
-    public static <T> T jsonToObject(String json, Class<T> clazz) {
-        ObjectMapper mapper = new ObjectMapper();
-        try {
-            return mapper.readValue(json, clazz);
-        } catch (IOException e) {
-            throw new RuntimeException("Could not map to object");
-        }
-    }
-
-    public static <T> T jsonNodeToObject(JsonNode node, Class<T> clazz) {
-        ObjectMapper mapper = new ObjectMapper();
-        return mapper.convertValue(node, clazz);
-    }
-
-    public static <T> JsonNode objectToJsonNode(T obj) {
-        ObjectMapper mapper = new ObjectMapper();
-        return mapper.valueToTree(obj);
-    }
-
-    public static <T> List<T> jsoNodeToList(JsonNode node, Class<T> clazz) {
-        ObjectMapper mapper = new ObjectMapper();
-        return mapper.convertValue(node, new TypeReference<List<T>>() {});
-    }
-
-    public static <T> String objectToJson(T object) {
-        ObjectMapper mapper = new ObjectMapper();
-        try {
-            return mapper.writeValueAsString(object);
-        } catch (IOException e) {
-            throw new RuntimeException("Could not map to object");
-        }
-    }
-
-    public static <T> T getObjFromFile(String filePath, Class<T> clazz) {
-        return jsonNodeToObject(getFromFile(filePath), clazz);
-    }
-
-    public static JsonNode getFromFile(String filePath) {
-        ObjectMapper mapper = new ObjectMapper();
-        JsonFactory factory = mapper.getFactory(); // since 2.1 use mapper.getFactory() instead
-
-        JsonNode node = null;
-        try {
-            InputStream stream = getStreamForLocation(filePath);
-            JsonParser jp = factory.createParser(stream);
-            node = mapper.readTree(jp);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-        return node;
-    }
-
-    private static InputStream getStreamForLocation(String filePath) throws FileNotFoundException {
-        InputStream stream = null;
-        if(filePath.startsWith("file:///")) {
-            stream = new FileInputStream(filePath.replace("file:///", ""));
-        } else if(filePath.startsWith("file:") || filePath.startsWith("/")) {
-            stream = new FileInputStream(filePath.replace("file:", ""));
-        } else {
-            //Assume classpath
-            stream = JsonUtil.class.getClassLoader().getResourceAsStream(filePath.replace("classpath:", ""));
-        }
-
-        return stream;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
deleted file mode 100644
index d5e2d27..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/activity.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-  "type" : "object",
-  "title" : "activity",
-  "javaType": "org.apache.streams.pojo.json.Activity",
-  "description" : "An activity construct recounts what an actor did to an object in the past. If there is no actor it simply describes the change.",
-  "additionalProperties": true,
-  "properties": {
-    "id" :{
-      "type" : "string",
-      "description" : "Uniquely identifies each activity within the service",
-      "default" :"{url}"
-    },
-    "actor" : {
-      "type": "object",
-      "required": true,
-      "description": "Describes the entity that performed the activity. An activity MUST contain one actor property whose value is a single Object.",
-      "extends" : { "$ref" : "./object.json" }
-    },
-    "verb" : {
-      "title" : "verb",
-      "type" : "string",
-      "default": "post",
-      "required": true,
-      "description" :"Identifies the action that the activity describes. An activity MUST contain a verb property whose value is a JSON String that is non-empty and matches either the \"isegment-nz-nc\" or the \"IRI\" production in [RFC3987]. Note that the use of a relative reference other than a simple name is not allowed."
-    },
-    "object" : {
-      "type": "object",
-      "required" : true,
-      "description" : "Describes the primary object of the activity. For instance, in the activity, \"John saved a movie to his wishlist\", the object of the activity is \"movie\". An activity SHOULD contain an object property whose value is a single Object. If the object property is not contained, the primary object of the activity MAY be implied by context.",
-      "$ref" : "./object.json"
-    },
-    "target" : {
-      "type": "object",
-      "description" : "Describes the target of the activity. The precise meaning of the activity's target is dependent on the activities verb, but will often be the object the English preposition \"to\". For instance, in the activity, \"John saved a movie to his wishlist\", the target of the activity is \"wishlist\". The activity target MUST NOT be used to identity an indirect object that is not a target of the activity. An activity MAY contain a target property whose value is a single Object.",
-      "$ref" : "./object.json"
-    },
-    "published" : {
-      "type" : "string",
-      "description": "The date and time at which the activity occurred. It is important to note that this is not necessarily the same as the time at which the activity was published. An activity MUST contain a postedTime property.",
-      "format" : "date-time"
-    },
-	"updated" : {
-      "type" : "string",
-      "description": "The date and time at which a previously published activity has been modified. An Activity MAY contain an updatedTime property",
-      "format" : "date-time"
-    },
-    "generator" : {
-      "type": "object",
-      "description": "Describes the application that generated the activity. An activity MAY contain a generator property whose value is a single Object.",
-      "extends" : { "$ref" : "./object.json" }
-    },
-    "icon" : {
-      "type": "object",
-      "properties" :{"$ref":"./media_link.json#properties"},
-      "description": "An IRI[RFC3987] identifying an image resource provides a visual representation of the activity, intended for human consumption. The image SHOULD have an aspect ratio of one (horizontal) to one (vertical) and SHOULD be suitable for presentation at a small size. An activity MAY have an icon property"
-    },
-    "provider" : {
-      "type": "object",
-      "description" : "Describes the application that published the activity. Note that this is not necessarily the same entity that generated the activity. An activity MAY contain a provider property whose value is a single Object",
-      "extends" : { "$ref" : "./object.json" }
-    },
-    "title" : {
-      "type" : "string",
-      "description" : "Natural-language title or headline for the activity encoded as a single JSON String containing HTML markup. An activity MAY contain a title property",
-      "format": "html"
-    },
-    "content" : {
-      "type" : "string",
-      "description" : "Natural-language description of the activity encoded as a single JSON String containing HTML markup. Visual elements such as thumbnail images MAY be included. An activity MAY contain a content property",
-      "format" : "html"
-    },
-    "url" : {
-      "type" : "string",
-      "description" : "An IRI [RFC3987] identifying a resource providing an HTML representation of the activity. An activity MAY contain a url property",
-      "format" : "url"
-    },
-    "links" : {
-      "type" : "array",
-      "description" :"Links between this object and other resources as defined in Web Linking",
-      "note": "Tell JSON schema team to not put links inside http://json-schema.org/hyper-schema#properties",
-      "properties" : {"$ref" : "http://json-schema.org/links#properties"}
-    }
-  },
-  "links": [
-       {"rel": "describedby", "href": "./verbs/{verb}.json"}
-     ]
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/collection.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/collection.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/collection.json
deleted file mode 100644
index b9bdd76..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/collection.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-  "type" : "object",
-  "title" : "collection",
-  "javaType": "org.apache.streams.pojo.json.Collection",
-  "description" : "A collection is a generic list of Objects of any object type. The objectType of each item in the collection MAY be omitted if the type of object can be established through context. The collection is used primarily as the root of an Activity Streams document, but can be used as the value of extension properties in a variety of situations. ",
-  "properties" : {
-    "url" : {
-      "type" : "string",
-      "description": "An IRI [RFC3987] referencing a JSON document containing the full listing of objects in the collection."
-    },
-    "totalItems": {
-      "type" : "number",
-      "description" : "Non-negative integer specifying the total number of activities within the stream. The Stream serialization MAY contain a count property."
-    },
-    "items" : {
-      "type" : "array",
-      "required" : true,
-      "description" : "An array containing a listing of Objects of any object type. If used in combination with the url property, the items array can be used to provide a subset of the objects that may be found in the resource identified by the url.",
-      "items": {
-        "type" : "object",
-        "extends" :{"$ref":"./object.json"}
-      }
-    },
-    "links" : {
-      "type" : "array",
-      "optional" : true,
-      "description" :"Links between an this object and other resources as defined in Web Linking",
-      "extends" : {"$ref" : "http://json-schema.org/links#properties"}
-    }
-  },
-  "links": [
-       {"rel": "describedby", "href": "http://json-schema.org/schema"}
-     ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/media_link.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/media_link.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/media_link.json
deleted file mode 100644
index 2d8e31f..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/media_link.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "type" : "object",
-  "title" : "media_link",
-  "javaType": "org.apache.streams.pojo.json.MediaLink",
-  "description" : "Visual representation of an object in the form of an image, video or embedded HTML fragments",
-  "properties": {
-    "duration" : {
-      "title" : "duration",
-      "type" : "number",
-      "description" :"A hint to the consumer about the length, in seconds, of the media resource identified by the url property. A media link MAY contain a \"duration\" property when the target resource is a time-based media item such as an audio or video."
-    },
-	"height" : {
-      "title" : "height",
-      "type" : "number",
-      "description" :"A hint to the consumer about the height, in pixels, of the media resource identified by the url property. A media link MAY contain a height property when the target resource is a visual media item such as an image, video or embeddable HTML page."
-    },
-	"width" : {
-      "title" : "width",
-      "type" : "number",
-      "description" :"A hint to the consumer about the width, in pixels, of the media resource identified by the url property. A media link MAY contain a width property when the target resource is a visual media item such as an image, video or embeddable HTML page."
-    },
-    "url" : {
-      "type": "string",
-      "required" : true,
-      "description" : "The IRI of the media resource being linked. A media link MUST have a url property."
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
deleted file mode 100644
index 349ca71..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/object.json
+++ /dev/null
@@ -1,78 +0,0 @@
-{
-  "type" : "object",
-  "title" : "object",
-  "javaType": "org.apache.streams.pojo.json.ActivityObject",
-  "description" : "Basic object on the web. The only required property is the id",
-  "properties" : {
-    "id" : {
-      "type" : "string",
-      "description" : "Provides a permanent, universally unique identifier for the object in the form of an absolute IRI [RFC3987]. An object SHOULD contain a single id property. If an object does not contain an id property, consumers MAY use the value of the url property as a less-reliable, non-unique identifier.",
-      "default" : "{link}"
-    },
-    "image" : {
-      "format":"image",
-      "type":"object",
-      "extends" :{"$ref":"./media_link.json"},
-      "description" : "Description of a resource providing a visual representation of the object, intended for human consumption. An object MAY contain an image property whose value is a Media Link."
-    },
-    "displayName" : {
-      "type":"string",
-      "description" : "A natural-language, human-readable and plain-text name for the object. HTML markup MUST NOT be included. An object MAY contain a displayName property. If the object does not specify an objectType property, the object SHOULD specify a displayName"
-    },
-    "summary" : {
-      "type" : "string",
-      "description" : "Natural-language summary of the object encoded as a single JSON String containing HTML markup. Visual elements such as thumbnail images MAY be included. An activity MAY contain a summary property"
-    },
-    "content" : {
-      "type" : "string",
-      "description" : "Natural-language description of the object encoded as a single JSON String containing HTML markup. Visual elements such as thumbnail images MAY be included. An object MAY contain a content property"
-    },
-    "url" : {
-      "type" : "string",
-      "format" : "url",
-      "description" : "An IRI [RFC3987] identifying a resource providing an HTML representation of the object. An object MAY contain a url property"
-    },
-    "objectType" :{
-      "type" : "string",
-      "description" : "Identifies the type of object. An object MAY contain an objectType property whose value is a JSON String that is non-empty and matches either the \"isegment-nz-nc\" or the \"IRI\" production in [RFC3987]. Note that the use of a relative reference other than a simple name is not allowed. If no objectType property is contained, the object has no specific type."
-    },
-    "author" : {
-      "type" : "object",
-      "description" : "Describes the entity that created or authored the object. An object MAY contain a single author property whose value is an Object of any type. Note that the author field identifies the entity that created the object and does not necessarily identify the entity that published the object. For instance, it may be the case that an object created by one person is posted and published to a system by an entirely different entity",
-      "extends" : { "$ref": "./object.json" }
-    },
-    "published" : {
-      "type" : "string",
-      "description": "[RFC3339] date-time. The date and time at which the object was published. An object MAY contain a published property",
-      "format" : "date-time"
-    },
-    "updated" : {
-      "type" : "string",
-      "description": "[RFC3339] date-time. The date and time at which a previously published object has been modified. An Object MAY contain an updated property.",
-      "format" : "date-time"
-    },
-    "attachments":{
-      "title" : "Related objects",
-      "description" : "A collection of one or more additional, associated objects, similar to the concept of attached files in an email message. An object MAY have an attachedObjects property whose value is a JSON Array of Objects.",
-      "type" : "array",
-      "items": {
-        "type" : "object",
-        "$ref" : "./object.json"
-      }
-    },
-    "upstreamDuplicates":{
-      "type" : "array",
-      "description" : "A JSON Array of one or more absolute IRI's [RFC3987] identifying objects that duplicate this object's content. An object SHOULD contain an upstreamDuplicates property when a publisher is knowingly duplicating with a new ID the content from another object. This MAY be used as a hint for consumers to use when resolving duplicates between objects received from different sources",
-      "items": {"type" : "string"}
-    },
-    "downstreamDuplicates":{
-      "type" : "array",
-      "description" : "A JSON Array of one or more absolute IRI's [RFC3987] identifying objects that duplicate this object's content. An object SHOULD contain a downstreamDuplicates property when there are known objects, possibly in a different system, that duplicate the content in this object. This MAY be used as a hint for consumers to use when resolving duplicates between objects received from different sources.",
-      "items": {"type" : "string"}
-    }
-  },
-  "additionalProperties" : true,
-  "links": [
-       {"rel": "describedby", "href": "./objectType/{objectType}.json"}
-     ]
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/article.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/article.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/article.json
deleted file mode 100644
index f02394e..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/article.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "article",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "article"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/audio.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/audio.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/audio.json
deleted file mode 100644
index e2818df..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/audio.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "audio",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "audio"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/bookmark.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/bookmark.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/bookmark.json
deleted file mode 100644
index ee6f4b2..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/bookmark.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "bookmark",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "bookmark"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/comment.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/comment.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/comment.json
deleted file mode 100644
index 0a4857d..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/comment.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "comment",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "comment"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/event.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/event.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/event.json
deleted file mode 100644
index a116516..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/event.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "type" : "object",
-  "title" : "event",
-  "description" : "xCal fromat for vevent",
-  "extends": [{"$ref":"../object.json"},
-    {"$ref":"http://www.json-schema.org/calendar"}],
-  "properties" :{
-      "objectType" :{
-      "type" :"string",
-      "default" : "event"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/file.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/file.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/file.json
deleted file mode 100644
index b3514a3..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/file.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "file",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "file"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/folder.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/folder.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/folder.json
deleted file mode 100644
index a4db729..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/folder.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "folder",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "folder"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/group.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/group.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/group.json
deleted file mode 100644
index 58c7dd3..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/group.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "group",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "group"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/list.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/list.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/list.json
deleted file mode 100644
index ca48eab..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/list.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "type" : "object",
-  "title" : "list",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "list"
-    },
-    "items" : {
-      "type" : "array",
-      "items" : {
-        "type" : "object",
-        "properties" : {"$ref":"../object.json"}
-      }
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/note.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/note.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/note.json
deleted file mode 100644
index 127efd9..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/note.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "note",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "note"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/person.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/person.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/person.json
deleted file mode 100644
index 43eab84..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/person.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "type" : "object",
-  "title" : "person",
-  "description" : "vCard Format. Does not match PoCO",
-  "extends": [{"$ref":"../object.json"},
-    {"$ref":"http://www.json-schema.org/card"}],
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "person"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo-album.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo-album.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo-album.json
deleted file mode 100644
index 69db681..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo-album.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "article",
-  "extends": {"$ref":"../objectTypes/list.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "photo-album"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo.json
deleted file mode 100644
index 8fc608f..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/photo.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "type" : "object",
-  "title" : "photo",
-  "extends": {"$ref":"../objectTypes/file.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "photo"
-    },
-    "displayName" : {
-      "type" : "string",
-      "default" : "a photo"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/place.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/place.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/place.json
deleted file mode 100644
index d3dfb49..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/place.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "place",
-  "extends": [{"$ref":"../object.json"},{"$ref":"http://www.json-schema.org/address"}],
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "photo"
-     }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/playlist.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/playlist.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/playlist.json
deleted file mode 100644
index 073e961..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/playlist.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "playlist",
-  "extends": {"$ref":"../objectTypes/list.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "playlist"
-     }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/product.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/product.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/product.json
deleted file mode 100644
index b7a5c02..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/product.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "product",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "product"
-     }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/property.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/property.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/property.json
deleted file mode 100644
index d99725d..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/property.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  "type" : "object",
-  "title" : "property",
-  "description" : "A property describes name, path and value. Can be used with delete, update or post verbs",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "property"
-    },
-    "displayName" : {
-      "type" : "string",
-      "description" : "The human readable name of the property in the appropriate language",
-      "optional" : true
-    },
-    "path" : {
-      "type" : "string",
-      "description" : "dot delimited path to the property in the target. Ex: streetAddress"
-    }
-  },
-  "example" : {
-    "actor" : {"id":1212, "displayName" : "Peter"},
-    "verb" : "update",
-    "time" : "2010-08-02T15:29:00Z",
-    "object" :
-     {
-      "objectType" : "property",
-      "displayName" : "street address",
-      "path" : "streetAddress",
-      "content" : "234 Amazing St"
-    },
-    "target" : {
-      "id": 12121,
-      "time" : "2010-08-02T15:29:00Z",
-      "displayName" : "Peter's House"
-    }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/review.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/review.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/review.json
deleted file mode 100644
index 5705746..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/review.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "review",
-  "extends": {"$ref":"../objectTypes/article.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "review"
-     }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/service.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/service.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/service.json
deleted file mode 100644
index 92544f4..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/service.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "service",
-  "extends": {"$ref":"../object.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "service"
-     }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/song.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/song.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/song.json
deleted file mode 100644
index 9ebe7f2..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/song.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "song",
-  "extends": {"$ref":"../objectTypes/audio.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "song"
-     }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/status.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/status.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/status.json
deleted file mode 100644
index 3309510..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/status.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "status",
-  "extends": {"$ref":"../objectTypes/note.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "song"
-     }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/video.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/video.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/video.json
deleted file mode 100644
index 21f32a4..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/objectTypes/video.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "type" : "object",
-  "title" : "video",
-  "extends": {"$ref":"../objectTypes/file.json"},
-  "properties" :{
-    "objectType" :{
-      "type" :"string",
-      "default" : "video"
-     }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/favorite.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/favorite.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/favorite.json
deleted file mode 100644
index e2fad27..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/favorite.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Favorite",
-  "description" : "To mark an object as a favorite",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "favorite"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} marked {object.displayName} as a favorite"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/follow.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/follow.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/follow.json
deleted file mode 100644
index b82f5c8..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/follow.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Follow",
-  "description" : "To start following an object",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "follow"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} started following {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/join.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/join.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/join.json
deleted file mode 100644
index bf912fb..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/join.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Join",
-  "description" : "To join an object. Usually a group",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "join"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} joined {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/like.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/like.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/like.json
deleted file mode 100644
index 1da03bc..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/like.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Like",
-  "description" : "To like an object",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "like"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} likes {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/make-friend.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/make-friend.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/make-friend.json
deleted file mode 100644
index b9bb15d..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/make-friend.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Befriend",
-  "description" : "To friend an object. Usually a person",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "make-friend"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} is now friends with {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/play.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/play.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/play.json
deleted file mode 100644
index 242a8ac..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/play.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Play",
-  "description" : "To play an object",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "play"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} played {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/post.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/post.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/post.json
deleted file mode 100644
index e1d2b05..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/post.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Post",
-  "description" : "To publish an object",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "post"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} posted {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-maybe.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-maybe.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-maybe.json
deleted file mode 100644
index 5510e4b..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-maybe.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Rsvp Maybe",
-  "description" : "To indicate that the actor may attend an event",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "rsvp-maybe"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} may be attending {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-no.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-no.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-no.json
deleted file mode 100644
index 59a08cd..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-no.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Rsvp No",
-  "description" : "To indicate that the actor will not attend an event",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "rsvp-no"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} will not attend {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-yes.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-yes.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-yes.json
deleted file mode 100644
index 7eb5eee..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/rsvp-yes.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Rsvp Yes",
-  "description" : "To indicate that the actor will attend an event",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "rsvp-yes"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} is attending {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/save.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/save.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/save.json
deleted file mode 100644
index 65ceb70..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/save.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Save",
-  "description" : "To save an object",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "save"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} saved {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/share.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/share.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/share.json
deleted file mode 100644
index 8825008..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/share.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Share",
-  "description" : "To share an object.",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "share"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} shared {object.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/tag.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/tag.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/tag.json
deleted file mode 100644
index dfefbd2..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/tag.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Tag",
-  "description" : "To tag an object. Ex: A person being tagged in a photo",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "tag"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} tagged {object.displayName} in {target.displayName}"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/update.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/update.json b/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/update.json
deleted file mode 100644
index bf25485..0000000
--- a/trunk/streams-pojo/src/main/jsonschema/org/apache/streams/pojo/json/verbs/update.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "type" : "object",
-  "title" : "Update",
-  "description" : "To update a property on an object. Ex: Monica updated her street address to 234 Awesome St.",
-  "notes" : "The new property value can be a scalar value or an object. See the property object type",
-  "extends": {"$ref":"../activity.json"},
-  "properties" :{
-    "verb" :{
-      "type" : "string",
-      "default" : "update"
-    },
-    "title" : {
-      "type" : "string",
-      "default" : "{actor.displayName} updated {target.displayName}'s {object.displayName} to {object.value}"
-    },
-    "object" : {
-      "type" : "object",
-      "$ref" : "../object.json"
-    },
-    "target" : {
-      "type" : "object",
-      "optional" : true,
-      "$ref" : "../object.json"
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/main/xmlschema/org/apache/streams/pojo/xml/activity.xsd
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/main/xmlschema/org/apache/streams/pojo/xml/activity.xsd b/trunk/streams-pojo/src/main/xmlschema/org/apache/streams/pojo/xml/activity.xsd
deleted file mode 100644
index 1d81b44..0000000
--- a/trunk/streams-pojo/src/main/xmlschema/org/apache/streams/pojo/xml/activity.xsd
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-  ~ 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.
-  -->
-
-<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
-
-    <xs:element name="id" type="xs:string"/>
-    <xs:element name="actor" type="objectType"/>
-    <xs:element name="verb" type="verbType"/>
-    <xs:element name="object" type="objectType"/>
-    <xs:element name="target" type="objectType"/>
-    <xs:element name="object-type" type="xs:string"/>
-    <xs:element name="published" type="xs:dateTime"/>
-    <xs:element name="updated" type="xs:dateTime"/>
-    <xs:element name="provider" type="objectType"/>
-    <xs:element name="title" type="xs:string"/>
-    <xs:element name="content" type="xs:string"/>
-    <xs:element name="url" type="xs:string"/>
-
-    <xs:simpleType name="verbType">
-        <xs:restriction base="xs:string">
-            <xs:enumeration value="favorite"/>
-            <xs:enumeration value="follow"/>
-            <xs:enumeration value="join"/>
-            <xs:enumeration value="like"/>
-            <xs:enumeration value="make-friend"/>
-            <xs:enumeration value="play"/>
-            <xs:enumeration value="post"/>
-            <xs:enumeration value="rsvp-yes"/>
-            <xs:enumeration value="rsvp-no"/>
-            <xs:enumeration value="rsvp-maybe"/>
-            <xs:enumeration value="save"/>
-            <xs:enumeration value="share"/>
-            <xs:enumeration value="tag"/>
-            <xs:enumeration value="update"/>
-        </xs:restriction>
-    </xs:simpleType>
-
-    <xs:complexType name="objectType">
-        <xs:sequence>
-            <xs:element name="id" type="xs:string"/>
-            <xs:element name="image" type="mediaLink"/>
-            <xs:element name="displayName" type="xs:string"/>
-            <xs:element name="summary" type="xs:string"/>
-            <xs:element name="content" type="xs:string"/>
-            <xs:element name="url" type="xs:string"/>
-            <xs:element name="published" type="xs:string"/>
-            <xs:element name="updated" type="xs:string"/>
-            <xs:element name="object-type" >
-                <xs:simpleType>
-                    <xs:restriction base="xs:string">
-                        <xs:enumeration value="article"/>
-                        <xs:enumeration value="audio"/>
-                        <xs:enumeration value="badge"/>
-                        <xs:enumeration value="collection"/>
-                        <xs:enumeration value="comment"/>
-                        <xs:enumeration value="course"/>
-                        <xs:enumeration value="file"/>
-                        <xs:enumeration value="image"/>
-                        <xs:enumeration value="person"/>
-                        <xs:enumeration value="review"/>
-                        <xs:enumeration value="service"/>
-                    </xs:restriction>
-                </xs:simpleType>
-            </xs:element>
-        </xs:sequence>
-
-    </xs:complexType>
-
-    <xs:complexType name="mediaLink">
-        <xs:sequence>
-            <xs:element name="duration" type="xs:positiveInteger"/>
-            <xs:element name="height" type="xs:positiveInteger"/>
-            <xs:element name="width" type="xs:positiveInteger"/>
-            <xs:element name="url" type="xs:string"/>
-        </xs:sequence>
-    </xs:complexType>
-
-</xs:schema>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-pojo/src/test/java/org/apache/streams/data/data/util/JsonUtilTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo/src/test/java/org/apache/streams/data/data/util/JsonUtilTest.java b/trunk/streams-pojo/src/test/java/org/apache/streams/data/data/util/JsonUtilTest.java
deleted file mode 100644
index 190be54..0000000
--- a/trunk/streams-pojo/src/test/java/org/apache/streams/data/data/util/JsonUtilTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.data.data.util;
-
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class JsonUtilTest {
-
-    @Ignore @Test
-    public void testJsonToObject(){
-    }
-
-}


[31/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/pom.xml b/trunk/streams-contrib/streams-provider-facebook/pom.xml
deleted file mode 100644
index bda986b..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/pom.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?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-provider-facebook</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-core</artifactId>
-            <version>1.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</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</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/com/facebook/graph/Post.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>com.facebook</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>
-                <version>0.8.3</version>
-                <configuration>
-                    <schemaDirectory>../streams-provider-gnip/gnip-powertrack/src/main/xmlschema/</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>org.apache.streams.pojo.xml</generatePackage>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/api/FacebookPostActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/api/FacebookPostActivitySerializer.java b/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/api/FacebookPostActivitySerializer.java
deleted file mode 100644
index 73de52b..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/api/FacebookPostActivitySerializer.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * 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 com.facebook.api;
-
-
-import com.fasterxml.jackson.databind.JsonNode;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.*;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.List;
-
-import static org.apache.streams.data.util.ActivityUtil.*;
-import static org.apache.streams.data.util.JsonUtil.jsonToJsonNode;
-
-/**
- * Serializes activity posts
- */
-public class FacebookPostActivitySerializer implements ActivitySerializer<String> {
-
-    public static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ";
-    public static final String PROVIDER_NAME = "facebook";
-
-    @Override
-    public String serializationFormat() {
-        return "facebook_post_json_v1";
-    }
-
-    @Override
-    public String serialize(Activity deserialized) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Activity deserialize(String serialized) {
-        //Deserialize the JSON string into a Jackson JsonNode
-        JsonNode node = jsonToJsonNode(serialized);
-        Map.Entry<String, JsonNode> field = getObjectType(node);
-        Activity activity = new Activity();
-        setProvider(activity);
-        setObjectType(field, activity);
-        parseObject(activity, field.getValue());
-        fixObjectId(activity);
-        fixContentFromSummary(activity);
-        return activity;
-    }
-
-    @Override
-    public java.util.List<Activity> deserializeAll(List<String> serializedList) {
-        throw new NotImplementedException("Not currently supported by this deserializer");
-    }
-
-    private void fixContentFromSummary(Activity activity) {
-        //we MUST have a content field set, so choose the best option
-        if(activity.getContent() == null) {
-            activity.setContent(activity.getAdditionalProperties().containsKey("summary") ?
-                    (String) activity.getAdditionalProperties().get("summary") :
-                    activity.getObject().getSummary());
-        }
-    }
-
-    private void fixObjectId(Activity activity) {
-        //An artifact of schema generation, the default value is {link}
-        if(activity.getObject().getId().equals("{link}")) {
-            activity.getObject().setId(null);
-        }
-    }
-
-    private void setObjectType(Map.Entry<String, JsonNode> field, Activity activity) {
-        ActivityObject object = new ActivityObject();
-        activity.setObject(object);
-        object.setObjectType(field.getKey());
-    }
-
-    private void setProvider(Activity activity) {
-        Provider provider = new Provider();
-        provider.setId(getProviderId(PROVIDER_NAME));
-        provider.setDisplayName(PROVIDER_NAME);
-        activity.setProvider(provider);
-    }
-
-    private Map.Entry<String, JsonNode> getObjectType(JsonNode node) {
-        Iterator<Map.Entry<String, JsonNode>> fields = node.fields();
-        ensureMoreFields(fields);
-        Map.Entry<String, JsonNode> field = fields.next();
-        ensureNoMoreFields(fields);
-        return field;
-    }
-
-    private void parseObject(Activity activity, JsonNode jsonNode) {
-        for(Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields(); fields.hasNext();) {
-            Map.Entry<String, JsonNode> field = fields.next();
-            String key = field.getKey();
-            JsonNode value = field.getValue();
-            mapField(activity, key, value);
-        }
-    }
-
-    private void mapField(Activity activity, String name, JsonNode value) {
-        if("application".equals(name)) {
-            addGenerator(activity, value);
-        } else if ("caption".equals(name)) {
-            addSummary(activity, value);
-        } else if ("comments".equals(name)) {
-            addAttachments(activity, value);
-        } else if ("created_time".equals(name)) {
-            addDate(activity, value);
-        } else if ("description".equals(name)) {
-            addObjectSummary(activity, value);
-        } else if ("from".equals(name)) {
-            addActor(activity, value);
-        } else if ("icon".equals(name)) {
-            addIcon(activity, value);
-        } else if ("id".equals(name)) {
-            addId(activity, value);
-        } else if ("is_hidden".equals(name)) {
-            addObjectHiddenExtension(activity, value);
-        } else if ("like_count".equals(name)) {
-            addLikeExtension(activity, value);
-        } else if ("link".equals(name)) {
-            addObjectLink(activity, value);
-        } else if ("message".equals(name)) {
-            activity.setContent(value.asText());
-        } else if ("name".equals(name)) {
-            addObjectName(activity, value);
-        } else if ("object_id".equals(name)) {
-            addObjectId(activity, value);
-        } else if ("picture".equals(name)) {
-            addObjectImage(activity, value);
-        } else if ("place".equals(name)) {
-            addLocationExtension(activity, value);
-        } else if ("shares".equals(name)) {
-            addRebroadcastExtension(activity, value);
-        } else if ("source".equals(name)) {
-            addObjectLink(activity, value);
-        } else if ("story".equals(name)) {
-            addTitle(activity, value);
-        }  else if ("updated_time".equals(name)) {
-            addObjectUpdated(activity, value);
-        }
-    }
-
-    private void addObjectUpdated(Activity activity, JsonNode value) {
-        activity.getObject().setUpdated(parseDate(value));
-    }
-
-    private void addSummary(Activity activity, JsonNode value) {
-        activity.setAdditionalProperty("summary", value.asText());
-    }
-
-    private void addTitle(Activity activity, JsonNode value) {
-        activity.setTitle(value.asText());
-    }
-
-    private void addLikeExtension(Activity activity, JsonNode value) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        extensions.put(LIKES_EXTENSION, value.asInt());
-    }
-
-    private void addLocationExtension(Activity activity, JsonNode value) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        if(value.has("location")) {
-            Map<String, Object> location = new HashMap<String, Object>();
-            JsonNode fbLocation = value.get("location");
-            if(fbLocation.has("country")) {
-                location.put(LOCATION_EXTENSION_COUNTRY, fbLocation.get("country"));
-            }
-            if(fbLocation.has("latitude") && fbLocation.has("longitude")) {
-                location.put(LOCATION_EXTENSION_COORDINATES, String.format("%s,%s", fbLocation.get("longitude"), fbLocation.get("latitude")));
-            }
-            extensions.put(LOCATION_EXTENSION, location);
-        }
-    }
-
-    private void addObjectImage(Activity activity, JsonNode value) {
-        Image image = new Image();
-        image.setUrl(value.asText());
-        activity.getObject().setImage(image);
-    }
-
-    private void addObjectId(Activity activity, JsonNode value) {
-        activity.getObject().setId(getObjectId("facebook", activity.getObject().getObjectType(), value.asText()));
-    }
-
-    private void addObjectName(Activity activity, JsonNode value) {
-        activity.getObject().setDisplayName(value.asText());
-    }
-
-    private void addId(Activity activity, JsonNode value) {
-        activity.setId(getActivityId(PROVIDER_NAME, value.asText()));
-    }
-
-    private void addObjectLink(Activity activity, JsonNode value) {
-        activity.getObject().setUrl(value.asText());
-    }
-
-    private void addRebroadcastExtension(Activity activity, JsonNode value) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        if(value.has("count")) {
-            extensions.put(REBROADCAST_EXTENSION, value.get("count").asInt());
-        }
-    }
-
-    private void addObjectHiddenExtension(Activity activity, JsonNode value) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        extensions.put("hidden", value.asBoolean());
-    }
-
-    private void addIcon(Activity activity, JsonNode value) {
-        Icon icon = new Icon();
-        //Apparently the Icon didn't map from the schema very well
-        icon.setAdditionalProperty("url", value.asText());
-        activity.setIcon(icon);
-    }
-
-    private void addActor(Activity activity, JsonNode value) {
-        Actor actor = new Actor();
-        if(value.has("name")) {
-            actor.setDisplayName(value.get("name").asText());
-        }
-        if(value.has("id")) {
-            actor.setId(getPersonId(PROVIDER_NAME, value.get("id").asText()));
-        }
-        activity.setActor(actor);
-    }
-
-    private void addObjectSummary(Activity activity, JsonNode value) {
-        activity.getObject().setSummary(value.asText());
-    }
-
-    private void addDate(Activity activity, JsonNode value) {
-        activity.setPublished(parseDate(value));
-    }
-
-    private void addGenerator(Activity activity, JsonNode value) {
-        Generator generator = new Generator();
-        if(value.has("id")) {
-            generator.setId(getObjectId(PROVIDER_NAME, "generator", value.get("id").asText()));
-        }
-        if(value.has("name")) {
-            generator.setDisplayName(value.get("name").asText());
-        }
-        if(value.has("namespace")) {
-            generator.setSummary(value.get("namespace").asText());
-        }
-        activity.setGenerator(generator);
-    }
-
-    private void addAttachments(Activity activity, JsonNode value) {
-        //No direct mapping at this time
-    }
-
-    private static void ensureMoreFields(Iterator<Map.Entry<String, JsonNode>> fields) {
-        if(!fields.hasNext()) {
-            throw new IllegalStateException("Facebook activity must have one and only one root element");
-        }
-    }
-    private static void ensureNoMoreFields(Iterator<Map.Entry<String, JsonNode>> fields) {
-        if(fields.hasNext()) {
-            throw new IllegalStateException("Facebook activity must have one and only one root element");
-        }
-    }
-
-    private static Date parseDate(JsonNode value) {
-        DateFormat fmt = new SimpleDateFormat(DATE_FORMAT);
-        try {
-            return
-                    fmt.parse(value.asText());
-        } catch (ParseException e) {
-            throw new RuntimeException("Unable to parse date " + value.asText());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/feed/FacebookPublicFeedXmlActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/feed/FacebookPublicFeedXmlActivitySerializer.java b/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/feed/FacebookPublicFeedXmlActivitySerializer.java
deleted file mode 100644
index 1197e21..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/main/java/com/facebook/feed/FacebookPublicFeedXmlActivitySerializer.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.facebook.feed;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 10/2/13
- * Time: 6:32 PM
- * To change this template use File | Settings | File Templates.
- */
-public class FacebookPublicFeedXmlActivitySerializer {
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/main/jsonschema/com/facebook/graph/Post.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/main/jsonschema/com/facebook/graph/Post.json b/trunk/streams-contrib/streams-provider-facebook/src/main/jsonschema/com/facebook/graph/Post.json
deleted file mode 100644
index c334f05..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/main/jsonschema/com/facebook/graph/Post.json
+++ /dev/null
@@ -1,192 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType": "com.facebook.Post",
-    "properties": {
-        "id": {
-            "type": "string"
-        },
-        "from": {
-            "type": "object",
-            "properties": {
-                "id": {
-                    "type": "string"
-                },
-                "name": {
-                    "type": "string"
-                }
-            }
-        },
-        "to": {
-            "type": "object",
-            "properties": {
-                "data": {
-                    "type": "array",
-                    "items": {
-                        "type": "object",
-                        "properties": {
-                            "id": {
-                                "type": "string"
-                            },
-                            "name": {
-                                "type": "string"
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "message": {
-            "type": "string"
-        },
-        "message_tags": {
-            "type": "object",
-            "properties": {
-                "data": {
-                    "type": "array",
-                    "items": {
-                        "type": "object",
-                        "properties": {
-                            "id": {
-                                "type": "string"
-                            },
-                            "name": {
-                                "type": "string"
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "picture": {
-            "type": "string"
-        },
-        "link": {
-            "type": "string"
-        },
-        "name": {
-            "type": "string"
-        },
-        "caption": {
-            "type": "boolean"
-        },
-        "description": {
-            "type": "string"
-        },
-        "source": {
-            "type": "string"
-        },
-        "icon": {
-            "type": "string"
-        },
-        "actions": {
-            "type": "array",
-            "items": {
-                "type": "object",
-                "properties": {
-                    "name": {
-                        "type": "string"
-                    },
-                    "link": {
-                        "type": "string"
-                    }
-                }
-            }
-        },
-        "comments": {
-            "type": "array",
-            "items": {
-                "type": "object",
-                "properties": {
-                    "id": {
-                        "type": "string"
-                    },
-                    "from": {
-                        "type": "string"
-                    },
-                    "message": {
-                        "type": "string"
-                    },
-                    "created_time": {
-                        "type": "string"
-                    }
-                }
-            }
-        },
-        "likes": {
-            "type": "array",
-            "items": {
-                "type": "object",
-                "properties": {
-                    "name": {
-                        "type": "string"
-                    },
-                    "link": {
-                        "type": "string"
-                    }
-                }
-            }
-        },
-        "type": {
-            "type": "string"
-        },
-        "place": {
-            "type": "object",
-            "properties": {
-                "name": {
-                    "type": "string"
-                },
-                "id": {
-                    "type": "string"
-                }
-            }
-        },
-        "story": {
-            "type": "string"
-        },
-        "shares": {
-            "type": "int"
-        },
-        "object_id": {
-            "type": "int"
-        },
-        "application": {
-            "type": "object",
-            "properties": {
-                "name": {
-                    "type": "string"
-                },
-                "id": {
-                    "type": "string"
-                }
-            }
-        },
-        "created_time": {
-            "type": "string"
-        },
-        "updated_time": {
-            "type": "string"
-        },
-        "include_hidden": {
-            "type": "boolean"
-        },
-        "status_type": {
-            "type": "string"
-        },
-        "properties": {
-            "type": "array",
-            "items": {
-                "type": "object",
-                "properties": {
-                    "name": {
-                        "type": "string"
-                    },
-                    "text": {
-                        "type": "string"
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostActivitySerializerTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostActivitySerializerTest.java b/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostActivitySerializerTest.java
deleted file mode 100644
index 82f74fa..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostActivitySerializerTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * 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.facebook.test;
-
-import com.facebook.api.FacebookPostActivitySerializer;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.data.util.JsonUtil;
-import org.apache.streams.pojo.json.Activity;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.*;
-import java.util.regex.Pattern;
-
-import static java.util.regex.Pattern.matches;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-public class FacebookPostActivitySerializerTest {
-    Node fields;
-    JsonNode json;
-    ActivitySerializer serializer = new FacebookPostActivitySerializer();
-    ObjectMapper mapper;
-
-    @Before
-    public void setup() throws IOException {
-        json = JsonUtil.getFromFile("classpath:org/apache/streams/data/Facebook.json");
-        fields = discover(json);
-
-        mapper = new ObjectMapper();
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-    }
-
-    @Test
-    public void loadData() throws Exception {
-        for (JsonNode item : json) {
-            Activity activity = serializer.deserialize(getString(item));
-            assertThat(activity, is(not(nullValue())));
-            assertThat(activity.getActor(), is(not(nullValue())));
-            assertThat(matches("id:facebook:people:[a-zA-Z0-9]*", activity.getActor().getId()), is(true));
-            assertThat(activity.getActor().getDisplayName(), is(not(nullValue())));
-            assertThat(activity.getObject(), is(not(nullValue())));
-            if(activity.getObject().getId() != null) {
-                assertThat(matches("id:facebook:[a-z]*s:[a-zA-Z0-9]*", activity.getObject().getId()), is(true));
-            }
-            assertThat(activity.getObject().getObjectType(), is(not(nullValue())));
-            assertThat(activity.getContent(), is(not(nullValue())));
-            assertThat(activity.getProvider().getId(), is(equalTo("id:providers:facebook")));
-            System.out.println(activity.getPublished());
-        }
-    }
-
-
-
-
-    public Node discover(JsonNode node) {
-        Node root = new Node(null, "root");
-        if (node == null || !node.isArray()) {
-            throw new RuntimeException("No data");
-        } else {
-            for (JsonNode item : node) {
-                mapNode(root, item);
-            }
-        }
-        //printTree(root, "");
-        //printUniqueFields(root);
-        return root;
-    }
-
-
-    private String getString(JsonNode jsonNode)  {
-        try {
-            return new ObjectMapper().writeValueAsString(jsonNode);
-        } catch (JsonProcessingException e) {
-            throw new RuntimeException(e);
-        }
-    }
-    private void printUniqueFields(Node root) {
-        Map<String, Set<String>> fieldsByType = new HashMap<String, Set<String>>();
-        fieldsByType.put("objectType", new HashSet<String>());
-        for(Node child : root.getChildren().values()) {
-           for(Node grandChild : child.getChildren().values()) {
-               fieldsByType.get("objectType").add(grandChild.getName());
-               addUniqueValues(grandChild, fieldsByType);
-           }
-        }
-        for(Map.Entry<String, Set<String>> entry : fieldsByType.entrySet()) {
-            System.out.println(entry.getKey());
-            List<String> value = new ArrayList<String>(entry.getValue());
-            Collections.sort(value);
-            for(String val : value) {
-                System.out.println("      " + val);
-            }
-            System.out.println();
-            System.out.println();
-        }
-    }
-
-    private void addUniqueValues(Node child, Map<String, Set<String>> fieldsByType) {
-        if(!fieldsByType.containsKey(child.getName()) && !isNumber(child.getName())) {
-            fieldsByType.put(child.getName(), new HashSet<String>());
-        }
-        for(Map.Entry<String, Node> gc : child.getChildren().entrySet()) {
-            if(!isNumber(gc.getKey()))
-                fieldsByType.get(child.getName()).add(gc.getKey());
-            addUniqueValues(gc.getValue(), fieldsByType);
-        }
-    }
-
-    private boolean isNumber(String key) {
-        Pattern p = Pattern.compile("[0-9]*");
-        return p.matcher(key.trim()).matches();
-    }
-
-    private void printTree(Node node, String spacer) {
-        System.out.println(String.format("%s %s (%s)", spacer, node.getName(), node.getType()));
-        List<Node> children = new ArrayList<Node>(node.getChildren().values());
-        Collections.sort(children);
-        for(Node child : children) {
-            printTree(child, spacer + "      ");
-        }
-    }
-
-    private void mapNode(Node parent, JsonNode jsonNode) {
-        for (Iterator<Map.Entry<String, JsonNode>> iter = jsonNode.fields(); iter.hasNext(); ) {
-            Map.Entry<String, JsonNode> property = iter.next();
-            Node current;
-            String key = property.getKey();
-            JsonNode value = property.getValue();
-            if (!parent.getChildren().containsKey(key)) {
-                current = new Node(null, key);
-                current.setType(value.getNodeType().toString());
-                parent.getChildren().put(key, current);
-            } else {
-                current = parent.getChildren().get(key);
-            }
-            if(!value.isArray() && value.isObject()){
-                mapNode(current, value);
-            }
-        }
-    }
-
-    private static class Node implements Comparable<Node>{
-        Node parent;
-        String name;
-        String type;
-        Map<String, Node> children = new HashMap<String, Node>();
-
-        private Node(Node parent, String name) {
-            this.parent = parent;
-            this.name = name;
-        }
-
-        private Node getParent() {
-            return parent;
-        }
-
-        private void setParent(Node parent) {
-            this.parent = parent;
-        }
-
-        private String getName() {
-            return name;
-        }
-
-        private void setName(String name) {
-            this.name = name;
-        }
-
-        private Map<String, Node> getChildren() {
-            return children;
-        }
-
-        private void setChildren(Map<String, Node> children) {
-            this.children = children;
-        }
-
-        private String getType() {
-            return type;
-        }
-
-        private void setType(String type) {
-            this.type = type;
-        }
-
-        @Override
-        public int compareTo(Node node) {
-            return this.name.compareTo(node.name);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostSerDeTest.java b/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostSerDeTest.java
deleted file mode 100644
index 58ae150..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/test/java/org/apache/streams/facebook/test/FacebookPostSerDeTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.streams.facebook.test;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Joiner;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.input.BoundedInputStream;
-import com.facebook.Post;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.Ignore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.InputStream;
-
-/**
-* Created with IntelliJ IDEA.
-* User: sblackmon
-* Date: 8/20/13
-* Time: 5:57 PM
-* To change this template use File | Settings | File Templates.
-*/
-public class FacebookPostSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(FacebookPostSerDeTest.class);
-    //private ActivitySerializer serializer = new TwitterJsonActivitySerializer();
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @Ignore
-    @Test
-    public void Tests()
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = FacebookPostSerDeTest.class.getResourceAsStream("/testpost.json");
-        Joiner joiner = Joiner.on(" ").skipNulls();
-        is = new BoundedInputStream(is, 10000);
-        String json;
-
-        try {
-            json = joiner.join(IOUtils.readLines(is));
-            LOGGER.debug(json);
-
-            Post ser = mapper.readValue(json, Post.class);
-
-            String de = mapper.writeValueAsString(ser);
-
-            LOGGER.debug(de);
-
-            Post serde = mapper.readValue(de, Post.class);
-
-            Assert.assertEquals(ser, serde);
-
-            LOGGER.debug(mapper.writeValueAsString(serde));
-
-        } catch( Exception e ) {
-            System.out.println(e);
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}


[36/71] [abbrv] git commit: fixing STREAMS-26 branch

Posted by sb...@apache.org.
fixing STREAMS-26 branch

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1571362 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/6ea69f29
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/6ea69f29
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/6ea69f29

Branch: refs/heads/master
Commit: 6ea69f298a1c0453e4e4059948fcae70ed3c039c
Parents: 2886fbb
Author: sblackmon <sb...@unknown>
Authored: Mon Feb 24 17:29:43 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Mon Feb 24 17:29:43 2014 +0000

----------------------------------------------------------------------
 provision/provision.iml                         |    11 +-
 streams-contrib/pom.xml                         |    18 +-
 .../streams/console/ConsolePersistWriter.java   |    22 +-
 .../ElasticsearchPersistReader.java             |    38 +-
 .../ElasticsearchPersistWriter.java             |    40 +-
 .../ElasticsearchPersistWriterTask.java         |    38 +
 .../streams-provider-rss.iml                    |    13 +-
 .../streams/core/StreamsPersistReader.java      |    12 +-
 trunk/.gitignore                                |    23 -
 trunk/DISCLAIMER                                |    10 -
 trunk/LICENSE                                   |   202 -
 trunk/NOTICE                                    |     5 -
 trunk/README.txt                                |    52 -
 trunk/pom.xml                                   |   305 -
 trunk/poms/compiled/pom.xml                     |    80 -
 trunk/poms/pom.xml                              |    94 -
 trunk/poms/wrappers/pom.xml                     |    75 -
 trunk/provision/pom.xml                         |    42 -
 trunk/provision/provision.iml                   |    14 -
 .../bundles/downloaded_bundles.properties       |    25 -
 .../org.apache.felix.gogo.command_0.12.0.jar    |   Bin 51746 -> 0 bytes
 .../org.apache.felix.gogo.runtime_0.10.0.jar    |   Bin 66965 -> 0 bytes
 .../org.apache.felix.gogo.shell_0.10.0.jar      |   Bin 49004 -> 0 bytes
 .../bundles/org.apache.felix.main_4.0.3.jar     |   Bin 493717 -> 0 bytes
 trunk/runner/deploy-pom.xml                     |    52 -
 trunk/runner/felix/config.ini                   |    34 -
 trunk/streams-cassandra/pom.xml                 |   142 -
 .../configuration/CassandraConfiguration.java   |    63 -
 .../model/CassandraActivityStreamsEntry.java    |    45 -
 .../CassandraActivityStreamsRepository.java     |   176 -
 .../repository/impl/CassandraKeyspace.java      |    43 -
 .../impl/CassandraSubscriptionRepository.java   |    69 -
 .../spring/streams-cassandra-context.xml        |    25 -
 .../CassandraActivityStreamsRepositoryTest.java |    99 -
 .../impl/CassandraActivitySubscriptionTest.java |    54 -
 trunk/streams-config-graph/pom.xml              |    71 -
 .../config/graph/PipelineGraphConfigurator.java |    88 -
 trunk/streams-config/pom.xml                    |   129 -
 .../streams/config/StreamsConfigurator.java     |    38 -
 .../main/jsonschema/StreamsConfiguration.json   |    12 -
 trunk/streams-contrib/pom.xml                   |    74 -
 .../streams-persist-console/pom.xml             |    30 -
 .../streams/console/ConsolePersistWriter.java   |    50 -
 .../streams-persist-elasticsearch/pom.xml       |    93 -
 .../elasticsearch/ElasticsearchClient.java      |    26 -
 .../ElasticsearchClientManager.java             |   171 -
 .../ElasticsearchConfigurator.java              |    30 -
 .../ElasticsearchPersistReader.java             |   329 -
 .../ElasticsearchPersistReaderTask.java         |    52 -
 .../ElasticsearchPersistWriter.java             |   530 -
 .../ElasticsearchConfiguration.json             |    24 -
 .../streams-persist-hdfs/pom.xml                |   102 -
 .../apache/streams/hdfs/HdfsConfigurator.java   |    32 -
 .../streams/hdfs/WebHdfsPersistWriter.java      |   330 -
 .../streams/hdfs/WebHdfsPersistWriterTask.java  |    38 -
 .../apache/streams/hdfs/HdfsConfiguration.json  |    29 -
 .../streams-persist-kafka/pom.xml               |   138 -
 .../apache/streams/kafka/KafkaConfigurator.java |    31 -
 .../streams/kafka/KafkaPersistReader.java       |   141 -
 .../streams/kafka/KafkaPersistReaderTask.java   |    44 -
 .../streams/kafka/KafkaPersistWriter.java       |   109 -
 .../streams/kafka/KafkaPersistWriterTask.java   |    38 -
 .../streams/kafka/StreamsPartitioner.java       |    23 -
 .../streams/kafka/KafkaConfiguration.json       |    25 -
 .../src/main/resources/reference.properties     |    43 -
 .../streams-persist-mongo/pom.xml               |    92 -
 .../apache/streams/mongo/MongoConfigurator.java |    31 -
 .../streams/mongo/MongoPersistWriter.java       |   163 -
 .../streams/mongo/MongoPersistWriterTask.java   |    38 -
 .../streams/mongo/MongoConfiguration.json       |    33 -
 .../src/main/resources/reference.properties     |    10 -
 .../streams-provider-datasift/pom.xml           |    95 -
 .../main/jsonschema/com/datasift/Datasift.json  |  1205 -
 .../com/datasift/DatasiftConfiguration.json     |    21 -
 .../com/datasift/test/DatasiftSerDeTest.java    |    64 -
 .../src/test/resources/datasift_jsons.txt       |   101 -
 .../streams-provider-facebook/pom.xml           |   126 -
 .../api/FacebookPostActivitySerializer.java     |   293 -
 ...FacebookPublicFeedXmlActivitySerializer.java |    11 -
 .../jsonschema/com/facebook/graph/Post.json     |   192 -
 .../FacebookPostActivitySerializerTest.java     |   214 -
 .../facebook/test/FacebookPostSerDeTest.java    |    65 -
 .../org/apache/streams/data/Facebook.json       |   251 -
 .../src/test/resources/testpost.json            |   162 -
 .../gnip-edc-facebook/pom.xml                   |   128 -
 .../test/FacebookEDCAsActivityTest.java         |   103 -
 .../facebook/test/FacebookEDCSerDeTest.java     |    59 -
 .../src/test/resources/FacebookEDC.xml          |    71 -
 .../gnip-edc-flickr/pom.xml                     |   119 -
 .../flickr/test/FlickrEDCAsActivityTest.java    |   104 -
 .../gnip/flickr/test/FlickrEDCSerDeTest.java    |    69 -
 .../src/test/resources/FlickrEDC.xml            |    64 -
 .../gnip-edc-googleplus/pom.xml                 |   133 -
 .../com/gplus/api/GPlusActivitySerializer.java  |    75 -
 .../com/gplus/api/GPlusEDCAsActivityTest.java   |    80 -
 .../src/test/resources/GPlusEDCFixed.json       |   100 -
 .../gnip-edc-instagram/pom.xml                  |    96 -
 .../jsonschema/com/instagram/Instagram.json     |   204 -
 .../com/instagram/test/InstagramSerDeTest.java  |    47 -
 .../src/test/resources/instagram_jsons.txt      |     6 -
 .../gnip-edc-reddit/pom.xml                     |   138 -
 .../reddit/api/RedditActivitySerializer.java    |    89 -
 .../reddit/api/RedditEDCAsActivityJSONTest.java |    82 -
 .../src/test/resources/RedditEDC.json           |   100 -
 .../src/test/resources/RedditEDC.xml            |  5762 ---
 .../src/test/resources/RedditEDCFixed.json      |   100 -
 .../src/test/resources/RedditEDCFlattened.xml   |   100 -
 .../src/test/resources/redditTest.xml           |     1 -
 .../gnip-edc-youtube/pom.xml                    |   119 -
 .../java/com/gnip/test/YouTubeEDCSerDeTest.java |    68 -
 .../com/gnip/test/YoutubeEDCAsActivityTest.java |    96 -
 .../src/test/resources/YoutubeEDC.xml           |     8 -
 .../gnip-powertrack/pom.xml                     |   164 -
 .../ActivityXMLActivitySerializer.java          |   222 -
 .../gnip/powertrack/GnipActivityFixer.java      |   151 -
 .../PowerTrackActivitySerializer.java           |   103 -
 .../src/main/jsonschema/com/gnip/Gnip.json      |   811 -
 .../src/main/xmlschema/com/gnip/binding.xjb     |    16 -
 .../src/main/xmlschema/com/gnip/entry.xsd       |   381 -
 .../test/PowerTrackDeserializationTest.java     |    37 -
 .../streams-provider-gnip/pom.xml               |    49 -
 .../streams-provider-moreover/pom.xml           |   163 -
 .../data/MoreoverJsonActivitySerializer.java    |    71 -
 .../data/MoreoverXmlActivitySerializer.java     |    87 -
 .../streams/data/moreover/MoreoverClient.java   |    83 -
 .../data/moreover/MoreoverConfigurator.java     |    34 -
 .../streams/data/moreover/MoreoverProvider.java |    85 -
 .../data/moreover/MoreoverProviderTask.java     |    71 -
 .../streams/data/moreover/MoreoverResult.java   |   153 -
 .../data/moreover/MoreoverResultSetWrapper.java |    41 -
 .../apache/streams/data/util/MoreoverUtils.java |   136 -
 .../main/jsonschema/com/moreover/Moreover.json  |   333 -
 .../com/moreover/MoreoverConfiguration.json     |    34 -
 .../main/xmlschema/com/moreover/articles10.xsd  |   366 -
 .../src/main/xmlschema/com/moreover/binding.xjb |    16 -
 .../MoreoverJsonActivitySerializerTest.java     |    71 -
 .../data/MoreoverXmlActivitySerializerTest.java |    43 -
 .../streams/data/util/MoreoverTestUtil.java     |    23 -
 .../org/apache/streams/data/moreover.json       | 39433 -----------------
 .../org/apache/streams/data/moreover.xml        |  1324 -
 .../streams-provider-rss/README.markdown        |    16 -
 .../streams-provider-rss/pom.xml                |   172 -
 .../rss/provider/RssEventClassifier.java        |    14 -
 .../streams/rss/provider/RssEventProcessor.java |    85 -
 .../rss/provider/RssStreamConfigurator.java     |    30 -
 .../streams/rss/provider/RssStreamProvider.java |   190 -
 .../rss/provider/RssStreamProviderTask.java     |    52 -
 .../serializer/SyndEntryActivitySerializer.java |    64 -
 .../main/jsonschema/RssStreamConfiguration.json |    28 -
 .../src/main/xmlschema/contents.xsd             |   247 -
 .../src/main/xmlschema/opml.xsd                 |   108 -
 .../streams/rss/test/Top100FeedsTest.java       |    65 -
 .../src/test/resources/top100.opml              |   110 -
 .../src/test/resources/top100.txt               |   100 -
 .../streams-provider-rss.iml                    |    66 -
 .../streams-provider-sysomos/pom.xml            |   176 -
 .../streams/sysomos/ContentRequestBuilder.java  |    95 -
 .../apache/streams/sysomos/HeartbeatInfo.java   |   122 -
 .../apache/streams/sysomos/RequestBuilder.java  |    95 -
 .../apache/streams/sysomos/SysomosClient.java   |    67 -
 .../streams/sysomos/SysomosException.java       |    41 -
 .../streams/sysomos/SysomosJacksonResponse.java |    90 -
 .../apache/streams/sysomos/SysomosProvider.java |   106 -
 .../streams/sysomos/SysomosProviderTask.java    |    48 -
 .../apache/streams/sysomos/SysomosResponse.java |    20 -
 .../streams/sysomos/SysomosTagDefinition.java   |    77 -
 .../main/jsonschema/com/sysomos/Sysomos.json    |    57 -
 .../com/sysomos/SysomosConfiguration.json       |    29 -
 .../src/main/xmlschema/com/sysomos/binding.xjb  |    16 -
 .../src/main/xmlschema/com/sysomos/sysomos.xsd  |    72 -
 .../com/sysomos/test/SysomosJsonSerDeTest.java  |    54 -
 .../com/sysomos/test/SysomosXmlSerDeTest.java   |    85 -
 .../src/test/resources/sysomos_jsons.txt        |   101 -
 .../src/test/resources/sysomos_xmls.txt         |     6 -
 .../streams-provider-twitter/README.markdown    |    48 -
 .../streams-provider-twitter/pom.xml            |   150 -
 .../twitter/provider/TwitterErrorHandler.java   |    82 -
 .../provider/TwitterEventClassifier.java        |    29 -
 .../twitter/provider/TwitterEventProcessor.java |   164 -
 .../provider/TwitterStreamConfigurator.java     |    54 -
 .../twitter/provider/TwitterStreamProvider.java |   161 -
 .../provider/TwitterStreamProviderTask.java     |    53 -
 .../provider/TwitterTimelineProvider.java       |   223 -
 .../provider/TwitterTimelineProviderTask.java   |    94 -
 .../TwitterJsonDeleteActivitySerializer.java    |    56 -
 .../TwitterJsonEventActivitySerializer.java     |   123 -
 .../TwitterJsonRetweetActivitySerializer.java   |    92 -
 .../TwitterJsonTweetActivitySerializer.java     |    96 -
 .../src/main/jsonschema/com/twitter/Delete.json |    33 -
 .../main/jsonschema/com/twitter/Retweet.json    |    15 -
 .../com/twitter/TwitterStreamConfiguration.json |    79 -
 .../src/main/jsonschema/com/twitter/tweet.json  |   296 -
 .../src/main/resources/reference.conf           |    12 -
 .../streams/twitter/test/TweetSerDeTest.java    |   106 -
 .../test/TwitterEventClassifierTest.java        |    39 -
 .../twitter/test/TwitterStreamProviderTest.java |    40 -
 .../src/test/resources/twitter_jsons.txt        |   115 -
 trunk/streams-core/pom.xml                      |    58 -
 .../org/apache/streams/core/StreamHandler.java  |    22 -
 .../org/apache/streams/core/StreamState.java    |    13 -
 .../org/apache/streams/core/StreamsDatum.java   |   115 -
 .../org/apache/streams/core/StreamsFilter.java  |    40 -
 .../streams/core/StreamsPersistReader.java      |    46 -
 .../streams/core/StreamsPersistWriter.java      |    35 -
 .../apache/streams/core/StreamsProcessor.java   |    39 -
 .../apache/streams/core/StreamsProvider.java    |    40 -
 .../apache/streams/core/StreamsResultSet.java   |    47 -
 trunk/streams-eip-routes/ReadMe.txt             |    32 -
 trunk/streams-eip-routes/pom.xml                |   209 -
 .../aggregation/ActivityAggregator.java         |    59 -
 .../configuration/EipConfigurator.java          |   201 -
 .../ActivityPublisherRegistrationProcessor.java |    73 -
 ...yStreamsSubscriberRegistrationProcessor.java |    94 -
 .../routers/ActivityConsumerRouteBuilder.java   |    32 -
 .../ActivityStreamsSubscriberRouteBuilder.java  |    32 -
 .../routers/impl/ActivityConsumerRouter.java    |   144 -
 .../impl/ActivityStreamsSubscriberRouter.java   |   142 -
 .../messaging/service/ActivityService.java      |    31 -
 .../messaging/service/SubscriptionService.java  |    29 -
 .../service/impl/CassandraActivityService.java  |    96 -
 .../impl/CassandraSubscriptionService.java      |    43 -
 .../META-INF/spring/propertiesLoader.xml        |    35 -
 .../spring/streams-eip-applicationContext.xml   |   113 -
 .../streams-eip-osgi-component-import.xml       |    38 -
 .../META-INF/spring/streamsCamelContext.xml     |    96 -
 .../main/resources/META-INF/streams.properties  |    41 -
 .../impl/CassandraActivityServiceTest.java      |    87 -
 .../activity-consumer/osgi.bnd                  |     5 -
 .../activity-consumer/pom.xml                   |   150 -
 .../activityconsumer/ActivityConsumer.java      |    21 -
 .../ActivityConsumerWarehouse.java              |    13 -
 .../impl/ActivityConsumerWarehouseImpl.java     |    39 -
 .../impl/PushActivityConsumer.java              |    88 -
 .../spring/activity-consumer-context.xml        |    11 -
 .../META-INF/spring/activity-consumer-osgi.xml  |    12 -
 .../src/main/resources/readme.txt               |     1 -
 .../activity-registration/osgi.bnd              |     5 -
 .../activity-registration/pom.xml               |   125 -
 .../ActivityPublisherRegistration.java          |    11 -
 .../ActivityStreamsSubscriberRegistration.java  |    11 -
 .../impl/ActivityPublisherRegistrationImpl.java |    49 -
 ...tivityStreamsSubscriberRegistrationImpl.java |    49 -
 .../activity-registration-context-osgi.xml      |    13 -
 .../spring/activity-registration-context.xml    |    12 -
 .../src/main/resources/readme.txt               |     1 -
 .../activity-subscriber/osgi.bnd                |     5 -
 .../activity-subscriber/pom.xml                 |   129 -
 .../ActivityStreamsSubscriber.java              |    20 -
 .../ActivityStreamsSubscriberWarehouse.java     |    16 -
 .../ActivityStreamsSubscription.java            |    20 -
 .../ActivityStreamsSubscriptionFilter.java      |    16 -
 .../ActivityStreamsSubscriptionOutput.java      |    29 -
 .../impl/ActivityStreamsSubscriberDelegate.java |   108 -
 .../ActivityStreamsSubscriberWarehouseImpl.java |    42 -
 ...yStreamsSubscriptionCassandraFilterImpl.java |    24 -
 .../impl/ActivityStreamsSubscriptionImpl.java   |    56 -
 ...vityStreamsSubscriptionLuceneFilterImpl.java |    25 -
 .../spring/activity-subscriber-context.xml      |    11 -
 .../spring/activity-subscriber-osgi.xml         |    12 -
 .../src/main/resources/readme.txt               |     1 -
 trunk/streams-osgi-components/pom.xml           |    46 -
 .../streams-components-all/pom.xml              |    86 -
 trunk/streams-pojo-extensions/pom.xml           |   149 -
 .../org/apache/streams/ActivityExtended.json    |    17 -
 .../pojo/test/ActivityExtendedSerDeTest.java    |   108 -
 .../test/resources/gnip_twitter_extended.json   |   146 -
 trunk/streams-pojo/pom.xml                      |   235 -
 .../apache/streams/data/ActivitySerializer.java |    58 -
 .../apache/streams/data/util/ActivityUtil.java  |   116 -
 .../org/apache/streams/data/util/JsonUtil.java  |   126 -
 .../org/apache/streams/pojo/json/activity.json  |    87 -
 .../apache/streams/pojo/json/collection.json    |    34 -
 .../apache/streams/pojo/json/media_link.json    |    28 -
 .../org/apache/streams/pojo/json/object.json    |    78 -
 .../streams/pojo/json/objectTypes/article.json  |    11 -
 .../streams/pojo/json/objectTypes/audio.json    |    11 -
 .../streams/pojo/json/objectTypes/bookmark.json |    11 -
 .../streams/pojo/json/objectTypes/comment.json  |    11 -
 .../streams/pojo/json/objectTypes/event.json    |    13 -
 .../streams/pojo/json/objectTypes/file.json     |    11 -
 .../streams/pojo/json/objectTypes/folder.json   |    11 -
 .../streams/pojo/json/objectTypes/group.json    |    11 -
 .../streams/pojo/json/objectTypes/list.json     |    18 -
 .../streams/pojo/json/objectTypes/note.json     |    11 -
 .../streams/pojo/json/objectTypes/person.json   |    13 -
 .../pojo/json/objectTypes/photo-album.json      |    11 -
 .../streams/pojo/json/objectTypes/photo.json    |    15 -
 .../streams/pojo/json/objectTypes/place.json    |    11 -
 .../streams/pojo/json/objectTypes/playlist.json |    11 -
 .../streams/pojo/json/objectTypes/product.json  |    11 -
 .../streams/pojo/json/objectTypes/property.json |    38 -
 .../streams/pojo/json/objectTypes/review.json   |    11 -
 .../streams/pojo/json/objectTypes/service.json  |    11 -
 .../streams/pojo/json/objectTypes/song.json     |    11 -
 .../streams/pojo/json/objectTypes/status.json   |    11 -
 .../streams/pojo/json/objectTypes/video.json    |    11 -
 .../streams/pojo/json/verbs/favorite.json       |    16 -
 .../apache/streams/pojo/json/verbs/follow.json  |    16 -
 .../apache/streams/pojo/json/verbs/join.json    |    16 -
 .../apache/streams/pojo/json/verbs/like.json    |    16 -
 .../streams/pojo/json/verbs/make-friend.json    |    16 -
 .../apache/streams/pojo/json/verbs/play.json    |    16 -
 .../apache/streams/pojo/json/verbs/post.json    |    16 -
 .../streams/pojo/json/verbs/rsvp-maybe.json     |    16 -
 .../apache/streams/pojo/json/verbs/rsvp-no.json |    16 -
 .../streams/pojo/json/verbs/rsvp-yes.json       |    16 -
 .../apache/streams/pojo/json/verbs/save.json    |    16 -
 .../apache/streams/pojo/json/verbs/share.json   |    16 -
 .../org/apache/streams/pojo/json/verbs/tag.json |    16 -
 .../apache/streams/pojo/json/verbs/update.json  |    26 -
 .../org/apache/streams/pojo/xml/activity.xsd    |    94 -
 .../streams/data/data/util/JsonUtilTest.java    |    31 -
 trunk/streams-storm/pom.xml                     |   108 -
 .../streams/storm/PipelineGraphLauncher.java    |   196 -
 .../trident/StreamsPersistWriterState.java      |   107 -
 .../storm/trident/StreamsProviderSpout.java     |    69 -
 .../streams/storm/trident/StreamsTopology.java  |    73 -
 trunk/streams-util/pom.xml                      |    44 -
 .../java/org/apache/streams/util/GuidUtils.java |    48 -
 .../org/apache/streams/util/RegexUtils.java     |    93 -
 trunk/streams-web/pom.xml                       |   218 -
 .../main/webapp/WEB-INF/cassandra.properties    |     5 -
 .../main/webapp/WEB-INF/propertiesLoader.xml    |    36 -
 .../main/webapp/WEB-INF/spring-web-servlet.xml  |    49 -
 .../src/main/webapp/WEB-INF/streams.properties  |    43 -
 .../streams-web/src/main/webapp/WEB-INF/web.xml |    57 -
 .../src/main/webapp/demo/activityDemo.html      |    26 -
 .../src/main/webapp/demo/css/activityStyles.css |     9 -
 .../src/main/webapp/demo/js/activityDemo.js     |    66 -
 .../src/main/webapp/demo/js/handlebars.js       |  2278 -
 .../src/main/webapp/demo/js/publisher.js        |    43 -
 .../src/main/webapp/demo/js/subscriber.js       |    40 -
 .../src/main/webapp/demo/publisher.html         |    74 -
 .../src/main/webapp/demo/subscriber.html        |    40 -
 trunk/streams-web/src/main/webapp/index.html    |    10 -
 335 files changed, 132 insertions(+), 74213 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/provision/provision.iml
----------------------------------------------------------------------
diff --git a/provision/provision.iml b/provision/provision.iml
index 6e0bf2b..fb87ba5 100644
--- a/provision/provision.iml
+++ b/provision/provision.iml
@@ -1,13 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="false">
-    <output url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/classes" />
-    <output-test url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/test-classes" />
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
       <excludeFolder url="file://$MODULE_DIR$/target" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
   </component>
   <component name="POM File Configuration" pomFile="" />
 </module>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 1a3ba61..1e1feca 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -38,17 +38,15 @@
     <modules>
         <module>streams-persist-console</module>
         <module>streams-persist-elasticsearch</module>
-        <module>streams-persist-hbase</module>
-        <module>streams-persist-hdfs</module>
-        <module>streams-persist-kafka</module>
-        <module>streams-persist-mongo</module>
-        <module>streams-provider-datasift</module>
-        <module>streams-provider-facebook</module>
-        <module>streams-provider-gnip</module>
-        <module>streams-provider-moreover</module>
+        <!--<module>streams-persist-hdfs</module>-->
+        <!--<module>streams-persist-kafka</module>-->
+        <!--<module>streams-provider-datasift</module>-->
+        <!--<module>streams-provider-facebook</module>-->
+        <!--<module>streams-provider-gnip</module>-->
+        <!--<module>streams-provider-moreover</module>-->
         <module>streams-provider-twitter</module>
-        <module>streams-provider-sysomos</module>
-        <module>streams-provider-rss</module>
+        <!--<module>streams-provider-sysomos</module>-->
+        <!--<module>streams-provider-rss</module>-->
         <!--<module>streams-proxy-semantria</module>-->
     </modules>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
index 7e62a7d..8f56821 100644
--- a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
@@ -12,22 +12,26 @@ import org.slf4j.LoggerFactory;
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
-public class ConsolePersistWriter extends StreamsPersistWriterTask implements StreamsPersistWriter  {
+public class ConsolePersistWriter implements StreamsPersistWriter, Runnable {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ConsolePersistWriter.class);
 
+    protected volatile Queue<StreamsDatum> persistQueue;
+
     private ObjectMapper mapper = new ObjectMapper();
 
-    public ConsolePersistWriter(StreamsPersistWriter writer) {
-        super(writer);
+    public ConsolePersistWriter() {
+        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+    }
+
+    public ConsolePersistWriter(Queue<StreamsDatum> persistQueue) {
+        this.persistQueue = persistQueue;
     }
 
-    @Override
     public void prepare(Object o) {
-        Preconditions.checkNotNull(this.getInputQueues());
+
     }
 
-    @Override
     public void cleanUp() {
 
     }
@@ -47,4 +51,10 @@ public class ConsolePersistWriter extends StreamsPersistWriterTask implements St
 
     }
 
+    @Override
+    public void run() {
+        Preconditions.checkNotNull(persistQueue);
+        new Thread(new ConsolePersistWriterTask(this)).start();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
index 52e40cb..480e3bc 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
@@ -168,11 +168,6 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
         }
     }
 
-    @Override
-    public void cleanUp() {
-        LOGGER.info("PersistReader done");
-    }
-
     public void setWithfields(String[] withfields) {
         this.withfields = withfields;
     }
@@ -311,19 +306,48 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
             item.getMetadata().put("type", hit.getType());
             currentQueue.add(item);
         }
+
+        cleanUp();
+
         return (StreamsResultSet)currentQueue;
     }
 
+    public StreamsResultSet readAll() {
+        return readCurrent();
+    }
+
     @Override
     public StreamsResultSet readNew(BigInteger sequence) {
-        return null;
+        return readCurrent();
     }
 
     @Override
     public StreamsResultSet readRange(DateTime start, DateTime end) {
-        return null;
+        return readCurrent();
     }
 
+    void shutdownAndAwaitTermination(ExecutorService pool) {
+        pool.shutdown(); // Disable new tasks from being submitted
+        try {
+            // Wait a while for existing tasks to terminate
+            if (!pool.awaitTermination(10, TimeUnit.SECONDS)) {
+                pool.shutdownNow(); // Cancel currently executing tasks
+                // Wait a while for tasks to respond to being cancelled
+                if (!pool.awaitTermination(10, TimeUnit.SECONDS))
+                    System.err.println("Pool did not terminate");
+            }
+        } catch (InterruptedException ie) {
+            // (Re-)Cancel if current thread also interrupted
+            pool.shutdownNow();
+            // Preserve interrupt status
+            Thread.currentThread().interrupt();
+        }
+    }
+
+    @Override
+    public void cleanUp() {
+        LOGGER.info("PersistReader done");
+    }
 }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
index 67fa724..6afe959 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
@@ -124,14 +124,29 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
     public boolean isConnected() 		                { return (client != null); }
 
     @Override
-    public void prepare(Object o) {
+    public void write(StreamsDatum streamsDatum) {
+
+        String json;
+        try {
+
+            json = mapper.writeValueAsString(streamsDatum.getDocument());
+
+            add(index, type, null, json);
+
+        } catch (JsonProcessingException e) {
+            LOGGER.warn("{} {}", e.getLocation(), e.getMessage());
+
+        }
+    }
+
+    public void start() {
+
         manager = new ElasticsearchClientManager(config);
         client = manager.getClient();
 
         LOGGER.info(client.toString());
     }
 
-    @Override
     public void cleanUp() {
 
         try {
@@ -143,22 +158,6 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
     }
 
     @Override
-    public void write(StreamsDatum streamsDatum) {
-
-        String json;
-        try {
-
-            json = mapper.writeValueAsString(streamsDatum.getDocument());
-
-            add(index, type, null, json);
-
-        } catch (JsonProcessingException e) {
-            LOGGER.warn("{} {}", e.getLocation(), e.getMessage());
-
-        }
-    }
-
-    @Override
     public void close()
     {
         try
@@ -527,4 +526,9 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
         return toReturn;
     }
 
+    @Override
+    public void prepare(Object configurationObject) {
+        start();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriterTask.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriterTask.java
new file mode 100644
index 0000000..744a216
--- /dev/null
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriterTask.java
@@ -0,0 +1,38 @@
+package org.apache.streams.elasticsearch;
+
+import org.apache.streams.core.StreamsDatum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Random;
+
+public class ElasticsearchPersistWriterTask implements Runnable {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistWriterTask.class);
+
+    private ElasticsearchPersistWriter writer;
+
+    public ElasticsearchPersistWriterTask(ElasticsearchPersistWriter writer) {
+        this.writer = writer;
+    }
+
+    @Override
+    public void run() {
+
+        while(true) {
+            if( writer.persistQueue.peek() != null ) {
+                try {
+                    StreamsDatum entry = writer.persistQueue.remove();
+                    writer.write(entry);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            try {
+                Thread.sleep(new Random().nextInt(1));
+            } catch (InterruptedException e) {}
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-contrib/streams-provider-rss/streams-provider-rss.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/streams-provider-rss.iml b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
index fa38897..f27b242 100644
--- a/streams-contrib/streams-provider-rss/streams-provider-rss.iml
+++ b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+<module type="JAVA_MODULE" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
     <output url="file://$MODULE_DIR$/target/classes" />
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jaxb2" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jsonschema2pojo" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
@@ -30,10 +29,10 @@
     <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
     <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.streams:streams-core:0.1-SNAPSHOT" level="project" />
+    <orderEntry type="module" module-name="streams-core" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.streams:streams-pojo:0.1-SNAPSHOT" level="project" />
+    <orderEntry type="module" module-name="streams-pojo" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
     <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
@@ -49,15 +48,15 @@
     <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
     <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
     <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.streams:streams-config:0.1-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
+    <orderEntry type="module" module-name="streams-config" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:15.0" level="project" />
     <orderEntry type="library" name="Maven: com.google.collections:google-collections:1.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.2.1" level="project" />
     <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:0.9.0" level="project" />
     <orderEntry type="library" name="Maven: net.minidev:json-smart:1.2" level="project" />
     <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path-assert:0.9.0" level="project" />
     <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
-    <orderEntry type="module" module-name="streams-persist-console (2)" scope="TEST" />
+    <orderEntry type="module" module-name="streams-persist-console" scope="TEST" />
     <orderEntry type="library" name="Maven: rome:rome:1.0" level="project" />
     <orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
   </component>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java b/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
index 6fb703c..386a5e0 100644
--- a/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
+++ b/streams-core/src/main/java/org/apache/streams/core/StreamsPersistReader.java
@@ -32,15 +32,9 @@ import java.util.Queue;
  */
 public interface StreamsPersistReader extends StreamsProvider {
 
-//    void start();
-//    void stop();
-//
-//    public void setPersistQueue(Queue<StreamsDatum> persistQueue);
-//    public Queue<StreamsDatum> getPersistQueue();
-
-//    public StreamsResultSet readAll();
-//    public StreamsResultSet readNew(BigInteger sequence);
-//    public StreamsResultSet readRange(DateTime start, DateTime end);
+    public StreamsResultSet readAll();
+    public StreamsResultSet readNew(BigInteger sequence);
+    public StreamsResultSet readRange(DateTime start, DateTime end);
 
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/.gitignore
----------------------------------------------------------------------
diff --git a/trunk/.gitignore b/trunk/.gitignore
deleted file mode 100644
index 247f694..0000000
--- a/trunk/.gitignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# environment ignores #
-streams-master-pom/
-
-# Compile directores and files #
-
-target/
-dependency-reduced-pom.xml
-
-# IDE directories/files #
-/.idea
-*.iml
-.eclipse/
-.settings/
-
-# OS generated files #
-.DS_Store
-.DS_Store?
-._*
-.Spotlight-V100
-.Trashes
-Icon?
-ehthumbs.db
-Thumbs.db

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/DISCLAIMER
----------------------------------------------------------------------
diff --git a/trunk/DISCLAIMER b/trunk/DISCLAIMER
deleted file mode 100644
index 02aecb7..0000000
--- a/trunk/DISCLAIMER
+++ /dev/null
@@ -1,10 +0,0 @@
-Apache Streams is an effort undergoing incubation at the Apache Software
-Foundation (ASF), sponsored by the Apache Incubator PMC. 
-
-Incubation is required of all newly accepted projects until a further review 
-indicates that the infrastructure, communications, and decision making process 
-have stabilized in a manner consistent with other successful ASF projects. 
-
-While incubation status is not necessarily a reflection of the completeness 
-or stability of the code, it does indicate that the project has yet to be 
-fully endorsed by the ASF.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/LICENSE
----------------------------------------------------------------------
diff --git a/trunk/LICENSE b/trunk/LICENSE
deleted file mode 100644
index d645695..0000000
--- a/trunk/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/NOTICE
----------------------------------------------------------------------
diff --git a/trunk/NOTICE b/trunk/NOTICE
deleted file mode 100644
index 421a17c..0000000
--- a/trunk/NOTICE
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Streams
-Copyright 2012-2013 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/README.txt
----------------------------------------------------------------------
diff --git a/trunk/README.txt b/trunk/README.txt
deleted file mode 100644
index 55a4a37..0000000
--- a/trunk/README.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-Apache Streams (incubating) - README.txt
-Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
---------------------------------------------------------------------------------
-
-About
-=====
-Apache Streams is a lightweight (yet scalable) server for ActivityStreams. The role of Apache Streams is to provide a central point of aggregation, filtering and querying for Activities that have been submitted by disparate systems. Apache Streams also intends to include a mechanism for intelligent filtering and recommendation to reduce the noise to end users.
-
-
-
-Release Notes
-=============
- - Initial project structure and master POM release
-
-
-Getting Started
-===============
-Please visit the project website for the latest information:
-    http://streams.incubator.apache.org/
-
-Along with the developer mailing list archive:
-    http://mail-archives.apache.org/mod_mbox/streams-dev/
-
-
-System Requirements
-===================
-You need a platform that supports Java SE 6 or later.
-
-Building and running
-====================
-To build from source code:
-
-  - Requirements:
-    Sources compilation require Java SE 6 or higher.
-    The project is built with Apache Maven 3+ (suggested is 3.0.3).
-    You need to download and install Maven 3 from: http://maven.apache.org/
-
-  - The Streams project itself (this one) depends on the separate Streams Master project
-    which defines general and global settings for the whole of the Streams project,
-    independent of a specific release.
-    As its streams-master-pom is already published to the Apache Snapshots repository,
-    there is no need to check it out manually and build it locally yourself,
-    unless changes are needed on general and global level.
-    
-    If so needed, the Rave Master project can be checked out from:
-      http://svn.apache.org/repos/asf/incubator/streams/streams-master-pom/trunk streams-master-pom
-
-    After check out, cd into streams-master-pom and invoke maven to install it using:
-      $mvn install
-    
-  - To build the Streams project invoke maven in the root directory:
-      $mvn install

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/pom.xml b/trunk/pom.xml
deleted file mode 100644
index 9ba1cae..0000000
--- a/trunk/pom.xml
+++ /dev/null
@@ -1,305 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.streams</groupId>
-        <artifactId>streams-master</artifactId>
-        <version>0.2-incubating-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.apache.streams</groupId>
-    <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
-
-    <name>Apache Streams Project</name>
-
-    <description>Apache Streams Project</description>
-
-    <repositories>
-        <repository>
-            <id>apache.snapshots</id>
-            <name>Apache Snapshot Repository</name>
-            <url>http://repository.apache.org/snapshots</url>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-        </repository>
-        <repository>
-          <id>clojars.org</id>
-          <url>http://clojars.org/repo</url>
-        </repository>
-        <repository>
-            <id>cloudera</id>
-            <url>https://repository.cloudera.com/artifactory/repo</url>
-        </repository>
-    </repositories>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <java.version>1.6</java.version>
-        <org.osgi.service.http.port>8080</org.osgi.service.http.port>
-        <org.osgi.service.http.port.secure>8443</org.osgi.service.http.port.secure>
-        <jackson.version>2.2.1</jackson.version>
-        <jackson-xml-databind.version>0.5.0</jackson-xml-databind.version>
-        <aalto.version>0.9.9</aalto.version>
-        <joda-time.version>2.2</joda-time.version>
-        <rave.version>0.22</rave.version>
-        <datastax.version>1.0.3</datastax.version>
-        <jsonschema2pojo.version>0.4.0</jsonschema2pojo.version>
-        <jaxb2.version>0.8.3</jaxb2.version>
-        <jaxbutil.version>1.2.6</jaxbutil.version>
-        <junit.version>4.11</junit.version>
-        <slf4j.version>1.7.6</slf4j.version>
-        <logback.version>1.0.9</logback.version>
-        <commons-io.version>2.4</commons-io.version>
-        <commons-lang3.version>3.1</commons-lang3.version>
-        <typesafe.config.version>1.2.0</typesafe.config.version>
-        <guava.version>16.0.1</guava.version>
-        <scala.version>2.8.0</scala.version>
-        <clojure.version>1.4.0</clojure.version>
-        <storm.version>0.9.0.1</storm.version>
-        <kafka.version>0.8.0</kafka.version>
-        <zookeeper.version>3.3.4</zookeeper.version>
-        <netty.version>3.8.0.Final</netty.version>
-        <json-path.version>0.9.0</json-path.version>
-    </properties>
-
-    <modules>
-        <module>poms</module>
-        <module>provision</module>
-        <module>streams-osgi-components</module>
-        <module>streams-eip-routes</module>
-        <module>streams-cassandra</module>
-        <module>streams-web</module>
-        <module>streams-config</module>
-        <module>streams-config-graph</module>
-        <module>streams-pojo</module>
-        <!--<module>streams-storm</module>-->
-        <module>streams-util</module>
-        <module>streams-pojo-extensions</module>
-        <module>streams-contrib</module>
-        <module>streams-core</module>
-    </modules>
-
-    <packaging>pom</packaging>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.0</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.ops4j</groupId>
-                <artifactId>maven-pax-plugin</artifactId>
-                <version>1.5</version>
-                <extensions>true</extensions>
-                <configuration>
-                    <compilerVersion>1.5</compilerVersion>
-                    <provision>
-                        <param>--platform=felix</param>
-                    </provision>
-                </configuration>
-                <executions>
-                </executions>
-            </plugin>
-        </plugins>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.jsonschema2pojo</groupId>
-                    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
-                    <version>${jsonschema2pojo.version}</version>
-                </plugin>
-                <plugin>
-                    <groupId>org.jvnet.jaxb2.maven2</groupId>
-                    <artifactId>maven-jaxb2-plugin</artifactId>
-                    <version>${jaxb2.version}</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
-    </dependencies>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>commons-io</groupId>
-                <artifactId>commons-io</artifactId>
-                <version>${commons-io.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.commons</groupId>
-                <artifactId>commons-lang3</artifactId>
-                <version>${commons-lang3.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jsonschema2pojo</groupId>
-                <artifactId>jsonschema2pojo-core</artifactId>
-                <version>${jsonschema2pojo.version}</version>
-                <type>jar</type>
-                <scope>compile</scope>
-            </dependency>
-            <dependency>
-                <groupId>com.typesafe</groupId>
-                <artifactId>config</artifactId>
-                <version>${typesafe.config.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>junit</groupId>
-                <artifactId>junit</artifactId>
-                <version>${junit.version}</version>
-                <scope>test</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.slf4j</groupId>
-                <artifactId>slf4j-api</artifactId>
-                <version>${slf4j.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-classic</artifactId>
-                <version>${logback.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>${guava.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>io.netty</groupId>
-                <artifactId>netty</artifactId>
-                <version>${netty.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>joda-time</groupId>
-                <artifactId>joda-time</artifactId>
-                <version>${joda-time.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-core</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.core</groupId>
-                <artifactId>jackson-annotations</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.dataformat</groupId>
-                <artifactId>jackson-dataformat-xml</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml</groupId>
-                <artifactId>jackson-xml-databind</artifactId>
-                <version>${jackson-xml-databind.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.dataformat</groupId>
-                <artifactId>jackson-dataformat-yaml</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml.jackson.datatype</groupId>
-                <artifactId>jackson-datatype-json-org</artifactId>
-                <version>${jackson.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.fasterxml</groupId>
-                <artifactId>aalto-xml</artifactId>
-                <version>${aalto.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>nz.net.ultraq.jaxb</groupId>
-                <artifactId>jaxb-utilities</artifactId>
-                <version>${jaxbutil.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.clojure</groupId>
-                <artifactId>clojure</artifactId>
-                <version>${clojure.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.clojure</groupId>
-                <artifactId>clojure-contrib</artifactId>
-                <version>${clojure.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>storm</groupId>
-                <artifactId>storm-core</artifactId>
-                <version>${storm.version}</version>
-                <scope>provided</scope>
-            </dependency>
-            <dependency>
-                <groupId>storm</groupId>
-                <artifactId>storm-netty</artifactId>
-                <version>${storm.version}</version>
-                <scope>provided</scope>
-            </dependency>
-            <!-- JsonPath -->
-            <dependency>
-                <groupId>com.jayway.jsonpath</groupId>
-                <artifactId>json-path</artifactId>
-                <version>${json-path.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.jayway.jsonpath</groupId>
-                <artifactId>json-path-assert</artifactId>
-                <version>${json-path.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.zookeeper</groupId>
-                <artifactId>zookeeper</artifactId>
-                <version>${zookeeper.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>log4j</groupId>
-                        <artifactId>log4j</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/poms/compiled/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/poms/compiled/pom.xml b/trunk/poms/compiled/pom.xml
deleted file mode 100644
index ca176d2..0000000
--- a/trunk/poms/compiled/pom.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<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/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams.build</groupId>
-    <artifactId>shared-plugin-settings</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>compiled-bundle-settings</artifactId>
-
-  <name>apache-streams - bundle instructions</name>
-
-  <packaging>pom</packaging>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-      <!--
-       | example additional resource entries, useful when building Eclipse RCP applications
-      -->
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>plugin.xml</include>
-          <include>plugin.properties</include>
-          <include>icons/**</include>
-        </includes>
-      </resource>
-    </resources>
-    <plugins>
-      <plugin>
-        <!--
-         | the following instructions build a simple set of public/private classes into an OSGi bundle
-        -->
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <configuration>
-          <instructions>
-            <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-            <Bundle-Version>${project.version}</Bundle-Version>
-            <!--
-             | assume public classes are in the top package, and private classes are under ".impl"
-            -->
-            <Export-Package>!${bundle.namespace}.internal.*,${bundle.namespace}.*;version="${project.version}"</Export-Package>
-            <Private-Package>${bundle.namespace}.internal.*</Private-Package>
-            <!--
-             | each module can override these defaults in their osgi.bnd file
-            -->
-            <_include>-osgi.bnd</_include>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/poms/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/poms/pom.xml b/trunk/poms/pom.xml
deleted file mode 100644
index 321beee..0000000
--- a/trunk/poms/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams</groupId>
-    <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <groupId>org.apache.streams.build</groupId>
-  <artifactId>shared-plugin-settings</artifactId>
-
-  <name>apache-streams - plugin configuration</name>
-
-  <packaging>pom</packaging>
-
-  <modules>
-    <module>wrappers</module>
-    <module>compiled</module>
-  </modules>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.ops4j</groupId>
-          <artifactId>maven-pax-plugin</artifactId>
-          <!--
-           | enable improved OSGi compilation support for the bundle life-cycle.
-           | to switch back to the standard bundle life-cycle, move this setting
-           | down to the maven-bundle-plugin section
-          -->
-          <extensions>true</extensions>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.felix</groupId>
-          <artifactId>maven-bundle-plugin</artifactId>
-          <version>1.4.3</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <!--
-         | dependency pom representing the global classpath of imported bundles
-        -->
-        <type>pom</type>
-        <groupId>org.apache.streams.build</groupId>
-        <artifactId>provision</artifactId>
-        <version>${project.version}</version>
-        <scope>provided</scope>
-        <optional>true</optional>
-      </dependency>
-      <dependency>
-        <groupId>org.osgi</groupId>
-        <artifactId>osgi_R4_core</artifactId>
-        <version>1.0</version>
-        <scope>provided</scope>
-        <optional>true</optional>
-      </dependency>
-      <dependency>
-        <groupId>org.osgi</groupId>
-        <artifactId>osgi_R4_compendium</artifactId>
-        <version>1.0</version>
-        <scope>provided</scope>
-        <optional>true</optional>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/poms/wrappers/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/poms/wrappers/pom.xml b/trunk/poms/wrappers/pom.xml
deleted file mode 100644
index 5c83d59..0000000
--- a/trunk/poms/wrappers/pom.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<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/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams.build</groupId>
-    <artifactId>shared-plugin-settings</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>wrapper-bundle-settings</artifactId>
-
-  <name>apache-streams - wrapper instructions</name>
-
-  <!--
-   | don't apply project details to wrapped jars
-  -->
-  <organization/>
-  <description>
-    Simple OSGi wrapper around third-party jar(s)
-  </description>
-  <licenses>
-    <license/>
-  </licenses>
-
-  <packaging>pom</packaging>
-
-  <build>
-    <plugins>
-      <plugin>
-        <!--
-         | the following instructions are optimized for wrapping third-party libraries as OSGi bundles
-        -->
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <configuration>
-          <instructions>
-            <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-            <Bundle-Version>${wrapped.version}</Bundle-Version>
-            <!--
-             | export wrapped contents: don't use Export-Package:* as this bundles everything on the classpath
-            -->
-            <_exportcontents>*</_exportcontents>
-            <Private-Package>!*</Private-Package>
-            <!--
-             | each module can override these defaults in their osgi.bnd file
-            -->
-            <_include>-osgi.bnd</_include>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/provision/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/provision/pom.xml b/trunk/provision/pom.xml
deleted file mode 100644
index 2b66e2e..0000000
--- a/trunk/provision/pom.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams</groupId>
-    <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <groupId>org.apache.streams.build</groupId>
-  <artifactId>provision</artifactId>
-  <name>apache-streams - imported bundles</name>
-
-  <packaging>pom</packaging>
-
-  <!--
-   | imported (non-local) bundles are listed here as dependencies
-   | and will be deployed by pax:provision unless they are marked
-   | with <optional>true</optional>
-  -->
-
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/provision/provision.iml
----------------------------------------------------------------------
diff --git a/trunk/provision/provision.iml b/trunk/provision/provision.iml
deleted file mode 100644
index 6e0bf2b..0000000
--- a/trunk/provision/provision.iml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" inherit-compiler-output="false">
-    <output url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/classes" />
-    <output-test url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/bundles/downloaded_bundles.properties
----------------------------------------------------------------------
diff --git a/trunk/runner/bundles/downloaded_bundles.properties b/trunk/runner/bundles/downloaded_bundles.properties
deleted file mode 100644
index 53c91bd..0000000
--- a/trunk/runner/bundles/downloaded_bundles.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# 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.
-#
-
-#
-#Thu Dec 06 14:30:27 EST 2012
-mvn\:org.apache.streams.activity-publisher-registration/org.apache.streams.activity.publisher.registration/1.0-SNAPSHOT=org.apache.streams.activity.publisher.registration_1.0.0.SNAPSHOT.jar
-link\:classpath\:runner-links/org.apache.felix.gogo.runtime-0.10.0.link=org.apache.felix.gogo.runtime_0.10.0.jar
-link\:classpath\:runner-links/org.apache.felix.main-4.0.3.link=org.apache.felix.main_4.0.3.jar
-link\:classpath\:runner-links/org.apache.felix.gogo.shell-0.10.0.link=org.apache.felix.gogo.shell_0.10.0.jar
-link\:classpath\:runner-links/org.apache.felix.gogo.command-0.12.0.link=org.apache.felix.gogo.command_0.12.0.jar

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/bundles/org.apache.felix.gogo.command_0.12.0.jar
----------------------------------------------------------------------
diff --git a/trunk/runner/bundles/org.apache.felix.gogo.command_0.12.0.jar b/trunk/runner/bundles/org.apache.felix.gogo.command_0.12.0.jar
deleted file mode 100644
index dfd8ae3..0000000
Binary files a/trunk/runner/bundles/org.apache.felix.gogo.command_0.12.0.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/bundles/org.apache.felix.gogo.runtime_0.10.0.jar
----------------------------------------------------------------------
diff --git a/trunk/runner/bundles/org.apache.felix.gogo.runtime_0.10.0.jar b/trunk/runner/bundles/org.apache.felix.gogo.runtime_0.10.0.jar
deleted file mode 100644
index d3ccb4b..0000000
Binary files a/trunk/runner/bundles/org.apache.felix.gogo.runtime_0.10.0.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/bundles/org.apache.felix.gogo.shell_0.10.0.jar
----------------------------------------------------------------------
diff --git a/trunk/runner/bundles/org.apache.felix.gogo.shell_0.10.0.jar b/trunk/runner/bundles/org.apache.felix.gogo.shell_0.10.0.jar
deleted file mode 100644
index f74e68e..0000000
Binary files a/trunk/runner/bundles/org.apache.felix.gogo.shell_0.10.0.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/bundles/org.apache.felix.main_4.0.3.jar
----------------------------------------------------------------------
diff --git a/trunk/runner/bundles/org.apache.felix.main_4.0.3.jar b/trunk/runner/bundles/org.apache.felix.main_4.0.3.jar
deleted file mode 100644
index 9d313e3..0000000
Binary files a/trunk/runner/bundles/org.apache.felix.main_4.0.3.jar and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/runner/deploy-pom.xml
----------------------------------------------------------------------
diff --git a/trunk/runner/deploy-pom.xml b/trunk/runner/deploy-pom.xml
deleted file mode 100644
index 4320207..0000000
--- a/trunk/runner/deploy-pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.streams.build</groupId>
-  <artifactId>deployment</artifactId>
-  <version>1.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
-  <name>org.apache.streams (OSGi project)</name>
-  <description>Generated using Pax-Construct</description>
-  <properties>
-    <org.osgi.service.http.port>8080</org.osgi.service.http.port>
-    <org.osgi.service.http.port.secure>8443</org.osgi.service.http.port.secure>
-  </properties>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.streams.activity-publisher-registration</groupId>
-      <artifactId>org.apache.streams.activity.publisher.registration</artifactId>
-      <version>1.0-SNAPSHOT</version>
-      <type>bundle</type>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-  <repositories>
-    <repository>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>central</id>
-      <name>Maven Repository Switchboard</name>
-      <url>http://repo1.maven.org/maven2</url>
-    </repository>
-  </repositories>
-</project>


[07/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/test/resources/twitter_jsons.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/test/resources/twitter_jsons.txt b/trunk/streams-contrib/streams-provider-twitter/src/test/resources/twitter_jsons.txt
deleted file mode 100644
index c0eb39c..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/test/resources/twitter_jsons.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682377023488,"id_str":"410898682377023488","text":"I dont like cold tbh","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":1428396174,"id_str":"1428396174","name":"K\u03b1\u044f\u03c3\u2113\u03b9n\u03b1","screen_name":"_Karoliinaa08","location":"","url":null,"description":"Red huur, don't cuur | freshman @ US Grant | @drake be the babe \u2764 #NWTS | IG: karoo_xoxo | #Ambitious nuff said.|","protected":false,"followers_count":163,"friends_count":120,"listed_count":0,"created_at":"Tue May 14 17:35:55 +0000 2013","favourites_count":404,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":2497,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"131516","profile_background_image_url":"http:\/\/abs.twimg.com\/imag
 es\/themes\/theme14\/bg.gif","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme14\/bg.gif","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000791539406\/75a1d3d53b72dbf61a019d23c562a99e_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000791539406\/75a1d3d53b72dbf61a019d23c562a99e_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1428396174\/1385531906","profile_link_color":"009999","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"EFEFEF","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":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted"
 :false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682372816896,"id_str":"410898682372816896","text":"marcel siahaan :33","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":388716540,"id_str":"388716540","name":"Duwi Sri Lestari","screen_name":"IamDSL","location":"DAERAH ISTIMEWA YOGYAKARTA","url":"http:\/\/duwisril.blogspot.com","description":"Allah adalah alasan yang tepat untuk segala urusan \u2022 X's~","protected":false,"followers_count":236,"friends_count":164,"listed_count":1,"created_at":"Tue Oct 11 06:56:08 +0000 2011","favourites_count":16,"utc_offset":25200,"time_zone":"Bangkok","geo_enabled":true,"verified":false,"statuses_count":12254,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"000000","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/3788000
 00106595504\/611c916c9a3847b08d104d57f24ec97e.gif","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000106595504\/611c916c9a3847b08d104d57f24ec97e.gif","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000845444547\/4ccb9b18a5fd3d570cf47f6a464373ff_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000845444547\/4ccb9b18a5fd3d570cf47f6a464373ff_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/388716540\/1383864215","profile_link_color":"0CA0F0","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"FFFFFF","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":0,"favorite_count":0,"entities":{"hashtags":[
 ],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"id"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682360242176,"id_str":"410898682360242176","text":"RT @chilean_girl: @fuckmemrhoran  uh que me has ganado :(","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":1527234691,"id_str":"1527234691","name":"n i a l l (f) e r","screen_name":"fuckmemrhoran","location":"","url":null,"description":"\u275dNunca acierto en nada, y no te merezco... Pero estoy malditamente enamorado de ti.\u275e \u2014Travis Maddox.","protected":false,"followers_count":2848,"friends_count":2675,"listed_count":38,"created_at":"Tue Jun 18 09:00:15 +0000 2013","favourites_count":1005,"utc_offset":-25200,"time_zone":"Arizona","geo_enabled":false,"verified":false,"statuses_count":15264,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"FFFFFF","profile_background_image_url":"ht
 tp:\/\/a0.twimg.com\/profile_background_images\/378800000132541505\/rEsviqbu.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000132541505\/rEsviqbu.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000817261015\/1acc67f163772bc8ca14ba49317a4719_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000817261015\/1acc67f163772bc8ca14ba49317a4719_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1527234691\/1385931793","profile_link_color":"5C5254","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"FFFFFF","profile_text_color":"FFFFFF","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:26:58
  +0000 2013","id":410898532472598528,"id_str":"410898532472598528","text":"@fuckmemrhoran  uh que me has ganado :(","source":"web","truncated":false,"in_reply_to_status_id":410898215634878464,"in_reply_to_status_id_str":"410898215634878464","in_reply_to_user_id":1527234691,"in_reply_to_user_id_str":"1527234691","in_reply_to_screen_name":"fuckmemrhoran","user":{"id":115807794,"id_str":"115807794","name":" Midnight Memories ","screen_name":"chilean_girl","location":"Chile ","url":"http:\/\/ask.fm\/ValentinaP99","description":"i am one of those people who does everything to see others smile #Chilean #Belieber #Directioner #LosJuegosDelHambre","protected":false,"followers_count":1045,"friends_count":589,"listed_count":7,"created_at":"Sat Feb 20 01:31:38 +0000 2010","favourites_count":3279,"utc_offset":-10800,"time_zone":"Santiago","geo_enabled":true,"verified":false,"statuses_count":11402,"lang":"es","contributors_enabled":false,"is_translator":false,"profile_background_color":"FFFFFF",
 "profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000080372580\/5e5515da77322c4270076709bca2d971.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000080372580\/5e5515da77322c4270076709bca2d971.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000854976666\/7016400a3d1a418ea07918a4421aa047_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000854976666\/7016400a3d1a418ea07918a4421aa047_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/115807794\/1384908046","profile_link_color":"F5B3E1","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"95E8EC","profile_text_color":"3C3940","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":1,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"fuckmemrhoran","name":"n i a l l (f) e r","id":1527234691,"id_str":"1527234691","indices":[0,14]}]},"favorited":false,"retweeted":false,"lang":"pt"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"chilean_girl","name":" Midnight Memories ","id":115807794,"id_str":"115807794","indices":[3,16]},{"screen_name":"fuckmemrhoran","name":"n i a l l (f) e r","id":1527234691,"id_str":"1527234691","indices":[18,32]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"pt"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682377015296,"id_str":"410898682377015296","text":"El Shaarawy wouldn't fit into Arsenal***. Too much skill for a team like that.","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":622457404,"id_str":"622457404","name":"AO7","screen_name":"Anton_Osterman","location":"Ontario\/Canada","url":null,"description":"God. \u2020 Family. F\u00fatbol.\u26bd\ufe0f House Music, Rave #Croatian","protected":false,"followers_count":213,"friends_count":150,"listed_count":0,"created_at":"Sat Jun 30 03:10:14 +0000 2012","favourites_count":4389,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":7252,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"2186B8","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_back
 ground_images\/640953729\/8nky0nia0z7bbq6gxoft.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/640953729\/8nky0nia0z7bbq6gxoft.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000759819677\/e24a672da596e1f28ef1c25c9af57ec3_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000759819677\/e24a672da596e1f28ef1c25c9af57ec3_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/622457404\/1385936313","profile_link_color":"009999","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"DDEEF6","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":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"url
 s":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682364436480,"id_str":"410898682364436480","text":"\u3053\u306e\u3042\u3044\u307f\u3093\u30ac\u30c1\u52e2\u306b\u4ffa\u306f\u6bba\u3055\u308c\u3093\u306e\u304b\u306a","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":968211162,"id_str":"968211162","name":"\u5bae\u3063\u3061\u2661\u304d\u306e\u3074\u305f@\u3082\u3082\u30af\u30ea\u307e\u306711\u65e5","screen_name":"0611Mcz","location":"\u30ab\u30eb\u30de","url":null,"description":"\u5f69\u590f\u304c\u597d\u304d","protected":false,"followers_count":1482,"friends_count":456,"listed_count":19,"created_at":"Sat Nov 24 15:29:08 +0000 2012","favourites_count":13781,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":fals
 e,"statuses_count":63429,"lang":"ja","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000854536554\/bf6e7b2c5803e5beaaf968da7450b0ab_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000854536554\/bf6e7b2c5803e5beaaf968da7450b0ab_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/968211162\/1384965152","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordin
 ates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"ja"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682356051968,"id_str":"410898682356051968","text":"RT @RobertAllenII: Just watched last 8 minutes of NCAA championship game. These kids demonstrated tremendous character, hard work &amp; determi\u2026","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":42182691,"id_str":"42182691","name":"FearRozier","screen_name":"CARDSALLDAY26","location":"Louisville","url":null,"description":"Climb the mountain to see the world not for the world to see you #Louisville #DaytonFlyers #Reds #RedSox #Celtics #Cowboys #BassetHounds #NoChurchInTheWild","protected":false,"followers_count":585,"friends_count":1082,"listed_count":8,"created_at":"Sun May 24 07:54:24 +0000 2009","favourites_count":367
 3,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":29804,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"131516","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000105041799\/63ea7a3ff8f2e4566e9f3547b5422ebe.png","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000105041799\/63ea7a3ff8f2e4566e9f3547b5422ebe.png","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000858369551\/jmtH44P1_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000858369551\/jmtH44P1_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/42182691\/1384034403","profile_link_color":"009999","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_backgr
 ound_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:19:21 +0000 2013","id":410896615797702657,"id_str":"410896615797702657","text":"Just watched last 8 minutes of NCAA championship game. These kids demonstrated tremendous character, hard work &amp; determination.. #L1C4","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":458883165,"id_str":"458883165","name":"Robert Allen","screen_name":"RobertAllenII","location":"Prestonsburg, KY","url":null,"description":"Rob & Wil's dad, Kathy's husband, Card fan","protected":false,"followers_count":238,"
 friends_count":601,"listed_count":0,"created_at":"Mon Jan 09 01:54:38 +0000 2012","favourites_count":61,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":406,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000342250100\/ec78d06e9d970502c76597c1f3bb9fcf_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000342250100\/ec78d06e9d970502c76597c1f3bb9fcf_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/458883165\/1376954719","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","
 profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":{"type":"Point","coordinates":[37.66459563,-82.77131272]},"coordinates":{"type":"Point","coordinates":[-82.77131272,37.66459563]},"place":{"id":"7c92dd4a2245e8b8","url":"https:\/\/api.twitter.com\/1.1\/geo\/id\/7c92dd4a2245e8b8.json","place_type":"city","name":"Prestonsburg","full_name":"Prestonsburg, KY","country_code":"US","country":"United States","contained_within":[],"bounding_box":{"type":"Polygon","coordinates":[[[-82.79973,37.618509],[-82.79973,37.74677],[-82.703455,37.74677],[-82.703455,37.618509]]]},"attributes":{}},"contributors":null,"retweet_count":1,"favorite_count":1,"entities":{"hashtags":[{"text":"L1C4","indices":[133,138]}],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"lang":"en"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_men
 tions":[{"screen_name":"RobertAllenII","name":"Robert Allen","id":458883165,"id_str":"458883165","indices":[3,17]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682356056064,"id_str":"410898682356056064","text":"RT @sjissj: HELIOS Trailer with Siwon caps - 5 http:\/\/t.co\/p6uWfGyOp6","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":31679578,"id_str":"31679578","name":"\ube44\ube44 (vivi)","screen_name":"vivi200679","location":"Bandung,\uc778\ub3c4\ub124\uc2dc\uc544 Indonesia","url":null,"description":"im vivi ^_^ 34 yo [ELF 3 SUPER JUNIOR]","protected":false,"followers_count":48,"friends_count":77,"listed_count":0,"created_at":"Thu Apr 16 07:08:45 +0000 2009","favourites_count":74,"utc_offset":25200,"time_zone":"Jakarta","geo_enabled":true,"verified":false,"statuses_count":24891,"lang":"en","contributors_enabled":false,"is_transl
 ator":false,"profile_background_color":"FF6699","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/549757246\/20120508_superjunior_opera.jpg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/549757246\/20120508_superjunior_opera.jpg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000849310568\/653ecd2e81d9961f2a3cb58a53060946_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000849310568\/653ecd2e81d9961f2a3cb58a53060946_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/31679578\/1380831599","profile_link_color":"B40B43","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"E5507E","profile_text_color":"362720","profile_use_background_image":false,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coord
 inates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Wed Dec 11 21:54:15 +0000 2013","id":410890299263578112,"id_str":"410890299263578112","text":"HELIOS Trailer with Siwon caps - 5 http:\/\/t.co\/p6uWfGyOp6","source":"\u003ca href=\"http:\/\/www.myplume.com\/\" rel=\"nofollow\"\u003ePlume\u00a0for\u00a0Android\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":131052513,"id_str":"131052513","name":"Semi Hiatus!!","screen_name":"sjissj","location":"Houston, Texas - USA","url":"http:\/\/www.youtube.com\/sjissj2011","description":"83er. Forever ELF. Yesung & Eunhyuk biased, but I fangirl over ALL members! No follbacks! http:\/\/ask.fm\/sjissj","protected":false,"followers_count":55704,"friends_count":288,"listed_count":632,"created_at":"Fri Apr 09 03:45:36 +0000 2010","favourites_count":11,"utc_offset":32400,"time
 _zone":"Seoul","geo_enabled":false,"verified":false,"statuses_count":110452,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"1A1B1F","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme9\/bg.gif","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme9\/bg.gif","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000467787247\/45ee5ff9537cfaa683b7ba7f5fb8c58e_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000467787247\/45ee5ff9537cfaa683b7ba7f5fb8c58e_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/131052513\/1364788524","profile_link_color":"2FC2EF","profile_sidebar_border_color":"181A1E","profile_sidebar_fill_color":"252429","profile_text_color":"666666","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":18,"favorite_count":6,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[],"media":[{"id":410890299120955392,"id_str":"410890299120955392","indices":[35,57],"media_url":"http:\/\/pbs.twimg.com\/media\/BbPGjNDCMAAks6n.jpg","media_url_https":"https:\/\/pbs.twimg.com\/media\/BbPGjNDCMAAks6n.jpg","url":"http:\/\/t.co\/p6uWfGyOp6","display_url":"pic.twitter.com\/p6uWfGyOp6","expanded_url":"http:\/\/twitter.com\/sjissj\/status\/410890299263578112\/photo\/1","type":"photo","sizes":{"thumb":{"w":150,"h":150,"resize":"crop"},"small":{"w":340,"h":191,"resize":"fit"},"medium":{"w":599,"h":337,"resize":"fit"},"large":{"w":1024,"h":576,"resize":"fit"}}}]},"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"sjissj","name":"Semi Hia
 tus!!","id":131052513,"id_str":"131052513","indices":[3,10]}],"media":[{"id":410890299120955392,"id_str":"410890299120955392","indices":[47,69],"media_url":"http:\/\/pbs.twimg.com\/media\/BbPGjNDCMAAks6n.jpg","media_url_https":"https:\/\/pbs.twimg.com\/media\/BbPGjNDCMAAks6n.jpg","url":"http:\/\/t.co\/p6uWfGyOp6","display_url":"pic.twitter.com\/p6uWfGyOp6","expanded_url":"http:\/\/twitter.com\/sjissj\/status\/410890299263578112\/photo\/1","type":"photo","sizes":{"thumb":{"w":150,"h":150,"resize":"crop"},"small":{"w":340,"h":191,"resize":"fit"},"medium":{"w":599,"h":337,"resize":"fit"},"large":{"w":1024,"h":576,"resize":"fit"}},"source_status_id":410890299263578112,"source_status_id_str":"410890299263578112"}]},"favorited":false,"retweeted":false,"possibly_sensitive":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682356056065,"id_str":"410898682356056065","text":"I know they say that no one is perfect, but I swear she's perfect for me -MemphisMayFire","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":1878295094,"id_str":"1878295094","name":"Randa Gummer","screen_name":"ilucakeguz","location":"","url":null,"description":"If I could sum up my life in one line I would die of embarrassment.","protected":false,"followers_count":0,"friends_count":0,"listed_count":0,"created_at":"Wed Sep 18 06:20:17 +0000 2013","favourites_count":0,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":337,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","profile_image_url_https":"https:\/\/abs.twimg.com\/sticky\/default_profile_images\/default_profile_4_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":true,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682356043777,"id_str":"410898682356043777","text":"Ewww like we actually have to go swimming tomorrow? @Amytots3 @jessicatreacy2","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":1254365792,"id_str":"1254365792","name":"Danielle Mangan","screen_name":"DanielleMangan5","location":"Dublin, Ireland","url":null,"description":"Irish. 15. Stupid","protected":false,"followers_count":54,"friends_count":81,"listed_count":0,"created_at":"Sat Mar 09 13:21:28 +0000 2013","favourites_count":35,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":260,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"9900B8","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000117070867\/767bd8255e2
 70b4774ba54372ba3b69b.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000117070867\/767bd8255e270b4774ba54372ba3b69b.jpeg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000677642370\/8b9a44055c57843870382f838a701a45_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000677642370\/8b9a44055c57843870382f838a701a45_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1254365792\/1384506156","profile_link_color":"B40B43","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"DDEEF6","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":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls"
 :[],"user_mentions":[{"screen_name":"Amytots3","name":"Amy Durkin","id":257085418,"id_str":"257085418","indices":[52,61]},{"screen_name":"jessicatreacy2","name":"jessica treacy ","id":1024646322,"id_str":"1024646322","indices":[62,77]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682385428480,"id_str":"410898682385428480","text":"Mimpi semalam, kagawa bikin gol bagus.. Padahal kan lg gk ada pertandingan... :|","source":"\u003ca href=\"http:\/\/blackberry.com\/twitter\" rel=\"nofollow\"\u003eTwitter for BlackBerry\u00ae\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":230602503,"id_str":"230602503","name":"muhammad isa","screen_name":"mad7isa","location":"stretford end","url":null,"description":"live\u2022love\u2022laugh","protected":false,"followers_count":147,"friends_count":98,"listed_count":0,"created_at":"Sun Dec 26 03:07:45 +0000 2010","favourites_count":15,"utc_offset":25200,"time_zone":"Jakarta","geo_enabled":true,"verified":false,"statuses_count":7189,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"FDF1E1
 ","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000065215795\/eee313147c88cb8aff9b59a4fb21a3b1.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000065215795\/eee313147c88cb8aff9b59a4fb21a3b1.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000832450702\/cd1b054136dab73194e4055f07b32f4c_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000832450702\/cd1b054136dab73194e4055f07b32f4c_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/230602503\/1386602380","profile_link_color":"D00018","profile_sidebar_border_color":"FDF1E1","profile_sidebar_fill_color":"FDF1E1","profile_text_color":"D00018","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"p
 lace":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"id"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682377011200,"id_str":"410898682377011200","text":"-Si No Le #ContestO Seee #Desespera!","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":553683046,"id_str":"553683046","name":"\u2192Un Coro Des\u03b1fin\u03b1O!","screen_name":"Eii_marditEnana","location":"","url":null,"description":"Mis Dos Lokas #Heidy & #Maria Las adOro! :3","protected":false,"followers_count":768,"friends_count":543,"listed_count":0,"created_at":"Sat Apr 14 17:01:45 +0000 2012","favourites_count":430,"utc_offset":-10800,"time_zone":"Santiago","geo_enabled":true,"verified":false,"statuses_count":26214,"lang":"es","contributors_enabled":false,"is_translator":false,"profile_background_color":"1F1A1F","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme11\/bg.gif","profile_background_image
 _url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme11\/bg.gif","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000857555857\/dqo4ADrS_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000857555857\/dqo4ADrS_normal.jpeg","profile_link_color":"ED2FE0","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"EFEFEF","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":0,"favorite_count":0,"entities":{"hashtags":[{"text":"ContestO","indices":[10,19]},{"text":"Desespera","indices":[25,35]}],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"es"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682385399808,"id_str":"410898682385399808","text":"\u304a\u306f\u3088\u30fc\u3054\u3056\u3044\u307e\u3059(\uffe3\u25bd\uffe3)","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":2160564396,"id_str":"2160564396","name":"\u3042\u3089\u3057@GRCReW","screen_name":"Gr_xxx12_15","location":"","url":null,"description":"GReeeeN\u5c02\u7528\u57a2\u3002CREW\u306e\u8f2a\u3067\u5e83\u304c\u308a\u305f\u3044\u3002 \u30d5\u30a9\u30ed\u30fc\u3057\u3066\u304f\u308c\u305f\u3089\u30d5\u30a9\u30ed\u30fc\u3044\u304d\u307e\u3059\uff01\n\u545f\u304d\u306f\u4e0d\u5b9a\u671f\u306b\u66f4\u65b0\u3057\u3066\u307e\u30fc\u3059\u3002","protected":false,"followers_count":1029,"friends_count":1257,"listed_cou
 nt":0,"created_at":"Mon Oct 28 09:37:57 +0000 2013","favourites_count":10,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":292,"lang":"ja","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000796483414\/dfe6f4dbff34fcf07efd80bbe9b26c1e_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000796483414\/dfe6f4dbff34fcf07efd80bbe9b26c1e_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2160564396\/1384934142","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image
 ":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"ja"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682385403904,"id_str":"410898682385403904","text":"@LGHSOSL \n\n\u0628\u064a\u062a\u0631 \u0627\u062f\u0631\u064a\u0628\u0643 \u0642\u0627\u0639\u062f \u0628\u062f\u0648\u0627\u0646\u064a\u0647 \u0628\u0631\u0648\u062d\u0643 \u0634\u0627\u064a \u0648\u0632\u0642\u0627\u064a\u0631 \u0648 \u062d\u0627\u0637 \u0642\u0646\u0627\u0629 \u0627\u0644\u0630\u0647\u0628\u064a\u0647 \ud83d\ude02","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":410897216275247104,"in_reply_to_status_id_str":"410897216275247104","in_reply_to_user_id":386062695,"in_reply_to_user_id_str":"386062695","in_reply_to_screen_name":"LGHSOSL","user":{"id":371773810,"id_str":"371773810","name":"\u062e\u0636\u064a\u0631 \u0645\u0646 \u0627\u0644\u0633\u0645\u0627\u0648\u0647 ","screen_name":"Kodar7","location":"\u0634\u064a\u0643\u0627\u063a\u0648 kik:
 coffe666777","url":"http:\/\/ask.fm\/Kodar7","description":"\u0645\u063a\u0631\u062f\u0633\u0627\u062e\u0631... \u0623\u0646\u0627 \u0647\u0646\u0627... \u0644\u0644\u0641\u0631\u0641\u0634\u0647 \u0648\u0627\u0644\u0636\u062d\u0643 \u0648\u0634\u0643\u0631\u0627 \u0645\u0631\u0627\u0633\u0644 \u0642\u0646\u0627\u0629\/ FOX","protected":false,"followers_count":8617,"friends_count":198,"listed_count":15,"created_at":"Sun Sep 11 13:56:35 +0000 2011","favourites_count":1864,"utc_offset":10800,"time_zone":"Baghdad","geo_enabled":false,"verified":false,"statuses_count":44235,"lang":"ar","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000829696847\/2a9cbb2200e4b23372d9b96d2
 4cd26fe_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000829696847\/2a9cbb2200e4b23372d9b96d24cd26fe_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/371773810\/1385304743","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"LGHSOSL","name":"\u0628\u064a\u062a\u0631 \u0627\u0644\u062c\u0645\u064a\u0644 ","id":386062695,"id_str":"386062695","indices":[0,8]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"ar"}
-
-{"delete":{"status":{"id":351698623161053184,"user_id":1002448920,"id_str":"351698623161053184","user_id_str":"1002448920"}}}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682381217792,"id_str":"410898682381217792","text":"BEACH NIGHT","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":2217002497,"id_str":"2217002497","name":"Lucas Martinez","screen_name":"luca5m","location":"","url":null,"description":"Rapper\/Beatmaker\/Visionary\/Philosopher.\n518. Hooligan.","protected":false,"followers_count":129,"friends_count":212,"listed_count":0,"created_at":"Wed Nov 27 02:06:18 +0000 2013","favourites_count":972,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":444,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.c
 om\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000795641213\/0b21aee83b036092eec7a032d4a5970b_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000795641213\/0b21aee83b036092eec7a032d4a5970b_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2217002497\/1385518116","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retw
 eeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682364452864,"id_str":"410898682364452864","text":"Hoes be tellin me imm on sum Otha shit \ud83d\ude02","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":335819635,"id_str":"335819635","name":"R.I.P G ","screen_name":"FlockaGang","location":"On Da Field ","url":null,"description":"Football Is Everything #D1Bound.","protected":false,"followers_count":787,"friends_count":491,"listed_count":0,"created_at":"Fri Jul 15 08:51:03 +0000 2011","favourites_count":45,"utc_offset":-32400,"time_zone":"Alaska","geo_enabled":false,"verified":false,"statuses_count":31508,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"272C2E","profile_background_ima
 ge_url":"http:\/\/a0.twimg.com\/profile_background_images\/449346474\/428758_328760750504159_100001107101778_894290_706176515_n.jpg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/449346474\/428758_328760750504159_100001107101778_894290_706176515_n.jpg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000812534092\/6be740452978d7d285859a5de1808579_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000812534092\/6be740452978d7d285859a5de1808579_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/335819635\/1376868585","profile_link_color":"021D24","profile_sidebar_border_color":"0C232E","profile_sidebar_fill_color":"021017","profile_text_color":"E7EDD5","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":n
 ull,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682381615104,"id_str":"410898682381615104","text":"Poooxa e essa sexta feira que n\u00e3o chega ;((","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":2239659439,"id_str":"2239659439","name":"Maryanna Soares","screen_name":"maaryannasoares","location":"Espirito Santo","url":"https:\/\/www.facebook.com\/maryanna.soaress2?ref=tn_tnmn","description":"Pra quem tem f\u00e9 a vida n\u00e3o tem fim.","protected":false,"followers_count":42,"friends_count":76,"listed_count":0,"created_at":"Tue Dec 10 19:19:50 +0000 2013","favourites_count":13,"utc_offset":-7200,"time_zone":"Mid-Atlantic","geo_enabled":false,"verified":false,"statuses_count":52,"lang":"pt","contributors_enabled":fals
 e,"is_translator":false,"profile_background_color":"FDF1E1","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000146280536\/BF_3yJet.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000146280536\/BF_3yJet.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000855656460\/ffa62af778a378939abecbdded32c59e_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000855656460\/ffa62af778a378939abecbdded32c59e_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2239659439\/1386703695","profile_link_color":"D00018","profile_sidebar_border_color":"FDF1E1","profile_sidebar_fill_color":"FDF1E1","profile_text_color":"D00018","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinat
 es":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"pt"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682356043776,"id_str":"410898682356043776","text":"@ikkichihiro \u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059\u203c\ufe0e","source":"\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":410898194327810048,"in_reply_to_status_id_str":"410898194327810048","in_reply_to_user_id":197317743,"in_reply_to_user_id_str":"197317743","in_reply_to_screen_name":"ikkichihiro","user":{"id":104454570,"id_str":"104454570","name":"\u30eb\u30d1\u30f320\u4e16@\u30e8\u30e8\u30cd\u30cd\u516c\u958b\u307e\u3067\u3042\u306817\u65e5","screen_name":"rupan_20","location":"\u5927\u962a\u5e9c","url":"http:\/\/ameblo.jp\/rupan20\/","description":"\u8d85!A&G+\u306b\u6295\u7a3f\u30fb\u5b9f\u6cc1\u3057\u305f\u308a\u3001\u6a2a\u6d5cDeNA\u306e\u8a66\u5408\u7d4c\u904e\u306a\u3069\u3064\u3076\u3084\u3044\u305f\u308a\u3057\u3066\u307e\u3059\u3002\u58f0\u51
 2a\u3067\u306f\u6d25\u7530\u7f8e\u6ce2\u3055\u3093\u3001\u8af8\u661f\u3059\u307f\u308c\u3055\u3093\u3001\u6728\u6238\u8863\u5439\u3055\u3093\u3001\u5927\u6a4b\u5f69\u9999\u3055\u3093\u3001\u9ed2\u6ca2\u3068\u3082\u3088\u3055\u3093\u3001\u6c34\u702c\u3044\u306e\u308a\u3055\u3093\u3001\u798f\u539f\u7dbe\u9999\u3055\u3093\u3001\u96e8\u5bae\u5929\u3055\u3093\u3001\u4f0a\u85e4\u672a\u6765\u3055\u3093\u3001\u52a0\u9688\u4e9c\u8863\u3055\u3093\u3001\u6cbc\u5009\u611b\u7f8e\u3055\u3093\u3001\u7a2e\u7530\u68a8\u6c99\u3055\u3093\u7b49\u3092\u5fdc\u63f4\u3057\u3066\u3044\u307e\u3059!! \u898f\u5236\u57a2\uff1a@rupan_20_01","protected":false,"followers_count":957,"friends_count":1213,"listed_count":62,"created_at":"Wed Jan 13 11:26:00 +0000 2010","favourites_count":343,"utc_offset":-36000,"time_zone":"Hawaii","geo_enabled":true,"verified":false,"statuses_count":210545,"lang":"ja","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url"
 :"http:\/\/a0.twimg.com\/profile_background_images\/378800000067895469\/5870d479b8d20629003df84fc9207a22.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000067895469\/5870d479b8d20629003df84fc9207a22.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000811454365\/818d326b9df8806caff354a9a7859f7a_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000811454365\/818d326b9df8806caff354a9a7859f7a_normal.png","profile_link_color":"0084B4","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","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":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"use
 r_mentions":[{"screen_name":"ikkichihiro","name":"\u4e00\u6728\u5343\u6d0b\uff08\u3044\u3063\u304d\u3061\u3072\u308d\uff09","id":197317743,"id_str":"197317743","indices":[0,12]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"ja"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682351857664,"id_str":"410898682351857664","text":"@Abbikidrauhl followed (:","source":"web","truncated":false,"in_reply_to_status_id":410898313542508545,"in_reply_to_status_id_str":"410898313542508545","in_reply_to_user_id":511016804,"in_reply_to_user_id_str":"511016804","in_reply_to_screen_name":"Abbikidrauhl","user":{"id":1496123768,"id_str":"1496123768","name":"\u2729","screen_name":"BiebsChapame","location":"Lou se la come Harry se la da.","url":null,"description":"\u00ab Y de repente te das cuenta que no es la gravedad la que te sujeta a la tierra, si no ellos \u00bb jdb \u2022 1d \u2022 larry","protected":false,"followers_count":1356,"friends_count":1182,"listed_count":5,"created_at":"Sun Jun 09 17:12:56 +0000 2013","favourites_count":34,"utc_offset":-7200,"time_zone":"Brasilia","geo_enabled":true,"verified":false,"statuses_count":10633,"lang":"es","contributors_enabled":false,"is_translator":false,"profile_background_
 color":"FFFFFF","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000143417113\/zyNLwu6W.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000143417113\/zyNLwu6W.jpeg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000834404800\/923d4b521f57640e828597841ddfb366_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000834404800\/923d4b521f57640e828597841ddfb366_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1496123768\/1386288139","profile_link_color":"9C9A9C","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","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,"re
 tweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"Abbikidrauhl","name":"Bizzle\u265b.","id":511016804,"id_str":"511016804","indices":[0,13]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682385424384,"id_str":"410898682385424384","text":"@hectortreto1 jajajj que?","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":410893428713467904,"in_reply_to_status_id_str":"410893428713467904","in_reply_to_user_id":288989854,"in_reply_to_user_id_str":"288989854","in_reply_to_screen_name":"hectortreto1","user":{"id":195052465,"id_str":"195052465","name":"F\u00e1tima Ch\u00e1vez","screen_name":"fatimachavezz","location":"Mexico","url":null,"description":null,"protected":false,"followers_count":571,"friends_count":301,"listed_count":1,"created_at":"Sat Sep 25 17:34:22 +0000 2010","favourites_count":507,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":true,"verified":false,"statuses_count":37233,"lang":"es","contributors_enabled":false,"is_translator":false,"profile_background_color":"FF6
 699","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000120131202\/e38f9b99e2c5c66ecf9e043b709c1d3b.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000120131202\/e38f9b99e2c5c66ecf9e043b709c1d3b.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000800147382\/ce76dcb1a36b9e3a2fa034194bbb11df_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000800147382\/ce76dcb1a36b9e3a2fa034194bbb11df_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/195052465\/1380465166","profile_link_color":"B40B43","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"E5507E","profile_text_color":"362720","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":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"hectortreto1","name":"Hector\u26bd\ue404","id":288989854,"id_str":"288989854","indices":[0,13]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"es"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682377408512,"id_str":"410898682377408512","text":"RT @mehmetbaransu: Tam 6 y\u0131ld\u0131r degi\u015fik gruplar\u0131n \"mehmet baransunun foyas\u0131n\u0131 ortaya c\u0131kar\u0131yoruz, yak\u0131nda\" s\u00f6zlerinden yorulduk. \u00c7\u0131kar\u0131p bi\u2026","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":2191888973,"id_str":"2191888973","name":"toruks","screen_name":"ttoruks","location":"","url":null,"description":null,"protected":false,"followers_count":43,"friends_count":112,"listed_count":0,"created_at":"Fri Nov 22 20:59:25 +0000 2013","favourites_count":33,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":244,"lang":"tr","
 contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000775732264\/abf1d532cc65ab14b774696dd50c459d_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000775732264\/abf1d532cc65ab14b774696dd50c459d_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2191888973\/1385155803","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributo
 rs":null,"retweeted_status":{"created_at":"Wed Dec 11 21:18:08 +0000 2013","id":410881209368346624,"id_str":"410881209368346624","text":"Tam 6 y\u0131ld\u0131r degi\u015fik gruplar\u0131n \"mehmet baransunun foyas\u0131n\u0131 ortaya c\u0131kar\u0131yoruz, yak\u0131nda\" s\u00f6zlerinden yorulduk. \u00c7\u0131kar\u0131p bir rahatlasan\u0131z","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\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":182536597,"id_str":"182536597","name":"mehmetbaransu","screen_name":"mehmetbaransu","location":"","url":null,"description":null,"protected":false,"followers_count":386872,"friends_count":212,"listed_count":1463,"created_at":"Tue Aug 24 20:46:05 +0000 2010","favourites_count":4,"utc_offset":-18000,"time_zone":"Quito","geo_enabled":false,"verified
 ":false,"statuses_count":12698,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","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","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000452608574\/ec67f19cea06d982f028caa2f22325dc_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000452608574\/ec67f19cea06d982f028caa2f22325dc_normal.jpeg","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":274,"favorite_count
 ":65,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"lang":"tr"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"mehmetbaransu","name":"mehmetbaransu","id":182536597,"id_str":"182536597","indices":[3,17]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"tr"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682377027584,"id_str":"410898682377027584","text":"RT @7raniagirls: Photoset: Random gifs of T-ae \u2192\u00a0requested by anonymous http:\/\/t.co\/z5oDjLFyHL","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":1108873818,"id_str":"1108873818","name":"t-aewesome\u2605","screen_name":"ptxtaeeun","location":"dm","url":"http:\/\/31.media.tumblr.com\/87867f1b6ee0e68ed0f854603804b215\/tumblr_mhzw51Hmch1rycqyko1_250.gif","description":"\u263c roleplayer of Rania's T-ae ; 94liner ; eggyeol\u2661 0122 ; my lost sister boa c; #spamfamily\u2665 bed man jjin #aeji \u263c","protected":false,"followers_count":268,"friends_count":171,"listed_count":2,"created_at":"Mon Jan 21 12:19:19 +0000 2013","favourites_count":239,"utc_offset":25200,"time_zone":"Bangkok","geo_enabled":false,"verified":false,"
 statuses_count":10537,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000052119441\/0cb695e044351147e28cf4bd19b20c6f.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000052119441\/0cb695e044351147e28cf4bd19b20c6f.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000587940832\/06bde6b6939c6c7ce23842f153e0aa0b_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000587940832\/06bde6b6939c6c7ce23842f153e0aa0b_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1108873818\/1376576751","profile_link_color":"0084B4","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","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,"retweeted_status":{"created_at":"Sat Dec 07 19:07:09 +0000 2013","id":409398692018683904,"id_str":"409398692018683904","text":"Photoset: Random gifs of T-ae \u2192\u00a0requested by anonymous http:\/\/t.co\/z5oDjLFyHL","source":"\u003ca href=\"http:\/\/www.tumblr.com\/\" rel=\"nofollow\"\u003eTumblr\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":336651153,"id_str":"336651153","name":"[\u2605] 7-RaNiAgirls [\u2605]","screen_name":"7raniagirls","location":"South Korea","url":"http:\/\/7raniagirls.tumblr.com","description":"Your 1st source on Tumblr for RaNia Updates. Everything about RaNiA.","protected":false,"followers_count":1218,"friends_count":312,"listed_count":18,"created_at":"Sat 
 Jul 16 17:24:04 +0000 2011","favourites_count":88,"utc_offset":-28800,"time_zone":"Pacific Time (US & Canada)","geo_enabled":false,"verified":false,"statuses_count":14606,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"291507","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000024964186\/b6a9d577d0ad1642c1df2b6ecb714628.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000024964186\/b6a9d577d0ad1642c1df2b6ecb714628.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000697404343\/5ca3495ecee7b2c73a5081da02e068be_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000697404343\/5ca3495ecee7b2c73a5081da02e068be_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/336651153\/1373918360","profile_link_color":"EB1A44","profile_sidebar_border_colo
 r":"FFFFFF","profile_sidebar_fill_color":"FFD6D8","profile_text_color":"540000","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":4,"favorite_count":1,"entities":{"hashtags":[],"symbols":[],"urls":[{"url":"http:\/\/t.co\/z5oDjLFyHL","expanded_url":"http:\/\/tmblr.co\/ZZwZAy10Y2DJ-","display_url":"tmblr.co\/ZZwZAy10Y2DJ-","indices":[55,77]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false,"lang":"en"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[{"url":"http:\/\/t.co\/z5oDjLFyHL","expanded_url":"http:\/\/tmblr.co\/ZZwZAy10Y2DJ-","display_url":"tmblr.co\/ZZwZAy10Y2DJ-","indices":[72,94]}],"user_mentions":[{"screen_name":"7raniagirls","name":"[\u2605] 7-RaNiAgirls [\u2605]","id":336651153,"id_str":"336651153","indices":[3,15]}]},"f
 avorited":false,"retweeted":false,"possibly_sensitive":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682356445184,"id_str":"410898682356445184","text":"Tengo un short para la diosa de Juli","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":944885582,"id_str":"944885582","name":"SoloDeMari\u2665","screen_name":"Mic_van155","location":" #BIEBERFEVER \/ 7BA5590F","url":"http:\/\/ask.fm\/MicaaLALALA","description":"PITTI Y VALEN PRESIDENTES \/ believe \/  Belieber forever\u2665 \/propiedad de ju sos mia ok?","protected":false,"followers_count":459,"friends_count":628,"listed_count":0,"created_at":"Tue Nov 13 00:29:09 +0000 2012","favourites_count":148,"utc_offset":-7200,"time_zone":"Brasilia","geo_enabled":true,"verified":false,"statuses_count":37936,"lang":"es","contributors_
 enabled":false,"is_translator":false,"profile_background_color":"C750B3","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000115241814\/b55aa89bce9177a7cc33b736e2be692e.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000115241814\/b55aa89bce9177a7cc33b736e2be692e.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000768428887\/5fef37b8bf774d4a679c66c0ff222e09_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000768428887\/5fef37b8bf774d4a679c66c0ff222e09_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/944885582\/1386698793","profile_link_color":"B82CA3","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"E5507E","profile_text_color":"362720","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_re
 quest_sent":null,"notifications":null},"geo":{"type":"Point","coordinates":[-37.9737196,-57.5469664]},"coordinates":{"type":"Point","coordinates":[-57.5469664,-37.9737196]},"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"es"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682381611009,"id_str":"410898682381611009","text":"RT @7Stefane: @BrizaCosta kkkkkkkkkkkkk pronto.. entao vamos juntas :))","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":255639042,"id_str":"255639042","name":"Briiza","screen_name":"BrizaCosta","location":"","url":null,"description":"bELO hORIZONTE - 18 - SOLTEIRISSIMA.https:\/\/www.facebook.com\/briza.m.7 - INSTAGRAM -BrizaCosta- http:\/\/briiiza.tumblr.com\/","protected":false,"followers_count":154,"friends_count":139,"listed_count":0,"created_at":"Mon Feb 21 19:35:14 +0000 2011","favourites_count":329,"utc_offset":-10800,"time_zone":"Santiago","geo_enabled":true,"verified":false,"statuses_count":4416,"lang":"pt","contributors_enabled":false,"is_translator":false,"profile_background_color":"1A1B1F","profile_background_image_ur
 l":"http:\/\/a0.twimg.com\/profile_background_images\/378800000140311699\/nR_srvPm.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000140311699\/nR_srvPm.jpeg","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000834045951\/8545c8bff3119174b3572e4a83619bcc_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000834045951\/8545c8bff3119174b3572e4a83619bcc_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/255639042\/1386798994","profile_link_color":"2FC2EF","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","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,"retweeted_status":{"created_at":"Wed Dec 11 2
 2:26:41 +0000 2013","id":410898460607795201,"id_str":"410898460607795201","text":"@BrizaCosta kkkkkkkkkkkkk pronto.. entao vamos juntas :))","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":410898101130371072,"in_reply_to_status_id_str":"410898101130371072","in_reply_to_user_id":255639042,"in_reply_to_user_id_str":"255639042","in_reply_to_screen_name":"BrizaCosta","user":{"id":1434570943,"id_str":"1434570943","name":"Lorah\u270c","screen_name":"7Stefane","location":"","url":null,"description":"snap stete18   wpp 31 91159227","protected":false,"followers_count":202,"friends_count":293,"listed_count":0,"created_at":"Fri May 17 02:51:40 +0000 2013","favourites_count":722,"utc_offset":-7200,"time_zone":"Brasilia","geo_enabled":true,"verified":false,"statuses_count":3521,"lang":"pt","contributors_enabled":false,"is_translator":false,"profile_background_color":"E5A5E8","pr
 ofile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000089444188\/d7515821dc470cdf8bfef09ed07face9.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000089444188\/d7515821dc470cdf8bfef09ed07face9.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000830106607\/24cd404a311fda28d9edfc4961204994_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000830106607\/24cd404a311fda28d9edfc4961204994_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/1434570943\/1385844046","profile_link_color":"AF74C2","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"DDEEF6","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":{"type":"Point","coordinates":
 [-19.8762391,-43.9072632]},"coordinates":{"type":"Point","coordinates":[-43.9072632,-19.8762391]},"place":{"id":"d9d978b087a92583","url":"https:\/\/api.twitter.com\/1.1\/geo\/id\/d9d978b087a92583.json","place_type":"city","name":"Belo Horizonte","full_name":"Belo Horizonte, Minas Gerais","country_code":"BR","country":"Brasil","contained_within":[],"bounding_box":{"type":"Polygon","coordinates":[[[-44.062788999999995,-20.059815999999998],[-44.062788999999995,-19.777568],[-43.856856,-19.777568],[-43.856856,-20.059815999999998]]]},"attributes":{}},"contributors":null,"retweet_count":1,"favorite_count":1,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"BrizaCosta","name":"Briiza","id":255639042,"id_str":"255639042","indices":[0,11]}]},"favorited":false,"retweeted":false,"lang":"pt"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"7Stefane","name":"Lorah\u270c","id":1434570943,"id_str"
 :"1434570943","indices":[3,12]},{"screen_name":"BrizaCosta","name":"Briiza","id":255639042,"id_str":"255639042","indices":[14,25]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"pt"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682373218305,"id_str":"410898682373218305","text":"I Wonder When Is Our Christmas Break ?","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":401100026,"id_str":"401100026","name":"free haddy & kev \u2665 ","screen_name":"ActLikeUMaShadw","location":"","url":null,"description":"aint the same , better than the rest \u2665","protected":false,"followers_count":466,"friends_count":345,"listed_count":0,"created_at":"Sun Oct 30 01:58:31 +0000 2011","favourites_count":144,"utc_offset":-32400,"time_zone":"Alaska","geo_enabled":true,"verified":false,"statuses_count":37597,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"FF6699","profile_backg
 round_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/725652190\/1edd9224aaae5916cc420e1182eb7510.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/725652190\/1edd9224aaae5916cc420e1182eb7510.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000858290476\/vbfsjokp_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000858290476\/vbfsjokp_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/401100026\/1386679088","profile_link_color":"B40B43","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"E5507E","profile_text_color":"362720","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":0,"favorite_count":0,"entities":{"h
 ashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682360242177,"id_str":"410898682360242177","text":"\" \u0642\u0648\u0644\u0648\u0627 \u0644\u0627 \u0627\u0644\u0647 \u0627\u0644\u0627 \u0627\u0644\u0644\u0647 \u062a\u0641\u0644\u062d\u0648\u0627: \u0644\u0627 \u0625\u0644\u0647 \u0625\u0644\u0627 \u0627\u0644\u0644\u0647 \"..\n \u0634\u0627\u0647\u062f: http:\/\/t.co\/kDfXpS4fgM \n#\u063a\u0631\u062f_\u0628\u0630\u0643\u0631_\u0627\u0644\u0644\u0647\n#\u0643\u0646\u0632_\u0627\u0644\u0645\u0633\u0644\u0645","source":"\u003ca href=\"http:\/\/knz.tv\" rel=\"nofollow\"\u003e\u0643\u0646\u0632 \u0627\u0644\u0645\u0633\u0644\u0645\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":1656981756,"id_str":"1656981756","name":"\u00b0\u00b0`\u0645\u0646\u064a\u064a\u064a\u064a\u064a\u0631\u0647","screen_name":"nnoonn009988","location":"","u
 rl":null,"description":"\ufefb \u0634\u064a\u0621 \u062c\u062f\u064a\u062f \u060c \u0633\u0650\u06c6\u0649 \u0623\u0646 : \u0627\u0639\u0645\u0622\u0631\u0646\u0627 \u062a\u0632\u064a\u062f \u0648 \u0622\u062c\u0644\u0646\u0627 \u064a\u0642\u062a\u0631\u0628\u060c \u0648\u064e\u0644\u0627 \u0632\u0644\u0646\u0627 \u0641\u0650\u064a \u062d\u064e\u0642 \u0631\u0628\u0651\u0646\u0627 \u0645\u0642\u0635\u0631\u064a\u0646 : \u0641\u064e \u064a\u0627\u0631\u0628 \u0646\u0633\u0623\u0644\u0643 \u062a\u0648\u0628\u0629 \u0644\u0627 \u064a\u0639\u0642\u0628\u0647\u0627 \u0630\u0646\u0628\u0651 ..#\u0627\u0644\u0628\u0627\u062d\u0647","protected":false,"followers_count":1087,"friends_count":1531,"listed_count":1,"created_at":"Fri Aug 09 05:53:59 +0000 2013","favourites_count":346,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":3313,"lang":"ar","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_ima
 ge_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000817195495\/2ebce05382b643cd6d2e259fed25446f_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000817195495\/2ebce05382b643cd6d2e259fed25446f_normal.jpeg","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[{"text":"\u063a\u0631\u062f_\u0628\u0630\u0643\u0631_\u0627\u0644\u0644\u0647","indices":[83,97]},{"text":"\u0643\u0646\u0632_\
 u0627\u0644\u0645\u0633\u0644\u0645","indices":[98,109]}],"symbols":[],"urls":[{"url":"http:\/\/t.co\/kDfXpS4fgM","expanded_url":"http:\/\/knz.tv\/i\/2007\/311781","display_url":"knz.tv\/i\/2007\/311781","indices":[59,81]}],"user_mentions":[]},"favorited":false,"retweeted":false,"possibly_sensitive":false,"filter_level":"medium","lang":"ar"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682377433088,"id_str":"410898682377433088","text":"RT @anabenito98: @Lau_Danceny \u00bfsi? \u00a1\u00a1Yo quiero verla !!","source":"\u003ca href=\"https:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for  Android\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":2188914426,"id_str":"2188914426","name":"Laura Ca\u00f1ete","screen_name":"Lau_Danceny","location":"Siempre sonriendo. Lovin' you\u2764","url":null,"description":"Amante del ballet. No miro hacia atr\u00e1s ni para coger impulso. Viviendo la vida a mi manera.","protected":false,"followers_count":100,"friends_count":131,"listed_count":0,"created_at":"Mon Nov 11 19:44:03 +0000 2013","favourites_count":435,"utc_offset":null,"time_zone":null,"geo_enabled":false,"verified":false,"statuses_count":1069,"lang"
 :"es","contributors_enabled":false,"is_translator":false,"profile_background_color":"0DFF00","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/378800000123026807\/80b811998faf3009d175d983f5c54c1c.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000123026807\/80b811998faf3009d175d983f5c54c1c.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000770659515\/ccd382babad7a20f250bcd3e32eac19d_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000770659515\/ccd382babad7a20f250bcd3e32eac19d_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/2188914426\/1384208534","profile_link_color":"AD0000","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"7AC3EE","profile_text_color":"3D1957","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"follo
 wing":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweeted_status":{"created_at":"Wed Dec 11 19:03:57 +0000 2013","id":410847441882062848,"id_str":"410847441882062848","text":"@Lau_Danceny \u00bfsi? \u00a1\u00a1Yo quiero verla !!","source":"\u003ca href=\"http:\/\/twitter.com\/download\/iphone\" rel=\"nofollow\"\u003eTwitter for iPhone\u003c\/a\u003e","truncated":false,"in_reply_to_status_id":410846643148566528,"in_reply_to_status_id_str":"410846643148566528","in_reply_to_user_id":2188914426,"in_reply_to_user_id_str":"2188914426","in_reply_to_screen_name":"Lau_Danceny","user":{"id":418885161,"id_str":"418885161","name":"Ciel","screen_name":"anabenito98","location":"","url":null,"description":"Shooby do bop!","protected":false,"followers_count":423,"friends_count":296,"listed_count":1,"created_at":"Tue Nov 22 17:54:41 +0000 2011","favourites_count":161,"utc_offset":null,"time_zone":null,"geo_enabled":false,"ve
 rified":false,"statuses_count":3173,"lang":"es","contributors_enabled":false,"is_translator":false,"profile_background_color":"131516","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_background_images\/779918367\/dd5336260138f3160a1d9288a1078e69.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/779918367\/dd5336260138f3160a1d9288a1078e69.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000775347009\/f9de8cb3d1da431a315fd7f464404e95_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000775347009\/f9de8cb3d1da431a315fd7f464404e95_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/418885161\/1385146441","profile_link_color":"009999","profile_sidebar_border_color":"FFFFFF","profile_sidebar_fill_color":"FFFFFF","profile_text_color":"333333","profile_use_background_image":true,"default_profile":false,"default_prof
 ile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":null,"coordinates":null,"place":null,"contributors":null,"retweet_count":0,"favorite_count":1,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"Lau_Danceny","name":"Laura Ca\u00f1ete","id":2188914426,"id_str":"2188914426","indices":[0,12]}]},"favorited":false,"retweeted":false,"lang":"es"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"anabenito98","name":"Ciel","id":418885161,"id_str":"418885161","indices":[3,15]},{"screen_name":"Lau_Danceny","name":"Laura Ca\u00f1ete","id":2188914426,"id_str":"2188914426","indices":[17,29]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"es"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682381627392,"id_str":"410898682381627392","text":"RT @Sherrii_bee: Cece have a big slipper","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":932836074,"id_str":"932836074","name":"\u2665 Akelah \u2665","screen_name":"1_Sickbad","location":"","url":null,"description":"\u2665 Zan Zan \u2665 Boozie \u2665 Megz \u2665 Lil Twist Followed Me \u2665 24.08.13 \u2665","protected":false,"followers_count":715,"friends_count":685,"listed_count":1,"created_at":"Wed Nov 07 20:09:56 +0000 2012","favourites_count":1579,"utc_offset":-14400,"time_zone":"Atlantic Time (Canada)","geo_enabled":true,"verified":false,"statuses_count":23867,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"FF6699","profile_background_image_url":"http:\/\/a0.twimg.com\/profile_bac
 kground_images\/378800000119610697\/71953b09026a2bb076f665ff7df109ae.jpeg","profile_background_image_url_https":"https:\/\/si0.twimg.com\/profile_background_images\/378800000119610697\/71953b09026a2bb076f665ff7df109ae.jpeg","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000831711968\/99adfe2ef44f6cc46d0312f4cf380bf7_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000831711968\/99adfe2ef44f6cc46d0312f4cf380bf7_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/932836074\/1386231066","profile_link_color":"B40B43","profile_sidebar_border_color":"000000","profile_sidebar_fill_color":"E5507E","profile_text_color":"362720","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 21:36:23 +0000 2013","id":410885801002934273,"id_str":"410885801002934273","text":"Cece have a big slipper","source":"\u003ca href=\"http:\/\/twitter.com\/#!\/download\/ipad\" rel=\"nofollow\"\u003eTwitter for iPad\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":422319652,"id_str":"422319652","name":"\u2665IiTs Mah Brithday\u2665","screen_name":"Sherrii_bee","location":"#St.Lucia","url":null,"description":"Hustle! Loyalty! Respect!..#MottoFiLife !...Really don't care how yuu haterz feel !!....ZanZan\u2665 Shanii\u2665 Trudy\u2665 Rochii\u2665 Kyma\u2665 #LovinqLife\u2665\u2665..#TeamFollowBack !!!","protected":false,"followers_count":98,"friends_count":193,"listed_count":0,"created_at":"Sun Nov 27 03:40:36 +0000 2011","favourites_count":18,"utc_offset":-21600,"time_zone":"Central Time (US & Canada)","geo_enabled":false,"verifie
 d":false,"statuses_count":1199,"lang":"en","contributors_enabled":false,"is_translator":false,"profile_background_color":"642D8B","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme10\/bg.gif","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/theme10\/bg.gif","profile_background_tile":true,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000830171644\/381a346515d969a38edc2b1fabafc442_normal.jpeg","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000830171644\/381a346515d969a38edc2b1fabafc442_normal.jpeg","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/422319652\/1386774609","profile_link_color":"FF0000","profile_sidebar_border_color":"65B0DA","profile_sidebar_fill_color":"7AC3EE","profile_text_color":"3D1957","profile_use_background_image":true,"default_profile":false,"default_profile_image":false,"following":null,"follow_request_sent":null,"notifications":null},"geo":nul
 l,"coordinates":null,"place":null,"contributors":null,"retweet_count":1,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[]},"favorited":false,"retweeted":false,"lang":"en"},"retweet_count":0,"favorite_count":0,"entities":{"hashtags":[],"symbols":[],"urls":[],"user_mentions":[{"screen_name":"Sherrii_bee","name":"\u2665IiTs Mah Brithday\u2665","id":422319652,"id_str":"422319652","indices":[3,15]}]},"favorited":false,"retweeted":false,"filter_level":"medium","lang":"en"}
-
-{"created_at":"Wed Dec 11 22:27:34 +0000 2013","id":410898682381631488,"id_str":"410898682381631488","text":"RT @6omoooh: \u064a\u064e \u0631\u0628 \u0641\u064a \u0643\u0644 \u062f\u0642\u064a\u0640\u0642\u0647 \u062a\u0640\u0645\u0631\u0651 \u0639\u0644\u0649 [ \u0623\u0645\u0651\u0640\u0647\u0627\u062a\u0646\u0627]\n\u0627\u0641\u062a\u0640\u062d \u0644\u0647\u0640\u0646 \u0628\u0622\u0628 \u0631\u0632\u0642 \u0644\u0622 \u064a\u0633\u0640\u062f\u0651\n\u0648\u062f\u0639\u0640\u0648\u0629 \u0644\u0622 \u062a\u0640\u0631\u062f\n\u0648\u062d\u0642\u0640\u0642 \u0644\u0647\u0646 \u0645\u064e \u064a\u0640\u0644\u062c \u0641\u0650 \u062e\u0622\u0637\u0640\u0631\u0647\u0646\n\u0648\u0623\u062c\u0639\u0644 \u0627\u0644\u062c\u0640\u0646\u0629\u2026","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":543729073,"id_str":"543729073","name":" \u0645\u064a\u0645\u0648","screen_name":"memo68829379","location":"","url":null,"description":"\u0644\u0627 \u0625\u0644\u0647 \u0625\u0644\u0627 \u0623\u0646\u062a \u0633\u0628\u062d\u0627\u0646\u0643 \u0623\u0646\u064a \u0643\u0646\u062a \u0645\u0646 \u0627\u0644\u0638\u0627\u0644\u0645\u064a\u0646 .... \u0623\u0632\u0631\u0641 \u0645\u0627 \u064a\u0631\u0648\u0642 \u0644\u064a","protected":false,"followers_count":498,"friends_count":586,"listed_count":0,"created_at":"Mon Apr 02 20:56:09 +0000 2012","favourites_count":51,"utc_offset":null,"time_zone":null,"geo_enabled":true,"verified":false,"statuses_count":1884,"lang":"ar","contributors_enabled":false,"is_translator":false,"profile_background_color":"C0DEED","profile_background_image_url":"http:\/\/abs.twimg.com\/images\/themes\/theme1\/bg.png","profile_background_image_url_https":"https:\/\/abs.twimg.com\/images\/themes\/them
 e1\/bg.png","profile_background_tile":false,"profile_image_url":"http:\/\/pbs.twimg.com\/profile_images\/378800000415424776\/5bbe738735084febe1bd0ddeb421745a_normal.png","profile_image_url_https":"https:\/\/pbs.twimg.com\/profile_images\/378800000415424776\/5bbe738735084febe1bd0ddeb421745a_normal.png","profile_banner_url":"https:\/\/pbs.twimg.com\/profile_banners\/543729073\/1385894360","profile_link_color":"0084B4","profile_sidebar_border_color":"C0DEED","profile_sidebar_fill_color":"DDEEF6","profile_text_color":"333333","profile_use_background_image":true,"default_profile":true,"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 00:49:52 +0000 2013","id":410572103751303168,"id_str":"410572103751303168","text":"\u064a\u064e \u0631\u0628 \u0641\u064a \u0643\u0644 \u062f\u0642\u064a\u0640\u0642\u0647 \u062a\u0640\u0645\u0631\u0651 \u0
 639\u0644\u0649 [ \u0623\u0645\u0651\u0640\u0647\u0627\u062a\u0646\u0627]\n\u0627\u0641\u062a\u0640\u062d \u0644\u0647\u0640\u0646 \u0628\u0622\u0628 \u0631\u0632\u0642 \u0644\u0622 \u064a\u0633\u0640\u062f\u0651\n\u0648\u062f\u0639\u0640\u0648\u0629 \u0644\u0622 \u062a\u0640\u0631\u062f\n\u0648\u062d\u0642\u0640\u0642 \u0644\u0647\u0646 \u0645\u064e \u064a\u0640\u0644\u062c \u0641\u0650 \u062e\u0622\u0637\u0640\u0631\u0647\u0646\n\u0648\u0623\u062c\u0639\u0644 \u0627\u0644\u062c\u0640\u0646\u0629 \u0644\u0647\u0640\u0646 \u062f\u0622\u0631 \u062e\u0640\u0644\u062f","source":"\u003ca href=\"http:\/\/twitter.com\/download\/android\" rel=\"nofollow\"\u003eTwitter for Android\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":1330725920,"id_str":"1330725920","name":"\u2606\u266c\u00a4 \u0627\u0644\u0640\u062d\u064e\u0622\u0644\u0650\u0640\u0
 645\u0629 \u00a4 \u266c\u2606","screen_name":"6omoooh","location":"\u064a\u0640\u0633\u062a\u0637\u0650\u064a\u0639\u064e \u0647\u0640\u0632\u0650\u064a\u0640\u0645\u062a\u064a\u0650 \u0625\u0644\u0627\u0651 \u0623\u0646\u0627\u064d","url":"http:\/\/ask.fm\/hotmsLolo","description":"\u200f\u200f\u0623\u064e\u064a\u0640\u0642\u064e\u0646\u0640\u062a\u064f \u0623\u0646\u0651\u064e \u0627\u0644\u062a\u0640\u0633\u0639\u064e \u0648\u0627\u0644\u062b\u0640\u0644\u0627\u062b\u064a\u0652\u0646 ..\u0644\u0640\u0645\u0652 \u064a\u064f\u062e\u0640\u0644\u0642\u064e\u0646 \u0628\u0640\u0639\u0652\u062f ...\u0648\u0623\u062f\u0631\u0643\u0640\u062a \u0623\u0646 \u0644\u0627 \u0623\u062d\u0640\u062f","protected":false,"followers_count":49149,"friends_count":39050,"listed_count":81,"created_at":"Sat Apr 06 04:55:56 +0000 2013","favourites_count":314,"utc_offset":null,"time_zone":n

<TRUNCATED>

[50/71] [abbrv] git commit: Made some tweaks and now provider is running single-threaded

Posted by sb...@apache.org.
Made some tweaks and now provider is running single-threaded

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572843 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/e6f3d4e3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/e6f3d4e3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/e6f3d4e3

Branch: refs/heads/master
Commit: e6f3d4e3ec458cff937521ecee8f7deb8c412298
Parents: ce6961d
Author: sblackmon <sb...@unknown>
Authored: Fri Feb 28 07:23:23 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Fri Feb 28 07:23:23 2014 +0000

----------------------------------------------------------------------
 .../streams/data/moreover/MoreoverClient.java   |  2 +-
 .../streams/data/moreover/MoreoverProvider.java | 20 ++++---
 .../data/moreover/MoreoverProviderTask.java     | 21 ++++----
 .../streams/data/moreover/MoreoverResult.java   | 55 +++++++++++++-------
 4 files changed, 61 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e6f3d4e3/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
index ec968fe..2e63d9b 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
@@ -46,7 +46,7 @@ public class MoreoverClient {
     }
 
     public MoreoverResult getNextBatch() throws IOException{
-        //logger.debug("Getting next results for {} {} {}", this.id, this.apiKey, this.lastSequenceId);
+        logger.debug("Getting next results for {} {} {}", this.id, this.apiKey, this.lastSequenceId);
         return getArticlesAfter(this.lastSequenceId.toString(), 500);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e6f3d4e3/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
index 4772f5e..5fd83eb 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProvider.java
@@ -1,6 +1,8 @@
 package org.apache.streams.data.moreover;
 
-import com.google.common.collect.Lists;
+import com.google.common.base.Predicates;
+import com.google.common.collect.*;
+import net.jcip.annotations.Immutable;
 import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.core.StreamsProvider;
 import org.apache.streams.core.StreamsResultSet;
@@ -11,10 +13,7 @@ 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.*;
 import java.util.concurrent.*;
 
 public class MoreoverProvider implements StreamsProvider {
@@ -50,16 +49,21 @@ public class MoreoverProvider implements StreamsProvider {
     }
 
     @Override
-    public StreamsResultSet readCurrent() {
+    public synchronized StreamsResultSet readCurrent() {
         LOGGER.debug("readCurrent");
 
         LOGGER.info("Providing {} docs", providerQueue.size());
 
-        StreamsResultSet result =  new StreamsResultSet(providerQueue);
+        Collection<StreamsDatum> currentIterator = Lists.newArrayList();
+        Iterators.addAll(currentIterator, providerQueue.iterator());
+
+        StreamsResultSet current = new StreamsResultSet(Queues.newConcurrentLinkedQueue(currentIterator));
 
         LOGGER.info("Exiting");
 
-        return result;
+        providerQueue.clear();
+
+        return current;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e6f3d4e3/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
index c0735bf..5fa0298 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverProviderTask.java
@@ -37,15 +37,18 @@ public class MoreoverProviderTask implements Runnable {
 
     @Override
     public void run() {
-        try {
-            ensureTime(moClient);
-            MoreoverResult result = started ? moClient.getNextBatch() : moClient.getArticlesAfter(lastSequence, 500);
-            started = true;
-            for(StreamsDatum entry : ImmutableSet.copyOf(result.iterator()))
-                results.offer(entry);
-            logger.info("ApiKey={}\tlastSequenceid={}", this.apiKey, result.getMaxSequencedId());
-        } catch (Exception e) {
-            logger.error("Exception while polling moreover", e);
+        while(true) {
+            try {
+                ensureTime(moClient);
+                MoreoverResult result = started ? moClient.getNextBatch() : moClient.getArticlesAfter(lastSequence, 500);
+                started = true;
+                result.process();
+                for(StreamsDatum entry : ImmutableSet.copyOf(result.iterator()))
+                    results.offer(entry);
+                logger.info("ApiKey={}\tlastSequenceid={}", this.apiKey, result.getMaxSequencedId());
+            } catch (Exception e) {
+                logger.error("Exception while polling moreover", e);
+            }
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e6f3d4e3/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
index 186750d..ed5f305 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
@@ -12,6 +12,7 @@ import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.moreover.api.Article;
+import com.moreover.api.ArticlesResponse;
 import org.apache.streams.core.StreamsDatum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -25,21 +26,23 @@ import java.util.List;
 
 public class MoreoverResult implements Iterable<StreamsDatum> {
 
-    private static final Logger logger = LoggerFactory.getLogger(MoreoverClient.class);
+    private static final Logger logger = LoggerFactory.getLogger(MoreoverResult.class);
 
     private ObjectMapper mapper;
     private XmlMapper xmlMapper;
 
     private String xmlString;
     private String jsonString;
-    private ObjectNode resultObject;
-    private JsonNode articlesArray;
+    private ArticlesResponse resultObject;
+    private ArticlesResponse.Articles articles;
+    private List<Article> articleArray;
     private long start;
     private long end;
     private String clientId;
     private BigInteger maxSequencedId = BigInteger.ZERO;
 
-    private List<StreamsDatum> list = Lists.newArrayList();
+    protected ArticlesResponse response;
+    protected List<StreamsDatum> list = Lists.newArrayList();
 
     protected MoreoverResult(String clientId, String xmlString, long start, long end) {
         this.xmlString = xmlString;
@@ -70,6 +73,26 @@ public class MoreoverResult implements Iterable<StreamsDatum> {
         xmlMapper.configure(
                 DeserializationFeature.READ_ENUMS_USING_TO_STRING,
                 Boolean.TRUE);
+        xmlMapper.configure(
+                DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
+                Boolean.FALSE);
+
+        mapper = new ObjectMapper();
+
+        mapper
+                .configure(
+                        DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,
+                        Boolean.TRUE);
+        mapper.configure(
+                DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,
+                Boolean.TRUE);
+        mapper
+                .configure(
+                        DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY,
+                        Boolean.TRUE);
+        mapper.configure(
+                DeserializationFeature.READ_ENUMS_USING_TO_STRING,
+                Boolean.TRUE);
 
     }
 
@@ -85,23 +108,17 @@ public class MoreoverResult implements Iterable<StreamsDatum> {
         return end;
     }
 
-    public String getJSONString() {
+    public void process() {
 
-        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();
-            }
+        try {
+            this.resultObject = xmlMapper.readValue(xmlString, ArticlesResponse.class);
+            this.articles = resultObject.getArticles();
+            this.articleArray = articles.getArticle();
+        } catch (IOException e) {
+            e.printStackTrace();
         }
 
-        for (JsonNode articleNode : ImmutableList.copyOf(articlesArray.elements())) {
-            Article article = mapper.convertValue(articleNode, Article.class);
+        for (Article article : articleArray) {
             BigInteger sequenceid = new BigInteger(article.getSequenceId());
             list.add(new StreamsDatum(article, sequenceid));
             logger.trace("Prior max sequence Id {} current candidate {}", this.maxSequencedId, sequenceid);
@@ -111,7 +128,7 @@ public class MoreoverResult implements Iterable<StreamsDatum> {
             }
 
         }
-        return jsonString;
+
     }
 
     public String getXmlString() {


[09/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/README.markdown
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/README.markdown b/trunk/streams-contrib/streams-provider-twitter/README.markdown
deleted file mode 100644
index 184912e..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/README.markdown
+++ /dev/null
@@ -1,48 +0,0 @@
-streams-provider-twitter
-
-Purpose
-
-  Module connects to the twitter streaming API, collects events, and passes each message downstream.
-
-Options
-
-  Sample - supported, tested
-  Firehose - supported, not tested
-  Site - not currently supported
-
-Capabilities
-
-  Validation
-
-    Optionally, module will validate each message
-
-  Simplification
-
-    Optionally, module can output messages as basic text
-
-  Normalization
-
-    Optionally, module can output messages as other json objects such as Activity
-
-  Deletion
-
-    By default, module will submit delete the object from each directly connected persist step (not implemented)
-
-Run-modes
-
-  Standalone
-
-    Runs in a java process.
-    Writes to standard out.
-
-    Placeholder for how
-      Configure via property file
-      Configure via command line
-
-  Storm
-
-    Runs as a spout.
-
-    Placeholder for how
-      Configure via property file
-      Configure via command line
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/pom.xml b/trunk/streams-contrib/streams-provider-twitter/pom.xml
deleted file mode 100644
index 9a12bbc..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/pom.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?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-twitter</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.typesafe</groupId>
-            <artifactId>config</artifactId>
-        </dependency>
-        <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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</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>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.jayway.jsonpath</groupId>
-            <artifactId>json-path</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.jayway.jsonpath</groupId>
-            <artifactId>json-path-assert</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.twitter</groupId>
-            <artifactId>hbc-core</artifactId>
-            <version>1.4.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.twitter4j</groupId>
-            <artifactId>twitter4j-core</artifactId>
-            <version>3.0.5</version>
-        </dependency>
-        <!--<dependency>-->
-            <!--<groupId>com.twitter</groupId>-->
-            <!--<artifactId>finagle-core_2.10</artifactId>-->
-            <!--<version>6.9.0</version>-->
-        <!--</dependency>-->
-        <!--<dependency>-->
-            <!--<groupId>com.twitter</groupId>-->
-            <!--<artifactId>finagle-http_2.10</artifactId>-->
-            <!--<version>6.9.0</version>-->
-        <!--</dependency>-->
-        <!--<dependency>-->
-            <!--<groupId>com.twitter</groupId>-->
-            <!--<artifactId>finagle-stream_2.10</artifactId>-->
-            <!--<version>6.9.0</version>-->
-        <!--</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</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/com/twitter/TwitterStreamConfiguration.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/com/twitter/Delete.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/com/twitter/Retweet.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/com/twitter/tweet.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams.twitter.pojo</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</useJodaDates>
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterErrorHandler.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterErrorHandler.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterErrorHandler.java
deleted file mode 100644
index bc5a385..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterErrorHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import twitter4j.Twitter;
-import twitter4j.TwitterException;
-
-/**
- * Created by steveblackmon on 2/8/14.
- */
-public class TwitterErrorHandler
-{
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterErrorHandler.class);
-
-    protected static final long initial_backoff = 1000;
-    protected static long backoff = initial_backoff;
-
-    public static int handleTwitterError(Twitter twitter, Exception exception)
-    {
-        if(exception instanceof TwitterException)
-        {
-            TwitterException e = (TwitterException)exception;
-            if(e.exceededRateLimitation())
-            {
-                LOGGER.warn("Rate Limit Exceeded");
-                try {
-                    Thread.sleep(backoff *= 2);
-                } catch (InterruptedException e1) {}
-                return 1;
-            }
-            else if(e.isCausedByNetworkIssue())
-            {
-                LOGGER.info("Twitter Network Issues Detected. Backing off...");
-                LOGGER.info("{} - {}", e.getExceptionCode(), e.getLocalizedMessage());
-                try {
-                    Thread.sleep(backoff *= 2);
-                } catch (InterruptedException e1) {}
-                return 1;
-            }
-            else if(e.isErrorMessageAvailable())
-            {
-                if(e.getMessage().toLowerCase().contains("does not exist"))
-                {
-                    LOGGER.warn("User does not exist...");
-                    return 100;
-                }
-                else
-                {
-                    return 1;
-                }
-            }
-            else
-            {
-                if(e.getExceptionCode().equals("ced778ef-0c669ac0"))
-                {
-                    // This is a known weird issue, not exactly sure the cause, but you'll never be able to get the data.
-                    return 5;
-                }
-                else
-                {
-                    LOGGER.warn("Unknown Twitter Exception...");
-                    LOGGER.warn("  Account: {}", twitter);
-                    LOGGER.warn("   Access: {}", e.getAccessLevel());
-                    LOGGER.warn("     Code: {}", e.getExceptionCode());
-                    LOGGER.warn("  Message: {}", e.getLocalizedMessage());
-                    return 1;
-                }
-            }
-        }
-        else if(exception instanceof RuntimeException)
-        {
-            LOGGER.warn("TwitterGrabber: Unknown Runtime Error", exception.getMessage());
-            return 1;
-        }
-        else
-        {
-            LOGGER.info("Completely Unknown Exception: {}", exception);
-            return 1;
-        }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
deleted file mode 100644
index d31c346..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventClassifier.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.jayway.jsonassert.JsonAssert;
-import org.apache.streams.twitter.pojo.Delete;
-import org.apache.streams.twitter.pojo.Retweet;
-import org.apache.streams.twitter.pojo.Tweet;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public class TwitterEventClassifier {
-
-    public static Class detectClass( String json ) {
-
-        try {
-            JsonAssert.with(json).assertNull("$.delete");
-        } catch( AssertionError ae ) {
-            return Delete.class;
-        }
-
-        try {
-            JsonAssert.with(json).assertNull("$.retweeted_status");
-        } catch( AssertionError ae ) {
-            return Retweet.class;
-        }
-
-        return Tweet.class;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
deleted file mode 100644
index 934d533..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterEventProcessor.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.streams.core.StreamsDatum;
-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.serializer.TwitterJsonDeleteActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Queue;
-import java.util.Random;
-import java.util.concurrent.BlockingQueue;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterEventProcessor implements Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterEventProcessor.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private BlockingQueue<String> inQueue;
-    private Queue<StreamsDatum> outQueue;
-
-    private Class inClass;
-    private Class outClass;
-
-    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
-    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
-    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
-
-    public final static String TERMINATE = new String("TERMINATE");
-
-    public TwitterEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class inClass, Class outClass) {
-        this.inQueue = inQueue;
-        this.outQueue = outQueue;
-        this.inClass = inClass;
-        this.outClass = outClass;
-    }
-
-    public TwitterEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class outClass) {
-        this.inQueue = inQueue;
-        this.outQueue = outQueue;
-        this.outClass = outClass;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            try {
-                String item = inQueue.take();
-                Thread.sleep(new Random().nextInt(100));
-                if(item==TERMINATE) {
-                    LOGGER.info("Terminating!");
-                    return;
-                }
-
-                // first check for valid json
-                ObjectNode node = (ObjectNode)mapper.readTree(item);
-
-                // since data is coming from outside provider, we don't know what type the events are
-                Class inClass = TwitterEventClassifier.detectClass(item);
-
-                // if the target is string, just pass-through
-                if( java.lang.String.class.equals(outClass))
-                    outQueue.offer(new StreamsDatum(item));
-                else {
-                    // convert to desired format
-                    Object out = convert(node, inClass, outClass);
-
-                    if( out != null && validate(out, outClass))
-                        outQueue.offer(new StreamsDatum(out));
-                }
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-    public Object convert(ObjectNode event, Class inClass, Class outClass) {
-
-        LOGGER.debug(event.toString());
-
-        Object result = null;
-
-        if( outClass.equals( Activity.class )) {
-            if( inClass.equals( Delete.class )) {
-                LOGGER.debug("ACTIVITY DELETE");
-                result = twitterJsonDeleteActivitySerializer.convert(event);
-            } else if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("ACTIVITY RETWEET");
-                result = twitterJsonRetweetActivitySerializer.convert(event);
-            } else if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("ACTIVITY TWEET");
-                result = twitterJsonTweetActivitySerializer.convert(event);
-            } else {
-                return null;
-            }
-        } else if( outClass.equals( Tweet.class )) {
-            if ( inClass.equals( Tweet.class )) {
-                LOGGER.debug("TWEET");
-                result = mapper.convertValue(event, Tweet.class);
-            }
-        } else if( outClass.equals( Retweet.class )) {
-            if ( inClass.equals( Retweet.class )) {
-                LOGGER.debug("RETWEET");
-                result = mapper.convertValue(event, Retweet.class);
-            }
-        } else if( outClass.equals( Delete.class )) {
-            if ( inClass.equals( Delete.class )) {
-                LOGGER.debug("DELETE");
-                result = mapper.convertValue(event, Delete.class);
-            }
-        } else if( outClass.equals( ObjectNode.class )) {
-            LOGGER.debug("OBJECTNODE");
-            result = mapper.convertValue(event, ObjectNode.class);
-        }
-
-            // no supported conversion were applied
-        if( result != null )
-            return result;
-
-        LOGGER.debug("CONVERT FAILED");
-
-        return null;
-
-    }
-
-    public boolean validate(Object document, Class klass) {
-
-        // TODO
-        return true;
-    }
-
-    public boolean isValidJSON(final String json) {
-        boolean valid = false;
-        try {
-            final JsonParser parser = new ObjectMapper().getJsonFactory()
-                    .createJsonParser(json);
-            while (parser.nextToken() != null) {
-            }
-            valid = true;
-        } catch (JsonParseException jpe) {
-            LOGGER.warn("validate: {}", jpe);
-        } catch (IOException ioe) {
-            LOGGER.warn("validate: {}", ioe);
-        }
-
-        return valid;
-    }
-
-};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamConfigurator.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamConfigurator.java
deleted file mode 100644
index 7bb7048..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamConfigurator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.google.common.collect.Lists;
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigException;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.twitter.TwitterOAuthConfiguration;
-import org.apache.streams.twitter.TwitterStreamConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterStreamConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterStreamConfigurator.class);
-
-    public static TwitterStreamConfiguration detectConfiguration(Config twitter) {
-        Config oauth = StreamsConfigurator.config.getConfig("twitter.oauth");
-
-        TwitterStreamConfiguration twitterStreamConfiguration = new TwitterStreamConfiguration();
-        twitterStreamConfiguration.setProtocol(twitter.getString("protocol"));
-        twitterStreamConfiguration.setHost(twitter.getString("host"));
-        twitterStreamConfiguration.setPort(twitter.getLong("port"));
-        twitterStreamConfiguration.setVersion(twitter.getString("version"));
-        TwitterOAuthConfiguration twitterOAuthConfiguration = new TwitterOAuthConfiguration();
-        twitterOAuthConfiguration.setConsumerKey(oauth.getString("consumerKey"));
-        twitterOAuthConfiguration.setConsumerSecret(oauth.getString("consumerSecret"));
-        twitterOAuthConfiguration.setAccessToken(oauth.getString("accessToken"));
-        twitterOAuthConfiguration.setAccessTokenSecret(oauth.getString("accessTokenSecret"));
-        twitterStreamConfiguration.setOauth(twitterOAuthConfiguration);
-
-        try {
-            twitterStreamConfiguration.setTrack(twitter.getStringList("track"));
-        } catch( ConfigException ce ) {}
-        try {
-            List<Long> follows = Lists.newArrayList();
-            for( Integer id : twitter.getIntList("follow"))
-                follows.add(new Long(id));
-            twitterStreamConfiguration.setFollow(follows);
-        } catch( ConfigException ce ) {}
-
-        twitterStreamConfiguration.setFilterLevel(twitter.getString("filter-level"));
-        twitterStreamConfiguration.setEndpoint(twitter.getString("endpoint"));
-        twitterStreamConfiguration.setJsonStoreEnabled("true");
-        twitterStreamConfiguration.setIncludeEntities("true");
-
-        return twitterStreamConfiguration;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
deleted file mode 100644
index 49b54b2..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProvider.java
+++ /dev/null
@@ -1,161 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.twitter.hbc.ClientBuilder;
-import com.twitter.hbc.core.Constants;
-import com.twitter.hbc.core.endpoint.StatusesFirehoseEndpoint;
-import com.twitter.hbc.core.endpoint.StatusesSampleEndpoint;
-import com.twitter.hbc.core.endpoint.StreamingEndpoint;
-import com.twitter.hbc.core.processor.StringDelimitedProcessor;
-import com.twitter.hbc.httpclient.BasicClient;
-import com.twitter.hbc.httpclient.auth.Authentication;
-import com.twitter.hbc.httpclient.auth.OAuth1;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.apache.streams.core.StreamsResultSet;
-import org.apache.streams.twitter.TwitterStreamConfiguration;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.*;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterStreamProvider implements StreamsProvider, Serializable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterStreamProvider.class);
-
-    private TwitterStreamConfiguration config;
-
-    private Class klass;
-
-    public TwitterStreamConfiguration getConfig() {
-        return config;
-    }
-
-    public void setConfig(TwitterStreamConfiguration config) {
-        this.config = config;
-    }
-
-    protected BlockingQueue inQueue = new LinkedBlockingQueue<String>(10000);
-
-    protected volatile Queue<StreamsDatum> providerQueue;
-
-    protected StreamingEndpoint endpoint;
-    protected BasicClient client;
-
-    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
-
-    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
-        return new ThreadPoolExecutor(nThreads, nThreads,
-                5000L, TimeUnit.MILLISECONDS,
-                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
-    }
-
-    public TwitterStreamProvider() {
-        Config config = StreamsConfigurator.config.getConfig("twitter");
-        this.config = TwitterStreamConfigurator.detectConfiguration(config);
-    }
-
-    public TwitterStreamProvider(TwitterStreamConfiguration config) {
-        this.config = config;
-    }
-
-    public TwitterStreamProvider(Class klass) {
-        Config config = StreamsConfigurator.config.getConfig("twitter");
-        this.config = TwitterStreamConfigurator.detectConfiguration(config);
-        this.klass = klass;
-        providerQueue = new LinkedBlockingQueue<StreamsDatum>();
-    }
-
-    public TwitterStreamProvider(TwitterStreamConfiguration config, Class klass) {
-        this.config = config;
-        this.klass = klass;
-        providerQueue = new LinkedBlockingQueue<StreamsDatum>();
-
-    }
-
-    public void run() {
-
-        for (int i = 0; i < 10; i++) {
-            executor.submit(new TwitterEventProcessor(inQueue, providerQueue, klass));
-        }
-
-        new Thread(new TwitterStreamProviderTask(this)).start();
-    }
-
-    @Override
-    public StreamsResultSet readCurrent() {
-        run();
-        StreamsResultSet result = (StreamsResultSet)providerQueue.iterator();
-        return result;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger sequence) {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime start, DateTime end) {
-        return null;
-    }
-
-    @Override
-    public void prepare(Object o) {
-
-        Preconditions.checkNotNull(this.klass);
-
-        Preconditions.checkNotNull(config.getOauth().getConsumerKey());
-        Preconditions.checkNotNull(config.getOauth().getConsumerSecret());
-        Preconditions.checkNotNull(config.getOauth().getAccessToken());
-        Preconditions.checkNotNull(config.getOauth().getAccessTokenSecret());
-
-        Preconditions.checkNotNull(config.getEndpoint());
-        if(config.getEndpoint().endsWith("sample.json") ) {
-            endpoint = new StatusesSampleEndpoint();
-
-            Optional<List<String>> track = Optional.fromNullable(config.getTrack());
-            Optional<List<Long>> follow = Optional.fromNullable(config.getFollow());
-
-            if( track.isPresent() ) endpoint.addPostParameter("track", Joiner.on(",").join(track.get()));
-            if( follow.isPresent() ) endpoint.addPostParameter("follow", Joiner.on(",").join(follow.get()));
-        }
-        else if( config.getEndpoint().endsWith("firehose.json"))
-            endpoint = new StatusesFirehoseEndpoint();
-        else
-            return;
-
-        Authentication auth = new OAuth1(config.getOauth().getConsumerKey(),
-                config.getOauth().getConsumerSecret(),
-                config.getOauth().getAccessToken(),
-                config.getOauth().getAccessTokenSecret());
-
-        client = new ClientBuilder()
-                .name("apache/streams/streams-contrib/streams-provider-twitter")
-                .hosts(Constants.STREAM_HOST)
-                .endpoint(endpoint)
-                .authentication(auth)
-                .processor(new StringDelimitedProcessor(inQueue))
-                .build();
-    }
-
-    @Override
-    public void cleanUp() {
-        for (int i = 0; i < 10; i++) {
-            inQueue.add(TwitterEventProcessor.TERMINATE);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProviderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProviderTask.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProviderTask.java
deleted file mode 100644
index 7270fe9..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterStreamProviderTask.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.twitter.hbc.ClientBuilder;
-import com.twitter.hbc.core.Constants;
-import com.twitter.hbc.core.endpoint.StatusesFirehoseEndpoint;
-import com.twitter.hbc.core.endpoint.StatusesSampleEndpoint;
-import com.twitter.hbc.core.endpoint.StreamingEndpoint;
-import com.twitter.hbc.core.processor.StringDelimitedProcessor;
-import com.twitter.hbc.httpclient.BasicClient;
-import com.twitter.hbc.httpclient.auth.Authentication;
-import com.twitter.hbc.httpclient.auth.OAuth1;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.apache.streams.core.StreamsResultSet;
-import org.apache.streams.twitter.TwitterStreamConfiguration;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.*;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterStreamProviderTask implements Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterStreamProviderTask.class);
-
-    private TwitterStreamProvider provider;
-
-    public TwitterStreamProviderTask(TwitterStreamProvider provider) {
-        this.provider = provider;
-    }
-
-    @Override
-    public void run() {
-
-        provider.client.connect();
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
deleted file mode 100644
index ebf9dbc..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProvider.java
+++ /dev/null
@@ -1,223 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.apache.streams.core.StreamsResultSet;
-import org.apache.streams.twitter.TwitterStreamConfiguration;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import sun.reflect.generics.reflectiveObjects.NotImplementedException;
-import twitter4j.Twitter;
-import twitter4j.TwitterFactory;
-import twitter4j.conf.ConfigurationBuilder;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.Iterator;
-import java.util.Queue;
-import java.util.Random;
-import java.util.concurrent.*;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterTimelineProvider implements StreamsProvider, Serializable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTimelineProvider.class);
-
-    private TwitterStreamConfiguration config;
-
-    private Class klass;
-
-    public TwitterStreamConfiguration getConfig() {
-        return config;
-    }
-
-    public void setConfig(TwitterStreamConfiguration config) {
-        this.config = config;
-    }
-
-    protected volatile BlockingQueue<String> inQueue = new LinkedBlockingQueue<String>(10000);
-
-    protected volatile Queue<StreamsDatum> providerQueue = new LinkedBlockingQueue<StreamsDatum>();
-
-    protected Twitter client;
-
-    ListenableFuture providerTaskComplete;
-//
-//    public BlockingQueue<Object> getInQueue() {
-//        return inQueue;
-//    }
-
-    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
-
-    protected DateTime start;
-    protected DateTime end;
-
-    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
-        return new ThreadPoolExecutor(nThreads, nThreads,
-                5000L, TimeUnit.MILLISECONDS,
-                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
-    }
-
-    public TwitterTimelineProvider() {
-        Config config = StreamsConfigurator.config.getConfig("twitter");
-        this.config = TwitterStreamConfigurator.detectConfiguration(config);
-    }
-
-    public TwitterTimelineProvider(TwitterStreamConfiguration config) {
-        this.config = config;
-    }
-
-    public TwitterTimelineProvider(Class klass) {
-        Config config = StreamsConfigurator.config.getConfig("twitter");
-        this.config = TwitterStreamConfigurator.detectConfiguration(config);
-        this.klass = klass;
-    }
-
-    public TwitterTimelineProvider(TwitterStreamConfiguration config, Class klass) {
-        this.config = config;
-        this.klass = klass;
-    }
-
-    public void run() {
-
-        Preconditions.checkNotNull(providerQueue);
-
-        Preconditions.checkNotNull(this.klass);
-
-        Preconditions.checkNotNull(config.getOauth().getConsumerKey());
-        Preconditions.checkNotNull(config.getOauth().getConsumerSecret());
-        Preconditions.checkNotNull(config.getOauth().getAccessToken());
-        Preconditions.checkNotNull(config.getOauth().getAccessTokenSecret());
-
-        Preconditions.checkNotNull(config.getFollow());
-
-        Preconditions.checkArgument(config.getEndpoint().equals("statuses/user_timeline"));
-
-        Boolean jsonStoreEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getJsonStoreEnabled()))).or(true);
-        Boolean includeEntitiesEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getIncludeEntities()))).or(true);
-
-        Iterator<Long> ids = config.getFollow().iterator();
-        while( ids.hasNext() ) {
-            Long id = ids.next();
-
-            String baseUrl = config.getProtocol() + "://" + config.getHost() + ":" + config.getPort() + "/" + config.getVersion() + "/";
-
-            ConfigurationBuilder builder = new ConfigurationBuilder()
-                    .setOAuthConsumerKey(config.getOauth().getConsumerKey())
-                    .setOAuthConsumerSecret(config.getOauth().getConsumerSecret())
-                    .setOAuthAccessToken(config.getOauth().getAccessToken())
-                    .setOAuthAccessTokenSecret(config.getOauth().getAccessTokenSecret())
-                    .setIncludeEntitiesEnabled(includeEntitiesEnabled)
-                    .setJSONStoreEnabled(jsonStoreEnabled)
-                    .setAsyncNumThreads(3)
-                    .setRestBaseURL(baseUrl);
-
-            Twitter twitter = new TwitterFactory(builder.build()).getInstance();
-
-            providerTaskComplete = executor.submit(new TwitterTimelineProviderTask(this, twitter, id));
-        }
-
-        for (int i = 0; i < 1; i++) {
-            executor.submit(new TwitterEventProcessor(inQueue, providerQueue, klass));
-        }
-    }
-
-    @Override
-    public StreamsResultSet readCurrent() {
-        run();
-        StreamsResultSet result = (StreamsResultSet)providerQueue.iterator();
-        return result;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger sequence) {
-        throw new NotImplementedException();
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime start, DateTime end) {
-        this.start = start;
-        this.end = end;
-        run();
-        StreamsResultSet result = (StreamsResultSet)providerQueue.iterator();
-        return result;
-    }
-
-    void shutdownAndAwaitTermination(ExecutorService pool) {
-        pool.shutdown(); // Disable new tasks from being submitted
-        try {
-            // Wait a while for existing tasks to terminate
-            if (!pool.awaitTermination(10, TimeUnit.SECONDS)) {
-                pool.shutdownNow(); // Cancel currently executing tasks
-                // Wait a while for tasks to respond to being cancelled
-                if (!pool.awaitTermination(10, TimeUnit.SECONDS))
-                    System.err.println("Pool did not terminate");
-            }
-        } catch (InterruptedException ie) {
-            // (Re-)Cancel if current thread also interrupted
-            pool.shutdownNow();
-            // Preserve interrupt status
-            Thread.currentThread().interrupt();
-        }
-    }
-
-
-    @Override
-    public void prepare(Object o) {
-
-        Preconditions.checkNotNull(providerQueue);
-
-        Preconditions.checkNotNull(this.klass);
-
-        Preconditions.checkNotNull(config.getOauth().getConsumerKey());
-        Preconditions.checkNotNull(config.getOauth().getConsumerSecret());
-        Preconditions.checkNotNull(config.getOauth().getAccessToken());
-        Preconditions.checkNotNull(config.getOauth().getAccessTokenSecret());
-
-        Preconditions.checkNotNull(config.getFollow());
-
-        Preconditions.checkArgument(config.getEndpoint().equals("statuses/user_timeline"));
-
-        Boolean jsonStoreEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getJsonStoreEnabled()))).or(true);
-        Boolean includeEntitiesEnabled = Optional.fromNullable(new Boolean(Boolean.parseBoolean(config.getIncludeEntities()))).or(true);
-
-        Iterator<Long> ids = config.getFollow().iterator();
-        while( ids.hasNext() ) {
-            Long id = ids.next();
-
-            String baseUrl = config.getProtocol() + "://" + config.getHost() + ":" + config.getPort() + "/" + config.getVersion() + "/";
-
-            ConfigurationBuilder builder = new ConfigurationBuilder()
-                    .setOAuthConsumerKey(config.getOauth().getConsumerKey())
-                    .setOAuthConsumerSecret(config.getOauth().getConsumerSecret())
-                    .setOAuthAccessToken(config.getOauth().getAccessToken())
-                    .setOAuthAccessTokenSecret(config.getOauth().getAccessTokenSecret())
-                    .setIncludeEntitiesEnabled(includeEntitiesEnabled)
-                    .setJSONStoreEnabled(jsonStoreEnabled)
-                    .setAsyncNumThreads(3)
-                    .setRestBaseURL(baseUrl);
-
-            Twitter twitter = new TwitterFactory(builder.build()).getInstance();
-            providerTaskComplete = executor.submit(new TwitterTimelineProviderTask(this, twitter, id));
-        }
-
-        for (int i = 0; i < 1; i++) {
-            executor.submit(new TwitterEventProcessor(inQueue, providerQueue, klass));
-        }
-    }
-
-    @Override
-    public void cleanUp() {
-        shutdownAndAwaitTermination(executor);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
deleted file mode 100644
index fcab6f5..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTimelineProviderTask.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.apache.streams.twitter.provider;
-
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import twitter4j.Paging;
-import twitter4j.Status;
-import twitter4j.Twitter;
-import twitter4j.json.DataObjectFactory;
-
-import java.util.List;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterTimelineProviderTask implements Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTimelineProviderTask.class);
-
-    private TwitterTimelineProvider provider;
-    private Twitter twitter;
-    private Long id;
-
-    public TwitterTimelineProviderTask(TwitterTimelineProvider provider, Twitter twitter, Long id) {
-        this.provider = provider;
-        this.twitter = twitter;
-        this.id = id;
-    }
-
-    @Override
-    public void run() {
-
-        Paging paging = new Paging(1, 200);
-        List<Status> statuses = null;
-        boolean KeepGoing = true;
-        boolean hadFailure = false;
-
-        do
-        {
-            int keepTrying = 0;
-
-            // keep trying to load, give it 5 attempts.
-            //while (keepTrying < 10)
-            while (keepTrying < 1)
-            {
-
-                try
-                {
-                    statuses = twitter.getUserTimeline(id, paging);
-
-                    for (Status tStat : statuses)
-                    {
-                        if( provider.start != null &&
-                            provider.start.isAfter(new DateTime(tStat.getCreatedAt())))
-                        {
-                            // they hit the last date we wanted to collect
-                            // we can now exit early
-                            KeepGoing = false;
-                        }
-                        // emit the record
-                        String json = DataObjectFactory.getRawJSON(tStat);
-
-                        provider.inQueue.offer(json);
-
-                    }
-
-
-                    paging.setPage(paging.getPage() + 1);
-
-                    keepTrying = 10;
-                }
-                catch(Exception e)
-                {
-                    hadFailure = true;
-                    keepTrying += TwitterErrorHandler.handleTwitterError(twitter, e);
-                }
-                finally
-                {
-                    // Shutdown the twitter to release the resources
-                    twitter.shutdown();
-                }
-            }
-        }
-        while ((statuses != null) && (statuses.size() > 0) && KeepGoing);
-
-        LOGGER.info("Provider Finished.  Cleaning up...");
-
-        twitter.shutdown();
-
-        LOGGER.info("Provider Exiting");
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
deleted file mode 100644
index f13bf91..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonDeleteActivitySerializer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.streams.twitter.serializer;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-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.twitter.pojo.Delete;
-import org.apache.streams.twitter.pojo.Tweet;
-
-/**
-* Created with IntelliJ IDEA.
-* User: mdelaet
-* Date: 9/30/13
-* Time: 9:24 AM
-* To change this template use File | Settings | File Templates.
-*/
-public class TwitterJsonDeleteActivitySerializer extends TwitterJsonEventActivitySerializer {
-
-    public Activity convert(ObjectNode event) {
-
-        Delete delete = null;
-        try {
-            delete = mapper.treeToValue(event, Delete.class);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
-        Activity activity = new Activity();
-        activity.setActor(buildActor(delete));
-        activity.setVerb("delete");
-        activity.setObject(buildActivityObject(delete));
-        activity.setId(formatId(activity.getVerb(), delete.getDelete().getStatus().getIdStr()));
-        activity.setProvider(buildProvider(event));
-        addTwitterExtension(activity, event);
-        return activity;
-    }
-
-    public Actor buildActor(Delete delete) {
-        Actor actor = new Actor();
-        actor.setId(formatId(delete.getDelete().getStatus().getUserIdStr()));
-        return actor;
-    }
-
-    public ActivityObject buildActivityObject(Delete delete) {
-        ActivityObject actObj = new ActivityObject();
-        actObj.setId(formatId(delete.getDelete().getStatus().getIdStr()));
-        actObj.setObjectType("tweet");
-        return actObj;
-    }
-
-    public ActivityObject buildTarget(Tweet tweet) {
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
deleted file mode 100644
index 83be402..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonEventActivitySerializer.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package org.apache.streams.twitter.serializer;
-
-import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector;
-import com.google.common.base.Joiner;
-import com.google.common.collect.Lists;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.Activity;
-import org.apache.streams.pojo.json.Generator;
-import org.apache.streams.pojo.json.Icon;
-import org.apache.streams.pojo.json.Provider;
-
-import java.io.IOException;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
-* Created with IntelliJ IDEA.
-* User: mdelaet
-* Date: 9/30/13
-* Time: 9:24 AM
-* To change this template use File | Settings | File Templates.
-*/
-public abstract class TwitterJsonEventActivitySerializer implements ActivitySerializer<String> {
-
-    public static final String DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy";
-
-    ObjectMapper mapper = new ObjectMapper();
-
-    @Override
-    public String serializationFormat() {
-        return "application/json+vnd.twitter.com.v1";
-    }
-
-    @Override
-    public String serialize(Activity deserialized) {
-        throw new UnsupportedOperationException("Cannot currently serialize to Twitter JSON");
-    }
-
-    @Override
-    public Activity deserialize(String serialized) {
-        serialized = serialized.replaceAll("\\[[ ]*\\]", "null");
-
-//        System.out.println(serialized);
-
-        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);
-
-        try {
-            ObjectNode event = (ObjectNode) mapper.readTree(serialized);
-
-            Activity activity = convert(event);
-
-            return activity;
-
-        } catch (IOException e) {
-            throw new IllegalArgumentException("Unable to deserialize", e);
-        }
-
-    }
-
-    public abstract Activity convert(ObjectNode event);
-
-    @Override
-    public List<Activity> deserializeAll(List<String> serializedList) {
-        throw new NotImplementedException("Not currently implemented");
-    }
-
-    public static Date parse(String str) {
-        Date date;
-        String dstr;
-        DateFormat fmt = new SimpleDateFormat(DATE_FORMAT);
-        DateFormat out = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
-        try {
-            date = fmt.parse(str);
-            dstr = out.format(date);
-            return out.parse(dstr);
-        } catch (ParseException e) {
-            throw new IllegalArgumentException("Invalid date format", e);
-        }
-    }
-
-    public static Generator buildGenerator(ObjectNode event) {
-        return null;
-    }
-
-    public static Icon getIcon(ObjectNode event) {
-        return null;
-    }
-
-    public static Provider buildProvider(ObjectNode event) {
-        Provider provider = new Provider();
-        provider.setId("id:providers:twitter");
-        return provider;
-    }
-
-    public static String getUrls(ObjectNode event) {
-        return null;
-    }
-
-    public static void addTwitterExtension(Activity activity, ObjectNode event) {
-        Map<String, Object> extensions = org.apache.streams.data.util.ActivityUtil.ensureExtensions(activity);
-        extensions.put("twitter", event);
-    }
-
-    public static String formatId(String... idparts) {
-        return Joiner.on(":").join(Lists.asList("id:twitter", idparts));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonRetweetActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonRetweetActivitySerializer.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonRetweetActivitySerializer.java
deleted file mode 100644
index 69860a1..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonRetweetActivitySerializer.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package org.apache.streams.twitter.serializer;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-import org.apache.streams.data.ActivitySerializer;
-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.twitter.Url;
-import org.apache.streams.twitter.pojo.Retweet;
-import org.apache.streams.twitter.pojo.Tweet;
-import org.apache.streams.twitter.pojo.User;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.streams.data.util.ActivityUtil.ensureExtensions;
-
-/**
-* Created with IntelliJ IDEA.
-* User: mdelaet
-* Date: 9/30/13
-* Time: 9:24 AM
-* To change this template use File | Settings | File Templates.
-*/
-public class TwitterJsonRetweetActivitySerializer extends TwitterJsonEventActivitySerializer implements ActivitySerializer<String> {
-
-    public Activity convert(ObjectNode event) {
-
-        Retweet retweet = null;
-        try {
-            retweet = mapper.treeToValue(event, Retweet.class);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
-        Activity activity = new Activity();
-        activity.setActor(buildActor(retweet));
-        activity.setVerb("share");
-        activity.setObject(buildActivityObject(retweet.getRetweetedStatus()));
-        activity.setId(formatId(activity.getVerb(), retweet.getIdStr()));
-        activity.setPublished(parse(retweet.getCreatedAt()));
-        activity.setGenerator(buildGenerator(event));
-        activity.setIcon(getIcon(event));
-        activity.setProvider(buildProvider(event));
-        activity.setTitle("");
-        activity.setContent(retweet.getRetweetedStatus().getText());
-        activity.setUrl(getUrls(event));
-        activity.setLinks(getLinks(retweet));
-        addTwitterExtension(activity, event);
-        addLocationExtension(activity, retweet);
-        return activity;
-    }
-
-    public static Actor buildActor(Tweet tweet) {
-        Actor actor = new Actor();
-        User user = tweet.getUser();
-        actor.setId(formatId(user.getIdStr(), tweet.getIdStr()));
-        actor.setDisplayName(user.getScreenName());
-        actor.setId(user.getIdStr());
-        if (user.getUrl()!=null){
-            actor.setUrl(user.getUrl());
-        }
-        return actor;
-    }
-
-    public static ActivityObject buildActivityObject(Tweet tweet) {
-        ActivityObject actObj = new ActivityObject();
-        actObj.setId(formatId(tweet.getIdStr()));
-        actObj.setObjectType("tweet");
-        return actObj;
-    }
-
-    public static List<Object> getLinks(Retweet retweet) {
-        List<Object> links = Lists.newArrayList();
-        for( Url url : retweet.getRetweetedStatus().getEntities().getUrls() ) {
-            links.add(url.getExpandedUrl());
-        }
-        return links;
-    }
-
-    public static void addLocationExtension(Activity activity, Retweet retweet) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        Map<String, Object> location = new HashMap<String, Object>();
-        location.put("id", formatId(retweet.getIdStr()));
-        location.put("coordinates", retweet.getCoordinates());
-        extensions.put("location", location);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonTweetActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonTweetActivitySerializer.java b/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonTweetActivitySerializer.java
deleted file mode 100644
index 08727d8..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/serializer/TwitterJsonTweetActivitySerializer.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.apache.streams.twitter.serializer;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Lists;
-import org.apache.streams.data.ActivitySerializer;
-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.twitter.Url;
-import org.apache.streams.twitter.pojo.Tweet;
-import org.apache.streams.twitter.pojo.User;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.streams.data.util.ActivityUtil.ensureExtensions;
-
-/**
-* Created with IntelliJ IDEA.
-* User: mdelaet
-* Date: 9/30/13
-* Time: 9:24 AM
-* To change this template use File | Settings | File Templates.
-*/
-public class TwitterJsonTweetActivitySerializer extends TwitterJsonEventActivitySerializer implements ActivitySerializer<String> {
-
-    public Activity convert(ObjectNode event) {
-
-        Tweet tweet = null;
-        try {
-            tweet = mapper.treeToValue(event, Tweet.class);
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
-        Activity activity = new Activity();
-        activity.setActor(buildActor(tweet));
-        activity.setVerb("post");
-        activity.setObject(buildActivityObject(tweet));
-        activity.setId(formatId(activity.getVerb(), tweet.getIdStr()));
-        activity.setTarget(buildTarget(tweet));
-        activity.setPublished(parse(tweet.getCreatedAt()));
-        activity.setGenerator(buildGenerator(event));
-        activity.setIcon(getIcon(event));
-        activity.setProvider(buildProvider(event));
-        activity.setTitle("");
-        activity.setContent(tweet.getText());
-        activity.setUrl(getUrls(event));
-        activity.setLinks(getLinks(tweet));
-        addTwitterExtension(activity, event);
-        addLocationExtension(activity, tweet);
-        return activity;
-    }
-
-    public static Actor buildActor(Tweet tweet) {
-        Actor actor = new Actor();
-        User user = tweet.getUser();
-        actor.setId(formatId(user.getIdStr(), tweet.getIdStr()));
-        actor.setDisplayName(user.getScreenName());
-        actor.setId(user.getIdStr());
-        if (user.getUrl()!=null){
-            actor.setUrl(user.getUrl());
-        }
-        return actor;
-    }
-
-    public static ActivityObject buildActivityObject(Tweet tweet) {
-        ActivityObject actObj = new ActivityObject();
-        actObj.setId(formatId(tweet.getIdStr()));
-        actObj.setObjectType("tweet");
-        return actObj;
-    }
-
-    public static List<Object> getLinks(Tweet tweet) {
-        List<Object> links = Lists.newArrayList();
-        for( Url url : tweet.getEntities().getUrls() ) {
-            links.add(url.getExpandedUrl());
-        }
-        return links;
-    }
-
-    public static ActivityObject buildTarget(Tweet tweet) {
-        return null;
-    }
-
-    public static void addLocationExtension(Activity activity, Tweet tweet) {
-        Map<String, Object> extensions = ensureExtensions(activity);
-        Map<String, Object> location = new HashMap<String, Object>();
-        location.put("id", formatId(tweet.getIdStr()));
-        location.put("coordinates", tweet.getCoordinates());
-        extensions.put("location", location);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Delete.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Delete.json b/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Delete.json
deleted file mode 100644
index 6b2efb0..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Delete.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.twitter.pojo.Delete",
-    "properties": {
-        "delete": {
-            "type": "object",
-            "javaType" : "org.apache.streams.twitter.pojo.DeleteDetails",
-            "properties": {
-                "status": {
-                    "type": "object",
-                    "properties": {
-                        "id": {
-                            "ignore_malformed": false,
-                            "type": "integer"
-                        },
-                        "user_id": {
-                            "ignore_malformed": false,
-                            "type": "integer"
-                        },
-                        "id_str": {
-                            "type": "string"
-                        },
-                        "user_id_str": {
-                            "type": "string"
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Retweet.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Retweet.json b/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Retweet.json
deleted file mode 100644
index 018a263..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/Retweet.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.twitter.pojo.Retweet",
-    "extends": {"$ref":"tweet.json"},
-    "properties": {
-        "retweeted_status": {
-            "type": "object",
-            "required" : false,
-            "description" : "Describes the tweet being retweeted.",
-            "$ref" : "tweet.json"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/TwitterStreamConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/TwitterStreamConfiguration.json b/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/TwitterStreamConfiguration.json
deleted file mode 100644
index 087f8fd..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/TwitterStreamConfiguration.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.twitter.TwitterStreamConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "protocol": {
-            "type": "string",
-            "description": "The protocol"
-        },
-        "host": {
-            "type": "string",
-            "description": "The host"
-        },
-        "port": {
-            "type": "integer",
-            "description": "The port"
-        },
-        "version": {
-            "type": "string",
-            "description": "The version"
-        },
-        "endpoint": {
-            "type": "string",
-            "description": "The endpoint"
-        },
-        "includeEntities": {
-            "type": "string"
-        },
-        "jsonStoreEnabled": {
-            "type": "string"
-        },
-        "truncated": {
-            "type": "boolean"
-        },
-        "filter-level": {
-            "type": "string",
-            "description": "Setting this parameter to one of none, low, or medium will set the minimum value of the filter_level Tweet attribute required to be included in the stream"
-        },
-        "follow": {
-            "type": "array",
-            "description": "A list of user IDs, indicating the users whose Tweets should be delivered on the stream",
-            "items": {
-                "type": "integer"
-            }
-        },
-        "track": {
-            "type": "array",
-            "description": "A list of phrases which will be used to determine what Tweets will be delivered on the stream",
-            "items": {
-                "type": "string"
-            }
-        },
-        "oauth": {
-            "type": "object",
-            "dynamic": "true",
-            "javaType" : "org.apache.streams.twitter.TwitterOAuthConfiguration",
-            "javaInterfaces": ["java.io.Serializable"],
-            "properties": {
-                "appName": {
-                    "type": "string"
-                },
-                "consumerKey": {
-                    "type": "string"
-                },
-                "consumerSecret": {
-                    "type": "string"
-                },
-                "accessToken": {
-                    "type": "string"
-                },
-                "accessTokenSecret": {
-                    "type": "string"
-                }
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/tweet.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/tweet.json b/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/tweet.json
deleted file mode 100644
index dcde108..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/jsonschema/com/twitter/tweet.json
+++ /dev/null
@@ -1,296 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.twitter.pojo.Tweet",
-    "properties": {
-        "text": {
-            "type": "string"
-        },
-        "retweeted": {
-            "type": "boolean"
-        },
-        "in_reply_to_screen_name": {
-            "type": "string"
-        },
-        "truncated": {
-            "type": "boolean"
-        },
-        "filter_level": {
-            "type": "string"
-        },
-        "contributors": {
-            "type": "array",
-            "items": {
-                "type": "object",
-                "javaType" : "org.apache.streams.twitter.pojo.Contributor",
-                "properties": {
-                    "id": {
-                        "ignore_malformed": false,
-                        "type": "integer"
-                    },
-                    "id_str": {
-                        "type": "string"
-                    },
-                    "screen_name": {
-                        "type": "string"
-                    }
-                }
-            }
-        },
-        "coordinates": {
-            "type": "object",
-            "javaType" : "org.apache.streams.twitter.pojo.Coordinates",
-            "items": {
-                "properties": {
-                    "type": {
-                        "type": "string"
-                    },
-                    "coordinates": {
-                        "type": "array",
-                        "items": [
-                            {
-                                "type": "integer"
-                            }
-                        ]
-                    }
-                }
-            }
-        },
-        "entities": {
-            "type": "object",
-            "dynamic": "true",
-            "javaType" : "org.apache.streams.twitter.pojo.Entities",
-            "properties": {
-                "user_mentions": {
-                    "type": "array",
-                    "items": {
-                        "type": "object",
-                        "javaType" : "org.apache.streams.twitter.pojo.UserMentions",
-                        "properties": {
-                            "id": {
-                                "ignore_malformed": false,
-                                "type": "integer"
-                            },
-                            "name": {
-                                "type": "string"
-                            },
-                            "indices": {
-                                "type": "array",
-                                "items": [{
-                                    "type" : "integer"
-                                }]
-                            },
-                            "screen_name": {
-                                "type": "string"
-                            },
-                            "id_str": {
-                                "type": "string"
-                            }
-                        }
-                    }
-                },
-                "hashtags": {
-                    "type": "array",
-                    "items": [
-                        {
-                            "type": "string"
-                        }
-                    ]
-                },
-                "urls": {
-                    "type": "array",
-                    "items": {
-                        "type": "object",
-                        "javaType": "org.apache.streams.twitter.Url",
-                        "properties": {
-                            "expanded_url": {
-                                "type": "string"
-                            },
-                            "indices": {
-                                "type": "array",
-                                "items": [
-                                    {
-                                    "type" : "integer"
-                                    }
-                                ]
-                            },
-                            "display_url": {
-                                "type": "string"
-                            },
-                            "url": {
-                                "type": "string"
-                            }
-                        }
-                    }
-                }
-            }
-        },
-        "in_reply_to_status_id_str": {
-            "type": "string"
-        },
-        "id": {
-            "ignore_malformed": false,
-            "type": "integer"
-        },
-        "in_reply_to_user_id_str": {
-            "type": "string"
-        },
-        "source": {
-            "type": "string"
-        },
-        "lang": {
-            "type": "string"
-        },
-        "favorited": {
-            "type": "boolean"
-        },
-        "possibly_sensitive": {
-            "type": "boolean"
-        },
-        "in_reply_to_status_id": {
-            "ignore_malformed": false,
-            "type": "integer"
-        },
-        "created_at": {
-            "type": "string"
-        },
-        "in_reply_to_user_id": {
-            "ignore_malformed": false,
-            "type": "integer"
-        },
-        "retweet_count": {
-            "ignore_malformed": false,
-            "type": "integer"
-        },
-        "id_str": {
-            "type": "string"
-        },
-        "user": {
-            "id": "user",
-            "type": "object",
-            "javaType" : "org.apache.streams.twitter.pojo.User",
-            "dynamic": "true",
-            "properties": {
-                "location": {
-                    "type": "string"
-                },
-                "default_profile": {
-                    "type": "boolean"
-                },
-                "statuses_count": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                },
-                "profile_background_tile": {
-                    "type": "boolean"
-                },
-                "lang": {
-                    "type": "string"
-                },
-                "profile_link_color": {
-                    "type": "string"
-                },
-                "id": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                },
-                "protected": {
-                    "type": "boolean"
-                },
-                "favourites_count": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                },
-                "profile_text_color": {
-                    "type": "string"
-                },
-                "verified": {
-                    "type": "boolean"
-                },
-                "description": {
-                    "type": "string"
-                },
-                "contributors_enabled": {
-                    "type": "boolean"
-                },
-                "name": {
-                    "type": "string"
-                },
-                "profile_sidebar_border_color": {
-                    "type": "string"
-                },
-                "profile_background_color": {
-                    "type": "string"
-                },
-                "created_at": {
-                    "type": "string"
-                },
-                "default_profile_image": {
-                    "type": "boolean"
-                },
-                "followers_count": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                },
-                "geo_enabled": {
-                    "type": "boolean"
-                },
-                "profile_image_url_https": {
-                    "type": "string"
-                },
-                "profile_background_image_url": {
-                    "type": "string"
-                },
-                "profile_background_image_url_https": {
-                    "type": "string"
-                },
-                "follow_request_sent": {
-                    "type": "boolean"
-                },
-                "url": {
-                    "type": "string"
-                },
-                "utc_offset": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                },
-                "time_zone": {
-                    "type": "string"
-                },
-                "profile_use_background_image": {
-                    "type": "boolean"
-                },
-                "friends_count": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                },
-                "profile_sidebar_fill_color": {
-                    "type": "string"
-                },
-                "screen_name": {
-                    "type": "string"
-                },
-                "id_str": {
-                    "type": "string"
-                },
-                "profile_image_url": {
-                    "type": "string"
-                },
-                "is_translator": {
-                    "type": "boolean"
-                },
-                "listed_count": {
-                    "ignore_malformed": false,
-                    "type": "integer"
-                }
-            }
-        },
-        "retweeted_status": {
-            "type": "object",
-            "required" : false,
-            "description" : "Describes the tweet being retweeted.",
-            "$ref" : "#"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/main/resources/reference.conf
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/main/resources/reference.conf b/trunk/streams-contrib/streams-provider-twitter/src/main/resources/reference.conf
deleted file mode 100644
index 49555fc..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/main/resources/reference.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-twitter {
-    protocol = "https"
-    host = "stream.twitter.com"
-    port = 443
-    version = "1.1"
-    endpoint = "statuses/sample.json"
-    filter-level = "none"
-    oauth {
-        appName = "Apache Streams"
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TweetSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TweetSerDeTest.java b/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TweetSerDeTest.java
deleted file mode 100644
index 0664595..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TweetSerDeTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package org.apache.streams.twitter.test;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.commons.lang.StringUtils;
-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.provider.TwitterEventClassifier;
-import org.apache.streams.twitter.serializer.TwitterJsonDeleteActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
-import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import static java.util.regex.Pattern.matches;
-import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
-
-/**
-* Created with IntelliJ IDEA.
-* User: sblackmon
-* Date: 8/20/13
-* Time: 5:57 PM
-* To change this template use File | Settings | File Templates.
-*/
-public class TweetSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TweetSerDeTest.class);
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
-    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
-    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
-
-    //    @Ignore
-    @Test
-    public void Tests()
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = TweetSerDeTest.class.getResourceAsStream("/twitter_jsons.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                if(!StringUtils.isEmpty(line))
-                {
-                    LOGGER.info("raw: {}", line);
-
-                    Class detected = TwitterEventClassifier.detectClass(line);
-
-                    ObjectNode event = (ObjectNode) mapper.readTree(line);
-
-                    assertThat(event, is(not(nullValue())));
-
-                    String tweetstring = mapper.writeValueAsString(event);
-
-                    LOGGER.info("{}: {}", detected.getName(), tweetstring);
-
-                    Activity activity;
-                    if( detected.equals( Delete.class )) {
-                        activity = twitterJsonDeleteActivitySerializer.convert(event);
-                    } else if ( detected.equals( Retweet.class )) {
-                        activity = twitterJsonRetweetActivitySerializer.convert(event);
-                    } else if ( detected.equals( Tweet.class )) {
-                        activity = twitterJsonTweetActivitySerializer.convert(event);
-                    } else {
-                        Assert.fail();
-                        return;
-                    }
-
-                    String activitystring = mapper.writeValueAsString(activity);
-
-                    LOGGER.info("activity: {}", activitystring);
-
-                    assertThat(activity, is(not(nullValue())));
-                    if(activity.getId() != null) {
-                        assertThat(matches("id:.*:[a-z]*:[a-zA-Z0-9]*", activity.getId()), is(true));
-                    }
-                    assertThat(activity.getActor(), is(not(nullValue())));
-                    assertThat(activity.getActor().getId(), is(not(nullValue())));
-                    assertThat(activity.getVerb(), is(not(nullValue())));
-                    assertThat(activity.getObject(), is(not(nullValue())));
-                    assertThat(activity.getObject().getObjectType(), is(not(nullValue())));
-                }
-            }
-        } catch( Exception e ) {
-            System.out.println(e);
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}


[32/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-datasift/src/test/resources/datasift_jsons.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-datasift/src/test/resources/datasift_jsons.txt b/trunk/streams-contrib/streams-provider-datasift/src/test/resources/datasift_jsons.txt
deleted file mode 100644
index 858756a..0000000
--- a/trunk/streams-contrib/streams-provider-datasift/src/test/resources/datasift_jsons.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361363177973366787","filter_level":"medium","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":7761,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5062,"description":"I hate everything. Especially you.","friends_count":385,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":241}},"salience":{"content":{"sentiment":5}},"klout":{"score":42},"interaction":{"schema":{"version":3},"content":"Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f7
 49b40d9ab00e0742908a9ff4d74","author":{"id":472480397,"username":"InsulinLover","name":"Alexander","link":"http://twitter.com/InsulinLover","language":"en","avatar":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/InsulinLover/statuses/361363177973366787","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361366536625201152","retweeted":{"id":"361363177973366787","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","user":{"geo_enabled":true,"statuses_count":7765,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5064,"description":"I hate everything. Especially you.","friends_count":386,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":242}},"retweet":{"id":"361366536625201152","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/#!/download/ipad\" rel=\"nofollow\">Twitter for iPad<\/a>","count":1,"created_at":"Sun, 28 Jul 2013 0
 6:04:30 +0000","user":{"location":"Henderson, NV","statuses_count":4851,"lang":"en","url":"https://www.facebook.com/DonMfPatchUFemaleDogs","utc_offset":-25200,"id":537777703,"time_zone":"Pacific Time (US & Canada)","favourites_count":1235,"description":"Otherwise known as @Slender_Sir","friends_count":240,"name":"Iram Gonzalez","created_at":"Tue, 27 Mar 2012 02:35:56 +0000","screen_name":"gonzalez_iram","id_str":"537777703","profile_image_url":"http://a0.twimg.com/profile_images/3325430053/65b2d200115a97ff3f9061e9cc672136_normal.jpeg","followers_count":232},"lang":"en"}},"salience":{"content":{"sentiment":5}},"klout":{"score":40},"interaction":{"schema":{"version":3},"content":"RT @InsulinLover: Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f74b90e3eab00e07452795b51705e","author":{"id":537777703,"username":"gonzalez_iram","name":"Iram Gonzalez","link":"http://twitter.com/gonzalez_iram","language":"en","avatar":"http://a0.twimg.com/profile_images/3325430053/65b
 2d200115a97ff3f9061e9cc672136_normal.jpeg"},"source":"Twitter for iPad","link":"http://twitter.com/gonzalez_iram/statuses/361366536625201152","created_at":"Sun, 28 Jul 2013 06:04:30 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Weather","score":0.65636122226715}]}},"facebook":{"id":"557546084284515_565003810205409","message":"To get arm and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"application":"Pages Manager for Android","source":"Pages Manager for Android (121876164619130)","created_at":"Fri, 26 Jul 2013 19:39:11 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f62b0b691a980e066608cf545f2d6","content":"To get arm 
 and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"source":"Pages Manager for Android (121876164619130)","link":"http://www.facebook.com/557546084284515_565003810205409","subtype":"status","created_at":"Fri, 26 Jul 2013 19:39:25 +0000","type":"facebook"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"beyatch":"yo","tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":6}},"facebook":{"id":"741220477_10153006009870478","message":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","created_at":"Thu, 25 Jul 2013 16:51:28 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f54a72fb6a800e06682e7cdbf4b5c","content":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","subtype":"status","created_at":"Thu, 25 Jul 2013 16:51:56 +0000","type":"f
 acebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"facebook":{"id":"165282606905632_387817134652177","message":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.com/165282606905632/picture"},"source":"web","created_at":"Sat, 27 Jul 2013 02:20:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6630a53dae80e06600495e73832a","content":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.c
 om/165282606905632/picture"},"source":"web","link":"http://www.facebook.com/165282606905632_387817134652177","subtype":"status","created_at":"Sat, 27 Jul 2013 02:20:17 +0000","type":"facebook"},"links":{"title":["Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog"],"normalized_url":["http://crazyforcouponsandfreebies.com/blog?p=60571"],"created_at":["Sat, 27 Jul 2013 02:20:27 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog","description":" You Can Get Arm & Hammer On Sale At County Market For $1.99 Each Go Here And Print Your $1/3 OP-$4.96 WYB 3 + Tax GO HERE HOT DEAL!~Cheryl","image":"http://crazyforcouponsandfreebies.com/blog/wp-content/uploads/2013/07/2013-07-24_1918.png","site_name":"The Daily Blog","type":"article","url":"http://crazyforcouponsandfreebies.com/blog/?p=60571"}],"content_type":["text/html"],"lang":["en-us"]},"
 url":["http://crazyforcouponsandfreebies.com/blog/?p=60571"]},"language":{"tag":"mt","confidence":62}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["Tide","ArmAndHammer"]}},"twitter":{"id":"360731330335608833","filter_level":"medium","text":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","source":"<a href=\"http://favstar.fm\" rel=\"nofollow\">Favstar.FM<\/a>","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","lang":"en","user":{"location":"Halifax, Canada","statuses_count":26676,"lang":"en","url":"http://favstar.fm/users/CindyMeakin/recent","id":267645953,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":156111,"description":"I wear sun glasses at night so people don't talk to me.","friends_count":2162,"name":"~Cindy~","created_at":"Thu, 17 Mar 2011 08:57:31 +0000","screen_name":"CindyMeakin","id_str":"267645953","profile_image_url":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg
 ","followers_count":7604,"listed_count":407}},"salience":{"content":{"sentiment":0}},"klout":{"score":61},"interaction":{"schema":{"version":3},"content":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","id":"1e2f5eaf4a2da280e074c2f2b84aa4f8","author":{"id":267645953,"username":"CindyMeakin","name":"~Cindy~","link":"http://twitter.com/CindyMeakin","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg"},"source":"Favstar.FM","link":"http://twitter.com/CindyMeakin/statuses/360731330335608833","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361614949908361217","filter_level":"medium","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","mention_ids":[106891542],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","in_reply_to_user_id":"106891542","lang":"en","mentions":["THEmrReynolds"],"user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"Memoi
 rsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":423,"listed_count":10}},"salience":{"content":{"sentiment":0}},"klout":{"score":57},"interaction":{"schema":{"version":3},"content":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d576eeeaa80e074ae7154d45ee6","author":{"id":49340813,"username":"MemoirsofaGAYsh","name":"Dominique Delacroix","link":"http://twitter.com/MemoirsofaGAYsh","language":"en","avatar":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg"},"source":"Twitter for iPhone","mention_ids":[106891542],"link":"http://twitter.com/MemoirsofaGAYsh/statuses/361614949908361217","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"youtube":{"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponing"},"title":"Cvs red box coupons week of 07/07","duration":"58","category":"entertainment","videolink":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 08 Jul 2013 02:13:58 +0000","contenttype":"html","type":"video"},"interaction":{"schema":{"version":3},"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponin
 g"},"title":"Cvs red box coupons week of 07/07","link":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 29 Jul 2013 01:22:47 +0000","type":"youtube","contenttype":"html"},"language":{"tag":"en","confidence":62}}
-{"w2o":{"tags":{"topic":["StainRemoval"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-5}},"facebook":{"id":"602766199_10151557023101200","message":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"application":"Facebook for iPhone","source":"Facebook for iPhone (6628568379)","created_at":"Tue, 30 Jul 2013 00:06:43 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f8abea632ab80e066b5fddc080fa8","content":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766
 199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"source":"Facebook for iPhone (6628568379)","subtype":"status","created_at":"Tue, 30 Jul 2013 00:06:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_male"}}
-{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361950303878254592","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Mon, 29 Jul 2013 20:44:11 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Alberta,Canada ","statuses_count":208685,"lang":"en","url":"http://rocketgirl00.blogspot.com","id":23870867,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":105,"description":"I'm married,like to travel,think that friends and family are the most important thing in life.","friends_count":2842,"name":"Doris ","created_at":"Thu, 12 Mar 2009 01:36:56 +0000","screen_name":"dewinner","id_str":"23870867"
 ,"profile_image_url":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg","followers_count":2591,"listed_count":81}},"salience":{"content":{"sentiment":0}},"klout":{"score":47},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","id":"1e2f88f9f3b1af80e074bd3a2171a578","author":{"id":23870867,"username":"dewinner","name":"Doris ","link":"http://twitter.com/dewinner","language":"en","avatar":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/dewinner/statuses/361950303878254592","created_at":"Mon, 29 Jul 2013 20:44:11 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["h
 ttp://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Sun, 28 Jul 2013 22:08:38 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry
 -detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"interaction":{"schema":{"version":3},"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","author":{},"title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","created_at":"Tue, 30 Jul 2013 09:44:17 +0000","type":"board","contenttype":"html"},"language":{"tag":"en","confidence":95},"board":{"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","thread":"
 http://forum.gon.com/showthread.php?t=762688","domain":"www.gon.com","created_at":"Wed, 24 Jul 2013 11:36:00 +0000","contenttype":"html","type":"post"}}
-{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"363008881179369473","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Thu, 01 Aug 2013 18:50:36 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1262903550,"friends_count":1,"name":"serenecerulean","created_at":"Tue, 12 Mar 2013 21:31:35 +0000","screen_name":"serenecerulean","id_str":"1262903550","statuses_count":6,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No problem! ARM &amp; H
 AMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","id":"1e2fadb4069ea600e074e3962995fde4","author":{"id":1262903550,"username":"serenecerulean","name":"serenecerulean","link":"http://twitter.com/serenecerulean","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png"},"source":"Tweet Button","link":"http://twitter.com/serenecerulean/statuses/363008881179369473","created_at":"Thu, 01 Aug 2013 18:50:36 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Thu, 01 Aug 2013 12:23:26 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra 
 Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-2,"topics":[{"hits":0,"name":"Beverages","score":1.0265922546387}],"entities":[{"sentiment":0,"confident":1,"name":"Danny","evidence":1,"about":1,"label":"Person","themes":["washing soda"],"type":"Person"}]}},"facebook":{"id":"506582967_10151624053632968","message":"Hate when you are getting ready to do something productive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","created_at":"Sat, 03 Aug 2013 17:30:40 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fc626a99ea000e0664766345bbd9e","content":"Hate when you are getting ready to do something pro
 ductive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","subtype":"status","created_at":"Sat, 03 Aug 2013 17:30:50 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362021838882209792","filter_level":"medium","text":"Luv da smell of gain and arm&amp;hammer washing powder","source":"<a href=\"https://path.com/\" rel=\"nofollow\">Path<\/a>","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","lang":"en","user":{"statuses_count":6590,"lang":"en","utc_offset":-10800,"id":762376266,"time_zone":"Atlantic Time (Canada)","favourites_count":133,"description":"#teamproudmommy #hardworking #independent #teamjrrockojc: Thru it all I still maintain and smile, with God on my side I don't care who's against me","friends_count":280,"name":"toya","created_at":"Thu, 16 Aug 2012 21:36:25 +0000","screen_name":"1ofakind_87","id_str":"762376266","profile_image_url":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg","followers_count":137}},"salience":{"content":{"sentiment":0}},"klout":{"score":30},"interaction":{"schema":{"version":3},"content":
 "Luv da smell of gain and arm&amp;hammer washing powder","id":"1e2f8b755662af80e0745b9f6321114e","author":{"id":762376266,"username":"1ofakind_87","name":"toya","link":"http://twitter.com/1ofakind_87","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg"},"source":"Path","link":"http://twitter.com/1ofakind_87/statuses/362021838882209792","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362230621323526145","retweeted":{"id":"362229784211750912","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"retweet":{"id":"362230621323526145","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter f
 or iPhone<\/a>","count":3,"mention_ids":[279691748],"created_at":"Tue, 30 Jul 2013 15:18:04 +0000","user":{"geo_enabled":true,"statuses_count":40607,"lang":"en","utc_offset":-18000,"id":442045360,"time_zone":"Central Time (US & Canada)","favourites_count":13074,"friends_count":190,"name":"sM","created_at":"Tue, 20 Dec 2011 17:58:45 +0000","screen_name":"SeanMeier_","id_str":"442045360","profile_image_url":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg","followers_count":1034,"listed_count":1},"mentions":["TheVikkiMinaj"],"lang":"en"}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Food","score":0.50305610895157}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"RT @legitCarll: We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92b3acd9ae00e0745976b013340a","author":{"id":442045360,"username":"SeanMei
 er_","name":"sM","link":"http://twitter.com/SeanMeier_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/SeanMeier_/statuses/362230621323526145","created_at":"Tue, 30 Jul 2013 15:18:04 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362037402786729986","filter_level":"medium","text":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","lang":"en","user":{"geo_enabled":true,"location":"North Texas","statuses_count":24770,"lang":"en","url":"http://d1ligence.tumblr.com","id":224686933,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":638,"description":"Jussa yung nicca on the virtue of internet prosperity. Artist; ? of Elev?ted collective.","friends_count":670,"name":"Paul, The Apostle ","created_at":"Thu, 09 Dec 2010 16:26:43 +0000","screen_name":"MasterChefP","id_str":"224686933","profile_image_url":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg","followers_count":939,"listed_co
 unt":6}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","id":"1e2f8bff8bb4a280e074878bb70afd4a","author":{"id":224686933,"username":"MasterChefP","name":"Paul, The Apostle ","link":"http://twitter.com/MasterChefP","language":"en","avatar":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/MasterChefP/statuses/362037402786729986","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","Advertising","ConcentratedFormulas","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4,"topics":[{"hits":0,"name":"Science","score":1.2123092412949},{"hits":0,"name":"Technology","score":0.59644603729248},{"hits":0,"name":"Hardware","score":0.4546263217926}],"entities":[{"sentiment":0,"confident":1,"name":"Procter & gamble","evidence":1,"about":1,"label":"Company","themes":["liquid laundry detergent","commercial products","ea dawn","liquid offers","grease-cutting ingredients","improved formula","longer-lasting suds","sink changeover"],"type":"Company"},{"sentiment":0,"confident":1,"name":"\"Liquid Detergents (Surfactant Science)\"","evidence":1,"about":0,"label":"Quote","themes":["liquid detergents","helpful search engine","different books","actual prices","fast search"],"type":"Quote"}]}},"facebook":{"id":"1406941246186240_1407041779509520","message":"Liquid Detergents (Surfactant Science)\n\n
 If you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry detergent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant sci
 ence);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"application":"Filipspacename","source":"Filipspacename (104453219725181)","created_at":"Tue, 06 Aug 2013 22:40:46 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fee93be16ab00e066dedfa2d1c568","content":"Liquid Detergents (Surfactant Science)\n\nIf you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry deterg
 ent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant science);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"source":"Filipspacename (104453219725181)","subtype":"status","created_at":"Tue, 06 Aug 2013 22:41:01 +0
 000","type":"facebook"},"language":{"tag":"en","confidence":99}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364861019413164032","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 21:30:20 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"location":"Ontario, Canada","statuses_count":19585,"lang":"en","url":"http://yeewittlethings.com","id":438700992,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":132,"description":"#CDN Mom of 2 wonderful kids. Wife to an amazing hubby. #PR friendly #Blogger. #Reviews, #Giveaways, Random Musings & Every day living! #KinderMom","friends_count":7875,"name":"Yee Wittle Things","created_at":"Fri, 16 Dec 2011 22:33:08 +0000","screen_name":"yeewittlethings","id_str":"438700992","profile_image_url":"http://a0
 .twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg","followers_count":8712,"listed_count":58}},"salience":{"content":{"sentiment":0}},"klout":{"score":63},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","id":"1e2fedf64fcfae00e074af57bfa66a5c","author":{"id":438700992,"username":"yeewittlethings","name":"Yee Wittle Things","link":"http://twitter.com/yeewittlethings","language":"en","avatar":"http://a0.twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/yeewittlethings/statuses/364861019413164032","created_at":"Tue, 06 Aug 2013 21:30:20 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-se
 nsitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364845410017230848","filter_level":"medium","text":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","mention_ids":[326314186],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"ThatGuy_Jesse10","in_reply_to_status_id":"364845085571031041","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","in_reply_to_user_id":"326314186","lang":"en","mentions":["ThatGuy_Jesse10"],"user":{"geo_enabled":true,"location":"Phoeniquera","statuses_count":41253,"lang":"en","utc_offset":-25200,"id":403930347,"time_zone":"Arizona","favourites_count":4362,"description":"You're gonna like THIS guy he's alright, He's a Good Fella.. 93 til.","friends_count":330,"name":"Simba","created_at":"Thu, 03 Nov 2011 06:10:20 +0000","screen_name":"JuanGTho","id_str":"403930347","profile_image_url":"http://a0.twimg.com/profile_images/37880000018266
 5838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg","followers_count":359}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Hannah Montana","evidence":1,"about":1,"label":"Person","type":"Person"}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","id":"1e2fed6ba80dad00e074579fbdc03880","author":{"id":403930347,"username":"JuanGTho","name":"Simba","link":"http://twitter.com/JuanGTho","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000182665838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[326314186],"link":"http://twitter.com/JuanGTho/statuses/364845410017230848","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","type":"twitter","mentions":["ThatGuy_Jesse10"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Convenience","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-6,"topics":[{"hits":0,"name":"Beverages","score":1.056524515152}],"entities":[{"sentiment":-12,"confident":1,"name":"Target","evidence":1,"about":1,"label":"Company","themes":["brand laundry soap","cleaning team","washing soda"],"type":"Company"}]}},"facebook":{"id":"100005166043472_180980985417435","message":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/pro
 file.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Wed, 07 Aug 2013 02:32:06 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2ff098d015a700e066f80d5c4c0dd0","content":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/profile.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"source":"Mobile (2915120374)","link":"http
 ://www.facebook.com/100005166043472_180980985417435","subtype":"status","created_at":"Wed, 07 Aug 2013 02:32:23 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":2}},"facebook":{"id":"753060211_10153029318745212","message":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"application":"Facebook for Android","source":"Facebook for Android (350685531728)","created_at":"Thu, 25 Jul 2013 18:08:27 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f555341edaf80e066003d5ea01da0","content":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/
 profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"source":"Facebook for Android (350685531728)","subtype":"status","created_at":"Thu, 25 Jul 2013 18:08:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Sustainability","ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361171385718018048","filter_level":"medium","text":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","source":"<a href=\"http://satehut.com\" rel=\"nofollow\">Satehut<\/a>","domains":["dish-washers-dryers.com"],"created_at":"Sat, 27 Jul 2013 17:09:03 +0000","links":["http://dish-washers-dryers.com/?p=3858"],"lang":"en","media":[{"id":361171385722212352,"sizes":{"small":{"w":104,"h":140,"resize":"fit"},"thumb":{"w":104,"h":140,"resize":"crop"},"large":{"w":104,"h":140,"resize":"fit"},"medium":{"w":104,"h":140,"resize":"fit"}},"media_url_https":"https://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","media_url":"http://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","expanded_url":"http://twitter.com/Sate_Hut/status/361171385718018048/photo/1","id_str":"361171385722212352","display_url":"pic.twitter.com/7XvuTjDd0v","type":"photo","url
 ":"http://t.co/7XvuTjDd0v"}],"user":{"location":"Miami, FL","statuses_count":20248,"lang":"en","url":"http://SateHut.com","utc_offset":-14400,"id":342319003,"time_zone":"Eastern Time (US & Canada)","description":"For good sate (or Sateh) you can be anywhere!  We give you the recipes and ingredients to make it at home!","name":"Sate Hut","created_at":"Mon, 25 Jul 2011 20:37:12 +0000","screen_name":"Sate_Hut","id_str":"342319003","profile_image_url":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg","followers_count":15}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"8/31/13","evidence":1,"about":1,"label":"Date","type":"Pattern"}]}},"klout":{"score":13},"interaction":{"schema":{"version":3},"content":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","id":"1e2f6df3ca32a180e0745c1dc0cceda4","author":{"id":342319003,"username":"Sate_Hut","name":"Sate Hut","link":"http://
 twitter.com/Sate_Hut","language":"en","avatar":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg"},"source":"Satehut","link":"http://twitter.com/Sate_Hut/statuses/361171385718018048","created_at":"Sat, 27 Jul 2013 17:09:03 +0000","type":"twitter"},"links":{"title":["20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers"],"normalized_url":["http://dish-washers-dryers.com/?p=3858"],"created_at":["Sat, 27 Jul 2013 17:09:07 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers","description":"$0.99 (0 Bids)End Date: Saturday Jul-27-2013 19:47:26 PDTBuy It Now for only: $2.50Buy It Now | Bid now | Add to watch list","image":"http://thumbs1.ebaystatic.com/m/m5EkUMKNxAoIDYVzVioQCRg/140.jpg","site_name":"Dish-Washers & Dryers","type":"article","url":"http://dish-washers-dryers.com/?p=3858"}],"content_type":["text/html"],"lang":["en-us"
 ]},"url":["http://dish-washers-dryers.com/?p=3858"]},"language":{"tag":"en","confidence":62}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0}},"facebook":{"id":"297050503659016_614567205240676","message":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","created_at":"Fri, 26 Jul 2013 23:40:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f64cb0481ae80e0668a518d22dfe2","content":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","link":"http://www.facebook.com/297050503659016_614567205240
 676","subtype":"status","created_at":"Fri, 26 Jul 2013 23:40:22 +0000","type":"facebook"},"links":{"title":["Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work"],"normalized_url":["http://cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727"],"created_at":["Fri, 26 Jul 2013 23:40:16 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p22sqw-j1g","http://www.cookcouponwork.com/?p=73114"]],"meta":{"twitter":[{"site":"@CookCouponWork","card":"summary","creator":"@CookCouponWork"}],"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work","description":"Need Laundry Detergent? Pick up a good deal on Arm & Hammer at Walgreens (til 7/27) Deal Idea: Buy (2) Arm & Hammer 2x Liquid Detergent, 25 ? 32 loads, $2.29 = $4.58 Use (1) $0.75/2 Arm & Hammer Liquid or Powder Detergent, or Fabric Softener Sheets, exp. 9/30/13 (SS 07/14/13) Pay $3.83 =$1.92 
 EACH!","image":"http://www.cookcouponwork.com/wp-content/uploads/2013/07/543-300x213.jpg","type":"article","site_name":"Cook, Coupon, Work","url":"http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"}],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362022978235531264","filter_level":"medium","text":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","hashtags":["notracist"],"lang":"en","user":{"location":"Knoxville, TN","statuses_count":3202,"lang":"en","utc_offset":-14400,"id":442907220,"time_zone":"Eastern Time (US & Canada)","favourites_count":379,"description":"Never had a headache. Unable to grow a full beard.","friends_count":52,"name":"Uncle_D","created_at":"Wed, 21 Dec 2011 16:05:22 +0000","screen_name":"_UncleD_","id_str":"442907220","profile_image_url":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg","followers_count":59}},"salience":{"content":{"sentiment":6}},"klout":{"score":40},"interac
 tion":{"schema":{"version":3},"content":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","id":"1e2f8b7f6ed8a100e074a98a4f29f3bc","author":{"id":442907220,"username":"_UncleD_","name":"Uncle_D","link":"http://twitter.com/_UncleD_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/_UncleD_/statuses/362022978235531264","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"100000487215935_704899129536321","message":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile.php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Sat, 27 Jul 2013 16:30:08 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6d9ccde6a800e06674caf5177576","content":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile
 .php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"source":"Mobile (2915120374)","link":"http://www.facebook.com/100000487215935_704899129536321","subtype":"status","created_at":"Sat, 27 Jul 2013 16:30:26 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_female"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361615185913462785","retweeted":{"id":"361614949908361217","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","in_reply_to_user_id":"106891542","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"MemoirsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":4
 23,"listed_count":10}},"retweet":{"id":"361615185913462785","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","count":1,"mention_ids":[106891542],"created_at":"Sun, 28 Jul 2013 22:32:33 +0000","user":{"location":"soundcloud.com/mrReynoldsMusic","statuses_count":13351,"lang":"en","url":"http://www.THEmrReynolds.com","id":106891542,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":1353,"description":"I Mock The Party","friends_count":1554,"name":"Mr Reynolds","created_at":"Thu, 21 Jan 2010 00:37:45 +0000","screen_name":"THEmrReynolds","id_str":"106891542","profile_image_url":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg","followers_count":7938,"listed_count":49},"mentions":["THEmrReynolds"],"lang":"en"}},"salience":{"content":{"sentiment":0}},"klout":{"score":59},"int
 eraction":{"schema":{"version":3},"content":"RT @MemoirsofaGAYsh: @THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d5984fda680e074135a4b824dd0","author":{"id":106891542,"username":"THEmrReynolds","name":"Mr Reynolds","link":"http://twitter.com/THEmrReynolds","language":"en","avatar":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg"},"source":"Twitter for Android","mention_ids":[106891542],"link":"http://twitter.com/THEmrReynolds/statuses/361615185913462785","created_at":"Sun, 28 Jul 2013 22:32:33 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362467813958500354","filter_level":"medium","text":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","source":"<a href=\"http://www.networkedblogs.com/\" rel=\"nofollow\">NetworkedBlogs<\/a>","domains":["nblo.gs"],"created_at":"Wed, 31 Jul 2013 07:00:35 +0000","links":["http://nblo.gs/NEwDq"],"lang":"en","user":{"location":"Canada","statuses_count":2034,"lang":"en","url":"http://www.zeemaid.com","id":25435820,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":17,"description":"I am Zeemaid.  Momma to 3, an avid reader and an all around sassy momma.  I own my own video business, am married to my Mr. Darcy, love to throw pots and write","friends_count":1976,"name":"Zeemaid","created_at":"Fri, 20 Mar 2009 01:59:59 +0000","screen_name":"Zeemaid","id_str":"25435820","profile_image_url":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg","followers_count":10
 27,"listed_count":30}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","id":"1e2f9aee5d36ab80e0745a0744aef83a","author":{"id":25435820,"username":"Zeemaid","name":"Zeemaid","link":"http://twitter.com/Zeemaid","language":"en","avatar":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg"},"source":"NetworkedBlogs","link":"http://twitter.com/Zeemaid/statuses/362467813958500354","created_at":"Wed, 31 Jul 2013 07:00:35 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Sensitive Skin?Review & Giveaway"],"normalized_url":["http://networkedblogs.com/NEwDq"],"created_at":["Wed, 31 Jul 2013 07:00:43 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://nblo.gs/NEwDq"]],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Sensitive Skin?Review & Giveaway","description":"When you love a product you want to stick with it bu
 t as we all know price is a huge factor as to whether we continue to buy the brand we love or go elsewhere. Fortunately, Arm & Hammer?s affordability makes it easy for me to keep my cupboard well stocked with the Arm & Hammer products I love. Not","image":"http://lh6.ggpht.com/-8PeRiK68OMk/UfhgV8guCFI/AAAAAAAACgs/ubCE0V6ffqQ/CAN_AHLL_Sensitive_203L_thumb7.jpg?imgmax=800","site_name":"In the Mommy Trenches","type":"article","url":"http://networkedblogs.com/NEwDq"}],"content_type":["text/html"],"lang":["unknown"]},"url":["http://networkedblogs.com/NEwDq"]},"language":{"tag":"en","confidence":63}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"478623348890311_497707713648541","message":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/pictu
 re"},"source":"web","created_at":"Wed, 31 Jul 2013 06:44:42 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f9acadcb2a900e066515ce688d7d0","content":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/picture"},"source":"we
 b","link":"http://www.facebook.com/478623348890311_497707713648541","subtype":"status","created_at":"Wed, 31 Jul 2013 06:44:57 +0000","type":"facebook"},"language":{"tag":"en","confidence":74}}
-{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362269562365943809","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Tue, 30 Jul 2013 17:52:48 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Toronto,Ontario","statuses_count":29115,"lang":"en","utc_offset":-14400,"id":574859993,"time_zone":"Eastern Time (US & Canada)","favourites_count":13,"friends_count":1727,"name":"Andrew P","created_at":"Tue, 08 May 2012 23:07:45 +0000","screen_name":"apham17","id_str":"574859993","profile_image_url":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png","followers_count":455,"listed_count":7}
 },"salience":{"content":{"sentiment":0}},"klout":{"score":48},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","id":"1e2f940d87f9a800e074438bcad545f2","author":{"id":574859993,"username":"apham17","name":"Andrew P","link":"http://twitter.com/apham17","language":"en","avatar":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/apham17/statuses/362269562365943809","created_at":"Tue, 30 Jul 2013 17:52:48 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Mon, 29 Jul 2013 23:20:31 +00
 00"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-sce
 nts-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362229784211750912","filter_level":"medium","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","mention_ids":[279691748],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","lang":"en","mentions":["TheVikkiMinaj"],"user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Foo
 d","score":0.50475257635117}]}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92ac430aa080e0748f373f80284e","author":{"id":223342789,"username":"legitCarll","name":"Carlage","link":"http://twitter.com/legitCarll","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/legitCarll/statuses/362229784211750912","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"365738027701645314","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Fri, 09 Aug 2013 07:35:15 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1571552280,"friends_count":2,"name":"tim tunner","created_at":"Fri, 05 Jul 2013 23:43:28 +0000","screen_name":"timtunner0987","id_str":"1571552280","statuses_count":32,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":10},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No pro
 blem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","id":"1e300c63b51fab80e074e71f77da87ca","author":{"id":1571552280,"username":"timtunner0987","name":"tim tunner","link":"http://twitter.com/timtunner0987","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png"},"source":"Tweet Button","link":"http://twitter.com/timtunner0987/statuses/365738027701645314","created_at":"Fri, 09 Aug 2013 07:35:15 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Fri, 09 Aug 2013 07:35:18 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMM
 ER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","StainRemoval","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364421048600510464","filter_level":"medium","text":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","source":"<a href=\"http://uTweetDeals.com\" rel=\"nofollow\">U Tweet Deals<\/a>","domains":["bit.ly"],"created_at":"Mon, 05 Aug 2013 16:22:03 +0000","hashtags":["laundry"],"links":["http://bit.ly/15zY9H5"],"lang":"en","user":{"statuses_count":59620,"lang":"en","utc_offset":-25200,"id":1131374341,"time_zone":"Arizona","description":"We search for deals on Home and Garden related products. Bath, Kitchen, Furniture, Garden and more. *** I Follow Back ***","friends_count":1939,"name":"Home and Garden","created_at":"Tue, 29 Jan 2013 15:37:21 +0000","screen_name":"HomeGardenBuys","id_str":"1131374341","followers_count":1706,"profile_image_url":"http://a0.twimg.com/profile_images/3531065622/bc956b2a
 9da482ed071f2dbcdabea80b_normal.jpeg","listed_count":95}},"salience":{"content":{"sentiment":0}},"klout":{"score":49},"interaction":{"schema":{"version":3},"content":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","id":"1e2fdeb29810a780e0747af2c3544504","author":{"id":1131374341,"username":"HomeGardenBuys","name":"Home and Garden","link":"http://twitter.com/HomeGardenBuys","language":"en","avatar":"http://a0.twimg.com/profile_images/3531065622/bc956b2a9da482ed071f2dbcdabea80b_normal.jpeg"},"source":"U Tweet Deals","link":"http://twitter.com/HomeGardenBuys/statuses/364421048600510464","created_at":"Mon, 05 Aug 2013 16:22:03 +0000","type":"twitter"},"links":{"title":["10 Bottles Arm Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent | eBay"],"normalized_url":["http://ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"],"created_at":["Mon, 05 Aug 2013 16:22:47 +0000"],"retweet_
 count":[0],"code":[200],"hops":[["http://bit.ly/15zY9H5","http://rover.ebay.com/rover/1/711-53200-19255-0/1/?type=2&campid=5337311970&toolid=10001&ext=121154908808&item=121154908808"]],"meta":{"keywords":[["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","Home & Garden","Housekeeping & Organization","Laundry Supplies"]],"description":["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay"],"charset":["UTF-8"],"opengraph":[{"title":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","description":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay","image":"http://thumbs1.ebaystatic.com/d/l225/m/mSRDHPf7_rrZnR75JtQxcCA.jpg","type":"ebay-objects:item","site_name":"eBay","url":"http://www.ebay.com/itm/10-bottles-Arm-Hammer-Plus-Oxi-C
 lean-Stain-Fighters-Liquid-Laundry-Detergent-/121154908808"}],"content_type":["text/html"],"lang":["en-gb"]},"url":["http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"]},"language":{"tag":"en","confidence":63}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364879533691772928","filter_level":"medium","text":"Arm and hammer carpet powder is amazing....#justsayin","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","hashtags":["justsayin"],"lang":"en","user":{"location":"Indiana US of A","statuses_count":1400,"lang":"en","url":"http://www.quirkycreative.blogspot.com","utc_offset":-14400,"id":93704952,"time_zone":"Eastern Time (US & Canada)","favourites_count":9,"description":"Writer~ Random ~Quirky ~Creative ~Wife ~Believer ~Extroverted Introvert ~Animal Person ~Brony ~Girly-Girl w/ Tomboy Tendencies @JAInspired","friends_count":493,"name":"Rachel M","created_at":"Mon, 30 Nov 2009 20:20:15 +0000","screen_name":"thisrandomgirl","id_str":"93704952","profile_image_url":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg","followers_count":102}},"sa
 lience":{"content":{"sentiment":4}},"klout":{"score":18},"interaction":{"schema":{"version":3},"content":"Arm and hammer carpet powder is amazing....#justsayin","id":"1e2fee9abeffa100e074fa86d21b91e6","author":{"id":93704952,"username":"thisrandomgirl","name":"Rachel M","link":"http://twitter.com/thisrandomgirl","language":"en","avatar":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/thisrandomgirl/statuses/364879533691772928","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","type":"twitter"},"language":{"tag":"en","confidence":61},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364749039100633088","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 14:05:22 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"statuses_count":4853,"lang":"en","url":"http://www.mykidsguide.com/","id":612438542,"favourites_count":3,"description":"Everything you need to know about educational games and  activities for kids.","friends_count":613,"name":"MyKidsGuide","created_at":"Tue, 19 Jun 2012 10:11:57 +0000","screen_name":"MyKidsGuide","id_str":"612438542","followers_count":1542,"profile_image_url":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg","listed_count":14}},"salience":{"content":{"sentiment":0}},"klout":{"score":49
 },"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","id":"1e2fea13bbd7ad00e0742b3a16342e3e","author":{"id":612438542,"username":"MyKidsGuide","name":"MyKidsGuide","link":"http://twitter.com/MyKidsGuide","language":"en","avatar":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/MyKidsGuide/statuses/364749039100633088","created_at":"Tue, 06 Aug 2013 14:05:22 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm 
 & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100}}
-{"w2o":{"tags":{"topic":["Scent","CouponUsage"],"brand":["Tide","ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Gain","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"},{"sentiment":0,"confident":1,"name":"Tide","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"}]}},"facebook":{"id":"100001334708168_529689457085540","message":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $15\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author"
 :{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif","application":"Facebook for Android","source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3","created_at":"Mon, 05 Aug 2013 13:41:25 +0000","type":"photo"},"interaction":{"schema":{"version":3},"id":"1e2fdd4b8cefa080e0663432906416b4","content":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $1
 5\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author":{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/100001334708168_529689457085540","subtype":"photo","created_at":"Mon, 05 Aug 2013 13:41:44 +0000","type":"facebook"},"links":{"title":["Photos from Albert Wells&#039;s post | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"],"created_at":["Mon, 05 Aug 2013 13:41:51 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]],"meta":{"charset":["UTF-8"],"content_type":["text/html"],"lang":["en"]},"url":["https://www.facebook.c
 om/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364070259025649666","filter_level":"medium","text":"Somebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":31708,"lang":"en","utc_offset":-18000,"id":57967571,"time_zone":"Quito","favourites_count":38,"description":"http://ask.fm/thatDudeBiggz","friends_count":727,"name":"Sen?r","created_at":"Sat, 18 Jul 2009 16:18:33 +0000","screen_name":"thatDudeBiggz","id_str":"57967571","profile_image_url":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg","followers_count":658,"listed_count":5}},"salience":{"content":{"sentiment":0}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"S
 omebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","id":"1e2fd286f28cac00e074ec9c56b152ac","author":{"id":57967571,"username":"thatDudeBiggz","name":"Sen?r","link":"http://twitter.com/thatDudeBiggz","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/thatDudeBiggz/statuses/364070259025649666","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","type":"twitter"},"language":{"tag":"en","confidence":62}}
-{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364267076807950339","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Mon, 05 Aug 2013 06:10:13 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"geo_enabled":true,"location":"Lumsden, Saskatchewan","statuses_count":18479,"lang":"en","url":"http://www.mommykatandkids.com/","id":106185357,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":29,"description":"Mother of two active boys, blogger and writer. Lover of hot coffee, organic chocolate and sleeping in late whenever I get the chance.","friends_count":7894,"name":"Kathryn Lavallee","created_at":"Mon, 18 Jan 2010 19:29:48 +0000","screen_name":"mommykatandkids","id_str":"106185357","profile_image
 _url":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg","followers_count":15439,"listed_count":306}},"salience":{"content":{"sentiment":0}},"klout":{"score":65},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","id":"1e2fd95b0a39a080e07405af37275d4a","author":{"id":106185357,"username":"mommykatandkids","name":"Kathryn Lavallee","link":"http://twitter.com/mommykatandkids","language":"en","avatar":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/mommykatandkids/statuses/364267076807950339","created_at":"Mon, 05 Aug 2013 06:10:13 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fres
 h-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Sun, 04 Aug 2013 21:00:19 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
-{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"twitter":{"id":"367633815277035520","filter_level":"medium","text":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","source":"<a href=\"http://www.facebook.com/twitter\" rel=\"nofollow\">Facebook<\/a>","domains":["fb.me"],"created_at":"Wed, 14 Aug 2013 13:08:26 +0000","links":["http://fb.me/2jIdLRYWm"],"lang":"en","user":{"location":"Ontario, Canada","statuses_count":11244,"lang":"en","url":"http://savebiglivebetter.com","id":465174690,"description":"The best Canadian deals, sales, coupons, freebies, recipes, money saving articles and more updated daily at http://SaveBigLiveBetter.com! HAPPY SAVING:)","friends_count":71,"name":"Save Big Live Better","created_at":"Mon, 16 Jan 2012 01:56:38 +0000","screen_name":"SBLBCanada","id_str":"465174690","followers_count":476,"profile_image_url":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401
 c696258306991b51_normal.png","listed_count":4}},"salience":{"content":{"sentiment":3}},"klout":{"score":37},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","id":"1e304e29af34a100e0742d305e733fa6","author":{"id":465174690,"username":"SBLBCanada","name":"Save Big Live Better","link":"http://twitter.com/SBLBCanada","language":"en","avatar":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401c696258306991b51_normal.png"},"source":"Facebook","link":"http://twitter.com/SBLBCanada/statuses/367633815277035520","created_at":"Wed, 14 Aug 2013 13:08:26 +0000","type":"twitter"},"links":{"title":["Timeline Photos | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"],"created_at":["Wed, 14 Aug 2013 13:08:58 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://fb.me/2jIdLRYWm"]],"meta":{"charset":["UTF-8"],"content_type":[
 "text/html"],"lang":["en"]},"url":["https://www.facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":1,"entities":[{"sentiment":-2,"confident":1,"name":"Vinegar","evidence":1,"about":0,"label":"Person","themes":["funky smell","washing machine","go-to product","regular detergent","vinegar smell"],"type":"Person"}]}},"facebook":{"id":"234885799896401_583141561737488","message":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old days.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest 
 thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":"Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","created_at":"Wed, 14 Aug 2013 17:23:45 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3050645c92a680e066aef68cf33be0","content":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old day
 s.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":
 "Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","link":"http://www.facebook.com/234885799896401_583141561737488","subtype":"status","created_at":"Wed, 14 Aug 2013 17:24:00 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
-{"w2o":{"tags":{"topic":["Sustainability","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer","Purex"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Beverages","score":0.92570048570633}]}},"facebook":{"id":"100000254074556_643746722310458","message":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nFill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  S
 tir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","created_at":"Fri, 09 Aug 2013 15:07:21 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3010563ad1aa80e0660e6752dee246","content":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nF
 ill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  Stir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","link":"http://www.facebook.com/100000254074556_643746722310458","subtype":"status","created_at":"Fri, 09 Aug 2013 15:07:35 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
-{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"359694365049896960","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Tue, 23 Jul 2013 15:19:54 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1546236864,"friends_count":82,"name":"Kyra Mitchell","created_at":"Tue, 25 Jun 2013 17:32:24 +0000","screen_name":"ArmyRebel0","id_str":"1546236864","statuses_count":14,"followers_count":10,"profile_image_url":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":12},"interaction":{"schema":{"ver
 sion":3},"content":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","id":"1e2f3ab537a0a900e074ec3e0933e560","author":{"id":1546236864,"username":"ArmyRebel0","name":"Kyra Mitchell","link":"http://twitter.com/ArmyRebel0","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg"},"source":"Tweet Button","link":"http://twitter.com/ArmyRebel0/statuses/359694365049896960","created_at":"Tue, 23 Jul 2013 15:19:54 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Tue, 23 Jul 2013 15:20:08 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]
 ],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"lang

<TRUNCATED>

[54/71] [abbrv] git commit: found and fixed failure condition in moreoverclient made HDFS id (column 1) the default ES id

Posted by sb...@apache.org.
found and fixed failure condition in moreoverclient
made HDFS id (column 1) the default ES id


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/34990168
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/34990168
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/34990168

Branch: refs/heads/master
Commit: 34990168bf9d01540d9100162ef5d04a48d35a32
Parents: d764d7c
Author: sblackmon <sb...@w2odigital.com>
Authored: Mon Mar 17 14:51:40 2014 -0500
Committer: sblackmon <sb...@w2odigital.com>
Committed: Mon Mar 17 14:51:40 2014 -0500

----------------------------------------------------------------------
 .../ElasticsearchPersistWriter.java             |  6 ++--
 .../streams/hdfs/WebHdfsPersistReader.java      |  1 +
 .../streams/hdfs/WebHdfsPersistReaderTask.java  | 10 ++++--
 .../streams/data/moreover/MoreoverClient.java   | 10 +++++-
 .../streams/data/moreover/MoreoverResult.java   | 35 +++++++++++++++-----
 .../org/apache/streams/core/StreamsDatum.java   |  3 +-
 6 files changed, 49 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/34990168/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
index c4fd9f0..595011b 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
@@ -133,9 +133,9 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
 
             add(config.getIndex(), config.getType(), id, json);
 
-        } catch (JsonProcessingException e) {
-            LOGGER.warn("{} {}", e.getLocation(), e.getMessage());
-
+        } catch (Exception e) {
+            LOGGER.warn("{} {}", e.getMessage());
+            e.printStackTrace();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/34990168/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
index cf4c146..659c517 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
@@ -2,6 +2,7 @@ package org.apache.streams.hdfs;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Queues;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/34990168/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
index e8c1695..6cd1e79 100644
--- a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
@@ -1,13 +1,16 @@
 package org.apache.streams.hdfs;
 
+import com.google.common.base.Strings;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.streams.core.StreamsDatum;
+import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.util.Calendar;
 import java.util.Random;
 
 public class WebHdfsPersistReaderTask implements Runnable {
@@ -34,9 +37,12 @@ public class WebHdfsPersistReaderTask implements Runnable {
                     do{
                         try {
                             line = bufferedReader.readLine();
-                            if( line != null ) {
+                            if( !Strings.isNullOrEmpty(line) ) {
                                 String[] fields = line.split(Character.toString(reader.DELIMITER));
-                                reader.persistQueue.offer(new StreamsDatum(fields[3]));
+                                Calendar cal = Calendar.getInstance();
+                                cal.setTimeInMillis(new Long(fields[2]));
+                                StreamsDatum entry = new StreamsDatum(fields[3], fields[0], new DateTime(cal.getTime()));
+                                reader.persistQueue.offer(entry);
                             }
                         } catch (Exception e) {
                             LOGGER.warn("Failed processing " + line);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/34990168/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
index a43c4d8..b5888c3 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverClient.java
@@ -40,9 +40,13 @@ public class MoreoverClient {
         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();
+            logger.debug("Maximum sequence from last call {}", this.lastSequenceId);
+        }
+        else
+            logger.debug("No maximum sequence returned in last call {}", this.lastSequenceId);
         return result;
     }
 
@@ -79,6 +83,10 @@ public class MoreoverClient {
         IOUtils.copy(new InputStreamReader(cn.getInputStream(), Charset.forName("UTF-8")), writer);
         writer.flush();
         pullTime = new Date().getTime();
+
+        // added after seeing java.net.SocketException: Too many open files
+        cn.disconnect();
+
         return writer.toString();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/34990168/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
index 50e3f66..0ef49c5 100644
--- a/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
+++ b/streams-contrib/streams-provider-moreover/src/main/java/org/apache/streams/data/moreover/MoreoverResult.java
@@ -3,6 +3,7 @@ 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.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -112,18 +113,34 @@ public class MoreoverResult implements Iterable<StreamsDatum> {
 
         try {
             this.resultObject = xmlMapper.readValue(xmlString, ArticlesResponse.class);
-            this.articles = resultObject.getArticles();
-            this.articleArray = articles.getArticle();
-        } catch (IOException e) {
+        } catch (JsonMappingException e) {
+            // theory is this may not be fatal
+            this.resultObject = (ArticlesResponse) e.getPath().get(0).getFrom();
+        } catch (Exception e) {
             e.printStackTrace();
+            logger.warn("Unable to process document:");
+            logger.warn(xmlString);
+        }
+
+        if( this.resultObject.getStatus().equals("FAILURE"))
+        {
+            logger.warn(this.resultObject.getStatus());
+            logger.warn(this.resultObject.getMessageCode());
+            logger.warn(this.resultObject.getUserMessage());
+            logger.warn(this.resultObject.getDeveloperMessage());
         }
+        else
+        {
+            this.articles = resultObject.getArticles();
+            this.articleArray = articles.getArticle();
 
-        for (Article article : articleArray) {
-            BigInteger sequenceid = new BigInteger(article.getSequenceId());
-            list.add(new StreamsDatum(article, sequenceid));
-            logger.trace("Prior max sequence Id {} current candidate {}", this.maxSequencedId, sequenceid);
-            if (sequenceid.compareTo(this.maxSequencedId) > 0) {
-                this.maxSequencedId = sequenceid;
+            for (Article article : articleArray) {
+                BigInteger sequenceid = new BigInteger(article.getSequenceId());
+                list.add(new StreamsDatum(article, sequenceid));
+                logger.trace("Prior max sequence Id {} current candidate {}", this.maxSequencedId, sequenceid);
+                if (sequenceid.compareTo(this.maxSequencedId) > 0) {
+                    this.maxSequencedId = sequenceid;
+                }
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/34990168/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java b/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
index 7e7e553..78623b0 100644
--- a/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
+++ b/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
@@ -136,6 +136,7 @@ public class StreamsDatum implements Serializable {
 
     @Override
     public String toString() {
-        return "Document="+this.document+"\ttimestamp="+this.timestamp+"\tsequence="+this.sequenceid;
+        return this.id+"\tDocument="+this.document+"\ttimestamp="+this.timestamp+"\tsequence="+this.sequenceid;
     }
+
 }


[13/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/contents.xsd
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/contents.xsd b/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/contents.xsd
deleted file mode 100644
index 5844f9a..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/contents.xsd
+++ /dev/null
@@ -1,247 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- $Id: contents.xsd,v 1.3 2009/12/17 22:02:23 ginger Exp $ -->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-	<xs:annotation>
-		<xs:documentation>**********************</xs:documentation>
-		<xs:documentation>***** HISTORY  *****</xs:documentation>
-		<xs:documentation>**********************</xs:documentation>
-		<xs:documentation>2009-12-17: Fixed a typo on the dateModified element. Was missing the second letter 'i'</xs:documentation>
-	</xs:annotation>
-	<xs:annotation>
-		<xs:documentation>***************************************************</xs:documentation>
-		<xs:documentation>*****  COMPLEX TYPES (alpha order)   *****</xs:documentation>
-		<xs:documentation>***************************************************</xs:documentation>
-		<xs:documentation>bodyType - is the main content of an OPML document</xs:documentation>
-		<xs:documentation>headType - provides title, date and window information</xs:documentation>
-		<xs:documentation>outlineType - is a tree of distinct content pieces to be organized in outliner applications</xs:documentation>
-		<xs:documentation>outlineWithTypeType - allows for building on the base OPML outline tag with type having a controlled vocabulary and allows type to be extended or restricted separately from other outline attributes</xs:documentation>
-	</xs:annotation>
-
-	<xs:attributeGroup name="typeAttribute">
-		<xs:annotation>
-			<xs:documentation>type - indicator of how the attributes on the outline element are to be interpreted</xs:documentation>
-		</xs:annotation>
-		<xs:attribute name="type" type="union.typeType" use="optional" default="text"/>
-	</xs:attributeGroup>
-
-    <xs:complexType name="outlineWithTypeType" mixed="true">
-        <xs:annotation>
-            <xs:documentation>outlineWithTypeType - allows for building on the base OPML outline tag with type having a controlled vocabulary and allows type to be extended or restricted separately from other outline attributes</xs:documentation>
-            <xs:documentation>outline - the contents to be displayed; may contain encoded HMTL markup</xs:documentation>
-            <xs:documentation>typeAttribute - defines the contents of the type attribute</xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="outlineType">
-                <xs:sequence>
-                    <xs:element name="outline" type="outlineWithTypeType" minOccurs="0" maxOccurs="unbounded"/>
-                </xs:sequence>
-                <xs:attributeGroup ref="typeAttribute"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="bodyType">
-		<xs:annotation>
-			<xs:documentation>bodyType - contains one or more outline elements</xs:documentation>
-			<xs:documentation>outline - the contents to be displayed; may contain encoded HMTL markup; see outlineType</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="outline" type="outlineWithTypeType" minOccurs="1" maxOccurs="unbounded"/>
-		</xs:sequence>
-	</xs:complexType>
-
-	<xs:complexType name="headType">
-		<xs:annotation>
-			<xs:documentation>headType - contains zero or more of the optional elements defined below</xs:documentation>
-			<xs:documentation>title - title or name of the document</xs:documentation>
-			<xs:documentation>dateCreated - a date-time indicating when the document is created; conforms to RFC 822 (http://asg.web.cmu.edu/rfc/rfc822.html); see the Simple Types section for more information</xs:documentation>
-			<xs:documentation>dateModified - a date-time indicating when the document has last modified; conforms to RFC 822 (http://asg.web.cmu.edu/rfc/rfc822.html); see the Simple Types section for more information</xs:documentation>
-			<xs:documentation>ownerName - the owner of the document</xs:documentation>
-			<xs:documentation>ownerEmail - the email address of the owner of the document; see the Simple Types section for more information</xs:documentation>
-			<xs:documentation>ownerId - an http address of a web page that contains a form that allows a human reader to communicate with the author of the document via email or other means</xs:documentation>
-			<xs:documentation>docs - an http address of documentation for the format used in the OPML file</xs:documentation>
-			<xs:documentation>expansionState - a comma separated list of line numbers that are expanded. The line numbers indicate which headlines to expand. Order is important. For each element in the list, X, starting at the first summit , navigate flatdown X times and expand. Repeat for each element in the list.</xs:documentation>
-			<xs:documentation>vertScrollState - is a number indicating which line of the outline is displayed on the top line of the window. This number is calculated with the expansion state already applied.</xs:documentation>
-			<xs:documentation>windowTop - is a number indicating the pixel location of the top edge of the window</xs:documentation>
-			<xs:documentation>windowLeft - is a number indicating the pixel location of the left edge of the window</xs:documentation>
-			<xs:documentation>windowBottom - is a number indicating the pixel location of bottom top edge of the window</xs:documentation>
-			<xs:documentation>windowRight - is a number indicating the pixel location of the right edge of the window</xs:documentation>
-		</xs:annotation>
-
-		<xs:sequence>
-			<xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="dateCreated" type="rfc822Type" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="dateModified" type="rfc822Type" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="ownerName" type="xs:string" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="ownerEmail" type="tEmailAddress" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="ownerId" type="xs:anyURI" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="docs" type="xs:anyURI" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="expansionState" type="xs:string" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="vertScrollState" type="xs:positiveInteger" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="windowTop" type="xs:integer" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="windowLeft" type="xs:integer" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="windowBottom" type="xs:integer" minOccurs="0" maxOccurs="1"/>
-			<xs:element name="windowRight" type="xs:integer" minOccurs="0" maxOccurs="1"/>
-		</xs:sequence>
-	</xs:complexType>
-
-
-	<xs:complexType name="outlineType" mixed="true">
-		<xs:annotation>
-			<xs:documentation>text - the content to be displayed to users</xs:documentation>
-			<xs:documentation>isComment - indicates whether the outline is commented or not; by convention if an outline is commented, then all subordinate outlines are considered commented</xs:documentation>
-			<xs:documentation>isBreakpoint - indicates whether a breakpoint is set on this outline</xs:documentation>
-			<xs:documentation>created - generation date-time of the outline node</xs:documentation>
-			<xs:documentation>category - comma-separated, slash-delimited sets of strings</xs:documentation>
-			<xs:documentation>description - the top-level description element from a feed</xs:documentation>
-			<xs:documentation>url - an http address to display in a browser or a pointer an OPML file</xs:documentation>
-			<xs:documentation>htmlUrl - the top-level link element from a feed; that is a feed attribute that tells a reader where the HTML version of the feed exists</xs:documentation>
-			<xs:documentation>xmlUrl - the http address of the feed in XML</xs:documentation>
-			<xs:documentation>title - the top-level title element from a feed</xs:documentation>
-			<xs:documentation>version - the type of feed (e.g. RSS2, RSS1, etc.)</xs:documentation>
-			<xs:documentation>language - the top-level language element from a feed</xs:documentation>
-		</xs:annotation>
-
-		<xs:attribute name="text" type="xs:string" use="required"/>
-		<xs:attribute name="isComment" type="xs:boolean" use="optional" default="false"/>
-		<xs:attribute name="isBreakpoint" type="xs:boolean" use="optional" default="false"/>
-		<xs:attribute name="created" type="rfc822Type" use="optional"/>
-		<xs:attribute name="category" type="xs:string" use="optional"/>
-		<xs:attribute name="description" type="xs:string" use="optional"/>
-		<xs:attribute name="url" type="xs:anyURI" use="optional"/>
-		<xs:attribute name="htmlUrl" type="xs:anyURI" use="optional"/>
-		<xs:attribute name="xmlUrl" type="xs:anyURI" use="optional"/>
-		<xs:attribute name="title" type="xs:string" use="optional"/>
-		<xs:attribute name="version" type="xs:string" use="optional"/>
-		<xs:attribute name="language" type="union.languageType" use="optional"/>
-	</xs:complexType>
-
-	<xs:annotation>
-		<xs:documentation>************************************************</xs:documentation>
-		<xs:documentation>*****  SIMPLE TYPES (alpha order)   *****</xs:documentation>
-		<xs:documentation>************************************************</xs:documentation>
-		<xs:documentation>rfc822Type - defines a date-time format of the form Mon, 00 Jan 0000 00:00:00 +0000</xs:documentation>
-		<xs:documentation>tEmailAddress - defines an email address of the form person@some.org</xs:documentation>
-		<xs:documentation>typeType - a list of terms that are acceptable values for the attribute type on the outline element</xs:documentation>
-		<xs:documentation>union.languageType - allows the term unknown to be used with the built-in W3C language type of 2-letter language identifiers</xs:documentation>
-		<xs:documentation>union.typeType - concatenates together free text string and a list of acceptable type values</xs:documentation>
-		<xs:documentation>unknownType - defines the term called unknown that is used in the union.languageType</xs:documentation>
-		<xs:documentation>versionType - defines the version numbers for existing OPML specifications</xs:documentation>
-	</xs:annotation>
-
-	<xs:simpleType name="rfc822Type">
-		<xs:annotation>
-			<xs:documentation>Got from http://www.thearchitect.co.uk/schemas/rss-2_0.xsd and it is called tRfc822FormatDate; The notes from this rss-2_0.xsd schema are copied below</xs:documentation>
-			<xs:documentation>A date-time displayed in RFC-822 format.</xs:documentation>
-			<xs:documentation>Using the regexp definition of rfc-822 date by Sam Ruby at http://www.intertwingly.net/blog/1360.html</xs:documentation>
-		</xs:annotation>
-		<xs:restriction base="xs:string">
-			<xs:pattern value="(((Mon)|(Tue)|(Wed)|(Thu)|(Fri)|(Sat)|(Sun)), *)?\d\d? +((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec)) +\d\d(\d\d)? +\d\d:\d\d(:\d\d)? +(([+\-]?\d\d\d\d)|(UT)|(GMT)|(EST)|(EDT)|(CST)|(CDT)|(MST)|(MDT)|(PST)|(PDT)|\w)"/>
-		</xs:restriction>
-	</xs:simpleType>
-
-	<xs:simpleType name="tEmailAddress">
-		<xs:annotation>
-			<xs:documentation>Using the regexp definiton of E-Mail Address by Lucadean from the .NET RegExp Pattern Repository at http://www.3leaf.com/default/NetRegExpRepository.aspx</xs:documentation>
-		</xs:annotation>
-		<xs:restriction base="xs:string">
-			<xs:pattern value="([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])"/>
-		</xs:restriction>
-	</xs:simpleType>
-
-	<xs:simpleType name="typeType">
-		<xs:restriction base="xs:string">
-			<xs:enumeration value="atom"/>
-			<xs:enumeration value="include"/>
-			<xs:enumeration value="link"/>
-			<xs:enumeration value="text"/>
-			<xs:enumeration value="rdf"/>
-			<xs:enumeration value="rss"/>
-			<xs:enumeration value="text/x-opml"/>
-		</xs:restriction>
-	</xs:simpleType>
-
-	<xs:simpleType name="union.languageType">
-		<xs:union memberTypes="xs:language unknownType"/>
-	</xs:simpleType>
-
-	<xs:simpleType name="union.typeType">
-		<xs:union memberTypes="xs:string typeType"/>
-	</xs:simpleType>
-
-	<xs:simpleType name="unknownType">
-		<xs:restriction base="xs:string">
-			<xs:enumeration value="unknown"/>
-		</xs:restriction>
-	</xs:simpleType>
-
-	<xs:simpleType name="versionType">
-		<xs:restriction base="xs:string">
-			<xs:enumeration value="1.0"/>
-			<xs:enumeration value="2.0"/>
-		</xs:restriction>
-	</xs:simpleType>
-
-	<xs:annotation>
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>***** SCHEMA PUPOSE *****</xs:documentation>
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>Define base OPML 2.0 elements and attributes</xs:documentation>
-		<xs:documentation>OPML stands for Outline Processor Markup Language and is used for exchanging information between outliners and Internet services. It is intended to be the file format for outliner applications. It can also be used to exchange subscription lists between feed readers and aggregators.</xs:documentation>
-
-		<xs:documentation>*******************************</xs:documentation>
-		<xs:documentation>*****SCHEMA INTENT  *****</xs:documentation>
-		<xs:documentation>*******************************</xs:documentation>
-		<xs:documentation>Intended to be called by an overarching schema that creates an OPML 2.0 document</xs:documentation>
-		<xs:documentation>The overarching schema defines the root element called opml</xs:documentation>
-
-		<xs:documentation>******************************</xs:documentation>
-		<xs:documentation>*****  NAMESPACES  *****</xs:documentation>
-		<xs:documentation>******************************</xs:documentation>
-		<xs:documentation>No extra namespaces are used in this schema</xs:documentation>
-		<xs:documentation>The W3C schema is in the xs namespace</xs:documentation>	
-		<xs:documentation>The overarching schema used to create the OPML document may use a namespace</xs:documentation>
-
-		<xs:documentation>********************************</xs:documentation>
-		<xs:documentation>*****  ROOT ELEMENT *****</xs:documentation>
-		<xs:documentation>********************************</xs:documentation>
-		<xs:documentation>This schema does not contain a root element</xs:documentation>
-		<xs:documentation>The overarching schema needs to define the root element and call this schema to create OPML</xs:documentation>
-
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>***** SCHEMA DEVELOPMENT  *****</xs:documentation>
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>Tends to follow the Venetian Blind approach that defines types that can be extended</xs:documentation>
-		<xs:documentation>Interprets the OPML 2.0 specification by Dave Winer found at: http://www.opml.org/spec2</xs:documentation>
-		<xs:documentation>Created: 2006-04-20</xs:documentation>
-		<xs:documentation>Last Modified 2009-12-17</xs:documentation>
-
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>***** SCHEMA AUTHOR  *****</xs:documentation>
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>Katy Ginger, University Corporation for Atmospheric Research (UCAR), Digital Library for Earth System Education (DLESE) Program Center; email: support@dlese.org or ginger@ucar.edu</xs:documentation>
-
-		<xs:documentation>******************************************</xs:documentation>
-		<xs:documentation>*****  LICENSE INFORMATION  *****</xs:documentation>
-		<xs:documentation>******************************************</xs:documentation>
-		<xs:documentation>Copyright  (c) 2006 University Corporation for Atmospheric Research (UCAR) P.O. Box 3000, Boulder, CO 80307, United States of America</xs:documentation>
-		<xs:documentation>This schema is free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. These schemas are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this project; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</xs:documentation>
-
-		<xs:documentation>******************************************************</xs:documentation>
-		<xs:documentation>*****  OTHER COPYRIGHT INFORMATION  *****</xs:documentation>
-		<xs:documentation>******************************************************</xs:documentation>
-		
-		<xs:documentation>Parts of this page are copied and developed from Dave Winer's OPML specification found at: http://www.opml.org/spec2. Per the request of that document, its copyright notice is included here and applies to information in this directory and corresponding subdirectories:
-
-&#169; Copyright 2000 UserLand Software, Inc. All Rights Reserved.
-&#169; Copyright 2006 Scripting News, Inc. All Rights Reserved.
-
-UserLand Software, Inc. and Scripting News, Inc. are refererred to in the following as "the Companies."
-
-This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and these paragraphs are included on all such copies and derivative works. 
-
-This document may not be modified in any way, such as by removing the copyright notice or references to the Companies or other organizations. Further, while these copyright restrictions apply to the written OPML specification, no claim of ownership is made by the Companies to the format it describes. Any party may, for commercial or non-commercial purposes, implement this format without royalty or license fee to the Companies. The limited permissions granted herein are perpetual and will not be revoked by the Companies or their successors or assigns.
-
-This document and the information contained herein is provided on an "AS IS" basis and THE COMPANIES DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</xs:documentation>
-	</xs:annotation>
-</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/opml.xsd
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/opml.xsd b/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/opml.xsd
deleted file mode 100644
index 6f7f325..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/xmlschema/opml.xsd
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema  targetNamespace="http://www.dlese.org/Metadata/opml" xmlns="http://www.dlese.org/Metadata/opml"  xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
-	<xs:annotation>
-		<xs:documentation>**********************</xs:documentation>
-		<xs:documentation>***** HISTORY  *****</xs:documentation>
-		<xs:documentation>**********************</xs:documentation>
-	</xs:annotation>
-
-	<xs:annotation>
-		<xs:documentation>******************************************</xs:documentation>
-		<xs:documentation>***** SCHEMAS TO INCLUDE  *****</xs:documentation>
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>contents.xsd - contains the elements and attributes that define the OPML 2.0 specification</xs:documentation>
-	</xs:annotation>
-	<xs:include schemaLocation="contents.xsd"/>
-
-
-	<xs:annotation>
-		<xs:documentation>*********************************************</xs:documentation>
-		<xs:documentation>***** ROOT ELEMENT DEFINED  *****</xs:documentation>
-		<xs:documentation>*********************************************</xs:documentation>
-	</xs:annotation>
-	<xs:element name="opml" type="opmlType"/>
-
-	<xs:annotation>
-		<xs:documentation>***************************************************</xs:documentation>
-		<xs:documentation>*****  COMPLEX TYPES (alpha order)   *****</xs:documentation>
-		<xs:documentation>***************************************************</xs:documentation>
-		<xs:documentation>opmlType - is root element type</xs:documentation>
-		<xs:documentation>headType - provides title, date and window information</xs:documentation>
-		<xs:documentation>bodyType - is the main content of an OPML document</xs:documentation>
-	</xs:annotation>
-
-	<xs:complexType name="opmlType">
-		<xs:annotation>
-			<xs:documentation>version - is a number defining the edition of OPML used</xs:documentation>
-		</xs:annotation>
-		<xs:sequence>
-			<xs:element name="head" type="headType" minOccurs="1" maxOccurs="1"/>
-			<xs:element name="body" type="bodyType" minOccurs="1" maxOccurs="1"/>
-		</xs:sequence>
-		<xs:attribute name="version" type="versionType" use="required"/>
-	</xs:complexType>
-
-	<xs:annotation>
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>***** SCHEMA PUPOSE *****</xs:documentation>
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>Define an OPML 2.0 file format using XML schema</xs:documentation>
-		<xs:documentation>OPML stands for Outline Processor Markup Language and is used for exchanging information between outliners and Internet services. It is intended to be the file format for outliner applications. It can also be used to exchange subscription lists between feed readers and aggregators.</xs:documentation>
-
-		<xs:documentation>*******************************</xs:documentation>
-		<xs:documentation>*****SCHEMA INTENT  *****</xs:documentation>
-		<xs:documentation>*******************************</xs:documentation>
-		<xs:documentation>Act as an overarching schema that defines the root element of OPML 2.0 documents</xs:documentation>
-		<xs:documentation>A schema (see schemas to include) is called that defines the OPML sub-elements/attributes</xs:documentation>
-
-		<xs:documentation>******************************</xs:documentation>
-		<xs:documentation>*****  NAMESPACES  *****</xs:documentation>
-		<xs:documentation>******************************</xs:documentation>
-		<xs:documentation>This schema has a target namespaces of: http://www.dlese.org/Metadata/opml</xs:documentation>
-		<xs:documentation>This schema has a default namespace of: http://www.dlese.org/Metadata/opml</xs:documentation>
-		<xs:documentation>Namespace defaulting mechanism is used to suppress the need to qualify elements</xs:documentation>
-
-		<xs:documentation>********************************</xs:documentation>
-		<xs:documentation>*****  ROOT ELEMENT *****</xs:documentation>
-		<xs:documentation>********************************</xs:documentation>
-		<xs:documentation>This schema has a root element of: opml</xs:documentation>
-		<xs:documentation>See the root element defined section</xs:documentation>
-		<xs:documentation>Included schemas do not have a root element</xs:documentation>
-		
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>***** SCHEMA DEVELOPMENT  *****</xs:documentation>
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>Tends to follow the Venetian Blind approach that defines types that can be extended</xs:documentation>
-		<xs:documentation>Interprets the OPML 2.0 specification found at: http://www.opml.org/spec2</xs:documentation>
-		<xs:documentation>Created: 2006-04-20</xs:documentation>
-		<xs:documentation>Last Modified 2006-04-20</xs:documentation>
-
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>***** SCHEMA AUTHOR  *****</xs:documentation>
-		<xs:documentation>**********************************</xs:documentation>
-		<xs:documentation>Katy Ginger, University Corporation for Atmospheric Research (UCAR), Digital Library for Earth System Education (DLESE) Program Center; email: support@dlese.org or ginger@ucar.edu</xs:documentation>
-
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>*****  LICENSE INFORMATION  *****</xs:documentation>
-		<xs:documentation>*******************************************</xs:documentation>
-		<xs:documentation>Copyright  (c) 2006 DLESE Program Center, University Corporation for Atmospheric Research (UCAR) P.O. Box 3000, Boulder, CO 80307, United States of America;  email: support@dlese.org;  website: http://www.dlese.org</xs:documentation>
-		<xs:documentation>This schema is free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. These schemas are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this project; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</xs:documentation>
-		
-		<xs:documentation>******************************************************</xs:documentation>
-		<xs:documentation>*****  OTHER COPYRIGHT INFORMATION  *****</xs:documentation>
-		<xs:documentation>******************************************************</xs:documentation>
-		
-		<xs:documentation>Parts of this page are copied and developed from Dave Winer's OPML specification found at: http://www.opml.org/spec2. Per the request of that document, its copyright notice is included here and applies to information in this directory and corresponding subdirectories:
-
-&#169; Copyright 2000 UserLand Software, Inc. All Rights Reserved.
-&#169; Copyright 2006 Scripting News, Inc. All Rights Reserved.
-
-UserLand Software, Inc. and Scripting News, Inc. are refererred to in the following as "the Companies."
-
-This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and these paragraphs are included on all such copies and derivative works. 
-
-This document may not be modified in any way, such as by removing the copyright notice or references to the Companies or other organizations. Further, while these copyright restrictions apply to the written OPML specification, no claim of ownership is made by the Companies to the format it describes. Any party may, for commercial or non-commercial purposes, implement this format without royalty or license fee to the Companies. The limited permissions granted herein are perpetual and will not be revoked by the Companies or their successors or assigns.
-
-This document and the information contained herein is provided on an "AS IS" basis and THE COMPANIES DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</xs:documentation>
-	</xs:annotation>
-</xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java b/trunk/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
deleted file mode 100644
index 0c17979..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/test/Top100FeedsTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package org.apache.streams.rss.test;
-
-import com.google.common.collect.Lists;
-import org.apache.commons.lang.StringUtils;
-import org.apache.streams.pojo.json.Activity;
-import org.apache.streams.rss.FeedDetails;
-import org.apache.streams.rss.RssStreamConfiguration;
-import org.apache.streams.rss.provider.RssStreamProvider;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.List;
-
-import static org.hamcrest.number.OrderingComparison.greaterThan;
-
-/**
- * Created by sblackmon on 2/5/14.
- */
-public class Top100FeedsTest{
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(Top100FeedsTest.class);
-
-    @Test
-    public void Tests()
-    {
-        InputStream is = Top100FeedsTest.class.getResourceAsStream("/top100.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        RssStreamConfiguration configuration = new RssStreamConfiguration();
-        List<FeedDetails> feeds = Lists.newArrayList();
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                if(!StringUtils.isEmpty(line))
-                {
-                    feeds.add(new FeedDetails().withUrl(line).withPollIntervalMillis(5000l));
-                }
-            }
-        } catch( Exception e ) {
-            System.out.println(e);
-            e.printStackTrace();
-            Assert.fail();
-        }
-
-        Assert.assertThat(feeds.size(), greaterThan(70));
-
-        configuration.setFeeds(feeds);
-
-        RssStreamProvider provider = new RssStreamProvider(configuration, Activity.class);
-        provider.start();
-
-        try {
-            Thread.sleep(10000);
-        } catch (InterruptedException e) {}
-
-        Assert.assertThat(provider.getProviderQueue().size(), greaterThan(0));
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.opml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.opml b/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.opml
deleted file mode 100644
index f7a3bc0..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.opml
+++ /dev/null
@@ -1,110 +0,0 @@
-<opml version="2.0">
-<head>
-	<title>Top 100 Feeds</title>
-	<ownerName>Share Your OPML</ownerName>
-	<ownerId>http://share.opml.org/contact/</ownerId>
-	<dateModified>Sun, 30 Sep 2007 15:33:49 GMT</dateModified>
-</head>
-<body>
-	<outline text="TechCrunch" title="TechCrunch" type="rss" xmlUrl="http://feeds.feedburner.com/Techcrunch" htmlUrl="http://www.techcrunch.com"/>
-	<outline text="Slashdot" title="Slashdot" type="rss" xmlUrl="http://rss.slashdot.org/Slashdot/slashdot" htmlUrl="http://slashdot.org/"/>
-	<outline text="Engadget" title="Engadget" type="rss" xmlUrl="http://www.engadget.com/rss.xml" htmlUrl="http://www.engadget.com"/>
-	<outline text="Google Blog" title="Google Blog" type="rss" xmlUrl="http://googleblog.blogspot.com/atom.xml" htmlUrl="http://googleblog.blogspot.com"/>
-	<outline text="Scobleizer - Microsoft Geek Blogger" title="Scobleizer - Microsoft Geek Blogger" type="rss" xmlUrl="http://scobleizer.wordpress.com/feed/" htmlUrl="http://scobleizer.wordpress.com"/>
-	<outline text="Joel on Software" title="Joel on Software" type="rss" xmlUrl="http://www.joelonsoftware.com/rss.xml" htmlUrl="http://www.joelonsoftware.com"/>
-	<outline text="digg" title="digg" type="rss" xmlUrl="http://digg.com/rss/index.xml" htmlUrl="http://digg.com/"/>
-	<outline text="Boing Boing" title="Boing Boing" type="rss" xmlUrl="http://feeds.feedburner.com/boingboing/iBag" htmlUrl="http://www.boingboing.net/"/>
-	<outline text="Scripting News" title="Scripting News" type="rss" xmlUrl="http://www.scripting.com/rss.xml" htmlUrl="http://www.scripting.com/"/>
-	<outline text="Lifehacker" title="Lifehacker" type="rss" xmlUrl="http://www.lifehacker.com/index.xml" htmlUrl="http://www.lifehacker.com/"/>
-	<outline text="Techmeme" title="Techmeme" type="rss" xmlUrl="http://www.techmeme.com/index.xml" htmlUrl="http://www.techmeme.com/"/>
-	<outline text="43 Folders" title="43 Folders" type="rss" xmlUrl="http://feeds.feedburner.com/43Folders" htmlUrl="http://www.43folders.com"/>
-	<outline text="A List Apart" title="A List Apart" type="rss" xmlUrl="http://www.alistapart.com/rss.xml" htmlUrl="http://www.alistapart.com/"/>
-	<outline text="Wired News: Top Stories" title="Wired News: Top Stories" type="rss" xmlUrl="http://www.wired.com/news_drop/netcenter/netcenter.rdf" htmlUrl="http://www.wired.com/"/>
-	<outline text="Bloglines | News" title="Bloglines | News" type="rss" xmlUrl="http://www.bloglines.com/rss/about/news" htmlUrl="http://www.bloglines.com"/>
-	<outline text="Read/WriteWeb" title="Read/WriteWeb" type="rss" xmlUrl="http://www.readwriteweb.com/rss.xml" htmlUrl="http://www.readwriteweb.com/"/>
-	<outline text="Om Malik" title="Om Malik" type="rss" xmlUrl="http://feeds.feedburner.com/OmMalik" htmlUrl="http://gigaom.com"/>
-	<outline text="Daring Fireball" title="Daring Fireball" type="rss" xmlUrl="http://daringfireball.net/index.xml" htmlUrl="http://daringfireball.net/"/>
-	<outline text="O'Reilly Radar" title="O'Reilly Radar" type="rss" xmlUrl="http://radar.oreilly.com/atom.xml" htmlUrl="http://radar.oreilly.com/"/>
-	<outline text="Techdirt" title="Techdirt" type="rss" xmlUrl="http://www.techdirt.com/techdirt_rss.xml" htmlUrl="http://www.techdirt.com/"/>
-	<outline text="Mashable!" title="Mashable!" type="rss" xmlUrl="http://feeds.feedburner.com/mashable" htmlUrl="http://mashable.com"/>
-	<outline text="Micro Pursuasion" title="Micro Pursuasion" type="rss" xmlUrl="http://feeds.feedburner.com/MicroPersuasion" htmlUrl="http://www.micropersuasion.com/"/>
-	<outline text="ComputerZen.com - Scott Hanselman" title="ComputerZen.com - Scott Hanselman" type="rss" xmlUrl="http://feeds.feedburner.com/ScottHanselman" htmlUrl="http://www.hanselman.com/blog/"/>
-	<outline text="Blog Maverick" title="Blog Maverick" type="rss" xmlUrl="http://www.blogmaverick.com/rss.xml" htmlUrl="http://www.blogmaverick.com/"/>
-	<outline text="Google Blogoscoped" title="Google Blogoscoped" type="rss" xmlUrl="http://blog.outer-court.com/rss.xml" htmlUrl="http://blog.outer-court.com"/>
-	<outline text="Signal vs. Noise" title="Signal vs. Noise" type="rss" xmlUrl="http://feeds.feedburner.com/37signals/beMH" htmlUrl="http://37signals.com/svn/"/>
-	<outline text="John Battelle's Searchblog" title="John Battelle's Searchblog" type="rss" xmlUrl="http://battellemedia.com/index.xml" htmlUrl="http://battellemedia.com/"/>
-	<outline text="Jeremy Zawodny's blog" title="Jeremy Zawodny's blog" type="rss" xmlUrl="http://jeremy.zawodny.com/blog/rss2.xml" htmlUrl="http://jeremy.zawodny.com/blog/"/>
-	<outline text="Jon's Radio" title="Jon's Radio" type="rss" xmlUrl="http://weblog.infoworld.com/udell/rss.xml" htmlUrl="http://weblog.infoworld.com/udell/"/>
-	<outline text="Creating Passionate Users" title="Creating Passionate Users" type="rss" xmlUrl="http://headrush.typepad.com/creating_passionate_users/index.rdf" htmlUrl="http://headrush.typepad.com/creating_passionate_users/"/>
-	<outline text="Dilbert" title="Dilbert" type="rss" xmlUrl="http://www.tapestrycomics.com/dilbert.xml" htmlUrl="http://www.dilbert.com/"/>
-	<outline text="Download Squad" title="Download Squad" type="rss" xmlUrl="http://www.downloadsquad.com/rss.xml" htmlUrl="http://www.downloadsquad.com"/>
-	<outline text="The Unofficial Apple Weblog (TUAW)" title="The Unofficial Apple Weblog (TUAW)" type="rss" xmlUrl="http://www.tuaw.com/rss.xml" htmlUrl="http://www.tuaw.com"/>
-	<outline text="CNET News.com" title="CNET News.com" type="rss" xmlUrl="http://news.com.com/2547-1_3-0-5.xml" htmlUrl="http://news.com.com/"/>
-	<outline text="Google Weblog" title="Google Weblog" type="rss" xmlUrl="http://google.blogspace.com/index.xml" htmlUrl="http://google.blogspace.com/"/>
-	<outline text="Microsoft Watch from Mary Jo Foley" title="Microsoft Watch from Mary Jo Foley" type="rss" xmlUrl="http://rssnewsapps.ziffdavis.com/msw.xml" htmlUrl="http://www.microsoft-watch.com"/>
-	<outline text="Gizmodo" title="Gizmodo" type="rss" xmlUrl="http://www.gizmodo.net/index.xml" htmlUrl="http://www.gizmodo.com/"/>
-	<outline text="Mini-Microsoft" title="Mini-Microsoft" type="rss" xmlUrl="http://minimsft.blogspot.com/atom.xml" htmlUrl="http://minimsft.blogspot.com"/>
-	<outline text="Jeffrey Zeldman Presents: The Daily Report" title="Jeffrey Zeldman Presents: The Daily Report" type="rss" xmlUrl="http://www.zeldman.com/feed/zeldman.xml" htmlUrl="http://www.zeldman.com/"/>
-	<outline text="CrunchNotes" title="CrunchNotes" type="rss" xmlUrl="http://feeds.feedburner.com/Crunchnotes" htmlUrl="http://www.crunchnotes.com"/>
-	<outline text="mezzoblue" title="mezzoblue" type="rss" xmlUrl="http://www.mezzoblue.com/rss/index.xml" htmlUrl="http://mezzoblue.com/"/>
-	<outline text="SimpleBits" title="SimpleBits" type="rss" xmlUrl="http://www.simplebits.com/xml/rss.xml" htmlUrl="http://www.simplebits.com/"/>
-	<outline text="Solution Watch" title="Solution Watch" type="rss" xmlUrl="http://feeds.feedburner.com/SolutionWatch" htmlUrl="http://www.solutionwatch.com"/>
-	<outline text="MAKE Magazine" title="MAKE Magazine" type="rss" xmlUrl="http://www.makezine.com/blog/index.xml" htmlUrl="http://www.makezine.com/blog/"/>
-	<outline text="kuro5hin.org" title="kuro5hin.org" type="rss" xmlUrl="http://www.kuro5hin.org/backend.rdf" htmlUrl="http://www.kuro5hin.org/"/>
-	<outline text="Programmable Web" title="Programmable Web" type="rss" xmlUrl="http://feeds.feedburner.com/ProgrammableWeb" htmlUrl="http://blog.programmableweb.com"/>
-	<outline text="ScottGu's Blog" title="ScottGu's Blog" type="rss" xmlUrl="http://weblogs.asp.net/scottgu/rss.aspx" htmlUrl="http://weblogs.asp.net/scottgu/"/>
-	<outline text="hack a day" title="hack a day" type="rss" xmlUrl="http://www.hackaday.com/rss.xml" htmlUrl="http://www.hackaday.com/"/>
-	<outline text="The Daily WTF" title="The Daily WTF" type="rss" xmlUrl="http://TheDailyWTF.com/rss.aspx" htmlUrl="http://thedailywtf.com/forums/12/ShowForum.aspx"/>
-	<outline text="Dilbert" title="Dilbert" type="rss" xmlUrl="http://feeds.feedburner.com/tapestrydilbert" htmlUrl="http://www.dilbert.com/"/>
-	<outline text="gapingvoid" title="gapingvoid" type="rss" xmlUrl="http://www.gapingvoid.com/index.rdf" htmlUrl="http://www.gapingvoid.com/"/>
-	<outline text="Coding Horror" title="Coding Horror" type="rss" xmlUrl="http://www.codinghorror.com/blog/index.xml" htmlUrl="http://www.codinghorror.com/blog/"/>
-	<outline text="The Doc Searls Weblog" title="The Doc Searls Weblog" type="rss" xmlUrl="http://partners.userland.com/people/docSearls.xml" htmlUrl="http://doc.weblogs.com/"/>
-	<outline text="timbl's blog" title="timbl's blog" type="rss" xmlUrl="http://dig.csail.mit.edu/breadcrumbs/blog/feed/4" htmlUrl="http://dig.csail.mit.edu/breadcrumbs/blog/4"/>
-	<outline text="Ars Technica" title="Ars Technica" type="rss" xmlUrl="http://arstechnica.com/index.ars/rss" htmlUrl="http://arstechnica.com"/>
-	<outline text="MacRumors" title="MacRumors" type="rss" xmlUrl="http://www.macrumors.com/macrumors.xml" htmlUrl="http://www.macrumors.com"/>
-	<outline text="The Jason Calacanis Weblog" title="The Jason Calacanis Weblog" type="rss" xmlUrl="http://www.calacanis.com/rss.xml" htmlUrl="http://www.calacanis.com"/>
-	<outline text="Signal vs. Noise" title="Signal vs. Noise" type="rss" xmlUrl="http://37signals.com/svn/index_full.rdf" htmlUrl="http://37signals.com/svn/"/>
-	<outline text="Extremetech" title="Extremetech" type="rss" xmlUrl="http://rssnewsapps.ziffdavis.com/extreme.xml" htmlUrl="http://www.extremetech.com"/>
-	<outline text="Creating Passionate Users" title="Creating Passionate Users" type="rss" xmlUrl="http://headrush.typepad.com/creating_passionate_users/atom.xml" htmlUrl="http://headrush.typepad.com/creating_passionate_users/"/>
-	<outline text="kottke.org" title="kottke.org" type="rss" xmlUrl="http://www.kottke.org/index.xml" htmlUrl="http://www.kottke.org/"/>
-	<outline text="Vitamin" title="Vitamin" type="rss" xmlUrl="http://feeds.feedburner.com/vitaminmasterfeed" htmlUrl="http://www.thinkvitamin.com"/>
-	<outline text="CNET News.com" title="CNET News.com" type="rss" xmlUrl="http://news.com.com/2547-1_3-0-20.xml" htmlUrl="http://news.com.com/"/>
-	<outline text="Think Secret" title="Think Secret" type="rss" xmlUrl="http://www.thinksecret.com/rss.xml" htmlUrl="http://www.thinksecret.com/"/>
-	<outline text="BetaNews.Com" title="BetaNews.Com" type="rss" xmlUrl="http://www.betanews.com/rss2" htmlUrl="http://www.betanews.com/"/>
-	<outline text="Yahoo! Search blog" title="Yahoo! Search blog" type="rss" xmlUrl="http://www.ysearchblog.com/index.xml" htmlUrl="http://www.ysearchblog.com/"/>
-	<outline text="kottke.org" title="kottke.org" type="rss" xmlUrl="http://feeds.kottke.org/main" htmlUrl="http://www.kottke.org/"/>
-	<outline text="Matt Cutts: Gadgets, Google, and SEO" title="Matt Cutts: Gadgets, Google, and SEO" type="rss" xmlUrl="http://www.mattcutts.com/blog/feed/" htmlUrl="http://www.mattcutts.com/blog"/>
-	<outline text="MSDN Just Published" title="MSDN Just Published" type="rss" xmlUrl="http://msdn.microsoft.com/rss.xml" htmlUrl="http://msdn.microsoft.com/"/>
-	<outline text="VentureBlog" title="VentureBlog" type="rss" xmlUrl="http://feeds.feedburner.com/ventureblog" htmlUrl="http://p6.hostingprod.com/@www.ventureblog.com/"/>
-	<outline text="eHub" title="eHub" type="rss" xmlUrl="http://feeds.feedburner.com/eHub" htmlUrl="http://www.emilychang.com/go/ehub/"/>
-	<outline text="The Official Google Reader Blog" title="The Official Google Reader Blog" type="rss" xmlUrl="http://googlereader.blogspot.com/atom.xml" htmlUrl="http://googlereader.blogspot.com"/>
-	<outline text="MobileCrunch" title="MobileCrunch" type="rss" xmlUrl="http://feeds.feedburner.com/Mobilecrunch" htmlUrl="http://mobilecrunch.com"/>
-	<outline text="Seth's Blog" title="Seth's Blog" type="rss" xmlUrl="http://sethgodin.typepad.com/seths_blog/atom.xml" htmlUrl="http://sethgodin.typepad.com/seths_blog/"/>
-	<outline text="Cool Tools" title="Cool Tools" type="rss" xmlUrl="http://www.kk.org/cooltools/index.xml" htmlUrl="http://www.kk.org/cooltools/"/>
-	<outline text="Lifehacker" title="Lifehacker" type="rss" xmlUrl="http://feeds.gawker.com/lifehacker/full" htmlUrl="http://www.lifehacker.com/"/>
-	<outline text="Flickr" title="Flickr" type="rss" xmlUrl="http://feeds.feedburner.com/Flickrblog" htmlUrl="http://blog.flickr.com/flickrblog/"/>
-	<outline text="PVRblog" title="PVRblog" type="rss" xmlUrl="http://www.pvrblog.com/pvr/index.rdf" htmlUrl="http://www.pvrblog.com/pvr/"/>
-	<outline text="Don Box's Spoutlet" title="Don Box's Spoutlet" type="rss" xmlUrl="http://pluralsight.com/blogs/dbox/Rss.aspx" htmlUrl="http://pluralsight.com/blogs/dbox/"/>
-	<outline text="Joi Ito's Web" title="Joi Ito's Web" type="rss" xmlUrl="http://joi.ito.com/index.xml" htmlUrl="http://joi.ito.com/"/>
-	<outline text="Burn This! - The FeedBurner Weblog" title="Burn This! - The FeedBurner Weblog" type="rss" xmlUrl="http://feeds.feedburner.com/BurnThisRSS2" htmlUrl="http://blogs.feedburner.com/feedburner/"/>
-	<outline text="Eric.Weblog()" title="Eric.Weblog()" type="rss" xmlUrl="http://software.ericsink.com/rss.xml" htmlUrl="http://software.ericsink.com/"/>
-	<outline text="O'Reilly Radar" title="O'Reilly Radar" type="rss" xmlUrl="http://radar.oreilly.com/index.rdf" htmlUrl="http://radar.oreilly.com/"/>
-	<outline text="IEBlog" title="IEBlog" type="rss" xmlUrl="http://blogs.msdn.com/ie/Rss.aspx" htmlUrl="http://blogs.msdn.com/ie/default.aspx"/>
-	<outline text="“Let the Good Times Roll” by Guy Kawasaki" title="“Let the Good Times Roll” by Guy Kawasaki" type="rss" xmlUrl="http://feeds.feedburner.com/letTheGoodTimesRollByGuyKawasaki" htmlUrl="http://blog.guykawasaki.com/"/>
-	<outline text="Larkware News" title="Larkware News" type="rss" xmlUrl="http://www.larkware.com/larkware2.xml" htmlUrl="http://www.larkware.com/"/>
-	<outline text="456 Berea Street" title="456 Berea Street" type="rss" xmlUrl="http://www.456bereastreet.com/feed.xml" htmlUrl="http://www.456bereastreet.com/"/>
-	<outline text="I, Cringely @ PBS.org" title="I, Cringely @ PBS.org" type="rss" xmlUrl="http://www.pbs.org/cringely/pulpit/rss2.xml" htmlUrl="http://www.pbs.org/cringely/"/>
-	<outline text="ranchero.com" title="ranchero.com" type="rss" xmlUrl="http://ranchero.com/xml/rss.xml" htmlUrl="http://ranchero.com/"/>
-	<outline text="Niall Kennedy's Weblog" title="Niall Kennedy's Weblog" type="rss" xmlUrl="http://www.niallkennedy.com/blog/index.xml" htmlUrl="http://www.niallkennedy.com/blog/"/>
-	<outline text="The Social Software Weblog" title="The Social Software Weblog" type="rss" xmlUrl="http://socialsoftware.weblogsinc.com/rss.xml" htmlUrl="http://socialsoftware.weblogsinc.com/"/>
-	<outline text="Seth's Blog" title="Seth's Blog" type="rss" xmlUrl="http://sethgodin.typepad.com/seths_blog/index.rdf" htmlUrl="http://sethgodin.typepad.com/seths_blog/"/>
-	<outline text="Wired News: Top Stories" title="Wired News: Top Stories" type="rss" xmlUrl="http://www.wired.com/news/feeds/rss2/0,2610,,00.xml" htmlUrl="http://www.wired.com/"/>
-	<outline text="NYT &gt; Circuits" title="NYT &gt; Circuits" type="rss" xmlUrl="http://www.nytimes.com/services/xml/rss/nyt/Technology.xml" htmlUrl="http://www.nytimes.com/pages/technology/index.html?partner%3Drssnyt"/>
-	<outline text="A List Apart-1" title="A List Apart-1" type="rss" xmlUrl="http://www.alistapart.com/feed/rss.xml" htmlUrl="http://www.alistapart.com/"/>
-	<outline text="Chris Pirillo" title="Chris Pirillo" type="rss" xmlUrl="http://chris.pirillo.com/index.xml" htmlUrl="http://chris.pirillo.com/blog"/>
-	<outline text="dpreview.com" title="dpreview.com" type="rss" xmlUrl="http://www.dpreview.com/news/dpr.rdf" htmlUrl="http://www.dpreview.com/"/>
-	<outline text="Lessig Blog" title="Lessig Blog" type="rss" xmlUrl="http://www.lessig.org/blog/index.rdf" htmlUrl="http://www.lessig.org/blog/"/>
-	<outline text="Yahoo! User Interface Blog" title="Yahoo! User Interface Blog" type="rss" xmlUrl="http://feeds.yuiblog.com/YahooUserInterfaceBlog" htmlUrl="http://yuiblog.com/blog"/>
-	<outline text="CNN.com" title="CNN.com" type="rss" xmlUrl="http://rss.cnn.com/rss/cnn_topstories.rss" htmlUrl="http://www.cnn.com/rssclick/?section%3Dcnn_topstories"/>
-</body>
-</opml>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.txt b/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.txt
deleted file mode 100644
index d5086aa..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/test/resources/top100.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-http://feeds.feedburner.com/Techcrunch
-http://rss.slashdot.org/Slashdot/slashdot
-http://www.engadget.com/rss.xml
-http://googleblog.blogspot.com/atom.xml
-http://scobleizer.wordpress.com/feed/
-http://www.joelonsoftware.com/rss.xml
-http://digg.com/rss/index.xml
-http://feeds.feedburner.com/boingboing/iBag
-http://www.scripting.com/rss.xml
-http://www.lifehacker.com/index.xml
-http://www.techmeme.com/index.xml
-http://feeds.feedburner.com/43Folders
-http://www.alistapart.com/rss.xml
-http://www.wired.com/news_drop/netcenter/netcenter.rdf
-http://www.bloglines.com/rss/about/news
-http://www.readwriteweb.com/rss.xml
-http://feeds.feedburner.com/OmMalik
-http://daringfireball.net/index.xml
-http://radar.oreilly.com/atom.xml
-http://www.techdirt.com/techdirt_rss.xml
-http://feeds.feedburner.com/mashable
-http://feeds.feedburner.com/MicroPersuasion
-http://feeds.feedburner.com/ScottHanselman
-http://www.blogmaverick.com/rss.xml
-http://blog.outer-court.com/rss.xml
-http://feeds.feedburner.com/37signals/beMH
-http://battellemedia.com/index.xml
-http://jeremy.zawodny.com/blog/rss2.xml
-http://weblog.infoworld.com/udell/rss.xml
-http://headrush.typepad.com/creating_passionate_users/index.rdf
-http://www.tapestrycomics.com/dilbert.xml
-http://www.downloadsquad.com/rss.xml
-http://www.tuaw.com/rss.xml
-http://news.com.com/2547-1_3-0-5.xml
-http://google.blogspace.com/index.xml
-http://rssnewsapps.ziffdavis.com/msw.xml
-http://www.gizmodo.net/index.xml
-http://minimsft.blogspot.com/atom.xml
-http://www.zeldman.com/feed/zeldman.xml
-http://feeds.feedburner.com/Crunchnotes
-http://www.mezzoblue.com/rss/index.xml
-http://www.simplebits.com/xml/rss.xml
-http://feeds.feedburner.com/SolutionWatch
-http://www.makezine.com/blog/index.xml
-http://www.kuro5hin.org/backend.rdf
-http://feeds.feedburner.com/ProgrammableWeb
-http://weblogs.asp.net/scottgu/rss.aspx
-http://www.hackaday.com/rss.xml
-http://TheDailyWTF.com/rss.aspx
-http://feeds.feedburner.com/tapestrydilbert
-http://www.gapingvoid.com/index.rdf
-http://www.codinghorror.com/blog/index.xml
-http://partners.userland.com/people/docSearls.xml
-http://dig.csail.mit.edu/breadcrumbs/blog/feed/4
-http://arstechnica.com/index.ars/rss
-http://www.macrumors.com/macrumors.xml
-http://www.calacanis.com/rss.xml
-http://37signals.com/svn/index_full.rdf
-http://rssnewsapps.ziffdavis.com/extreme.xml
-http://headrush.typepad.com/creating_passionate_users/atom.xml
-http://www.kottke.org/index.xml
-http://feeds.feedburner.com/vitaminmasterfeed
-http://news.com.com/2547-1_3-0-20.xml
-http://www.thinksecret.com/rss.xml
-http://www.betanews.com/rss2
-http://www.ysearchblog.com/index.xml
-http://feeds.kottke.org/main
-http://www.mattcutts.com/blog/feed/
-http://msdn.microsoft.com/rss.xml
-http://feeds.feedburner.com/ventureblog
-http://feeds.feedburner.com/eHub
-http://googlereader.blogspot.com/atom.xml
-http://feeds.feedburner.com/Mobilecrunch
-http://sethgodin.typepad.com/seths_blog/atom.xml
-http://www.kk.org/cooltools/index.xml
-http://feeds.gawker.com/lifehacker/full
-http://feeds.feedburner.com/Flickrblog
-http://www.pvrblog.com/pvr/index.rdf
-http://pluralsight.com/blogs/dbox/Rss.aspx
-http://joi.ito.com/index.xml
-http://feeds.feedburner.com/BurnThisRSS2
-http://software.ericsink.com/rss.xml
-http://radar.oreilly.com/index.rdf
-http://blogs.msdn.com/ie/Rss.aspx
-http://feeds.feedburner.com/letTheGoodTimesRollByGuyKawasaki
-http://www.larkware.com/larkware2.xml
-http://www.456bereastreet.com/feed.xml
-http://www.pbs.org/cringely/pulpit/rss2.xml
-http://ranchero.com/xml/rss.xml
-http://www.niallkennedy.com/blog/index.xml
-http://socialsoftware.weblogsinc.com/rss.xml
-http://sethgodin.typepad.com/seths_blog/index.rdf
-http://www.wired.com/news/feeds/rss2/0,2610,,00.xml
-http://www.nytimes.com/services/xml/rss/nyt/Technology.xml
-http://www.alistapart.com/feed/rss.xml
-http://chris.pirillo.com/index.xml
-http://www.dpreview.com/news/dpr.rdf
-http://www.lessig.org/blog/index.rdf
-http://feeds.yuiblog.com/YahooUserInterfaceBlog
-http://rss.cnn.com/rss/cnn_topstories.rss

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/streams-provider-rss.iml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/streams-provider-rss.iml b/trunk/streams-contrib/streams-provider-rss/streams-provider-rss.iml
deleted file mode 100644
index 19c4c1e..0000000
--- a/trunk/streams-contrib/streams-provider-rss/streams-provider-rss.iml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/classes" />
-    <output-test url="file://$MAVEN_REPOSITORY$/org/apache/streams/streams-master/0.2-incubating-SNAPSHOT/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jaxb2" isTestSource="false" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jsonschema2pojo" isTestSource="false" generated="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: com.typesafe:config:1.2.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.streams:streams-core:0.1-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.streams:streams-pojo:0.1-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
-    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.streams:streams-config:0.1-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.collections:google-collections:1.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:0.9.0" level="project" />
-    <orderEntry type="library" name="Maven: net.minidev:json-smart:1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path-assert:0.9.0" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apache.streams:streams-persist-console:0.1-SNAPSHOT" level="project" />
-    <orderEntry type="library" name="Maven: rome:rome:1.0" level="project" />
-    <orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/pom.xml b/trunk/streams-contrib/streams-provider-sysomos/pom.xml
deleted file mode 100644
index 5a42b17..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/pom.xml
+++ /dev/null
@@ -1,176 +0,0 @@
-<?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-sysomos</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>com.typesafe</groupId>
-            <artifactId>config</artifactId>
-        </dependency>
-        <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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</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>
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</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>
-    </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>
-                <artifactId>maven-clean-plugin</artifactId>
-                <version>2.5</version>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>target</directory>
-                            <includes>
-                                <include>**/*</include>
-                            </includes>
-                        </fileset>
-                    </filesets>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo/**/*.java</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/sysomos/Sysomos.json</sourcePath>
-                        <sourcePath>src/main/jsonschema/com/sysomos/SysomosConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>com.sysomos</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>
-                <version>0.8.3</version>
-                <configuration>
-                    <schemaDirectory>src/main/xmlschema/com/sysomos/</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.sysomos.xml</generatePackage>
-                </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/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
deleted file mode 100644
index 17e4551..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/ContentRequestBuilder.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.apache.streams.sysomos;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * This is the best class to use when syncing information between sysomos and our data store.
- */
-public class ContentRequestBuilder extends RequestBuilder {
-
-    private String baseUrl;
-    private String hid;
-    private String addedAfter;
-    private String addedBefore;
-    private String size;
-    private String offset;
-    private String apiKey;
-
-    /**
-     * The max number of items you are allowed to get per request.
-     */
-    public static final int MAX_ALLOWED_PER_REQUEST = 10000;
-
-    protected ContentRequestBuilder(String baseUrl, String apiKey) {
-        this.baseUrl = baseUrl;
-        this.apiKey = apiKey;
-    }
-
-    @Override
-    protected URL getFullRequestUrl() throws SysomosException, MalformedURLException {
-        StringBuilder url = new StringBuilder();
-        url.append(this.baseUrl);
-        url.append("dev/v1/heartbeat/content?");
-        url.append("apiKey=");
-        url.append(this.apiKey);
-        url.append("&hid=");
-        url.append(this.hid);
-        if (size != null) {
-            url.append("&size=");
-            url.append(this.size);
-        }
-        if (this.addedAfter != null) {
-            url.append("&addedAfter=");
-            url.append(this.addedAfter);
-        }
-        if (this.addedBefore != null) {
-            url.append("&addedBefore=");
-            url.append(this.addedBefore);
-        }
-        if (this.offset != null) {
-            url.append("&offset=");
-            url.append(this.offset);
-        }
-        return new URL(url.toString());  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-
-    public ContentRequestBuilder setHeartBeatId(int hid) {
-        return setHeartBeatId(Integer.toString(hid));
-    }
-
-    public ContentRequestBuilder setHeartBeatId(String hid) {
-        this.hid = hid;
-        return this;
-    }
-
-    public ContentRequestBuilder setAddedAfterDate(String dateString) {
-        this.addedAfter = dateString;
-        return this;
-    }
-
-    public ContentRequestBuilder setAddedBeforeDate(String dateString) {
-        this.addedBefore = dateString;
-        return this;
-    }
-
-    public ContentRequestBuilder setReturnSetSize(int size) {
-        this.size = Integer.toString(Math.min(size, MAX_ALLOWED_PER_REQUEST));
-        return this;
-    }
-
-    public ContentRequestBuilder setOffset(int offset) {
-        this.offset = Integer.toString(offset);
-        return this;
-    }
-
-    public String getURLString() {
-        try {
-            return getFullRequestUrl().toString();
-        } catch (Exception e) {
-            return "";
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/HeartbeatInfo.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/HeartbeatInfo.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/HeartbeatInfo.java
deleted file mode 100644
index ed4b563..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/HeartbeatInfo.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package org.apache.streams.sysomos;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 5/1/13
- * Time: 4:56 PM
- * To change this template use File | Settings | File Templates.
- */
-public class HeartbeatInfo {
-
-    private Document doc;
-    private List<SysomosTagDefinition> tags;
-
-    protected HeartbeatInfo(String xmlString) throws Exception {
-        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
-        DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
-        this.doc = docBuilder.parse(new InputSource(new ByteArrayInputStream(xmlString.getBytes("utf-8"))));
-        this.tags = new ArrayList<SysomosTagDefinition>();
-        createTagDefinitions();
-    }
-
-
-    private void createTagDefinitions() {
-        this.tags = new ArrayList<SysomosTagDefinition>();
-        NodeList tagList = this.doc.getElementsByTagName("tag");
-
-        for(int i=0; i < tagList.getLength(); ++i) {
-            Node tag =  tagList.item(i);
-            SysomosTagDefinition tagDefinition = createSysomosTagDefinitionFromNode(tag);
-            if(this.hasTagName(tagDefinition.getTagName())) {
-                SysomosTagDefinition otherTag = this.getTagWithTagName(tagDefinition.getTagName());
-                if(!otherTag.getDisplayName().equals(tagDefinition.getDisplayName())) {
-                    throw new RuntimeException("A single tag ("+otherTag.getTagName()+") has multiple display names ("+otherTag.getDisplayName()+" , "+tagDefinition.getDisplayName()+")");
-                }
-                else {
-                    List<String> otherQueries = otherTag.getQueries();
-                    for(String query : tagDefinition.getQueries()) {
-                        if(!otherQueries.contains(query)) {
-                            otherTag.addQuery(query);
-                        }
-                    }
-                }
-            }
-            else {
-                this.tags.add(tagDefinition);
-            }
-
-        }
-    }
-
-    private SysomosTagDefinition createSysomosTagDefinitionFromNode(Node tag) {
-        Element tagElement = (Element) tag;
-        SysomosTagDefinition tagDefinition = new SysomosTagDefinition(tagElement.getElementsByTagName("name").item(0).getTextContent(),
-                tagElement.getElementsByTagName("displayName").item(0).getTextContent());
-        NodeList taggingRule = tagElement.getElementsByTagName("taggingRule");
-        for(int i=0; i < taggingRule.getLength(); ++i) {
-            Element rule = (Element) taggingRule.item(i);
-            NodeList queries = rule.getElementsByTagName("query");
-            for(int j=0; j < queries.getLength(); ++j) {
-                Element query = (Element) queries.item(j);
-                tagDefinition.addQuery(query.getTextContent());
-            }
-        }
-        return tagDefinition;
-    }
-
-    public boolean hasTagName(String tagName) {
-        for(SysomosTagDefinition tag : this.tags) {
-            if(tag.hasTagName(tagName)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public SysomosTagDefinition getTagWithTagName(String tagName) {
-        for(SysomosTagDefinition tag : this.tags) {
-            if(tag.hasTagName(tagName)) {
-                return tag;
-            }
-        }
-        return null;
-    }
-
-    public boolean hasTagWithDisplayName(String displayName) {
-        for(SysomosTagDefinition tag : this.tags) {
-            if(tag.hasDisplayName(displayName)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public SysomosTagDefinition getTagWithDisplayName(String displayName) {
-        for(SysomosTagDefinition tag : this.tags) {
-            if(tag.hasDisplayName(displayName)) {
-                return tag;
-            }
-        }
-        return null;
-    }
-
-    public List<SysomosTagDefinition> getTagDefinitions() {
-        List<SysomosTagDefinition> result = new ArrayList<SysomosTagDefinition>();
-        result.addAll(this.tags);
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/RequestBuilder.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/RequestBuilder.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/RequestBuilder.java
deleted file mode 100644
index 0708618..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/RequestBuilder.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.apache.streams.sysomos;
-
-import com.sysomos.xml.BeatApi;
-import com.sysomos.xml.ObjectFactory;
-import org.apache.commons.io.IOUtils;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public abstract class RequestBuilder {
-
-    private static Pattern _pattern = Pattern.compile("code: ([0-9]+)");
-    //private Logger log = LoggerFactory.getLogger(RequestBuilder.class);
-
-    /**
-     * Returns the full url need to execute a request.
-     * http://api.sysomos.com/dev/v1/heartbeat/content?apiKey=YOUR
-     * -APIKEY&hid=YOUR-HEARTBEAT-ID&offset=0&size=10&
-     * addedAfter=2010-10-15T13:00:00Z&addedBefore=2010-10-18T13:00:00Z
-     *
-     * @return
-     * @throws SysomosException
-     * @throws java.net.MalformedURLException
-     */
-    protected abstract URL getFullRequestUrl() throws SysomosException, MalformedURLException;
-
-
-    public String getFullRequestUrlString() throws SysomosException, MalformedURLException {
-        return getFullRequestUrl().toString();
-    }
-
-
-
-    /**
-     * @throws java.net.MalformedURLException
-     * @throws java.io.IOException
-     */
-    public BeatApi.BeatResponse execute() throws SysomosException {
-        URL url;
-        String urlString = null;
-        try {
-            url = this.getFullRequestUrl();
-            urlString = url.toString();
-        } catch (MalformedURLException e1) {
-            throw new SysomosException(e1);
-        }
-        try {
-            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()), writer);
-            writer.flush();
-            //System.out.println(writer.toString());
-            String xmlResponse = writer.toString();
-            if(xmlResponse == null || xmlResponse.equals("")) {
-                throw new SysomosException("XML Response from Sysomos was empty : "+xmlResponse+"\n"+cn.getResponseMessage(), cn.getResponseCode());
-            }
-            BeatApi.BeatResponse response;
-            JAXBContext context = JAXBContext.newInstance(new Class[] {ObjectFactory.class});
-//            JAXBContext context = JAXBContext.newInstance(BeatApi.class.getName(), ObjectFactory.class.getClassLoader());
-            Unmarshaller unmarshaller = context.createUnmarshaller();
-            BeatApi beatApi = (BeatApi) unmarshaller.unmarshal(new StringReader(xmlResponse));
-            return beatApi.getBeatResponse();
-        } catch (IOException e) {
-//            e.printStackTrace();
-            //log.error("Error executing request : {}", e, urlString);
-            String message = e.getMessage();
-            Matcher match = _pattern.matcher(message);
-            if(match.find()) {
-                int errorCode = Integer.parseInt(match.group(1));
-                throw new SysomosException(message, e, errorCode);
-            }
-            else {
-                throw new SysomosException(e.getMessage(), e);
-            }
-        } catch (JAXBException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosClient.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosClient.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosClient.java
deleted file mode 100644
index 11bd761..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosClient.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.apache.streams.sysomos;
-
-import org.apache.commons.io.IOUtils;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringWriter;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Wrapper for the Sysomos API.
- */
-public class SysomosClient {
-
-    public static final String BASE_URL_STRING = "http://api.sysomos.com/";
-    private static final String DATE_FORMAT_STRING = "yyyy-MM-dd'T'hh:mm:ssZ";
-    private static final String HEARTBEAT_INFO_URL = "http://api.sysomos.com/v1/heartbeat/info?apiKey={api_key}&hid={hid}";
-    private static Pattern _pattern = Pattern.compile("code: ([0-9]+)");
-
-    private String apiKey;
-
-    private HttpURLConnection client;
-
-    public SysomosClient(String apiKey) {
-        this.apiKey = apiKey;
-    }
-
-    public HeartbeatInfo getHeartbeatInfo(String hid) throws Exception {
-        String urlString = HEARTBEAT_INFO_URL.replace("{api_key}", this.apiKey);
-        urlString = urlString.replace("{hid}", hid);
-        String xmlResponse = execute(new URL(urlString));
-        return new HeartbeatInfo(xmlResponse);
-    }
-
-    private String execute(URL url) throws SysomosException {
-        String urlString = url.toString();
-
-        try {
-            client = (HttpURLConnection) url.openConnection();
-            client.setRequestMethod("GET");
-            client.addRequestProperty("Content-Type", "text/xml;charset=UTF-8");
-            client.setDoInput(true);
-            client.setDoOutput(false);
-            StringWriter writer = new StringWriter();
-            IOUtils.copy(new InputStreamReader(client.getInputStream()), writer);
-            writer.flush();
-            //System.out.println(writer.toString());
-            return writer.toString();
-        } catch (IOException e) {
-//            e.printStackTrace();
-            //log.error("Error executing request : {}", e, urlString);
-            String message = e.getMessage();
-            Matcher match = _pattern.matcher(message);
-            if(match.find()) {
-                int errorCode = Integer.parseInt(match.group(1));
-                throw new SysomosException(message, e, errorCode);
-            }
-            else {
-                throw new SysomosException(e.getMessage(), e);
-            }
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosException.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosException.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosException.java
deleted file mode 100644
index 34d99ab..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.apache.streams.sysomos;
-
-public class SysomosException extends Exception {
-
-    private int errorCode = -1;
-
-    public SysomosException() {
-        // TODO Auto-generated constructor stub
-    }
-
-    public SysomosException(String arg0) {
-        super(arg0);
-        // TODO Auto-generated constructor stub
-    }
-
-    public SysomosException(Throwable arg0) {
-        super(arg0);
-        // TODO Auto-generated constructor stub
-    }
-
-    public SysomosException(String arg0, Throwable arg1) {
-        super(arg0, arg1);
-        // TODO Auto-generated constructor stub
-    }
-
-    public SysomosException(String arg0, int errorCode) {
-        super(arg0);
-        this.errorCode = errorCode;
-    }
-
-    public SysomosException(String arg0, Throwable arg1, int errorCode) {
-        super(arg0, arg1);
-        this.errorCode = errorCode;
-    }
-
-    public int getErrorCode() {
-        return this.errorCode;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosJacksonResponse.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosJacksonResponse.java b/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosJacksonResponse.java
deleted file mode 100644
index d03a35d..0000000
--- a/trunk/streams-contrib/streams-provider-sysomos/src/main/java/org/apache/streams/sysomos/SysomosJacksonResponse.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package org.apache.streams.sysomos;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.sysomos.xml.BeatApi;
-import com.sysomos.xml.BeatApi.BeatResponse.Beat;
-import com.sysomos.xml.ObjectFactory;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.Unmarshaller;
-import java.io.StringReader;
-import java.util.List;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 11/19/13
- * Time: 3:11 PM
- * To change this template use File | Settings | File Templates.
- */
-public class SysomosJacksonResponse implements SysomosResponse {
-
-    private int numResponses = 0;
-    private List<Beat> beats;
-    private boolean hasError = false;
-    private String xmlString;
-    private int index;
-    private ObjectMapper mapper;
-    private String errorMessage;
-
-    public SysomosJacksonResponse(String xmlString) {
-        try {
-            this.xmlString = xmlString;
-            JAXBContext context = JAXBContext.newInstance(new Class[] {ObjectFactory.class});
-//            JAXBContext context = JAXBContext.newInstance(BeatApi.class.getName(), ObjectFactory.class.getClassLoader());
-            Unmarshaller unmarshaller = context.createUnmarshaller();
-            BeatApi beatApi = (BeatApi) unmarshaller.unmarshal(new StringReader(xmlString));
-            this.beats = beatApi.getBeatResponse().getBeat();
-            this.numResponses = beatApi.getBeatResponse().getCount();
-            this.index = 0;
-            this.hasError = xmlString.contains("<errors>") && xmlString.contains("<error>") && xmlString.contains("<errorMessage>");
-            if(this.hasError) {
-                this.errorMessage = xmlString.substring(xmlString.lastIndexOf("<errorMessage>"), xmlString.lastIndexOf("</errorMessage>"));
-            }
-            this.mapper = new ObjectMapper();
-//            System.out.println(mapper.writeValueAsString(beatApi));
-        } catch (Exception e) {
-            this.hasError = true;
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public int getNumResults() {
-        return this.numResponses;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public boolean hasError() {
-        return this.hasError;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public String getErrorMessage() {
-        return this.errorMessage;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public String getXMLResponseString() {
-        return this.xmlString;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public boolean hasNext() {
-        return this.index < this.numResponses;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public String next() {
-        try {
-            return this.mapper.writeValueAsString(this.beats.get(index++));
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public void remove() {
-        //To change body of implemented methods use File | Settings | File Templates.
-    }
-}


[20/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFixed.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFixed.json b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFixed.json
deleted file mode 100644
index a3239c6..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDCFixed.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{"name":"t3_1lemut","permalink":"/r/InfertilityBabies/comments/1lemut/one_milestone_down/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":2,"ups":3,"link_flair_text":null,"title":"ONE MILESTONE DOWN!!","author_flair_css_class":"","author":"beermethestrength","thumbnail":"","created_utc":1377878382.0,"url":"http://www.reddit.com/r/InfertilityBabies/comments/1lemut/one_milestone_down/","stickied":false,"banned_by":null,"domain":"self.InfertilityBabies","id":"1lemut","selftext":"We had our early pregnancy scan today with our RE, and I was shocked to actually see the heartbeat! So shocked in fact, that I immediately burst into tears. The very kind intern grabbed a kleenex for me while the RE continued to look around. Everything looks perfect so far - I'm at 6 weeks 5 days, and the ultrasound reflected that. That puts our due date at 4/20 (haha, won't forget that date). \n\nI just called the OB, who is super popular and apparently difficult to get in with
 , and left a message for a new patient visit. Fingers crossed I hear back by Tuesday. And we scheduled one last visit with the RE for next Friday. Of course I'm still scared, but I can relax a little bit. And I can actually hang that photo on the fridge this time, and not crumple it up and throw it away like I did last October. \n\nSo now we're faced with the dilemma - do we tell the family yet? I'm thinking no, because when I miscarried last year my family was not helpful at all. Plus my mother-in-law is psycho and will call me every fucking day to ask how I'm doing, and I can't take that stress right now. \n\nI just texted my hubby about feeling like we shouldn't tell, and he agrees, so I guess that settles that. :)","distinguished":null,"author_flair_text":"6 time's the charm? IUI #6 worked, due 4/20/14","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2vy6k","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;We had our early pregnan
 cy scan today with our RE, and I was shocked to actually see the heartbeat! So shocked in fact, that I immediately burst into tears. The very kind intern grabbed a kleenex for me while the RE continued to look around. Everything looks perfect so far - I&amp;#39;m at 6 weeks 5 days, and the ultrasound reflected that. That puts our due date at 4/20 (haha, won&amp;#39;t forget that date). &lt;/p&gt;\n\n&lt;p&gt;I just called the OB, who is super popular and apparently difficult to get in with, and left a message for a new patient visit. Fingers crossed I hear back by Tuesday. And we scheduled one last visit with the RE for next Friday. Of course I&amp;#39;m still scared, but I can relax a little bit. And I can actually hang that photo on the fridge this time, and not crumple it up and throw it away like I did last October. &lt;/p&gt;\n\n&lt;p&gt;So now we&amp;#39;re faced with the dilemma - do we tell the family yet? I&amp;#39;m thinking no, because when I miscarried last year my famil
 y was not helpful at all. Plus my mother-in-law is psycho and will call me every fucking day to ask how I&amp;#39;m doing, and I can&amp;#39;t take that stress right now. &lt;/p&gt;\n\n&lt;p&gt;I just texted my hubby about feeling like we shouldn&amp;#39;t tell, and he agrees, so I guess that settles that. :)&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":3,"saved":false,"num_reports":null,"created":1377907182.0,"downs":0,"hidden":false,"likes":null,"subreddit":"InfertilityBabies"}
-{"name":"t3_1lekxw","permalink":"/r/Amsterdam/comments/1lekxw/cold_medicine_in_holland/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":0,"ups":1,"link_flair_text":null,"title":"Cold Medicine in Holland","author_flair_css_class":null,"author":"1upped","thumbnail":"","created_utc":1377876854.0,"url":"http://www.reddit.com/r/Amsterdam/comments/1lekxw/cold_medicine_in_holland/","stickied":false,"banned_by":null,"domain":"self.Amsterdam","id":"1lekxw","selftext":"I have a cold and I'm losing my mind that there are so few over the counter options here. Even benadryl and mucinex aren't sold here!\n\nI'm really only looking for an over the counter expectorant (like mucinex) to help clear the mucus out of my chest. Can someone please recommend something? Do I just have to get a friend to mail it to me from the States? That would truly suck.\n\nThanks!","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"sub
 reddit_id":"t5_2r117","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I have a cold and I&amp;#39;m losing my mind that there are so few over the counter options here. Even benadryl and mucinex aren&amp;#39;t sold here!&lt;/p&gt;\n\n&lt;p&gt;I&amp;#39;m really only looking for an over the counter expectorant (like mucinex) to help clear the mucus out of my chest. Can someone please recommend something? Do I just have to get a friend to mail it to me from the States? That would truly suck.&lt;/p&gt;\n\n&lt;p&gt;Thanks!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377905654.0,"downs":0,"hidden":false,"likes":null,"subreddit":"Amsterdam"}
-{"name":"t3_1ldwu2","permalink":"/r/GunPorn/comments/1ldwu2/remington_msr_1600x1200/","edited":false,"over_18":false,"approved_by":null,"is_self":false,"num_comments":0,"ups":29,"link_flair_text":null,"title":"Remington msr [1600x1200]","author_flair_css_class":null,"author":"SirJilliumz","thumbnail":"http://d.thumbs.redditmedia.com/_g2HL6kdjbIXJ43W.jpg","created_utc":1377844697.0,"url":"http://i.imgur.com/wRAhTyw.jpg","stickied":false,"banned_by":null,"domain":"i.imgur.com","id":"1ldwu2","selftext":"","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2sey3","selftext_html":null,"media_embed":{},"score":26,"saved":false,"num_reports":null,"created":1377873497.0,"downs":3,"hidden":false,"likes":null,"subreddit":"GunPorn"}
-{"name":"t3_1leeb7","permalink":"/r/Fitness/comments/1leeb7/2_year_progress_pics/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":6,"ups":23,"link_flair_text":null,"title":"~2 year progress (pics)","author_flair_css_class":"","author":"adderallnredbull","thumbnail":"","created_utc":1377871202.0,"url":"http://www.reddit.com/r/Fitness/comments/1leeb7/2_year_progress_pics/","stickied":false,"banned_by":null,"domain":"self.Fitness","id":"1leeb7","selftext":"This is my second year progress post to follow my first year one [HERE](http://www.reddit.com/r/Fitness/comments/wgicu/1_year_progress_pics/).\n \n**Info and Stats**\n\nI am 5'11 and 24 years old in a few weeks. I started at 180lb/81kg and ~17% bf and am currently at 173lb/78.6kg and ~9% bf. \n\n    |Aug 2011|July 2012|Feb 2013|Aug 2013\n:---|:---:|:--:|:---: |---:\nWeight|180lb/81kg|165lb/74kg |190lb/86kg |173lb/81kg\nBF % est.|17%|9%|14%|9%\nBench|175lb|255lb|295lb|305lb\nSquat|185lb|295lb|345lb|365
 lb\nDeadlift|205lb|315lb|425lb|465lb\nOHP|115lb|155lb|180lb|195lb\n\n[Some pretty graphs](http://i.imgur.com/pkOWeqYh.png)\n\n**PICS** \n\n[Full album with detailed info here or just click below for single pics](http://imgur.com/a/wqVe8)\n\n[Front Progress](http://i.imgur.com/Pb6op4v.jpg)  + [Back progress](http://i.imgur.com/AxMmkDD.jpg) + [Front Total Progression](http://i.imgur.com/4xpK6fTh.jpg) + [Back Total Progression](http://i.imgur.com/WAEL4NA.jpg) + [Legs doing Leg things](http://i.imgur.com/GNjJT8P.jpg) + [1 year bulk and cut comparison](http://i.imgur.com/cCrQPAP.jpg)+ [Extra back pic](http://i.imgur.com/EqNpYwlh.jpg) + [Leg and body proportions](http://i.imgur.com/g8ZT9NAh.jpg) + [Bonus goofing around pic](http://i.imgur.com/jvoDPB0h.jpg)\n\n\n\n**Quick background recap**\n\nI went from athletic in HS to being an out of shape computer gamer in college. I decided to fix it when I realized I disliked my picture being taken. \n\nSo I started working out in August 2011, 5 da
 ys a week with no set program, terrible nutrition, and bad form. Over the next 6 months I found /r/fitness and other weightlifting sites and quickly improved my nutrition and started doing a split body workout. The next 6 months I started cutting weight and added leg workouts as well (had a nagging knee injury and had to fix computer guy posture).\n\n**Year 2**\n\nAfter my last post I tried bulking on purpose this time with a goal weight of 190lbs/86kg. I tried to gain about 1lb/.45kg a week while still eating the clean healthy food, but just more of it. I decided to keep the same general lifting routine since I had not plateaued. Additionally I started the 9-5 work life in Sept 2012 and it took a couple weeks to get my sleep, nutrition and gym rhythm back. I lift about 2 hours after my dinner (get to gym at 7-8pm) and it takes about 1.5-2 hours including the commute. I eventually hit my goal weight of 190lbs/86kg in February and then decided to do another slow cut to see what kind 
 of progress I had made. I tried to cut weight slowly at about the same rate as I had gained it so I (hopefully) wouldn’t lose everything I gained from bulking. Besides a 10 day, eating everything, no gym vacation in July I stuck to the schedule and it worked out great! My main lifts didn’t drop off during my cut which was better than expected.\n\n**General Diet**\n\nI went by basic macros and not calories when keeping track of food. Since I eat the same things I just tweaked the amounts if I wasn’t gaining/losing weight at the right speeds. I eat 3 meals a day usually with room for 1 snack/protein shake if needed. If I absolutely had to go over my macros for a day I went over on protein. Seasonings don’t get counted and I only use sriracha or low calorie sauces. Stevia is my 0 calorie sweetener of choice.\n\n**Bulking Diet** \n\n45% protein 35% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s\n\n**Breakfast**: medium/larg
 e bowl of rolled oats with almond butter + 5 eggs + large coffee (I add ON Vanilla Whey protein powder to hazelnut coffee for amazingness)\n\n**Lunch**: 1.5lbs/24oz of chicken/leaner beefs/fish + equal size portion of veggies (brassica type veggie preferred) + 80g of your favorite complex carb (brown rice, sweet potato, beans)\n\n**After work dinner**: Dinner is 1lb/16oz of chicken/beef + equal size portion of veggies + 80g of complex carbs again. \n\n**Snack if needed**: Make a shake that fits your needed macros for the day. If you struggle to eat a lot of meat/get enough protein try taking 0% fat plain greek yogurt and add lemon juice and 0 calorie sweetener for a delicious concoction. To cut the acidity try using lemon extract and lemon zest instead of juice. \n\n**Cutting Diet** \n\n50% protein 30% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s\n\n**Breakfast**: small bowl of rolled oats + 2 eggs + large coffee (I add ON Va
 nilla Whey protein powder to hazelnut coffee)\n\n**Lunch**: 2/3lbs/12oz of chicken/leaner beefs/fish + equal size portion of veggies (brassica type veggie preferred) \n\n**After work dinner**: Dinner is 2/3lb/12oz of chicken/lean beef/fish + equal size portion of veggies + half of a small avocado or some other healthy fat. \n\n**Snack if needed**: 0% fat plain greek yogurt mixed with lemon juice, lemon extract, lemon zest and 0 calorie sweetener OR kimchee OR a spinach salad with a bit of goat cheese and balsamic OR seasoned seaweed sheets filled with dried baby shrimp/fish. (you can only pick one....)\n\n**Drinks**: Coffee, Green Tea, Water, Lemon Iced Tea \n\n**Supplements**: Creatine, ON Nutrition Whey protein (vanilla ice cream flavor &lt;3 still tastes like powdered unicorn), Fish Oil, Multivitamin, Vitamin D, Spirulina, Psycillium Husk, only when cutting EC stack and Yohimbine occasionally. Use Examine.com to learn more about these supplements\n\n**Workout Routine** \n\nThese 
 are general standard workouts I do but I frequently swap various auxiliary lifts in and out of rotation all the time. I do lifts in 3 sets of 10-12 with medium weight or 3 sets of 10,8,6 with heavy weights. Usually I am close to failure by the end of 3rd set no matter what. Proper form is the main emphasis during all lifts. I try to increase the weight or # of reps each week or just the difficulty and ROM in general. I do cardio 2-3 times a week when cutting and it consists of incline walking or cycling or stairmaster for 10-15 minutes total at moderate pace. 5-10 sets of HIIT sprints occasionally when I can talk myself into it. I only need a coffee occasionally to get me ready for the gym.\n\n**Day1** Chest/Abs\n\nDB incline flies\n\nDB flat bench flies\n\nDB incline bench press\n\nDB flat bench press\n\nCable Flies from top, middle, and bottom angles.\n\nWide-grip bench or dips if still energetic\n\nWeighted Leg raises\n\nWeighted cable crunches\n\nPlanks\n\n**Day2** Back\n\nWeigh
 ted pull-ups wide-grip\n\nWeighted pull-ups parallel-grip\n\nWeighted chin-ups\n\nDeadlifts (rep range of only 4-8)\n\nStanding cable pullover close-grip\n\nCable pullover wide-grip\n\nT-bar rows\n\nWide-grip seated row\n\nUn-weighted pull-ups if still energetic\n\n**Day3** Shoulders/arms\n\nFront and Side DB raises\n\nStanding OHP\n\nCable raises with single arm grip (front and side)\n\nStanding one arm shoulder press (use T-bar row equipment but facing it)\n\nFace pulls\n\nRear delt Flies\n\nHammer or concentration curls\n\nEZ bar bicep curls with different grip each set (6 or 9 sets)\n\nSkullcrushers with close-grip bench supersets using a close-grip with the EZ bar\n\nTricep rope pushdowns\n\nAlso some extra light stabilization work/lifts for my shoulder joints/rotator cuff\n\n**Day4** Legs/Abs\n\nSquats high bar (I end with a widowmaker set as well) \n\nMachine leg extension\n\nMachine single leg extension\n\nMachine leg curl\n\nLying leg curl\n\nLeg press \n\nLeg press calf ra
 ises\n\nCalf raises\n\nWeighted hip thrust (do these in a corner as they look terribly awkward) \n\nSame abs lifts as day1\n\n**Day5** Check how your body is feeling and pick accordingly\n\nRest or light cardio with a lagging bodypart/muscle workout\n\n**Extra Stuff**\n\nI did not do SS due to already having basic strength level when I learned about it. I do highly recommend it to anyone starting lifting weights for the first time as it provides a solid foundation. \n\nMy tattoos have not noticeably changed in size or proportions. From last post to this post my waist size went from a 31 to a 33-34 and back down to a 32-31. For t-shirt size I used to be able to wear most medium shirts. By the end of my bulk I could only wear larges and now I currently can wear only looser neck mediums and smaller larges. \n\nI drank a bit less than once a week while bulking and usually was 4 or so strong drinks over 5+ hours to reach and keep a good level. When cutting I drink about twice a month and
  only 2-3 strong drinks is needed to reach the same level. For tracking lifts and food I suggest using Fitocracy and/or Myfitnesspal. I used Fitocracy for 4-5 months but realized I was doing more of the social stuff and wasting time than tracking my lifts so I stopped. \n\nFor goals I still have not reached a lean 180lb/81kg but now I want to be a lean 185lb/84kg. I hit the 1000lb club and now want to reach the 1250lb club and/or 400 wilks score. I still don’t have a bicep vein and really want one. \n\nLet me know if you have any questions or suggestions for me. Are there any areas that need work and I hope this is helpful to someone!","distinguished":null,"author_flair_text":"Highland Games","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qhx4","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;This is my second year progress post to follow my first year one &lt;a href=\"http://www.reddit.com/r/Fitness/comments/wgicu/1_year_progres
 s_pics/\"&gt;HERE&lt;/a&gt;.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Info and Stats&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;I am 5&amp;#39;11 and 24 years old in a few weeks. I started at 180lb/81kg and ~17% bf and am currently at 173lb/78.6kg and ~9% bf. &lt;/p&gt;\n\n&lt;table&gt;&lt;thead&gt;\n&lt;tr&gt;\n&lt;th align=\"left\"&gt;&lt;/th&gt;\n&lt;th align=\"center\"&gt;Aug 2011&lt;/th&gt;\n&lt;th align=\"center\"&gt;July 2012&lt;/th&gt;\n&lt;th align=\"center\"&gt;Feb 2013&lt;/th&gt;\n&lt;th align=\"right\"&gt;Aug 2013&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Weight&lt;/td&gt;\n&lt;td align=\"center\"&gt;180lb/81kg&lt;/td&gt;\n&lt;td align=\"center\"&gt;165lb/74kg&lt;/td&gt;\n&lt;td align=\"center\"&gt;190lb/86kg&lt;/td&gt;\n&lt;td align=\"right\"&gt;173lb/81kg&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;BF % est.&lt;/td&gt;\n&lt;td align=\"center\"&gt;17%&lt;/td&gt;\n&lt;td align=\"center\"&gt;9%&lt;/td&gt;\n&lt;td ali
 gn=\"center\"&gt;14%&lt;/td&gt;\n&lt;td align=\"right\"&gt;9%&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Bench&lt;/td&gt;\n&lt;td align=\"center\"&gt;175lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;255lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;295lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;305lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Squat&lt;/td&gt;\n&lt;td align=\"center\"&gt;185lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;295lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;345lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;365lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Deadlift&lt;/td&gt;\n&lt;td align=\"center\"&gt;205lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;315lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;425lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;465lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;OHP&lt;/td&gt;\n&lt;td align=\"center\"&gt;115lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;155lb&lt;/td&gt;\n&lt;td align=\"center\"
 &gt;180lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;195lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;&lt;/table&gt;\n\n&lt;p&gt;&lt;a href=\"http://i.imgur.com/pkOWeqYh.png\"&gt;Some pretty graphs&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;PICS&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"http://imgur.com/a/wqVe8\"&gt;Full album with detailed info here or just click below for single pics&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"http://i.imgur.com/Pb6op4v.jpg\"&gt;Front Progress&lt;/a&gt;  + &lt;a href=\"http://i.imgur.com/AxMmkDD.jpg\"&gt;Back progress&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/4xpK6fTh.jpg\"&gt;Front Total Progression&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/WAEL4NA.jpg\"&gt;Back Total Progression&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/GNjJT8P.jpg\"&gt;Legs doing Leg things&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/cCrQPAP.jpg\"&gt;1 year bulk and cut comparison&lt;/a&gt;+ &lt;a href=\"http://i.imgur.com/EqNpYwlh.jpg\"&gt;Extra back pic&lt;/a&gt; + 
 &lt;a href=\"http://i.imgur.com/g8ZT9NAh.jpg\"&gt;Leg and body proportions&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/jvoDPB0h.jpg\"&gt;Bonus goofing around pic&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Quick background recap&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;I went from athletic in HS to being an out of shape computer gamer in college. I decided to fix it when I realized I disliked my picture being taken. &lt;/p&gt;\n\n&lt;p&gt;So I started working out in August 2011, 5 days a week with no set program, terrible nutrition, and bad form. Over the next 6 months I found &lt;a href=\"/r/fitness\"&gt;/r/fitness&lt;/a&gt; and other weightlifting sites and quickly improved my nutrition and started doing a split body workout. The next 6 months I started cutting weight and added leg workouts as well (had a nagging knee injury and had to fix computer guy posture).&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Year 2&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;After my last post I tried bulking on purp
 ose this time with a goal weight of 190lbs/86kg. I tried to gain about 1lb/.45kg a week while still eating the clean healthy food, but just more of it. I decided to keep the same general lifting routine since I had not plateaued. Additionally I started the 9-5 work life in Sept 2012 and it took a couple weeks to get my sleep, nutrition and gym rhythm back. I lift about 2 hours after my dinner (get to gym at 7-8pm) and it takes about 1.5-2 hours including the commute. I eventually hit my goal weight of 190lbs/86kg in February and then decided to do another slow cut to see what kind of progress I had made. I tried to cut weight slowly at about the same rate as I had gained it so I (hopefully) wouldn’t lose everything I gained from bulking. Besides a 10 day, eating everything, no gym vacation in July I stuck to the schedule and it worked out great! My main lifts didn’t drop off during my cut which was better than expected.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;General Diet&lt;/strong
 &gt;&lt;/p&gt;\n\n&lt;p&gt;I went by basic macros and not calories when keeping track of food. Since I eat the same things I just tweaked the amounts if I wasn’t gaining/losing weight at the right speeds. I eat 3 meals a day usually with room for 1 snack/protein shake if needed. If I absolutely had to go over my macros for a day I went over on protein. Seasonings don’t get counted and I only use sriracha or low calorie sauces. Stevia is my 0 calorie sweetener of choice.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Bulking Diet&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;45% protein 35% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Breakfast&lt;/strong&gt;: medium/large bowl of rolled oats with almond butter + 5 eggs + large coffee (I add ON Vanilla Whey protein powder to hazelnut coffee for amazingness)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Lunch&lt;/strong&gt;: 1.5lbs/24oz of chicken/leaner beefs/fish +
  equal size portion of veggies (brassica type veggie preferred) + 80g of your favorite complex carb (brown rice, sweet potato, beans)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;After work dinner&lt;/strong&gt;: Dinner is 1lb/16oz of chicken/beef + equal size portion of veggies + 80g of complex carbs again. &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Snack if needed&lt;/strong&gt;: Make a shake that fits your needed macros for the day. If you struggle to eat a lot of meat/get enough protein try taking 0% fat plain greek yogurt and add lemon juice and 0 calorie sweetener for a delicious concoction. To cut the acidity try using lemon extract and lemon zest instead of juice. &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Cutting Diet&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;50% protein 30% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Breakfast&lt;/strong&gt;: small bowl of rolled oats + 2 eggs + large coffee (I add ON Va
 nilla Whey protein powder to hazelnut coffee)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Lunch&lt;/strong&gt;: 2/3lbs/12oz of chicken/leaner beefs/fish + equal size portion of veggies (brassica type veggie preferred) &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;After work dinner&lt;/strong&gt;: Dinner is 2/3lb/12oz of chicken/lean beef/fish + equal size portion of veggies + half of a small avocado or some other healthy fat. &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Snack if needed&lt;/strong&gt;: 0% fat plain greek yogurt mixed with lemon juice, lemon extract, lemon zest and 0 calorie sweetener OR kimchee OR a spinach salad with a bit of goat cheese and balsamic OR seasoned seaweed sheets filled with dried baby shrimp/fish. (you can only pick one....)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Drinks&lt;/strong&gt;: Coffee, Green Tea, Water, Lemon Iced Tea &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Supplements&lt;/strong&gt;: Creatine, ON Nutrition Whey protein (vanilla ice cream flavor &amp;lt;3 still tastes like 
 powdered unicorn), Fish Oil, Multivitamin, Vitamin D, Spirulina, Psycillium Husk, only when cutting EC stack and Yohimbine occasionally. Use Examine.com to learn more about these supplements&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Workout Routine&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;These are general standard workouts I do but I frequently swap various auxiliary lifts in and out of rotation all the time. I do lifts in 3 sets of 10-12 with medium weight or 3 sets of 10,8,6 with heavy weights. Usually I am close to failure by the end of 3rd set no matter what. Proper form is the main emphasis during all lifts. I try to increase the weight or # of reps each week or just the difficulty and ROM in general. I do cardio 2-3 times a week when cutting and it consists of incline walking or cycling or stairmaster for 10-15 minutes total at moderate pace. 5-10 sets of HIIT sprints occasionally when I can talk myself into it. I only need a coffee occasionally to get me ready for the gym.&lt;/p&gt;\
 n\n&lt;p&gt;&lt;strong&gt;Day1&lt;/strong&gt; Chest/Abs&lt;/p&gt;\n\n&lt;p&gt;DB incline flies&lt;/p&gt;\n\n&lt;p&gt;DB flat bench flies&lt;/p&gt;\n\n&lt;p&gt;DB incline bench press&lt;/p&gt;\n\n&lt;p&gt;DB flat bench press&lt;/p&gt;\n\n&lt;p&gt;Cable Flies from top, middle, and bottom angles.&lt;/p&gt;\n\n&lt;p&gt;Wide-grip bench or dips if still energetic&lt;/p&gt;\n\n&lt;p&gt;Weighted Leg raises&lt;/p&gt;\n\n&lt;p&gt;Weighted cable crunches&lt;/p&gt;\n\n&lt;p&gt;Planks&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Day2&lt;/strong&gt; Back&lt;/p&gt;\n\n&lt;p&gt;Weighted pull-ups wide-grip&lt;/p&gt;\n\n&lt;p&gt;Weighted pull-ups parallel-grip&lt;/p&gt;\n\n&lt;p&gt;Weighted chin-ups&lt;/p&gt;\n\n&lt;p&gt;Deadlifts (rep range of only 4-8)&lt;/p&gt;\n\n&lt;p&gt;Standing cable pullover close-grip&lt;/p&gt;\n\n&lt;p&gt;Cable pullover wide-grip&lt;/p&gt;\n\n&lt;p&gt;T-bar rows&lt;/p&gt;\n\n&lt;p&gt;Wide-grip seated row&lt;/p&gt;\n\n&lt;p&gt;Un-weighted pull-ups if still energetic&lt;/p&gt;\n\n&lt;
 p&gt;&lt;strong&gt;Day3&lt;/strong&gt; Shoulders/arms&lt;/p&gt;\n\n&lt;p&gt;Front and Side DB raises&lt;/p&gt;\n\n&lt;p&gt;Standing OHP&lt;/p&gt;\n\n&lt;p&gt;Cable raises with single arm grip (front and side)&lt;/p&gt;\n\n&lt;p&gt;Standing one arm shoulder press (use T-bar row equipment but facing it)&lt;/p&gt;\n\n&lt;p&gt;Face pulls&lt;/p&gt;\n\n&lt;p&gt;Rear delt Flies&lt;/p&gt;\n\n&lt;p&gt;Hammer or concentration curls&lt;/p&gt;\n\n&lt;p&gt;EZ bar bicep curls with different grip each set (6 or 9 sets)&lt;/p&gt;\n\n&lt;p&gt;Skullcrushers with close-grip bench supersets using a close-grip with the EZ bar&lt;/p&gt;\n\n&lt;p&gt;Tricep rope pushdowns&lt;/p&gt;\n\n&lt;p&gt;Also some extra light stabilization work/lifts for my shoulder joints/rotator cuff&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Day4&lt;/strong&gt; Legs/Abs&lt;/p&gt;\n\n&lt;p&gt;Squats high bar (I end with a widowmaker set as well) &lt;/p&gt;\n\n&lt;p&gt;Machine leg extension&lt;/p&gt;\n\n&lt;p&gt;Machine single leg extensio
 n&lt;/p&gt;\n\n&lt;p&gt;Machine leg curl&lt;/p&gt;\n\n&lt;p&gt;Lying leg curl&lt;/p&gt;\n\n&lt;p&gt;Leg press &lt;/p&gt;\n\n&lt;p&gt;Leg press calf raises&lt;/p&gt;\n\n&lt;p&gt;Calf raises&lt;/p&gt;\n\n&lt;p&gt;Weighted hip thrust (do these in a corner as they look terribly awkward) &lt;/p&gt;\n\n&lt;p&gt;Same abs lifts as day1&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Day5&lt;/strong&gt; Check how your body is feeling and pick accordingly&lt;/p&gt;\n\n&lt;p&gt;Rest or light cardio with a lagging bodypart/muscle workout&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Extra Stuff&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;I did not do SS due to already having basic strength level when I learned about it. I do highly recommend it to anyone starting lifting weights for the first time as it provides a solid foundation. &lt;/p&gt;\n\n&lt;p&gt;My tattoos have not noticeably changed in size or proportions. From last post to this post my waist size went from a 31 to a 33-34 and back down to a 32-31. For t-shirt si
 ze I used to be able to wear most medium shirts. By the end of my bulk I could only wear larges and now I currently can wear only looser neck mediums and smaller larges. &lt;/p&gt;\n\n&lt;p&gt;I drank a bit less than once a week while bulking and usually was 4 or so strong drinks over 5+ hours to reach and keep a good level. When cutting I drink about twice a month and only 2-3 strong drinks is needed to reach the same level. For tracking lifts and food I suggest using Fitocracy and/or Myfitnesspal. I used Fitocracy for 4-5 months but realized I was doing more of the social stuff and wasting time than tracking my lifts so I stopped. &lt;/p&gt;\n\n&lt;p&gt;For goals I still have not reached a lean 180lb/81kg but now I want to be a lean 185lb/84kg. I hit the 1000lb club and now want to reach the 1250lb club and/or 400 wilks score. I still don’t have a bicep vein and really want one. &lt;/p&gt;\n\n&lt;p&gt;Let me know if you have any questions or suggestions for me. Are there any are
 as that need work and I hope this is helpful to someone!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":20,"saved":false,"num_reports":null,"created":1377900002.0,"downs":3,"hidden":false,"likes":null,"subreddit":"Fitness"}
-{"name":"t3_1lefsj","permalink":"/r/BabyBumps/comments/1lefsj/achievement_unlocked_aka_my_pregnancy_superpower/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":0,"ups":1,"link_flair_text":"Symptom","title":"Achievement Unlocked! (aka my pregnancy superpower)","author_flair_css_class":"","author":"troll_wifey","thumbnail":"self","created_utc":1377872542.0,"url":"http://www.reddit.com/r/BabyBumps/comments/1lefsj/achievement_unlocked_aka_my_pregnancy_superpower/","stickied":false,"banned_by":null,"domain":"self.BabyBumps","id":"1lefsj","selftext":"Since finding out I was pregnant 10 days ago, my congestion has been out of control.  Like, to the point where I didn't even want to leave the house because I had to have a box of tissues glued to my side.  About 3 days ago, the congestion finally went away (thank goodness!) only to be replaced with my new pregnancy superpower: the ability to smell EVERYTHING.\n\nI mean absolutely everything.  I walk out of ou
 r bedroom and I can smell the dog who's on the other side of the house in his crate.  I can smell when the neighbor upstairs is making brownies even though the windows and doors are shut and normally I can't smell anything she's cooking.  I can smell the garbage at the end of the driveway when I'm still in the garage (and it wasn't even a particularly smelly garbage week).  But last night took it to a whole new level.\n\nI fell asleep about 30 minutes before DH came to bed.  Woke up after he'd fallen asleep because I could smell something extremely sweet and minty and it was making me nauseous.  Roll over to find my DH asleep and breathing out of his mouth, but not actually breathing on me.  The smell of our toothpaste after he brushed his teeth was apparently strong enough with my preggy-powers to wake me up out of a Unisom-induced sleep!\n\nHoly superpowers, Batman!  ","distinguished":null,"author_flair_text":"Nugget #1 due 4/27/14","media":null,"clicked":false,"link_flair_css_cla
 ss":"Symptom","subreddit_id":"t5_2s7cl","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Since finding out I was pregnant 10 days ago, my congestion has been out of control.  Like, to the point where I didn&amp;#39;t even want to leave the house because I had to have a box of tissues glued to my side.  About 3 days ago, the congestion finally went away (thank goodness!) only to be replaced with my new pregnancy superpower: the ability to smell EVERYTHING.&lt;/p&gt;\n\n&lt;p&gt;I mean absolutely everything.  I walk out of our bedroom and I can smell the dog who&amp;#39;s on the other side of the house in his crate.  I can smell when the neighbor upstairs is making brownies even though the windows and doors are shut and normally I can&amp;#39;t smell anything she&amp;#39;s cooking.  I can smell the garbage at the end of the driveway when I&amp;#39;m still in the garage (and it wasn&amp;#39;t even a particularly smelly garbage week).  But last night took it to a w
 hole new level.&lt;/p&gt;\n\n&lt;p&gt;I fell asleep about 30 minutes before DH came to bed.  Woke up after he&amp;#39;d fallen asleep because I could smell something extremely sweet and minty and it was making me nauseous.  Roll over to find my DH asleep and breathing out of his mouth, but not actually breathing on me.  The smell of our toothpaste after he brushed his teeth was apparently strong enough with my preggy-powers to wake me up out of a Unisom-induced sleep!&lt;/p&gt;\n\n&lt;p&gt;Holy superpowers, Batman!  &lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377901342.0,"downs":0,"hidden":false,"likes":null,"subreddit":"BabyBumps"}
-{"name":"t3_1ldnh5","permalink":"/r/makeupexchange/comments/1ldnh5/request_foundation_samples_from_sephora/","edited":1377868787.0,"over_18":false,"approved_by":null,"is_self":true,"num_comments":12,"ups":6,"link_flair_text":"Request","title":"[REQUEST] Foundation samples from Sephora","author_flair_css_class":null,"author":"amurow","thumbnail":"self","created_utc":1377834354.0,"url":"http://www.reddit.com/r/makeupexchange/comments/1ldnh5/request_foundation_samples_from_sephora/","stickied":false,"banned_by":null,"domain":"self.makeupexchange","id":"1ldnh5","selftext":"Some of you might remember someone selling a KVD Lock-It Tattoo Foundation in M62 here. That was me. Because I was a doofus who looked at online reviews and decided it was my shade. But it wasn't -- it was too dark, and I had to sell if off. Unfortunately, I'm having a tough time finding the right KVD shade, so I'm here asking you guys for help. There's no Sephora in my country (the Philippines), and I was wondering i
 f anybody could send me some samples of the following before I waste money importing makeup I will never use:\n\nKat Von D Lock-it Tattoo Foundation in M54 and M57. -- PRIORITY\n\nAnd, if they're available, and you're willing to help me more in my quest to find an HG foundation for oily skin, I would like to sample these, too:\n\n*Estee Lauder Double wear in Tawny and Cashew\n\n*MUFE Mat Velvet+ in #40 and #65.\n\n*Tarte Amazonian clay 12-hour full coverage foundation in Medium Sand and Tan-Deep Sand.\n\n*Any other foundation for oily skin you can recommend. For reference, I'm NC40 most of the time!\n\nOf course, I'll pay for the shipping and would love to give you/pay you something for your trouble. Please just let me know if you'd be able to lend this girl a hand! Thank you!","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":"Request","subreddit_id":"t5_2tijo","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Som
 e of you might remember someone selling a KVD Lock-It Tattoo Foundation in M62 here. That was me. Because I was a doofus who looked at online reviews and decided it was my shade. But it wasn&amp;#39;t -- it was too dark, and I had to sell if off. Unfortunately, I&amp;#39;m having a tough time finding the right KVD shade, so I&amp;#39;m here asking you guys for help. There&amp;#39;s no Sephora in my country (the Philippines), and I was wondering if anybody could send me some samples of the following before I waste money importing makeup I will never use:&lt;/p&gt;\n\n&lt;p&gt;Kat Von D Lock-it Tattoo Foundation in M54 and M57. -- PRIORITY&lt;/p&gt;\n\n&lt;p&gt;And, if they&amp;#39;re available, and you&amp;#39;re willing to help me more in my quest to find an HG foundation for oily skin, I would like to sample these, too:&lt;/p&gt;\n\n&lt;p&gt;*Estee Lauder Double wear in Tawny and Cashew&lt;/p&gt;\n\n&lt;p&gt;*MUFE Mat Velvet+ in #40 and #65.&lt;/p&gt;\n\n&lt;p&gt;*Tarte Amazonian c
 lay 12-hour full coverage foundation in Medium Sand and Tan-Deep Sand.&lt;/p&gt;\n\n&lt;p&gt;*Any other foundation for oily skin you can recommend. For reference, I&amp;#39;m NC40 most of the time!&lt;/p&gt;\n\n&lt;p&gt;Of course, I&amp;#39;ll pay for the shipping and would love to give you/pay you something for your trouble. Please just let me know if you&amp;#39;d be able to lend this girl a hand! Thank you!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":6,"saved":false,"num_reports":null,"created":1377863154.0,"downs":0,"hidden":false,"likes":null,"subreddit":"makeupexchange"}
-{"name":"t3_1lea62","permalink":"/r/buildapc/comments/1lea62/help_with_picking_either_atx_or_matx_for_my_build/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":1,"ups":5,"link_flair_text":null,"title":"Help with picking either ATX or mATX for my build. You're my only hope, r/buildapc!","author_flair_css_class":null,"author":"imightbefickle","thumbnail":"","created_utc":1377866776.0,"url":"http://www.reddit.com/r/buildapc/comments/1lea62/help_with_picking_either_atx_or_matx_for_my_build/","stickied":false,"banned_by":null,"domain":"self.buildapc","id":"1lea62","selftext":"Is it generally cheaper to go for an mATX build instead of ATX? What sacrifices am I making by going on a smaller form factor? I was thinking of a 4670 (4670k if it's not too much more expensive + an OC motherboard) for the CPU and a 7950 for the GPU (or waiting for when the 9xxx series drops, and using the iGPU while I wait). I'm building this mainly for gaming, but also for Photosh
 op (I do a lot of digital painting), and CAD with Zbrush/3DSMax/Mudbox. I have a max? budget of £500 British, for everything minus the cost of a GPU. No need for peripherals as I already have a screen, keyboard, mouse.","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2rnve","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Is it generally cheaper to go for an mATX build instead of ATX? What sacrifices am I making by going on a smaller form factor? I was thinking of a 4670 (4670k if it&amp;#39;s not too much more expensive + an OC motherboard) for the CPU and a 7950 for the GPU (or waiting for when the 9xxx series drops, and using the iGPU while I wait). I&amp;#39;m building this mainly for gaming, but also for Photoshop (I do a lot of digital painting), and CAD with Zbrush/3DSMax/Mudbox. I have a max? budget of £500 British, for everything minus the cost of a GPU. No need for peripherals
  as I already have a screen, keyboard, mouse.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":5,"saved":false,"num_reports":null,"created":1377895576.0,"downs":0,"hidden":false,"likes":null,"subreddit":"buildapc"}
-{"name":"t3_1lddej","permalink":"/r/photocritique/comments/1lddej/this_is_hector_panasonic_g6_20mm_800isof17/","edited":false,"over_18":false,"approved_by":null,"is_self":false,"num_comments":3,"ups":13,"link_flair_text":null,"title":"This is Hector. (Panasonic G6 20mm 800iso/f1.7 shutter 20)","author_flair_css_class":null,"author":"Clintown","thumbnail":"http://f.thumbs.redditmedia.com/zs8qo2G9_msKN5Rk.jpg","created_utc":1377825633.0,"url":"http://www.flickr.com/photos/clintonsosnoski/9626857746/sizes/c/in/photostream/","stickied":false,"banned_by":null,"domain":"flickr.com","id":"1lddej","selftext":"","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qymy","selftext_html":null,"media_embed":{},"score":9,"saved":false,"num_reports":null,"created":1377854433.0,"downs":4,"hidden":false,"likes":null,"subreddit":"photocritique"}
-{"name":"t3_1ldo6g","permalink":"/r/Quebec/comments/1ldo6g/taimes_faire_du_cinéma_et_tu_sais_pas_quoi_faire/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":0,"ups":3,"link_flair_text":null,"title":"T'aimes faire du cinéma et tu sais pas quoi faire de ta fin de semaine, grand corps mou? Si tu es dans la région de la Rive-Sud, viens au Kabaret Kino R-S!","author_flair_css_class":"on","author":"le_brouhaha","thumbnail":"self","created_utc":1377835010.0,"url":"http://www.reddit.com/r/Quebec/comments/1ldo6g/taimes_faire_du_cinéma_et_tu_sais_pas_quoi_faire/","stickied":false,"banned_by":null,"domain":"self.Quebec","id":"1ldo6g","selftext":"Donc, invitation de dernière minute, à qui cela peut intéresser :\n\nEn cette fin de semaine de la fête du travail se tient, à Boucherville, la dixième édition du Kabaret Kino Rive-Sud.\n\n**C'est quoi ça Kino?**\n\nKino, c'est un regroupement de cinéastes amateurs qui tournent des courts métrages pour leu
 r plaisir à eux et les projettent en groupe à chaque mois pour le plaisir des autres. Il existe plusieurs cellules, la plus connue étant celle de Montréal. Ici, l'on parle de la cellule de la Rive-Sud, centrée près de Longueuil, et les environs.\n\n**C'est quoi ça un Kabaret?**\n\nTout simple, c'est un évènement d'une fin de semaine, ou plusieurs personnes aimant faire du cinéma se réunissent et travaillent tous ensemble pour réaliser plusieurs projet. C'est un bouillonnement de créativité, d'imagination, de création. Il y a autant des gens qui travaillent dans le domaine que des gens qui viennent s'y initier. C'est dans un grand esprit de camaraderie, les gens s'entraident, travaillent en équipe, partagent.\n\n**C'est ouvert à tous?**\n\nC'est ouvert à tous, oui. Pas besoin d'être membre de la cellule de la Rive-Sud, ou d'une autre cellule quelle qu'elle soit. Certains découvrent même Kino lors de cette occasion! Même pas besoin d'être de la région, moi mêm
 e je suis de Lanaudière et j'y participe.\n\n**C'est quoi les \"pré-requis?\"**\n\nIl n'y a pas de pré-requis, réellement. Pas besoin d'expérience ou de connaissances particulières. Bien sûr, pour filmer vos projets et les monter, vaut mieux avoir son matériel, mais dès qu'une caméra peut filmer et un ordinateur monter, vous êtes en affaire! Il y a des tas de gens sur place pour vous aider, et vous aurez la chance de participer à tout plein de projets intéressants.\n\n**C'est quoi les heures?**\n\nEn fait, plus que des heures, ça se passe en fait du vendredi 30 août à 17h00 jusqu'au lundi 2 septembre vers les environs de 20h, où se commence la projection des films tournés la fin de semaine. On parle d'un total d'un peu plus de 72h.\n\n**Ça coûte de quoi?**\n\nOui, 35$.\n\n**Ben là, ça vient avec quoi?**\n\nPremièrement, tous les repas pour la fin de semaine, du vendredi soir jusqu'au lundi soir. T'as aussi les collations et autres, les breuvages, la liqueur, n
 ame it. Popcorn aussi. On a la chance d'avoir ça, une machine à popcorn sur les lieux, roulant à peu près 18h par jour. Sinon, y'a la salle, que l'on surnomme Kinolab, où tout le matériel est placé pour les tournages et le montage, il y a aussi des zones réservées pour ce qui est de dormir (qui est assez bonne franquette, amené votre sac de couchage et votre matelas de sol, un lit de camp aussi c'est bon), les douches, tout ça. Nogé, lourris, logé, nourris. Sinon, la bière est pas fournie, mais elle est à 2$. Moins cher qu'au bar quand t'es pas le mardi.\n\n**Ah ok. Autre chose à savoir?**\n\nEuh... Moi même j'me demande, j'pense avoir fait le tour. Sinon, il y a quand même la projection le lundi soir, vers 20h (à prendre avec +ou- 15min, surtout +) qui est ouverte à tous, contribution volontaire. Je conseillerais quand même d'éviter les enfants trop trop jeunes, parfois c'est cru, surtout en deuxième partie.\n\nAh et aussi, si ça change de quoi, la bière c'
 est de la boréale.\n\n**L'adresse c'est?**\n\nC'est à la Salle paroissiale Sainte Famille, dans l'idyllique vieux Boucherville, au 539 rue Notre-Dame (J4B 3P3). La salle ouvre généralement vers 15h, pour accueillir ceux qui arrivent tôt.\n\n**Vous avez des liens?**\n\n[Oui, un site web pour l'évènement \\(qui reprendra beaucoup pour vous ce que j'ai dis ici mais qui possède un embedded google maps pour les indications\\)](http://www.kinors.com/kabaret/) \n\n[Une page d'évènement Facebook \\(toujours drôle\\)](https://www.facebook.com/events/678574408836861/)\n\nTL;DR : Si tu sais pas quoi faire de ta fin de semaine, 35$ j't'arrange de quoi. Tu vas avoir du plaisir facque viens.\n\nPour moi, Kino c'est particulièrement important. Ça fait maintenant 6 ans que je m'implique dans différentes cellules, et 4 ans que je participe au Kabaret de Kino Rive-Sud, et chaque fois c'est unique et génial. C'est un peu comme l'excitation que j'avais à Noël quand j'étais enfant. Don
 c voilà, si cet évènement interpelle certains d'entre-vous, vous êtes invités et les bienvenus. Ne vous privez pas de votre plaisir, ce sera une fin de semaine incroyable que vous aurez.\n\nSi vous ne pouvez pas participer, il y aura toujours la soirée de projection. Lundi 2 septembre, 20h.\n\nP.S. : Oui /u/pierluc, j'vais poster des photos de ce que j'ai fait avec le champignons c'est promis, j'suis juste super occupé!","distinguished":null,"author_flair_text":"ON [membre]","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qhh9","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Donc, invitation de dernière minute, à qui cela peut intéresser :&lt;/p&gt;\n\n&lt;p&gt;En cette fin de semaine de la fête du travail se tient, à Boucherville, la dixième édition du Kabaret Kino Rive-Sud.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi ça Kino?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Kino, c&amp;#39;est un regroupement de cin
 éastes amateurs qui tournent des courts métrages pour leur plaisir à eux et les projettent en groupe à chaque mois pour le plaisir des autres. Il existe plusieurs cellules, la plus connue étant celle de Montréal. Ici, l&amp;#39;on parle de la cellule de la Rive-Sud, centrée près de Longueuil, et les environs.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi ça un Kabaret?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Tout simple, c&amp;#39;est un évènement d&amp;#39;une fin de semaine, ou plusieurs personnes aimant faire du cinéma se réunissent et travaillent tous ensemble pour réaliser plusieurs projet. C&amp;#39;est un bouillonnement de créativité, d&amp;#39;imagination, de création. Il y a autant des gens qui travaillent dans le domaine que des gens qui viennent s&amp;#39;y initier. C&amp;#39;est dans un grand esprit de camaraderie, les gens s&amp;#39;entraident, travaillent en équipe, partagent.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est ouvert à tous?&lt;
 /strong&gt;&lt;/p&gt;\n\n&lt;p&gt;C&amp;#39;est ouvert à tous, oui. Pas besoin d&amp;#39;être membre de la cellule de la Rive-Sud, ou d&amp;#39;une autre cellule quelle qu&amp;#39;elle soit. Certains découvrent même Kino lors de cette occasion! Même pas besoin d&amp;#39;être de la région, moi même je suis de Lanaudière et j&amp;#39;y participe.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi les &amp;quot;pré-requis?&amp;quot;&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Il n&amp;#39;y a pas de pré-requis, réellement. Pas besoin d&amp;#39;expérience ou de connaissances particulières. Bien sûr, pour filmer vos projets et les monter, vaut mieux avoir son matériel, mais dès qu&amp;#39;une caméra peut filmer et un ordinateur monter, vous êtes en affaire! Il y a des tas de gens sur place pour vous aider, et vous aurez la chance de participer à tout plein de projets intéressants.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi les heures?&lt;/strong&gt;&lt;/p&gt
 ;\n\n&lt;p&gt;En fait, plus que des heures, ça se passe en fait du vendredi 30 août à 17h00 jusqu&amp;#39;au lundi 2 septembre vers les environs de 20h, où se commence la projection des films tournés la fin de semaine. On parle d&amp;#39;un total d&amp;#39;un peu plus de 72h.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Ça coûte de quoi?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Oui, 35$.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Ben là, ça vient avec quoi?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Premièrement, tous les repas pour la fin de semaine, du vendredi soir jusqu&amp;#39;au lundi soir. T&amp;#39;as aussi les collations et autres, les breuvages, la liqueur, name it. Popcorn aussi. On a la chance d&amp;#39;avoir ça, une machine à popcorn sur les lieux, roulant à peu près 18h par jour. Sinon, y&amp;#39;a la salle, que l&amp;#39;on surnomme Kinolab, où tout le matériel est placé pour les tournages et le montage, il y a aussi des zones réservées pour ce qui est de dormir (qui est ass
 ez bonne franquette, amené votre sac de couchage et votre matelas de sol, un lit de camp aussi c&amp;#39;est bon), les douches, tout ça. Nogé, lourris, logé, nourris. Sinon, la bière est pas fournie, mais elle est à 2$. Moins cher qu&amp;#39;au bar quand t&amp;#39;es pas le mardi.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Ah ok. Autre chose à savoir?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Euh... Moi même j&amp;#39;me demande, j&amp;#39;pense avoir fait le tour. Sinon, il y a quand même la projection le lundi soir, vers 20h (à prendre avec +ou- 15min, surtout +) qui est ouverte à tous, contribution volontaire. Je conseillerais quand même d&amp;#39;éviter les enfants trop trop jeunes, parfois c&amp;#39;est cru, surtout en deuxième partie.&lt;/p&gt;\n\n&lt;p&gt;Ah et aussi, si ça change de quoi, la bière c&amp;#39;est de la boréale.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;L&amp;#39;adresse c&amp;#39;est?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;C&amp;#39;est à la Salle paroissiale Sa
 inte Famille, dans l&amp;#39;idyllique vieux Boucherville, au 539 rue Notre-Dame (J4B 3P3). La salle ouvre généralement vers 15h, pour accueillir ceux qui arrivent tôt.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Vous avez des liens?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"http://www.kinors.com/kabaret/\"&gt;Oui, un site web pour l&amp;#39;évènement (qui reprendra beaucoup pour vous ce que j&amp;#39;ai dis ici mais qui possède un embedded google maps pour les indications)&lt;/a&gt; &lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"https://www.facebook.com/events/678574408836861/\"&gt;Une page d&amp;#39;évènement Facebook (toujours drôle)&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;TL;DR : Si tu sais pas quoi faire de ta fin de semaine, 35$ j&amp;#39;t&amp;#39;arrange de quoi. Tu vas avoir du plaisir facque viens.&lt;/p&gt;\n\n&lt;p&gt;Pour moi, Kino c&amp;#39;est particulièrement important. Ça fait maintenant 6 ans que je m&amp;#39;implique dans différentes cellules, et 4 ans que je participe a
 u Kabaret de Kino Rive-Sud, et chaque fois c&amp;#39;est unique et génial. C&amp;#39;est un peu comme l&amp;#39;excitation que j&amp;#39;avais à Noël quand j&amp;#39;étais enfant. Donc voilà, si cet évènement interpelle certains d&amp;#39;entre-vous, vous êtes invités et les bienvenus. Ne vous privez pas de votre plaisir, ce sera une fin de semaine incroyable que vous aurez.&lt;/p&gt;\n\n&lt;p&gt;Si vous ne pouvez pas participer, il y aura toujours la soirée de projection. Lundi 2 septembre, 20h.&lt;/p&gt;\n\n&lt;p&gt;P.S. : Oui &lt;a href=\"/u/pierluc\"&gt;/u/pierluc&lt;/a&gt;, j&amp;#39;vais poster des photos de ce que j&amp;#39;ai fait avec le champignons c&amp;#39;est promis, j&amp;#39;suis juste super occupé!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377863810.0,"downs":2,"hidden":false,"likes":null,"subreddit":"Quebec"}
-{"name":"t3_1ld3th","permalink":"/r/offmychest/comments/1ld3th/listen_bitch_youre_evil_and_a_bad_person_you/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":2,"ups":4,"link_flair_text":null,"title":"Listen Bitch, you're evil and a bad person. You crushed my heart and I want to move on....","author_flair_css_class":null,"author":"MakeMeNaked","thumbnail":"","created_utc":1377817349.0,"url":"http://www.reddit.com/r/offmychest/comments/1ld3th/listen_bitch_youre_evil_and_a_bad_person_you/","stickied":false,"banned_by":null,"domain":"self.offmychest","id":"1ld3th","selftext":"But what the fuck is up with this crying over you every fucking day at 3pm?? I have to choke back the tears until I leave work and can cry the whole way home. Really?  You were selfish, VERY fucking selfish, I was probably 3rd on your list behind your work and friends, yet I still made you a priority and I still stuck up for you. I had your back and you stabbed me in mine....So why t
 he fuck am I being such a little bitch about it? And why at the same time every day??\n\nYou're a drunken wreck waiting to happen, A DUI in the making, and good luck paying your taxes. So many negatives but I fucking loved the shit out of you. I'm off work in 20 minutes and the kleenex is waiting, fuck this sucks.","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2ranw","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;But what the fuck is up with this crying over you every fucking day at 3pm?? I have to choke back the tears until I leave work and can cry the whole way home. Really?  You were selfish, VERY fucking selfish, I was probably 3rd on your list behind your work and friends, yet I still made you a priority and I still stuck up for you. I had your back and you stabbed me in mine....So why the fuck am I being such a little bitch about it? And why at the same time every day??&lt;/p&gt
 ;\n\n&lt;p&gt;You&amp;#39;re a drunken wreck waiting to happen, A DUI in the making, and good luck paying your taxes. So many negatives but I fucking loved the shit out of you. I&amp;#39;m off work in 20 minutes and the kleenex is waiting, fuck this sucks.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":4,"saved":false,"num_reports":null,"created":1377846149.0,"downs":0,"hidden":false,"likes":null,"subreddit":"offmychest"}
-{"name":"t3_1lcp4y","permalink":"/r/guns/comments/1lcp4y/my_marlin_336_1949_that_my_gramps_gave_me_when_i/","edited":false,"over_18":false,"approved_by":null,"is_self":false,"num_comments":12,"ups":24,"link_flair_text":null,"title":"My marlin 336 (1949) that my gramps gave me when I turned 16. Also, why I temporarily loathe Remington","author_flair_css_class":null,"author":"PantsChillman","thumbnail":"","created_utc":1377806298.0,"url":"http://imgur.com/a/jWIwz","stickied":false,"banned_by":null,"domain":"imgur.com","id":"1lcp4y","selftext":"","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qhc8","selftext_html":null,"media_embed":{},"score":17,"saved":false,"num_reports":null,"created":1377835098.0,"downs":7,"hidden":false,"likes":null,"subreddit":"guns"}
-{"name":"t3_1lcglg","permalink":"/r/nba/comments/1lcglg/mythbusters_would_stockton_be_stockton_without/","edited":1377801369.0,"over_18":false,"approved_by":null,"is_self":true,"num_comments":30,"ups":75,"link_flair_text":null,"title":"Mythbusters: Would Stockton be Stockton without Malone?","author_flair_css_class":"Jazz2","author":"ofmonster","thumbnail":"","created_utc":1377800023.0,"url":"http://www.reddit.com/r/nba/comments/1lcglg/mythbusters_would_stockton_be_stockton_without/","stickied":false,"banned_by":null,"domain":"self.nba","id":"1lcglg","selftext":"This post was spurred by another post about unbreakable records, people seemed interested in this discussion so hopefully you like it and it will spur other ones.\n\nAs a lifelong and die hard jazz fan, I have always heard people argue whether Malone was great because of Stockton or whether Stockton was great because of Malone, or whether both would have had similar production even without a legend as their pick and roll par
 tner. Rather than attempt to answer all of these at once, I decided to at least start with the most common one I have heard: that Stockton would not have had other worldly assist numbers without Malone as the finisher on pick and rolls.\n\nI am by no means trying to make this the definitive answer to this two decade long question, and want to get some caveats to everything I'm about to write out of the way now:\n\n1. There are limited advanced statistics from Stockton and Malone's prime years, or at least, I am struggling to find them. Some of the most useful for answering this question, like the number of pick and rolls that were run, percentage of baskets assisted, and overall league numbers pertaining to those two things during that era, as well as accurate on/off numbers or even how much time Malone and Stockton DID NOT share on the court. As such, I am working with what I can.\n2. Because of the above, I am forced to make some logical (in my opinion) leaps and assumptions about
  the vicinity of those stats that may or may not have a semblance of accuracy.\n3. Since there is no data analyzing to whom and how often Stockton passed, I did not feel comfortable making precise assumptions about how many of his assists went to each player and instead played it on the safe side for the sake of the critics (this will be covered below).\n4. When analyzing what the Jazz would do without Malone, I did not bother to add additional usage rates to other members of the Jazz. While this would inevitably happen, it is impossible to say who would receive the largest bumps and how it would affect efficiency so I purposely left it out because I didn't think I could make anyone totally happy.\n5. When evaluating league-wide stats compared to Malone's, I used the arbitrary search limitations (via BR) of C-F's, F's, C's, and F-C's that started at least 41 games. I used this because I saw it as necessary to assume Malone's replacement and competition would be  starting caliber big
 men (its logical to assume he wouldn't play against or be replaced by below average bigs) and that group seemed to fit the bill the best. However I recognize that there are some weird outliers (like Larry Bird) who aren't the best comp's but it was the best I could find. Also, since fg% was a factor, I feel obligated to point out that some of the players in this data set shot threes, which lower overall fg% (unless your Curry or Korver), and are an extremely unlikely result as a roll man in a PnR, but the average 3's per minute attempted by this group was extremely low, and I deemed them insignificant noise, but they are noise all the same.\n6. Everyone must understand that the Jazz at this time were running the pick and roll largely IN SPITE of the rest of the league. It was considered an outdated offense that wasn't adapted by the rest of the league until the 2000's (it is now the most common play run in the half court set, and by a wide margin). As such, many speculate that the J
 azz had an advantage because pick and roll defenses were much less refined and practiced than they are now, so players within the Jazz's system would see a boost in production/efficiency. There is some evidence supporting this, but it isn't conclusive and I did not assume this because of that.\n7. On a similar note, there is no way to say whether the lethality of the Stockton to Malone duo helped draw in double teams and thus opened easier dishes, and consequently assists to outside shooters or bigs under the basket. I do not take this into account because of that, as well as I think it is fair to assume many of those assists would have come from Malone after the double team hit him which would not affect Stockton's assist numbers, as well as there are often double teams even in PnR's with lesser players than Malone.\n\nThe longevity of Stockton and Malone makes this even harder to answer because there are so many years to analyze. I could average their prime years, do the equations
  to convert them into advanced stats and go from there, but frankly I am a college student without that much time and patience and their ridiculous longevity also calls into question exactly what would be considered their \"prime\". Because of this, I chose a single year that I determined to be the best average year for both of them within their \"prime\". The year I chose was 1991-1992, a solid year for both Stockton and Malone, but neither had a career high in any relevant stat to his question, and at the same time it wasn't close to any career low.\n\nIn 1991-1992, Stockton averaged 13.7 assists. Malone averaged 28 points on 9.9 (is it fair to call that 10?) made field goals a game. In order to understand how many of those \"10\" field goals were assisted, we have to look at modern day equivalents since that data is not available before 06-07 (if this data exists PLEASE tell me where). In order to find a similar number, I looked at modern day bigs who had high usage rates, played
  with a good passing point guard, and ran the pick and roll a lot (I also looked for players with similar skill sats and roles as Malone). Some of the players I used to help you get a feel were (in no order, according to Hoopdata): Amare in 10-11 (ran the PnR with Felton [he was decent that year ok?] a ton. 52.6% assisted), Amare again in 06-07 (dat PnR wit Nash, 64.9% assisted), Scola 10-11 (ran it with Lowry. 64.3 assisted), Boozer in 09-10 &amp; 10-11 (ran it with Deron, then with Rose. Interestingly went from 74.2% assisted to 64.7% assisted), Blake Griffin in 12-13 (with Chris Paul, 64.1% assisted), and David West in 10-11 (with Chris Paul, 60% assisted). I looked at some other examples as well, but you get the gist, teams with a good pick and roll duo, who ran the pick and roll a lot, generally had a roll guy with an average assist percentage of approximately 64% (As an interesting aside, starting bigs actually seem to have a higher percentage of their baskets assisted when th
 ey are not in a pick and roll heavy offense or are not the primary roll man, the league average for PF's was closer to 66-67%, not what I would have expected). I have often heard that many teams in the current era of the NBA run the PnR even more than the Jazz did in the 90's, but there is no way to prove this aside from me watching film and counting pick and rolls, so let's assume the assist percentage translates somewhat accurately. Let's say that Malone had 64% of his baskets assisted. \n\nIt is safe to assume that not 100% of Malone's assisted baskets came from Stockton, but it IS safe to assume it was the vast majority, and since there is no number I could pull that wouldn't be 100% guesswork, we are going to assume that Stockton was indeed responsible for all of Malone's assisted baskets, just to stop the haters (that's a joke). So that means 6.4 baskets to Malone were Stockton assists, and 4.6 weren't. \n\nLet's assume then that Malone got traded to another team early in his 
 career (heaven forbid!) for an average starting power forward ([this is the list I used for the upcoming analysis btw](http://www.basketball-reference.com/play-index/psl_finder.cgi?request=1&amp;match=single&amp;type=totals&amp;per_minute_base=36&amp;lg_id=NBA&amp;is_playoffs=N&amp;year_min=1992&amp;year_max=1992&amp;franch_id=&amp;season_start=1&amp;season_end=-1&amp;age_min=0&amp;age_max=99&amp;height_min=0&amp;height_max=99&amp;birth_country_is=Y&amp;birth_country=&amp;is_active=&amp;is_hof=&amp;is_as=&amp;as_comp=gt&amp;as_val=&amp;pos_is_f=Y&amp;pos_is_fc=Y&amp;pos_is_c=Y&amp;pos_is_cf=Y&amp;qual=&amp;c1stat=gs&amp;c1comp=gt&amp;c1val=41&amp;c2stat=&amp;c2comp=gt&amp;c2val=&amp;c3stat=&amp;c3comp=gt&amp;c3val=&amp;c4stat=&amp;c4comp=gt&amp;c4val=&amp;c5stat=&amp;c5comp=gt&amp;c6mult=1.0&amp;c6stat=&amp;order_by=ts_pct)). In 91-92, the average big shot 49%, compared to Malone's 52.6%. The average big also had a usage rate of 19.7%, compared to Malone's leading 30.3%. The average
  turnover rate for starting bigs was 12.9%, surprisingly Malone's was only 11.6%. Let's assume that the Jazz's primary PnR man is exactly average, and that the Jazz still stick with a PnR based offense (Sloan is still the coach, so we can be pretty sure of this), so 64% of his baskets are assisted. We'll also assume this player absorbs all of Malone's minutes (37.7 per game is a lot, but then again, back then starters played more minutes. 17 bigs in 91-92 played over 37 mpg, this year only 14 players total averaged that much). This average player would make about 6.3 buckets a game. This means 4 (4.032) of those a game would be assists from Stockton (sticking with the \"Stockton makes ALL the assists\" assumption [reeeeal bad meme reference]). \n\nDoing the simple math gets us to our conclusion: Stockton would average less assists a game, dropping from 13.7 assists to about 11.3 assists per game. This is a significant drop, but still outstanding assist numbers, especially with the u
 nderstanding that there would be an additional 7-8 shot attempts to be disbursed in Malone's absence, some of those probably resulting in additional Stockton assists. \n\nIn summary, Stockton would at LEAST average 11.3 assists in our 1991-1992 isolated example, and if you assume that 1991-1992 is a good indicator for the entire Stockton-Malone era, Stockton would have ended his career with somewhere between 12,200 and 12,800 assists (depending on minutes for him and the replacement player[s]). He would have had at least 6 seasons of double digit assists. This means he would still be the all-time assist leader (by a smallish margin), and in all likelihood still considered a top 5 point guard of all time. Again, this is all WITHOUT counting those left over possessions in Malone's absence. Given that Stockton dished an assist on 14.3% of all the Jazz's possessions in 1991-1992, if we include those possessions in the discussion then Stockton probably averages just over 1 assist more pe
 r game, which seems small but brings his average that year to 12.3 assists. Career wise that would mean he dishes between 13,500 and 14,200 assists, still giving him a very large lead in the record books and would mean he likely still holds at least 4 of the top 10 assists per game seasons (although no longer the top spot). \n\nBasically, John Stockton was a beast of a point guard with or without Malone. Malone's absence would have been a significant hit to Stockton's production but he would still put up otherworldly assist numbers.\n\nThe real question might be: What would Stockton be without the Pick and Roll? The world may never know...\n\nPlease give me feedback and criticism, I love hearing feedback about two of my idols whether its positive or negative. \n\n","distinguished":null,"author_flair_text":"[UTA] Enes Kanter","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qo4s","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;This p
 ost was spurred by another post about unbreakable records, people seemed interested in this discussion so hopefully you like it and it will spur other ones.&lt;/p&gt;\n\n&lt;p&gt;As a lifelong and die hard jazz fan, I have always heard people argue whether Malone was great because of Stockton or whether Stockton was great because of Malone, or whether both would have had similar production even without a legend as their pick and roll partner. Rather than attempt to answer all of these at once, I decided to at least start with the most common one I have heard: that Stockton would not have had other worldly assist numbers without Malone as the finisher on pick and rolls.&lt;/p&gt;\n\n&lt;p&gt;I am by no means trying to make this the definitive answer to this two decade long question, and want to get some caveats to everything I&amp;#39;m about to write out of the way now:&lt;/p&gt;\n\n&lt;ol&gt;\n&lt;li&gt;There are limited advanced statistics from Stockton and Malone&amp;#39;s prime 
 years, or at least, I am struggling to find them. Some of the most useful for answering this question, like the number of pick and rolls that were run, percentage of baskets assisted, and overall league numbers pertaining to those two things during that era, as well as accurate on/off numbers or even how much time Malone and Stockton DID NOT share on the court. As such, I am working with what I can.&lt;/li&gt;\n&lt;li&gt;Because of the above, I am forced to make some logical (in my opinion) leaps and assumptions about the vicinity of those stats that may or may not have a semblance of accuracy.&lt;/li&gt;\n&lt;li&gt;Since there is no data analyzing to whom and how often Stockton passed, I did not feel comfortable making precise assumptions about how many of his assists went to each player and instead played it on the safe side for the sake of the critics (this will be covered below).&lt;/li&gt;\n&lt;li&gt;When analyzing what the Jazz would do without Malone, I did not bother to add 
 additional usage rates to other members of the Jazz. While this would inevitably happen, it is impossible to say who would receive the largest bumps and how it would affect efficiency so I purposely left it out because I didn&amp;#39;t think I could make anyone totally happy.&lt;/li&gt;\n&lt;li&gt;When evaluating league-wide stats compared to Malone&amp;#39;s, I used the arbitrary search limitations (via BR) of C-F&amp;#39;s, F&amp;#39;s, C&amp;#39;s, and F-C&amp;#39;s that started at least 41 games. I used this because I saw it as necessary to assume Malone&amp;#39;s replacement and competition would be  starting caliber bigmen (its logical to assume he wouldn&amp;#39;t play against or be replaced by below average bigs) and that group seemed to fit the bill the best. However I recognize that there are some weird outliers (like Larry Bird) who aren&amp;#39;t the best comp&amp;#39;s but it was the best I could find. Also, since fg% was a factor, I feel obligated to point out that som
 e of the players in this data set shot threes, which lower overall fg% (unless your Curry or Korver), and are an extremely unlikely result as a roll man in a PnR, but the average 3&amp;#39;s per minute attempted by this group was extremely low, and I deemed them insignificant noise, but they are noise all the same.&lt;/li&gt;\n&lt;li&gt;Everyone must understand that the Jazz at this time were running the pick and roll largely IN SPITE of the rest of the league. It was considered an outdated offense that wasn&amp;#39;t adapted by the rest of the league until the 2000&amp;#39;s (it is now the most common play run in the half court set, and by a wide margin). As such, many speculate that the Jazz had an advantage because pick and roll defenses were much less refined and practiced than they are now, so players within the Jazz&amp;#39;s system would see a boost in production/efficiency. There is some evidence supporting this, but it isn&amp;#39;t conclusive and I did not assume this beca
 use of that.&lt;/li&gt;\n&lt;li&gt;On a similar note, there is no way to say whether the lethality of the Stockton to Malone duo helped draw in double teams and thus opened easier dishes, and consequently assists to outside shooters or bigs under the basket. I do not take this into account because of that, as well as I think it is fair to assume many of those assists would have come from Malone after the double team hit him which would not affect Stockton&amp;#39;s assist numbers, as well as there are often double teams even in PnR&amp;#39;s with lesser players than Malone.&lt;/li&gt;\n&lt;/ol&gt;\n\n&lt;p&gt;The longevity of Stockton and Malone makes this even harder to answer because there are so many years to analyze. I could average their prime years, do the equations to convert them into advanced stats and go from there, but frankly I am a college student without that much time and patience and their ridiculous longevity also calls into question exactly what would be considered
  their &amp;quot;prime&amp;quot;. Because of this, I chose a single year that I determined to be the best average year for both of them within their &amp;quot;prime&amp;quot;. The year I chose was 1991-1992, a solid year for both Stockton and Malone, but neither had a career high in any relevant stat to his question, and at the same time it wasn&amp;#39;t close to any career low.&lt;/p&gt;\n\n&lt;p&gt;In 1991-1992, Stockton averaged 13.7 assists. Malone averaged 28 points on 9.9 (is it fair to call that 10?) made field goals a game. In order to understand how many of those &amp;quot;10&amp;quot; field goals were assisted, we have to look at modern day equivalents since that data is not available before 06-07 (if this data exists PLEASE tell me where). In order to find a similar number, I looked at modern day bigs who had high usage rates, played with a good passing point guard, and ran the pick and roll a lot (I also looked for players with similar skill sats and roles as Malone). S
 ome of the players I used to help you get a feel were (in no order, according to Hoopdata): Amare in 10-11 (ran the PnR with Felton [he was decent that year ok?] a ton. 52.6% assisted), Amare again in 06-07 (dat PnR wit Nash, 64.9% assisted), Scola 10-11 (ran it with Lowry. 64.3 assisted), Boozer in 09-10 &amp;amp; 10-11 (ran it with Deron, then with Rose. Interestingly went from 74.2% assisted to 64.7% assisted), Blake Griffin in 12-13 (with Chris Paul, 64.1% assisted), and David West in 10-11 (with Chris Paul, 60% assisted). I looked at some other examples as well, but you get the gist, teams with a good pick and roll duo, who ran the pick and roll a lot, generally had a roll guy with an average assist percentage of approximately 64% (As an interesting aside, starting bigs actually seem to have a higher percentage of their baskets assisted when they are not in a pick and roll heavy offense or are not the primary roll man, the league average for PF&amp;#39;s was closer to 66-67%, n
 ot what I would have expected). I have often heard that many teams in the current era of the NBA run the PnR even more than the Jazz did in the 90&amp;#39;s, but there is no way to prove this aside from me watching film and counting pick and rolls, so let&amp;#39;s assume the assist percentage translates somewhat accurately. Let&amp;#39;s say that Malone had 64% of his baskets assisted. &lt;/p&gt;\n\n&lt;p&gt;It is safe to assume that not 100% of Malone&amp;#39;s assisted baskets came from Stockton, but it IS safe to assume it was the vast majority, and since there is no number I could pull that wouldn&amp;#39;t be 100% guesswork, we are going to assume that Stockton was indeed responsible for all of Malone&amp;#39;s assisted baskets, just to stop the haters (that&amp;#39;s a joke). So that means 6.4 baskets to Malone were Stockton assists, and 4.6 weren&amp;#39;t. &lt;/p&gt;\n\n&lt;p&gt;Let&amp;#39;s assume then that Malone got traded to another team early in his career (heaven for
 bid!) for an average starting power forward (&lt;a href=\"http://www.basketball-reference.com/play-index/psl_finder.cgi?request=1&amp;amp;match=single&amp;amp;type=totals&amp;amp;per_minute_base=36&amp;amp;lg_id=NBA&amp;amp;is_playoffs=N&amp;amp;year_min=1992&amp;amp;year_max=1992&amp;amp;franch_id=&amp;amp;season_start=1&amp;amp;season_end=-1&amp;amp;age_min=0&amp;amp;age_max=99&amp;amp;height_min=0&amp;amp;height_max=99&amp;amp;birth_country_is=Y&amp;amp;birth_country=&amp;amp;is_active=&amp;amp;is_hof=&amp;amp;is_as=&amp;amp;as_comp=gt&amp;amp;as_val=&amp;amp;pos_is_f=Y&amp;amp;pos_is_fc=Y&amp;amp;pos_is_c=Y&amp;amp;pos_is_cf=Y&amp;amp;qual=&amp;amp;c1stat=gs&amp;amp;c1comp=gt&amp;amp;c1val=41&amp;amp;c2stat=&amp;amp;c2comp=gt&amp;amp;c2val=&amp;amp;c3stat=&amp;amp;c3comp=gt&amp;amp;c3val=&amp;amp;c4stat=&amp;amp;c4comp=gt&amp;amp;c4val=&amp;amp;c5stat=&amp;amp;c5comp=gt&amp;amp;c6mult=1.0&amp;amp;c6stat=&amp;amp;order_by=ts_pct\"&gt;this is the list I used for the upcoming analy
 sis btw&lt;/a&gt;). In 91-92, the average big shot 49%, compared to Malone&amp;#39;s 52.6%. The average big also had a usage rate of 19.7%, compared to Malone&amp;#39;s leading 30.3%. The average turnover rate for starting bigs was 12.9%, surprisingly Malone&amp;#39;s was only 11.6%. Let&amp;#39;s assume that the Jazz&amp;#39;s primary PnR man is exactly average, and that the Jazz still stick with a PnR based offense (Sloan is still the coach, so we can be pretty sure of this), so 64% of his baskets are assisted. We&amp;#39;ll also assume this player absorbs all of Malone&amp;#39;s minutes (37.7 per game is a lot, but then again, back then starters played more minutes. 17 bigs in 91-92 played over 37 mpg, this year only 14 players total averaged that much). This average player would make about 6.3 buckets a game. This means 4 (4.032) of those a game would be assists from Stockton (sticking with the &amp;quot;Stockton makes ALL the assists&amp;quot; assumption [reeeeal bad meme refer
 ence]). &lt;/p&gt;\n\n&lt;p&gt;Doing the simple math gets us to our conclusion: Stockton would average less assists a game, dropping from 13.7 assists to about 11.3 assists per game. This is a significant drop, but still outstanding assist numbers, especially with the understanding that there would be an additional 7-8 shot attempts to be disbursed in Malone&amp;#39;s absence, some of those probably resulting in additional Stockton assists. &lt;/p&gt;\n\n&lt;p&gt;In summary, Stockton would at LEAST average 11.3 assists in our 1991-1992 isolated example, and if you assume that 1991-1992 is a good indicator for the entire Stockton-Malone era, Stockton would have ended his career with somewhere between 12,200 and 12,800 assists (depending on minutes for him and the replacement player[s]). He would have had at least 6 seasons of double digit assists. This means he would still be the all-time assist leader (by a smallish margin), and in all likelihood still considered a top 5 point guard
  of all time. Again, this is all WITHOUT counting those left over possessions in Malone&amp;#39;s absence. Given that Stockton dished an assist on 14.3% of all the Jazz&amp;#39;s possessions in 1991-1992, if we include those possessions in the discussion then Stockton probably averages just over 1 assist more per game, which seems small but brings his average that year to 12.3 assists. Career wise that would mean he dishes between 13,500 and 14,200 assists, still giving him a very large lead in the record books and would mean he likely still holds at least 4 of the top 10 assists per game seasons (although no longer the top spot). &lt;/p&gt;\n\n&lt;p&gt;Basically, John Stockton was a beast of a point guard with or without Malone. Malone&amp;#39;s absence would have been a significant hit to Stockton&amp;#39;s production but he would still put up otherworldly assist numbers.&lt;/p&gt;\n\n&lt;p&gt;The real question might be: What would Stockton be without the Pick and Roll? The world 
 may never know...&lt;/p&gt;\n\n&lt;p&gt;Please give me feedback and criticism, I love hearing feedback about two of my idols whether its positive or negative. &lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":63,"saved":false,"num_reports":null,"created":1377828823.0,"downs":12,"hidden":false,"likes":null,"subreddit":"nba"}
-{"name":"t3_1l9ybg","permalink":"/r/OkCupid/comments/1l9ybg/critique_request_requesting_again/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":2,"ups":1,"link_flair_text":null,"title":"[Critique request] requesting again","author_flair_css_class":null,"author":"luniawar20","thumbnail":"self","created_utc":1377715116.0,"url":"http://www.reddit.com/r/OkCupid/comments/1l9ybg/critique_request_requesting_again/","stickied":false,"banned_by":null,"domain":"self.OkCupid","id":"1l9ybg","selftext":"[My profile](http://www.okcupid.com/profile/gksrl123?cf=regular)\n\nSo I deleted self-summary section because I felt like I was just writing cliches.\n\nIn your honest opinion, how about my photos? I know they are all selfie... but my other photos look even more terrible =( I am just bad with photos.\n\nFor the most private thin I'll admit section, I am thinking to write: \"I can't watch sad movies without Kleenex\" ok thing to write?","distinguished":null,"author_
 flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2rct2","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;&lt;a href=\"http://www.okcupid.com/profile/gksrl123?cf=regular\"&gt;My profile&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;So I deleted self-summary section because I felt like I was just writing cliches.&lt;/p&gt;\n\n&lt;p&gt;In your honest opinion, how about my photos? I know they are all selfie... but my other photos look even more terrible =( I am just bad with photos.&lt;/p&gt;\n\n&lt;p&gt;For the most private thin I&amp;#39;ll admit section, I am thinking to write: &amp;quot;I can&amp;#39;t watch sad movies without Kleenex&amp;quot; ok thing to write?&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377743916.0,"downs":0,"hidden":false,"likes":null,"subreddit":"OkCupid"}
-{"name":"t3_1l9ubq","permalink":"/r/hometheater/comments/1l9ubq/looking_for_a_60_new_plasma_and_sound_between/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":29,"ups":4,"link_flair_text":null,"title":"Looking for a 60\" New Plasma and Sound between $1500-$2000","author_flair_css_class":null,"author":"fratzcatsfw","thumbnail":"self","created_utc":1377712365.0,"url":"http://www.reddit.com/r/hometheater/comments/1l9ubq/looking_for_a_60_new_plasma_and_sound_between/","stickied":false,"banned_by":null,"domain":"self.hometheater","id":"1l9ubq","selftext":"I'm looking for a 60\" Plasma under $2k.  Would love to stay panasonic because I have a 42\" that I've had in my bedroom for almost 4 years and it's been fantastic.  Just bought a new house with a finished basement and have dimming lights and no external windows in the tv room.  I want to go nice and big for a mini-theatre experience but I can't find anything conclusive for the budget.  I was hoping on s
 pending $1500 and putting the extra $500 into a nice sound system.\n\nThoughts? \n\nP.S.  I saw some good stuff on Samsung Plasma's and then I heard that the new glass they use between screens cracks at high running temps and break the tv with no customer support from Samsung for the issue.  :\\  I've always admired their LED's but I know that I want a Plasma.\n\n\nThanks in advance guys/gals!","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2rof6","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I&amp;#39;m looking for a 60&amp;quot; Plasma under $2k.  Would love to stay panasonic because I have a 42&amp;quot; that I&amp;#39;ve had in my bedroom for almost 4 years and it&amp;#39;s been fantastic.  Just bought a new house with a finished basement and have dimming lights and no external windows in the tv room.  I want to go nice and big for a mini-theatre experience but I can&amp;#39;t fin
 d anything conclusive for the budget.  I was hoping on spending $1500 and putting the extra $500 into a nice sound system.&lt;/p&gt;\n\n&lt;p&gt;Thoughts? &lt;/p&gt;\n\n&lt;p&gt;P.S.  I saw some good stuff on Samsung Plasma&amp;#39;s and then I heard that the new glass they use between screens cracks at high running temps and break the tv with no customer support from Samsung for the issue.  :\\  I&amp;#39;ve always admired their LED&amp;#39;s but I know that I want a Plasma.&lt;/p&gt;\n\n&lt;p&gt;Thanks in advance guys/gals!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":2,"saved":false,"num_reports":null,"created":1377741165.0,"downs":2,"hidden":false,"likes":null,"subreddit":"hometheater"}
-{"name":"t3_1lallx","permalink":"/r/microgrowery/comments/1lallx/some_plants_have_purple_stems_some_purple_fan/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":9,"ups":1,"link_flair_text":null,"title":"Some plants have purple stems, some purple fan leaves, but how to spot the one that will have purple buds?","author_flair_css_class":"CFL","author":"LostInJam","thumbnail":"","created_utc":1377732544.0,"url":"http://www.reddit.com/r/microgrowery/comments/1lallx/some_plants_have_purple_stems_some_purple_fan/","stickied":false,"banned_by":null,"domain":"self.microgrowery","id":"1lallx","selftext":"Picking a clone is not an option for me. I want to grow a bunch of \"purple\" seeds and pick one or two (max space) for the microgrow - but is there a way to know from a vegging plant if it will give purple buds? Waiting till it shows the buds is not an option neither. Stealth is the factor. \n\nI once had (and killed, r.i.p.) a purple seedling, and that's the 
 closest I have been to the cool purple :|","distinguished":null,"author_flair_text":"200W 2100k CFL, mycorrhizae, air pots, mostly organic","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2s5jo","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Picking a clone is not an option for me. I want to grow a bunch of &amp;quot;purple&amp;quot; seeds and pick one or two (max space) for the microgrow - but is there a way to know from a vegging plant if it will give purple buds? Waiting till it shows the buds is not an option neither. Stealth is the factor. &lt;/p&gt;\n\n&lt;p&gt;I once had (and killed, r.i.p.) a purple seedling, and that&amp;#39;s the closest I have been to the cool purple :|&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":0,"saved":false,"num_reports":null,"created":1377761344.0,"downs":7,"hidden":false,"likes":null,"subreddit":"microgrowery"}
-{"name":"t3_1la0ec","permalink":"/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":1,"ups":2,"link_flair_text":null,"title":"Need help finding a new skincare routine.","author_flair_css_class":null,"author":"skincarerevamp","thumbnail":"self","created_utc":1377716610.0,"url":"http://www.reddit.com/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/","stickied":false,"banned_by":null,"domain":"self.SkincareAddiction","id":"1la0ec","selftext":"I recently found this subreddit, and since then have discovered the many errors of my skincare ways. I am a 26(F) who has been using Proactiv for about 3-4 years now. I know that there are less expensive products I can use that would be better on my skin.  \n\nSkin: I have somewhat oily skin, my forehead can get shiny. The pores on my nose and chin clog easily but my cheeks are always really smooth and clear. My
  biggest annoyance is my nose, which has been red and tends to flake since I was a teenager. I will get the occasional breakout, almost always hormonal. As long as I use Proactiv religiously, my skin stays overall pretty decent looking.  Also I have dark circles/uneven skin tone under my eyes and have tried many products without finding one I really love.  \n\nRoutine: I think I have overdone it with my routine in the past. I have recently stopped exfoliating as often, but I will list my previous routine.\n  \nAM – St. Ives scrub, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv repairing treatment, Simple protecting light moisturizer SPF 15, Clean &amp; Clear Advantage Spot Treatment, eye cream/serum (either Philosophy Eye Believe or Genifique Yeux Light-Pearl)\n\nPM – Ponds makeup removing wipes, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv clarifying night cream, Proactiv repairing treatment
 , Simple protecting light moisturizer SPF 15, eye cream/serum\n\nAlso once or twice a week I may use Proactiv refining mask, Proactiv blackhead dissolving gel, or \tProactiv glycolic acid peel\n\nOver the past few weeks I have stopped using the St. Ives Scrub and switched to an Aveeno scrub, which I can tell is a lot more gentle on my face. I only use the scrub now a couple times a week and my Clarisonic every few days at night.  \n\n\nSo basically I’m looking for advice because this routine is quite tedious/expensive and it works decently but not great.  Thanks!\n","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2tbbg","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I recently found this subreddit, and since then have discovered the many errors of my skincare ways. I am a 26(F) who has been using Proactiv for about 3-4 years now. I know that there are less expensive products I can use
  that would be better on my skin.  &lt;/p&gt;\n\n&lt;p&gt;Skin: I have somewhat oily skin, my forehead can get shiny. The pores on my nose and chin clog easily but my cheeks are always really smooth and clear. My biggest annoyance is my nose, which has been red and tends to flake since I was a teenager. I will get the occasional breakout, almost always hormonal. As long as I use Proactiv religiously, my skin stays over

<TRUNCATED>

[40/71] [abbrv] adding uncommitted core classes, and updates to twitter, es, mongo, hdfs

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProcessorTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProcessorTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProcessorTask.java
new file mode 100644
index 0000000..30466a3
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProcessorTask.java
@@ -0,0 +1,102 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+import org.apache.streams.core.StreamsProcessor;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ *
+ */
+public class StreamsProcessorTask extends BaseStreamsTask {
+
+
+    private StreamsProcessor processor;
+    private long sleepTime;
+    private AtomicBoolean keepRunning;
+    private Map<String, Object> streamConfig;
+    private Queue<StreamsDatum> inQueue;
+    private AtomicBoolean isRunning;
+
+    /**
+     * Default constructor, uses default sleep time of 500ms when inbound queue is empty
+     * @param processor process to run in task
+     */
+    public StreamsProcessorTask(StreamsProcessor processor) {
+        this(processor, DEFAULT_SLEEP_TIME_MS);
+    }
+
+    /**
+     *
+     * @param processor processor to run in task
+     * @param sleepTime time to sleep when incoming queue is empty
+     */
+    public StreamsProcessorTask(StreamsProcessor processor, long sleepTime) {
+        this.processor = processor;
+        this.sleepTime = sleepTime;
+        this.keepRunning = new AtomicBoolean(true);
+        this.isRunning = new AtomicBoolean(true);
+    }
+
+    @Override
+    public void stopTask() {
+        this.keepRunning.set(false);
+    }
+
+    @Override
+    public void setStreamConfig(Map<String, Object> config) {
+        this.streamConfig = config;
+    }
+
+    @Override
+    public void addInputQueue(Queue<StreamsDatum> inputQueue) {
+        this.inQueue = inputQueue;
+    }
+
+    @Override
+    public boolean isRunning() {
+        return this.isRunning.get();
+    }
+
+    @Override
+    public void run() {
+        try {
+            this.processor.prepare(this.streamConfig);
+            StreamsDatum datum = this.inQueue.poll();
+            while(datum != null || this.keepRunning.get()) {
+                if(datum != null) {
+                    List<StreamsDatum> output = this.processor.process(datum);
+                    if(output != null) {
+                        for(StreamsDatum outDatum : output) {
+                            super.addToOutgoingQueue(outDatum);
+                        }
+                    }
+                }
+                else {
+                    try {
+                        Thread.sleep(this.sleepTime);
+                    } catch (InterruptedException e) {
+                        this.keepRunning.set(false);
+                    }
+                }
+                datum = this.inQueue.poll();
+            }
+
+        } finally {
+            this.processor.cleanUp();
+            this.isRunning.set(false);
+        }
+    }
+
+    @Override
+    public List<Queue<StreamsDatum>> getInputQueues() {
+        List<Queue<StreamsDatum>> queues = new LinkedList<Queue<StreamsDatum>>();
+        queues.add(this.inQueue);
+        return queues;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
new file mode 100644
index 0000000..fe83160
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsProviderTask.java
@@ -0,0 +1,132 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+
+import java.math.BigInteger;
+import java.util.Map;
+import java.util.Queue;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ *
+ */
+public class StreamsProviderTask extends BaseStreamsTask {
+
+    private static enum Type {
+        READ_CURRENT,
+        READ_NEW,
+        READ_RANGE
+    }
+
+    private static final int START = 0;
+    private static final int END = 1;
+
+    private StreamsProvider provider;
+    private AtomicBoolean keepRunning;
+    private Type type;
+    private BigInteger sequence;
+    private DateTime[] dateRange;
+    private Map<String, Object> config;
+    private AtomicBoolean isRunning;
+
+    /**
+     * Constructor for a StreamsProvider to execute {@link org.apache.streams.core.StreamsProvider:readCurrent()}
+     * @param provider
+     */
+    public StreamsProviderTask(StreamsProvider provider) {
+        this.provider = provider;
+        this.type = Type.READ_CURRENT;
+        this.keepRunning = new AtomicBoolean(true);
+        this.isRunning = new AtomicBoolean(true);
+    }
+
+    /**
+     * Constructor for a StreamsProvider to execute {@link org.apache.streams.core.StreamsProvider:readNew(BigInteger)}
+     * @param provider
+     * @param sequence
+     */
+    public StreamsProviderTask(StreamsProvider provider, BigInteger sequence) {
+        this.provider = provider;
+        this.type = Type.READ_NEW;
+        this.sequence = sequence;
+        this.keepRunning = new AtomicBoolean(true);
+        this.isRunning = new AtomicBoolean(true);
+    }
+
+    /**
+     * Constructor for a StreamsProvider to execute {@link org.apache.streams.core.StreamsProvider:readRange(DateTime,DateTime)}
+     * @param provider
+     * @param start
+     * @param end
+     */
+    public StreamsProviderTask(StreamsProvider provider, DateTime start, DateTime end) {
+        this.provider = provider;
+        this.type = Type.READ_RANGE;
+        this.dateRange = new DateTime[2];
+        this.dateRange[START] = start;
+        this.dateRange[END] = end;
+        this.keepRunning = new AtomicBoolean(true);
+        this.isRunning = new AtomicBoolean(true);
+    }
+
+    @Override
+    public void stopTask() {
+        this.keepRunning.set(false);
+    }
+
+    @Override
+    public void addInputQueue(Queue<StreamsDatum> inputQueue) {
+        throw new UnsupportedOperationException(this.getClass().getName()+" does not support method - setInputQueue()");
+    }
+
+    @Override
+    public void setStreamConfig(Map<String, Object> config) {
+        this.config = config;
+    }
+
+    @Override
+    public void run() {
+        try {
+            this.provider.prepare(this.config); //TODO allow for configuration objects
+            StreamsResultSet resultSet = null;
+            this.isRunning.set(true);
+            switch(this.type) {
+                case READ_CURRENT: resultSet = this.provider.readCurrent();
+                    break;
+                case READ_NEW: resultSet = this.provider.readNew(this.sequence);
+                    break;
+                case READ_RANGE: resultSet = this.provider.readRange(this.dateRange[START], this.dateRange[END]);
+                    break;
+                default: throw new RuntimeException("Type has not been added to StreamsProviderTask.");
+            }
+            for(StreamsDatum datum : resultSet) {
+                if(!this.keepRunning.get()) {
+                    break;
+                }
+                if(datum != null)
+                 super.addToOutgoingQueue(datum);
+                else {
+                    try {
+                        Thread.sleep(DEFAULT_SLEEP_TIME_MS);
+                    } catch (InterruptedException e) {
+                        this.keepRunning.set(false);
+                    }
+                }
+            }
+
+        } catch( Exception e ) {
+            e.printStackTrace();
+        } finally
+        {
+            this.provider.cleanUp();
+            this.isRunning.set(false);
+        }
+    }
+
+    public boolean isRunning() {
+        return this.isRunning.get();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/4705fcb7/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
new file mode 100644
index 0000000..6121d83
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
@@ -0,0 +1,58 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+
+/**
+ * Interface for all task that will be used to execute instances of {@link org.apache.streams.core.StreamsOperation}
+ * in local mode.
+ */
+public interface StreamsTask extends Runnable{
+
+    public static final long DEFAULT_SLEEP_TIME_MS = 500;
+
+    /**
+     * Informs the task to stop. Tasks may or may not try to empty its inbound queue before halting.
+     */
+    public void stopTask();
+
+    /**
+     * Add an input {@link java.util.Queue} for this task.
+     * @param inputQueue
+     */
+    public void addInputQueue(Queue<StreamsDatum> inputQueue);
+
+    /**
+     * Add an output {@link java.util.Queue} for this task.
+     * @param outputQueue
+     */
+    public void addOutputQueue(Queue<StreamsDatum> outputQueue);
+
+    /**
+     * Set the configuration object that will shared and passed to all instances of StreamsTask.
+     * @param config optional configuration information
+     */
+    public void setStreamConfig(Map<String, Object> config);
+
+    /**
+     * Returns true when the task has not completed. Returns false otherwise
+     * @return true when the task has not completed. Returns false otherwise
+     */
+    public boolean isRunning();
+
+    /**
+     * Returns the input queues that have been set for this task.
+     * @return list of input queues
+     */
+    public List<Queue<StreamsDatum>> getInputQueues();
+
+    /**
+     * Returns the output queues that have been set for this task
+     * @return list of output queues
+     */
+    public List<Queue<StreamsDatum>> getOutputQueues();
+
+}


[39/71] [abbrv] git commit: adding a few missing files

Posted by sb...@apache.org.
adding a few missing files

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1571490 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/c0281362
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/c0281362
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/c0281362

Branch: refs/heads/master
Commit: c0281362be2062cc9199c48070b4bd3e16b9c142
Parents: 3d7ff8f
Author: sblackmon <sb...@unknown>
Authored: Mon Feb 24 23:34:13 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Mon Feb 24 23:34:13 2014 +0000

----------------------------------------------------------------------
 .../streams-provider-rss.iml                    |  16 +-
 .../provider/TwitterProfileProcessor.java       | 111 +++++++++++
 .../twitter/provider/TwitterTypeConverter.java  | 199 +++++++++++++++++++
 .../apache/streams/util/SerializationUtil.java  |  50 +++++
 4 files changed, 371 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/c0281362/streams-contrib/streams-provider-rss/streams-provider-rss.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/streams-provider-rss.iml b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
index f27b242..2846a74 100644
--- a/streams-contrib/streams-provider-rss/streams-provider-rss.iml
+++ b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
@@ -1,15 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
   <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
     <output url="file://$MODULE_DIR$/target/classes" />
     <output-test url="file://$MODULE_DIR$/target/test-classes" />
     <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jsonschema2pojo" isTestSource="false" generated="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
       <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
+      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jsonschema2pojo" isTestSource="false" generated="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/target/maven-archiver" />
+      <excludeFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" />
+      <excludeFolder url="file://$MODULE_DIR$/target/maven-status" />
+      <excludeFolder url="file://$MODULE_DIR$/target/surefire-reports" />
+      <excludeFolder url="file://$MODULE_DIR$/target/test-classes" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
@@ -30,6 +35,9 @@
     <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
     <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
     <orderEntry type="module" module-name="streams-core" />
+    <orderEntry type="module" module-name="streams-util" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
     <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
     <orderEntry type="module" module-name="streams-pojo" />
@@ -49,8 +57,6 @@
     <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
     <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
     <orderEntry type="module" module-name="streams-config" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:15.0" level="project" />
-    <orderEntry type="library" name="Maven: com.google.collections:google-collections:1.0" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.2.1" level="project" />
     <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:0.9.0" level="project" />
     <orderEntry type="library" name="Maven: net.minidev:json-smart:1.2" level="project" />

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/c0281362/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java
new file mode 100644
index 0000000..3f9c24b
--- /dev/null
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterProfileProcessor.java
@@ -0,0 +1,111 @@
+package org.apache.streams.twitter.provider;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+import org.apache.streams.pojo.json.Activity;
+import org.apache.streams.twitter.pojo.Retweet;
+import org.apache.streams.twitter.pojo.Tweet;
+import org.apache.streams.twitter.pojo.User;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class TwitterProfileProcessor implements StreamsProcessor, Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterProfileProcessor.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private Queue<StreamsDatum> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    @Override
+    public void run() {
+
+        while(true) {
+            StreamsDatum item;
+                try {
+                    item = inQueue.poll();
+                    if(item.getDocument() instanceof String && item.equals(TERMINATE)) {
+                        LOGGER.info("Terminating!");
+                        break;
+                    }
+
+                    Thread.sleep(new Random().nextInt(100));
+
+                    for( StreamsDatum entry : process(item)) {
+                        outQueue.offer(entry);
+                    }
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
+
+            }
+        }
+    }
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        List<StreamsDatum> result = Lists.newArrayList();
+        String item;
+        try {
+            // first check for valid json
+            // since data is coming from outside provider, we don't know what type the events are
+            if( entry.getDocument() instanceof String) {
+                item = (String) entry.getDocument();
+            } else {
+                item = mapper.writeValueAsString((ObjectNode)entry.getDocument());
+            }
+
+            Class inClass = TwitterEventClassifier.detectClass(item);
+
+            User user;
+
+            if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("TWEET");
+                Tweet tweet = mapper.readValue(item, Tweet.class);
+                user = tweet.getUser();
+                result.add(new StreamsDatum(user));
+            }
+            else if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("RETWEET");
+                Retweet retweet = mapper.readValue(item, Retweet.class);
+                user = retweet.getRetweetedStatus().getUser();
+                result.add(new StreamsDatum(user));
+            } else {
+                return Lists.newArrayList();
+            }
+
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            LOGGER.warn("Error processing " + entry.toString());
+            return Lists.newArrayList();
+        }
+    }
+
+    @Override
+    public void prepare(Object o) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/c0281362/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java
new file mode 100644
index 0000000..0b0507d
--- /dev/null
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/provider/TwitterTypeConverter.java
@@ -0,0 +1,199 @@
+package org.apache.streams.twitter.provider;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+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.serializer.TwitterJsonDeleteActivitySerializer;
+import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
+import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class TwitterTypeConverter implements StreamsProcessor, Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTypeConverter.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private Queue<StreamsDatum> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    private Class inClass;
+    private Class outClass;
+
+    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
+    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
+    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    public TwitterTypeConverter(Class inClass, Class outClass) {
+        this.inClass = inClass;
+        this.outClass = outClass;
+    }
+
+    public Queue<StreamsDatum> getProcessorOutputQueue() {
+        return outQueue;
+    }
+
+    public void setProcessorInputQueue(Queue<StreamsDatum> inputQueue) {
+        inQueue = inputQueue;
+    }
+
+    public Object convert(ObjectNode event, Class inClass, Class outClass) {
+
+        LOGGER.debug(event.toString());
+
+        Object result = null;
+
+        if( outClass.equals( Activity.class )) {
+            if( inClass.equals( Delete.class )) {
+                LOGGER.debug("ACTIVITY DELETE");
+                result = twitterJsonDeleteActivitySerializer.convert(event);
+            } else if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("ACTIVITY RETWEET");
+                result = twitterJsonRetweetActivitySerializer.convert(event);
+            } else if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("ACTIVITY TWEET");
+                result = twitterJsonTweetActivitySerializer.convert(event);
+            } else {
+                return null;
+            }
+        } else if( outClass.equals( Tweet.class )) {
+            if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("TWEET");
+                result = mapper.convertValue(event, Tweet.class);
+            }
+        } else if( outClass.equals( Retweet.class )) {
+            if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("RETWEET");
+                result = mapper.convertValue(event, Retweet.class);
+            }
+        } else if( outClass.equals( Delete.class )) {
+            if ( inClass.equals( Delete.class )) {
+                LOGGER.debug("DELETE");
+                result = mapper.convertValue(event, Delete.class);
+            }
+        } else if( outClass.equals( ObjectNode.class )) {
+            LOGGER.debug("OBJECTNODE");
+            result = mapper.convertValue(event, ObjectNode.class);
+        }
+
+            // no supported conversion were applied
+        if( result != null )
+            return result;
+
+        LOGGER.debug("CONVERT FAILED");
+
+        return null;
+
+    }
+
+    public boolean validate(Object document, Class klass) {
+
+        // TODO
+        return true;
+    }
+
+    public boolean isValidJSON(final String json) {
+        boolean valid = false;
+        try {
+            final JsonParser parser = new ObjectMapper().getJsonFactory()
+                    .createJsonParser(json);
+            while (parser.nextToken() != null) {
+            }
+            valid = true;
+        } catch (JsonParseException jpe) {
+            LOGGER.warn("validate: {}", jpe);
+        } catch (IOException ioe) {
+            LOGGER.warn("validate: {}", ioe);
+        }
+
+        return valid;
+    }
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        StreamsDatum result = null;
+
+        try {
+
+            Object item = entry.getDocument();
+            ObjectNode node;
+
+            if( item instanceof String ) {
+
+                // if the target is string, just pass-through
+                if( String.class.equals(outClass))
+                    outQueue.offer(entry);
+                else {
+                    // first check for valid json
+                    node = (ObjectNode)mapper.readTree((String)item);
+
+                    // since data is coming from outside provider, we don't know what type the events are
+                    Class inClass = TwitterEventClassifier.detectClass((String)item);
+
+                    Object out = convert(node, inClass, outClass);
+
+                    if( out != null && validate(out, outClass))
+                        result = new StreamsDatum(out);
+                }
+
+            } else if( item instanceof ObjectNode ) {
+
+                // first check for valid json
+                node = (ObjectNode)mapper.valueToTree(item);
+
+                // since data is coming from outside provider, we don't know what type the events are
+                Class inClass = TwitterEventClassifier.detectClass((String)item);
+
+                Object out = convert(node, inClass, outClass);
+
+                if( out != null && validate(out, outClass))
+                    result = new StreamsDatum(out);
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        if( result != null )
+            return Lists.newArrayList(result);
+        else
+            return Lists.newArrayList();
+    }
+
+    @Override
+    public void prepare(Object o) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+
+    @Override
+    public void run() {
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/c0281362/streams-util/src/main/java/org/apache/streams/util/SerializationUtil.java
----------------------------------------------------------------------
diff --git a/streams-util/src/main/java/org/apache/streams/util/SerializationUtil.java b/streams-util/src/main/java/org/apache/streams/util/SerializationUtil.java
new file mode 100644
index 0000000..f5c41b0
--- /dev/null
+++ b/streams-util/src/main/java/org/apache/streams/util/SerializationUtil.java
@@ -0,0 +1,50 @@
+package org.apache.streams.util;
+
+import java.io.*;
+
+/**
+ * Created by rebanks on 2/18/14.
+ */
+public class SerializationUtil {
+
+    /**
+     * BORROwED FROM APACHE STORM PROJECT
+     * @param obj
+     * @return
+     */
+    public static byte[] serialize(Object obj) {
+        try {
+            ByteArrayOutputStream bos = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(bos);
+            oos.writeObject(obj);
+            oos.close();
+            return bos.toByteArray();
+        } catch(IOException ioe) {
+            throw new RuntimeException(ioe);
+        }
+    }
+
+    /**
+     * BORROwED FROM APACHE STORM PROJECT
+     * @param serialized
+     * @return
+     */
+    public static Object deserialize(byte[] serialized) {
+        try {
+            ByteArrayInputStream bis = new ByteArrayInputStream(serialized);
+            ObjectInputStream ois = new ObjectInputStream(bis);
+            Object ret = ois.readObject();
+            ois.close();
+            return ret;
+        } catch(IOException ioe) {
+            throw new RuntimeException(ioe);
+        } catch(ClassNotFoundException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+
+    public static Object cloneBySerialization(Object obj) {
+        return deserialize(serialize(obj));
+    }
+}


[65/71] [abbrv] changing build version back to 0.1-SNAPSHOT to prepare for merge

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-google/google-gplus/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/pom.xml b/streams-contrib/streams-provider-google/google-gplus/pom.xml
index 99f9321..ffb792c 100644
--- a/streams-contrib/streams-provider-google/google-gplus/pom.xml
+++ b/streams-contrib/streams-provider-google/google-gplus/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-google</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-google/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/pom.xml b/streams-contrib/streams-provider-google/pom.xml
index 57da330..b720b76 100644
--- a/streams-contrib/streams-provider-google/pom.xml
+++ b/streams-contrib/streams-provider-google/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-moreover/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-moreover/pom.xml b/streams-contrib/streams-provider-moreover/pom.xml
index d038dd2..521a865 100644
--- a/streams-contrib/streams-provider-moreover/pom.xml
+++ b/streams-contrib/streams-provider-moreover/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-rss/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/pom.xml b/streams-contrib/streams-provider-rss/pom.xml
index a919dad..ae2d00f 100644
--- a/streams-contrib/streams-provider-rss/pom.xml
+++ b/streams-contrib/streams-provider-rss/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -63,7 +63,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-persist-console</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-sysomos/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-sysomos/pom.xml b/streams-contrib/streams-provider-sysomos/pom.xml
index 32e320e..5a42b17 100644
--- a/streams-contrib/streams-provider-sysomos/pom.xml
+++ b/streams-contrib/streams-provider-sysomos/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-twitter/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/pom.xml b/streams-contrib/streams-provider-twitter/pom.xml
index 76ae5f7..9a12bbc 100644
--- a/streams-contrib/streams-provider-twitter/pom.xml
+++ b/streams-contrib/streams-provider-twitter/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-core/pom.xml
----------------------------------------------------------------------
diff --git a/streams-core/pom.xml b/streams-core/pom.xml
index e46d109..7f22cb1 100644
--- a/streams-core/pom.xml
+++ b/streams-core/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>streams-core</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-eip-routes/pom.xml
----------------------------------------------------------------------
diff --git a/streams-eip-routes/pom.xml b/streams-eip-routes/pom.xml
index a4f4e10..78d0767 100644
--- a/streams-eip-routes/pom.xml
+++ b/streams-eip-routes/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>streams-eip-routes</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-osgi-components/activity-consumer/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/activity-consumer/pom.xml b/streams-osgi-components/activity-consumer/pom.xml
index 98b28f8..aa03c47 100644
--- a/streams-osgi-components/activity-consumer/pom.xml
+++ b/streams-osgi-components/activity-consumer/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activity-consumer</artifactId>
@@ -142,7 +142,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-cassandra</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-osgi-components/activity-registration/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/activity-registration/pom.xml b/streams-osgi-components/activity-registration/pom.xml
index aee2d05..9ab8a74 100644
--- a/streams-osgi-components/activity-registration/pom.xml
+++ b/streams-osgi-components/activity-registration/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activity-registration</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-osgi-components/activity-subscriber/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/activity-subscriber/pom.xml b/streams-osgi-components/activity-subscriber/pom.xml
index 8d072a3..367fee7 100644
--- a/streams-osgi-components/activity-subscriber/pom.xml
+++ b/streams-osgi-components/activity-subscriber/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>activity-subscriber</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-osgi-components/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/pom.xml b/streams-osgi-components/pom.xml
index a4eae29..d7f68cd 100644
--- a/streams-osgi-components/pom.xml
+++ b/streams-osgi-components/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.streams.osgi.components</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-osgi-components/streams-components-all/pom.xml
----------------------------------------------------------------------
diff --git a/streams-osgi-components/streams-components-all/pom.xml b/streams-osgi-components/streams-components-all/pom.xml
index c89fe96..7fb055c 100644
--- a/streams-osgi-components/streams-components-all/pom.xml
+++ b/streams-osgi-components/streams-components-all/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.streams.osgi.components</groupId>
     <artifactId>streams-osgi-components</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>streams-components-all</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-pojo-extensions/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo-extensions/pom.xml b/streams-pojo-extensions/pom.xml
index aadc4e8..85796dd 100644
--- a/streams-pojo-extensions/pom.xml
+++ b/streams-pojo-extensions/pom.xml
@@ -23,14 +23,14 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>streams-pojo-extensions</artifactId>
 
     <properties>
-    <streams.version>0.1.STREAMS26-SNAPSHOT</streams.version>
+    <streams.version>0.1-SNAPSHOT</streams.version>
     </properties>
     <dependencies>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml
index be4c510..082e481 100644
--- a/streams-pojo/pom.xml
+++ b/streams-pojo/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-storm/pom.xml
----------------------------------------------------------------------
diff --git a/streams-storm/pom.xml b/streams-storm/pom.xml
index bcfabad..fb8f8a2 100644
--- a/streams-storm/pom.xml
+++ b/streams-storm/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>streams-storm</artifactId>
@@ -32,22 +32,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config-graph</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-util/pom.xml
----------------------------------------------------------------------
diff --git a/streams-util/pom.xml b/streams-util/pom.xml
index 4ab7a1a..cd6d031 100644
--- a/streams-util/pom.xml
+++ b/streams-util/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-web/pom.xml
----------------------------------------------------------------------
diff --git a/streams-web/pom.xml b/streams-web/pom.xml
index 09ad06b..2a44e43 100644
--- a/streams-web/pom.xml
+++ b/streams-web/pom.xml
@@ -22,7 +22,7 @@
   <parent>
     <artifactId>streams-project</artifactId>
     <groupId>org.apache.streams</groupId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
   <artifactId>streams-web</artifactId>
   <packaging>war</packaging>


[21/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.xml
deleted file mode 100644
index 34d4db5..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.xml
+++ /dev/null
@@ -1,5762 +0,0 @@
-    <entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7fgd</id>
-		<published>2013-08-27T20:07:28Z</published>
-		<updated>2013-08-27T20:07:28Z</updated>
-		<title>TerriblePterodactyl posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/longrange/comments/1l7fgd/need_advice_selecting_between_two_rifles/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Remington%22&amp;limit=100&amp;after=t3_135v09"/>
-			<title>Reddit - Keyword - Search (Recent) - "Remington"</title>
-			<updated>2013-08-28T19-54-43Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Remington"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7fgd</id>
-			<title>Need advice; Selecting Between Two Rifles</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;So, I have an opportunity to purchase a Remington 700 in .308, with a Vortex Viper 4-16X50 scope, Harris bipod and Standard Stock.  The other option is the Remington 700P in .308 with a Leupold Mark V 4.5-14x50 scope, Harris bipod and the HS stock.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The regular 700 with the Vortex is $200 cheaper.  This will be my first rifle, so I&amp;amp;#39;m looking to get in as low as possible, and still get a quality option.  Eventually, I&amp;amp;#39;d like to save up some money for the Savage 110 BA in .338, but I figured I&amp;amp;#39;d like the simplicity of the Remington, while still having options to upgrade the stock, get the action trued (if necessary) and even have a gunsmith work over to get the barrel truly free-floating.  I&amp;amp;#39;m not sure if any of that will be entirely necessary at first, as I&amp;amp;#39;m still learning the tricks.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Any advice on which one I should be leaning toward?&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/longrange/comments/1l7fgd/need_advice_selecting_between_two_rifles/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="11" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>TerriblePterodactyl</name>
-			<uri>http://www.reddit.com/user/TerriblePterodactyl</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/TerriblePterodactyl"/>
-			<id>http://www.reddit.com/user/TerriblePterodactyl</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="remington">"Remington"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l8rv5</id>
-		<published>2013-08-28T06:54:37Z</published>
-		<updated>2013-08-28T06:54:37Z</updated>
-		<title>darcgecko posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/KerbalSpaceProgram/comments/1l8rv5/tip_choosing_a_jet_engine_based_on_velocity/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Max%20Factor%22&amp;limit=100&amp;after=t3_19h0y5"/>
-			<title>Reddit - Keyword - Search (Recent) - "Max Factor"</title>
-			<updated>2013-08-28T19-54-00Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Max Factor"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l8rv5</id>
-			<title>TIP: Choosing a jet engine based on velocity curves, efficiency, and thrust:mass ratios</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;As you may know, jet engines in this game have a property called a velocity curve. At max throttle, they will output a percentage of the listed max thrust (in the VAB) based on the velocity of the ship. This &amp;amp;#39;&amp;amp;#39;curve&amp;amp;#39;&amp;amp;#39; is defined at several points based on parameters in the part .cfg file, and should be considered when picking what jets to use on your ship.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;VELOCITY&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;For the stock turbojet, the values are as follows:&amp;lt;/p&amp;gt;
-
-&amp;lt;blockquote&amp;gt;
-&amp;lt;p&amp;gt;velocityCurve&amp;lt;/p&amp;gt;
-&amp;lt;/blockquote&amp;gt;
-
-&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 0 0.5 0 0
-    key = 1000 1 0 0
-    key = 2000 0.5 0 0
-    key = 2400 0 0 0
-&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
-
-&amp;lt;p&amp;gt;As you can see, the jet produces max thrust at 1000 m/s, and 0 thrust at 2400 m/s. This makes it useful for high speed cruising/ssto design. Furthermore, a quick test I ran gave me an output of 170 ish kn of thrust at 500 m/s, which is 75% of 225, and thus it seems that the scaling on this &amp;amp;#39;&amp;amp;#39;curve&amp;amp;#39;&amp;amp;#39; is in fact linear between the points designated.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The normal stock jet, meanwhile, looks like this:&amp;lt;/p&amp;gt;
-
-&amp;lt;blockquote&amp;gt;
-&amp;lt;p&amp;gt;velocityCurve&amp;lt;/p&amp;gt;
-&amp;lt;/blockquote&amp;gt;
-
-&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 1000 0 0 0
-    key = 850 0.2 0 0
-    key = 0 1 0 0
-&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
-
-&amp;lt;p&amp;gt;As you can see, this jet is designed for lower speed, and indeed has a far lower thrust:mass ratio at max thrust than the turbojet (150:1 compared to 187.5:1). However, it should theoretically make up for this by being more fuel efficient at high pressure (i.e. low altitude).&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;If we ignore efficiency for the moment, and simply graph the two in terms of thrust:mass ratio and velocity, it turns out that the equivalence point (past which turbojets are more powerful in all situations) happens at 239.4 m/s. 239 m/s is reaaaaaally slow, and so in cases where speed is the objective, the turbojets are going to be more effective than the standard jets.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;EFFICIENCY&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Of course, this doesn&amp;amp;#39;t factor in efficiency. From the information in the VAB, it would appear that turbojets have an isp far lower than standard jets, as they range from only 800-1200. This data is misleading, however, as there is yet another &amp;amp;#39;curve&amp;amp;#39; parameter in the .cfg that controls isp relative to atmospheric pressure. &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The curve for the turbojet is as follows:&amp;lt;/p&amp;gt;
-
-&amp;lt;blockquote&amp;gt;
-&amp;lt;p&amp;gt;atmosphereCurve&amp;lt;/p&amp;gt;
-&amp;lt;/blockquote&amp;gt;
-
-&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 0 1200
-    key = 0.3 2500
-    key = 1 800
-&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
-
-&amp;lt;p&amp;gt;and for the normal jet:&amp;lt;/p&amp;gt;
-
-&amp;lt;blockquote&amp;gt;
-&amp;lt;p&amp;gt;atmosphereCurve&amp;lt;/p&amp;gt;
-&amp;lt;/blockquote&amp;gt;
-
-&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;    key = 0 1000
-    key = 0.3 1800
-    key = 1 2000
-&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;
-
-&amp;lt;p&amp;gt;As you can see, while the normal jet gets less efficient the higher you are, turbojets actually get &amp;lt;em&amp;gt;more&amp;lt;/em&amp;gt; efficient, until 0.3 atm (6020m, based on the equation for kerbin&amp;amp;#39;s atmo density on the wiki), before becoming less efficient as you get closer to vac. as they end up at 1200 isp in vac compared to the normal jet&amp;amp;#39;s 1000, it follows that after the you get high enough for the turbojet to become more efficient than the normal jet, it stays that way. This first intersection happens at 0.557 atm, which is only 2900m of altitude. Any higher than this, and turbojets are more efficient than normal jets.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;TO SUM UP&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;As you can see, in basically all situations, the turbojets are better than the normal jets. The same sort of analysis can be performed on mod parts, as all the info is in their part .cfg&amp;amp;#39;s. This also gives you an option if you really like a part&amp;amp;#39;s model or idea but think it&amp;amp;#39;s op - you can just modify the part .cfg until its stats line up with what you feel is balanced/realistic.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;TLDR: Basically, never use the normal jets. They&amp;amp;#39;re both less efficient and less powerful, unless you want to cruise around at below 240 m/s or below 2900m.&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/KerbalSpaceProgram/comments/1l8rv5/tip_choosing_a_jet_engine_based_on_velocity/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="5" downVotes="2"/>
-		</activity:object>
-		<author>
-			<name>darcgecko</name>
-			<uri>http://www.reddit.com/user/darcgecko</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/darcgecko"/>
-			<id>http://www.reddit.com/user/darcgecko</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="max_factor">"Max Factor"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7v1p</id>
-		<published>2013-08-27T23:09:46Z</published>
-		<updated>2013-08-27T23:09:46Z</updated>
-		<title>Tylopodas posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/electronic_cigarette/comments/1l7v1p/first_mech_ordered_what_am_i_missing/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Panasonic%22&amp;limit=100&amp;after=t3_168ejl"/>
-			<title>Reddit - Keyword - Search (Recent) - "Panasonic"</title>
-			<updated>2013-08-28T19-47-07Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Panasonic"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7v1p</id>
-			<title>First mech ordered, what am I missing?</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Here&amp;amp;#39;s the list of stuff I ordered from various vendors:&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-Sigelei 8w&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-Sigelei kick clone&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-Nitecore I4&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-AW IMR 18490 x2&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-Panasonic NCR18650PD 18650 x2&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-IGO-W RDA (with monkeycan)&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;-RSST RBA&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Already have a multimeter, a couple feet of 2mm ekowool and some 32awg kanthal to get me through until I can try out a few different style wicks/coils so I know what to order for mesh/silica/kanthal.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Anything I am missing that will greatly improve my first mech experience?&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/electronic_cigarette/comments/1l7v1p/first_mech_ordered_what_am_i_missing/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="7" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>Tylopodas</name>
-			<uri>http://www.reddit.com/user/Tylopodas</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/Tylopodas"/>
-			<id>http://www.reddit.com/user/Tylopodas</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="panasonic">"Panasonic"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l9kpj</id>
-		<published>2013-08-28T23:57:46Z</published>
-		<updated>2013-08-28T23:57:46Z</updated>
-		<title>SemiCharmedMike posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/videography/comments/1l9kpj/advice_dslr_vs_camcorders_for_wedding_videography/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Panasonic%22&amp;limit=100&amp;after=t3_168ejl"/>
-			<title>Reddit - Keyword - Search (Recent) - "Panasonic"</title>
-			<updated>2013-08-28T19-47-07Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Panasonic"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l9kpj</id>
-			<title>Advice: DSLR vs. Camcorders for Wedding Videography</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Hi everyone,&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;I just stumbled across this subreddit today and have lost an hour or so reading submissions. I am hoping you all will be able to help me out with a question I have.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;I am about to get into wedding videography and I&amp;amp;#39;m looking for the perfect (or as close to it as i can get to it) camera. For the last 5 years I have used camcorders for all of my productions (Panasonic Panasonic HVX200&amp;amp;#39;s to be exact) and I&amp;amp;#39;m familiar with them. Though lately I have been noticing that a lot of videographers are using DSLRs.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;In your opinion, which is better? I had myself talked into a Canon 7D until I started reading posts and now I&amp;amp;#39;m thinking about looking into Panasonic&amp;amp;#39;s G6.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;And then there is a voice in the back of my head that I should go with a camcorder, hah. See my dilemma?&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The main venue I will be producing the wedding videos at has outside ceremonies so I&amp;amp;#39;m not worried about low lighting there...but the reception hall can get dark so I may need a camera that can record well in low lighting.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;BTW - I have about $2000 budget for the camera and another $2000 for accessories/other equipment.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;P.S. Also planning on shooting short films with this camera.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Thoughts? Suggestions? Thanks in advance!&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/videography/comments/1l9kpj/advice_dslr_vs_camcorders_for_wedding_videography/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="2" downVotes="1"/>
-		</activity:object>
-		<author>
-			<name>SemiCharmedMike</name>
-			<uri>http://www.reddit.com/user/SemiCharmedMike</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/SemiCharmedMike"/>
-			<id>http://www.reddit.com/user/SemiCharmedMike</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="panasonic">"Panasonic"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7xtm</id>
-		<published>2013-08-27T23:44:57Z</published>
-		<updated>2013-08-27T23:44:57Z</updated>
-		<title>AnyelevNokova posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/RandomActsofMakeup/comments/1l7xtm/contest_im_hungry_go_make_me_something/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22L%27oreal%22%20%22loreal%22&amp;limit=100&amp;after=t3_sa7ex"/>
-			<title>Reddit - Keyword - Search (Recent) - "L'oreal" "loreal"</title>
-			<updated>2013-08-28T19-46-28Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"L'oreal" "loreal"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7xtm</id>
-			<title>[Contest] I'm Hungry; Go Make Me Something!</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Hey ladies (and men.) I&amp;amp;#39;ve never actually posted over this way before, though I&amp;amp;#39;ve browsed a bit. After digging through my battlestation, I realized that I have a lot of stuff that I used once or haven&amp;amp;#39;t even opened! I&amp;amp;#39;m not 100% sure if this kind of thing is even allowed or interesting to people, but I&amp;amp;#39;d like to give what I&amp;amp;#39;ve got away because, honestly, I&amp;amp;#39;m super lazy when it comes to returning things.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;SO. Because of the sheer quantity of stuff I have, I&amp;amp;#39;m going to be doing this Beauty Box style. I have three boxes which I have sorted based upon interest. That means there are &amp;lt;em&amp;gt;three&amp;lt;/em&amp;gt; people I am going to be sending these to. &amp;lt;/p&amp;gt;
-
-&amp;lt;hr/&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;What&amp;amp;#39;s in the Boxes?&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ul&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/yFM3p6H.jpg"&amp;gt;Yeah, Elves Work At Drugstores&amp;lt;/a&amp;gt;: ELF Contouring Blush &amp;amp;amp; Bronzer (lightly used), ELF High Definition Powder (sealed), ELF Eyebrow Kit (used once), ELF Eyelid Primer (lightly used), ELF Eye Primer &amp;amp;amp; Line Sealer (sealed), L&amp;amp;#39;Oreal Voluminous Mascara in Black-Brown (lightly used), Maybelline Color Tattoo Pure Pigments in Black Mystery and Buff &amp;amp;amp; Tuff (sealed), Maybelline Color Tattoo &amp;lt;em&amp;gt;creams&amp;lt;/em&amp;gt; in Pomegranate Punk and Bold Gold (sealed), Boscia Lavender Blotting Linens (opened and wearing on edges from purse travel; otherwise unused) &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/ImSV4k6.jpg"&amp;gt;Let&amp;amp;#39;s Talk About Color&amp;lt;/a&amp;gt;: Revlon Photoready Perfecting Primer (sealed), Wet n Wild Eyeshadow Trios in I&amp;amp;#39;m Feeling Retro and Don&amp;amp;#39;t Steal My Thunder (sealed), Wet n Wild Color Icon Eyeshadow in Comfort Zone (sealed), Revlon Lip Butters in Creamsicle and Candy Apple (sealed), Revlon Lip Butter in Strawberry Shortcake (used once.) Not pictured but in the box: Boots No7 Beautiful Eyebrow Pencil in Brown (used once)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rp2JGWX.jpg"&amp;gt;Foxy Lady&amp;lt;/a&amp;gt;: Sephora Smokey Eye Brush (sealed), bareMinerals Marvelous Moxie Lipstick in Be Free (used once), Sephora Color Token Eyeshadow in Pink Casino (sealed), Tarte Amazonian Clay Full Coverage Airbrush Foundation in Light Beige (used once), Urban Decay Vitamin-Infused Complexion Prep Spray deluxe sample size (no seal, never used), Lady Gaga Fame deluxe sample size (no seal, never used)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;/ul&amp;gt;
-
-&amp;lt;p&amp;gt;I&amp;amp;#39;ll also be tossing some random samples in the boxes as room allows.&amp;lt;/p&amp;gt;
-
-&amp;lt;hr/&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Rules! Rules! Rules!&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;US only. Sorry, but international shipping is eugh :(&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;I will &amp;lt;em&amp;gt;not&amp;lt;/em&amp;gt; be redistributing product within the boxes. What&amp;amp;#39;s in the box is in the box. If you win a box and don&amp;amp;#39;t want something in it, you&amp;amp;#39;re welcome to tell me and I&amp;amp;#39;ll remove the item. But no mix and match. If you don&amp;amp;#39;t like the boxes, don&amp;amp;#39;t enter.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;One box per person. When you enter the contest, please list the three boxes in order of most wanted to least wanted. First winner gets their first pick. Second winner gets their first pick that isn&amp;amp;#39;t taken. Third winner gets the box that remains. If you are only interested in one or two boxes, you can choose to only list one or two, but you must explicitly specify that you &amp;lt;em&amp;gt;do not want&amp;lt;/em&amp;gt; the other(s). If you are selected as a winner, but the box(es) you listed were already taken, I&amp;amp;#39;ll move onto a runner-up who was less particular.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;You must have a valid street address. No PO/FPO/APO/DPO.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;No lurkers (I know, ironic) and/or new (&amp;amp;lt;30 day) accounts. I &amp;lt;em&amp;gt;will&amp;lt;/em&amp;gt; check your comment history.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;hr/&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Ok, what do I have to do?&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Make food. Take a picture of it. Post the picture alongside a description of what it is. Describe your dish to us. What does it taste like? How does it smell? What kind of texture does it have? Get creative here. Recipe is optional. I&amp;amp;#39;m not necessarily looking for the most tasty &amp;lt;em&amp;gt;looking&amp;lt;/em&amp;gt; dish; I&amp;amp;#39;m looking for the combination of picture and dish that makes me go OMG GIVE IT TO ME NOW. Yes: this is a very subjective contest. I have no criteria for meal or ingredients; however, it must be a singular dish. You may garnish, but I&amp;amp;#39;m not looking for Steak + Potatoes + Beans + Wine + Candles. Show me the steak on a plate, and then tell me about it. Seriously. I&amp;amp;#39;m hungry!&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;The deadline for entries will be Wednesday, September 4th at 11:59 PM. I will announce winners by Friday morning.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;em&amp;gt;Edit: Changed the deadline so people had more time to plan and cook.&amp;lt;/em&amp;gt;&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/RandomActsofMakeup/comments/1l7xtm/contest_im_hungry_go_make_me_something/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="12" downVotes="2"/>
-		</activity:object>
-		<author>
-			<name>AnyelevNokova</name>
-			<uri>http://www.reddit.com/user/AnyelevNokova</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/AnyelevNokova"/>
-			<id>http://www.reddit.com/user/AnyelevNokova</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="l'oreal">"L'oreal" "loreal"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l8bju</id>
-		<published>2013-08-28T02:45:46Z</published>
-		<updated>2013-08-28T02:45:46Z</updated>
-		<title>Badger4You posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/headphones/comments/1l8bju/recommendations_for_a_recreational_gaming_pc/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Max%20Factor%22&amp;limit=100&amp;after=t3_156seg"/>
-			<title>Reddit - Keyword - Search (Recent) - "Max Factor"</title>
-			<updated>2013-08-28T19-39-36Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Max Factor"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l8bju</id>
-			<title>Recommendations for a Recreational Gaming PC Headphones/Headset</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;[Price Range $80 to $120 max]  I&amp;amp;#39;m building my first PC and am looking for a nice quality pair of headphones to go with a modmic &amp;lt;a href="http://www.modmic.com/"&amp;gt;http://www.modmic.com/&amp;lt;/a&amp;gt; or just a headset but from what I read that&amp;amp;#39;s not the best idea. I really want surround sound and some good bass for a realistic feel, but I&amp;amp;#39;d still to have some sense of direction ie footsteps in call of duty, but overall sound quality is my priority for playing Mmorpgs or games like Skyrim. I&amp;amp;#39;m pretty dead set on having a closed over ear style. I&amp;amp;#39;m not positive what kind of connections I have with my Asus motherboard &amp;lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16813131872&amp;amp;amp;nm_mc=EMC-IGNEFL082713&amp;amp;amp;cm_mmc=EMC-IGNEFL082713-_-EMC-082713-Index-_-AMDMotherboards-_-13
 131872-L0D"&amp;gt;http://www.newegg.com/Product/Product.aspx?Item=N82E16813131872&amp;amp;amp;nm_mc=EMC-IGNEFL082713&amp;amp;amp;cm_mmc=EMC-IGNEFL082713-_-EMC-082713-Index-_-AMDMotherboards-_-13131872-L0D&amp;lt;/a&amp;gt;. I do not have a sound card, so if you&amp;amp;#39;d recommend one please factor that into the price as well as an amp. Thanks!!&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/headphones/comments/1l8bju/recommendations_for_a_recreational_gaming_pc/"/>
-			<gnip:statistics upVotes="2" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>Badger4You</name>
-			<uri>http://www.reddit.com/user/Badger4You</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/Badger4You"/>
-			<id>http://www.reddit.com/user/Badger4You</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="max_factor">"Max Factor"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7vbs</id>
-		<published>2013-08-27T23:13:25Z</published>
-		<updated>2013-08-27T23:13:25Z</updated>
-		<title>flip69 posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SanDiegoClassifieds/comments/1l7vbs/anyone_need_a_large_hepa_filter_ive_got_a_two/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22lysol%22&amp;limit=100"/>
-			<title>Reddit - Keyword - Search (Recent) - "lysol"</title>
-			<updated>2013-08-28T19-35-40Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"lysol"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7vbs</id>
-			<title>Anyone need a LARGE HEPA Filter I've got a two person filter with flow hood for sale!!! it comes with a pre-filter addition.</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;You read that right... perfect for lab work and all the other things a person might want to do...  it&amp;amp;#39;s a dual seat/person HEPA filter with clear flow hood that&amp;amp;#39;s perfect for those people that want to work in a sterile environment. &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Same model as being sold for over $1,600.00 but I&amp;amp;#39;ll let it go for less than 1/3 that 
-it&amp;amp;#39;s used and will have to be hit with lysol but at this price... it can&amp;amp;#39;t be beat.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;24 x 36  scanned 99.99% efficient micron filter, maximizing your sterile work area. Comes with a prefilter assembly, a powerful 1⁄2 HP blower, and grounded plug and cord. Truly the &amp;amp;quot;Cadillac&amp;amp;quot; of Laminar Flow Hoods! &amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SanDiegoClassifieds/comments/1l7vbs/anyone_need_a_large_hepa_filter_ive_got_a_two/"/>
-			<gnip:statistics upVotes="1" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>flip69</name>
-			<uri>http://www.reddit.com/user/flip69</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/flip69"/>
-			<id>http://www.reddit.com/user/flip69</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Lysol">"lysol"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l9ek9</id>
-		<published>2013-08-28T22:40:15Z</published>
-		<updated>2013-08-28T22:40:15Z</updated>
-		<title>beautiful_sausage posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Fapucational/comments/1l9ek9/by_1890_many_variations_of_soap_were_offered_with/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22colgate%22&amp;limit=100&amp;after=t3_1cfq0r"/>
-			<title>Reddit - Keyword - Search (Recent) - "colgate"</title>
-			<updated>2013-08-28T19-34-16Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"colgate"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l9ek9</id>
-			<title>By 1890 many variations of soap were offered, with the five major companies being, Colgate, Morse Taylor, Albert, Pears, and Bailey.</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Fapucational/comments/1l9ek9/by_1890_many_variations_of_soap_were_offered_with/"/>
-			<link rel="enclosure" type="text/html" href="http://i.imgur.com/RItI7sq.jpg"/>
-			<link rel="preview" type="image/jpeg" href="nsfw"/>
-			<gnip:statistics upVotes="11" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>beautiful_sausage</name>
-			<uri>http://www.reddit.com/user/beautiful_sausage</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/beautiful_sausage"/>
-			<id>http://www.reddit.com/user/beautiful_sausage</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Colgate">"colgate"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l9u33</id>
-		<published>2013-08-29T01:49:52Z</published>
-		<updated>2013-08-29T01:49:52Z</updated>
-		<title>SeleneNyx posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l9u33/been_sick_for_days_but_gifts_from_loreal_perked/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22L%27oreal%22%20%22loreal%22&amp;limit=100&amp;after=t3_1a5xa8"/>
-			<title>Reddit - Keyword - Search (Recent) - "L'oreal" "loreal"</title>
-			<updated>2013-08-28T19-32-14Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"L'oreal" "loreal"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l9u33</id>
-			<title>Been sick for days, but gifts from L'Oreal perked me up! (info in comments)</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l9u33/been_sick_for_days_but_gifts_from_loreal_perked/"/>
-			<link rel="enclosure" type="text/html" href="http://i.imgur.com/2K18XEq.jpg"/>
-			<link rel="preview" type="image/jpeg" href="http://b.thumbs.redditmedia.com/TsOwJ_IrneE_d3NO.jpg"/>
-			<gnip:statistics upVotes="9" downVotes="2"/>
-		</activity:object>
-		<author>
-			<name>SeleneNyx</name>
-			<uri>http://www.reddit.com/user/SeleneNyx</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/SeleneNyx"/>
-			<id>http://www.reddit.com/user/SeleneNyx</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="l'oreal">"L'oreal" "loreal"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l9g7d</id>
-		<published>2013-08-28T23:02:22Z</published>
-		<updated>2013-08-28T23:02:22Z</updated>
-		<title>cucumm2 posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/amazonsdeal/comments/1l9g7d/amazon_lysol_disinfecting_wipes_upto_35_off_plus/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22lysol%22&amp;limit=100&amp;after=t3_10zvhy"/>
-			<title>Reddit - Keyword - Search (Recent) - "lysol"</title>
-			<updated>2013-08-28T19-28-30Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"lysol"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l9g7d</id>
-			<title>Amazon: Lysol Disinfecting Wipes upto 35% off plus buy 4 get 1 free</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/amazonsdeal/comments/1l9g7d/amazon_lysol_disinfecting_wipes_upto_35_off_plus/"/>
-			<link rel="enclosure" type="text/html" href="http://www.usmomdeal.com/amazon-lysol-disinfecting-wipes-upto-35-plus-buy-4-get-1-free/"/>
-			<link rel="preview" type="image/jpeg" href="http://c.thumbs.redditmedia.com/dam2sY5sFiayvl6J.jpg"/>
-			<gnip:statistics upVotes="1" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>cucumm2</name>
-			<uri>http://www.reddit.com/user/cucumm2</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/cucumm2"/>
-			<id>http://www.reddit.com/user/cucumm2</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Lysol">"lysol"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7ym9</id>
-		<published>2013-08-27T23:55:46Z</published>
-		<updated>2013-08-27T23:55:46Z</updated>
-		<title>vash3g posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shotguns/comments/1l7ym9/remington_1100_stock/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Remington%22&amp;limit=100&amp;after=t3_1fk3mo"/>
-			<title>Reddit - Keyword - Search (Recent) - "Remington"</title>
-			<updated>2013-08-28T19-25-58Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Remington"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7ym9</id>
-			<title>Remington 1100 stock</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;I am purchasing a Remington 1100 20 Guage from gunbroker at a great price. The seller called me last night to say that the stock was not adult sized and short. I&amp;amp;#39;m assuming it might be a youth stock. Where is the best place outside of Remington direct to get a nice monte carlo checkered stock to replace it?&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shotguns/comments/1l7ym9/remington_1100_stock/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="7" downVotes="1"/>
-		</activity:object>
-		<author>
-			<name>vash3g</name>
-			<uri>http://www.reddit.com/user/vash3g</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/vash3g"/>
-			<id>http://www.reddit.com/user/vash3g</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="remington">"Remington"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1la0ec</id>
-		<published>2013-08-29T03:03:30Z</published>
-		<updated>2013-08-29T03:03:30Z</updated>
-		<title>skincarerevamp posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22Aveeno%22&amp;limit=100"/>
-			<title>Reddit - Keyword - Search (Recent) - "Aveeno"</title>
-			<updated>2013-08-28T19-24-04Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"Aveeno"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1la0ec</id>
-			<title>Need help finding a new skincare routine.</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;I recently found this subreddit, and since then have discovered the many errors of my skincare ways. I am a 26(F) who has been using Proactiv for about 3-4 years now. I know that there are less expensive products I can use that would be better on my skin.  &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Skin: I have somewhat oily skin, my forehead can get shiny. The pores on my nose and chin clog easily but my cheeks are always really smooth and clear. My biggest annoyance is my nose, which has been red and tends to flake since I was a teenager. I will get the occasional breakout, almost always hormonal. As long as I use Proactiv religiously, my skin stays overall pretty decent looking.  Also I have dark circles/uneven skin tone under my eyes and have tried many products without finding one I really love.  &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Routine: I think I have overdone it with my routine in the past. I have recently stopped exfoliating as often, but I will list my previous routine.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;AM – St. Ives scrub, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv repairing treatment, Simple protecting light moisturizer SPF 15, Clean &amp;amp;amp; Clear Advantage Spot Treatment, eye cream/serum (either Philosophy Eye Believe or Genifique Yeux Light-Pearl)&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;PM – Ponds makeup removing wipes, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv clarifying night cream, Proactiv repairing treatment, Simple protecting light moisturizer SPF 15, eye cream/serum&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Also once or twice a week I may use Proactiv refining mask, Proactiv blackhead dissolving gel, or   Proactiv glycolic acid peel&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Over the past few weeks I have stopped using the St. Ives Scrub and switched to an Aveeno scrub, which I can tell is a lot more gentle on my face. I only use the scrub now a couple times a week and my Clarisonic every few days at night.  &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;So basically I’m looking for advice because this routine is quite tedious/expensive and it works decently but not great.  Thanks!&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="1" downVotes="0"/>
-		</activity:object>
-		<author>
-			<name>skincarerevamp</name>
-			<uri>http://www.reddit.com/user/skincarerevamp</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/skincarerevamp"/>
-			<id>http://www.reddit.com/user/skincarerevamp</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="aveeno">"Aveeno"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l85hv</id>
-		<published>2013-08-28T01:24:53Z</published>
-		<updated>2013-08-28T01:24:53Z</updated>
-		<title>justateburrito posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shave_Bazaar/comments/1l85hv/fs_den_clearance_fatboy_rocket_simpson/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22schick%22&amp;limit=100&amp;after=t3_13oj1g"/>
-			<title>Reddit - Keyword - Search (Recent) - "schick"</title>
-			<updated>2013-08-28T19-22-35Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"schick"
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l85hv</id>
-			<title>FS: Den Clearance, Fatboy, Rocket, Simpson, Penahaligon's, Bakelite, Soaps, Razors</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Gentlemen(and ladies), I&amp;amp;#39;m looking to clear out some items that I enjoy having around, but don&amp;amp;#39;t show enough love to. I hope you can find a place in your den for them. &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;I will only ship CONUS and accept payments though Paypal. If you see a comment below that a PM was sent about a specific item, it does not mean a sale was made until I mark it sold. I may need a couple of days to get these items shipped out, but will do my best to be speedy. Items will ship USPS to your confirmed Paypal address only. If you&amp;amp;#39;re interested in multiple items I will knock something off total price, depending on the items.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The only items I would be willing to make a trade for would be a Mint Merkur 37G(the gold slant) or a minty Aristocrat #66.  &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Razors&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Gillette Fatboy, date code G2. This is nice and shiny. I touched up the numbers with enamel paint when I first received it. This comes in the case which seems to be in pretty good shape as well. Also included is the blade case which appears to have a few blades in it, not sure how many. Price $100&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/o8CWQDS.jpg"&amp;gt;http://i.imgur.com/o8CWQDS.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/soiDjtF.jpg"&amp;gt;http://i.imgur.com/soiDjtF.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/E6lETDo.jpg"&amp;gt;http://i.imgur.com/E6lETDo.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/2Wk1VmL.jpg"&amp;gt;http://i.imgur.com/2Wk1VmL.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Gillette British Rocket HD, with the case. Both are in nice condition, the case isn&amp;amp;#39;t cracked and the razor is shiny. I purchased this on the BST in March and haven&amp;amp;#39;t used it much. Price $ 85&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/sIYtnK5.jpg"&amp;gt;http://i.imgur.com/sIYtnK5.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rtcTROt.jpg"&amp;gt;http://i.imgur.com/rtcTROt.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/cLXpwH3.jpg"&amp;gt;http://i.imgur.com/cLXpwH3.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/RvUP4ro.jpg"&amp;gt;http://i.imgur.com/RvUP4ro.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;NOS Bakelite Slant w/case. This is the one that was being sold a few months back. It was my backup and I never used it. I am not sure I want to let it go, but I will for the right price. Listing this one at $100&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/AUhHfLj.jpg"&amp;gt;http://i.imgur.com/AUhHfLj.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/eq5anFc.jpg"&amp;gt;http://i.imgur.com/eq5anFc.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Schick Injector - I believe this is a G3, it is all metal. I purchased it in it&amp;amp;#39;s current condition with the intent of cleaning it up but haven&amp;amp;#39;t gotten too it. There are no dents in it, although the head has a slight wiggle where the arrow is pointing in the picture. I&amp;amp;#39;m sure it&amp;amp;#39;s easily remedied. The plating is not good, but I do not see these often and it would make a nice piece for a re-plate. Price $25&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/5DhODtQ.jpg"&amp;gt;http://i.imgur.com/5DhODtQ.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/VZ5iayO.jpg"&amp;gt;http://i.imgur.com/VZ5iayO.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/291YUGv.jpg"&amp;gt;http://i.imgur.com/291YUGv.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Razor lot. I bought these razors with the intention of cleaning them up and using them but just haven&amp;amp;#39;t had time. The lot includes a slim adjustable(L1), Ericsson open comb, and a Christy razor. the adjustable seems to open/close and adjust. If you want to clean these up and see if they&amp;amp;#39;re in useable condition, give it a shot. Price $30&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/KgrqSfO.jpg"&amp;gt;http://i.imgur.com/KgrqSfO.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/fxipANp.jpg"&amp;gt;http://i.imgur.com/fxipANp.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Brushes&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Simspon Duke 2 in Best. You know what it is. It&amp;amp;#39;s in good condition with the sticker still attached and lettering nice and clear. Comes with the original box. Price $65&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/kuuUd6t.jpg"&amp;gt;http://i.imgur.com/kuuUd6t.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/cSRZ5vN.jpg"&amp;gt;http://i.imgur.com/cSRZ5vN.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;SOLD &amp;lt;del&amp;gt;Whipped Dog Silvertip 24mm in Black Resin. Bought this because I just wanted to try a Whipped Dog Silvertip since so many people talk about them. I used it very briefly and purchased a 30mm from WD so this just sits on the shelf. It sheds every now and then, but not terribly. Price $20&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/ir4OYUB.jpg"&amp;gt;http://i.imgur.com/ir4OYUB.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/W1nKbd0.jpg"&amp;gt;http://i.imgur.com/W1nKbd0.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Soaps&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;SOLD &amp;lt;del&amp;gt;New unused Tabac in the bowl and new/unused Razorock Cacao(discontinued) selling these as package, not splitting it up. Price $30&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pic&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/2eoxSmM.jpg"&amp;gt;http://i.imgur.com/2eoxSmM.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;D. R. Harris Arlington Soap in Mahogany bowl and Aftershave Milk. This stuff is great, I simply have too many soaps. There is at least 90-95% left of these, selling together with the original boxes. Price $50&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rwuB4wv.jpg"&amp;gt;http://i.imgur.com/rwuB4wv.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/jx6UqU4.jpg"&amp;gt;http://i.imgur.com/jx6UqU4.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/43z4GRc.jpg"&amp;gt;http://i.imgur.com/43z4GRc.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;SOLD &amp;lt;del&amp;gt;Vintage Penhaligon&amp;amp;#39;s English Fern. This is from Bullgoose. I used a vegetable peeler on the side to fit it in the oak bowl, the &amp;amp;quot;peelings&amp;amp;quot; are underneath the puck in the bowl. I used this somewhere between 3-5 times. The lettering is still visible on the top of the puck. I will also include the remainder or a Penhaligon&amp;amp;#39;s English Fern Cologne decant, there is approx 2ml left. The oak bowl was purchased separately and I will sell it with or without the bowl. Price with the bowl $60 without the bowl $55&amp;lt;/del&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/YnwFZwR.jpg"&amp;gt;http://i.imgur.com/YnwFZwR.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/VbF1RCy.jpg"&amp;gt;http://i.imgur.com/VbF1RCy.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Soap Lot. I enjoy all of these, but simply can&amp;amp;#39;t shave often enough to go through them all. Razorock Chianti Lavender, this is a soft soap, I do not believe he currently makes it anymore at least 80% left. Mama Bear&amp;amp;#39;s Indian Tobacco Flower &amp;amp;amp; Ye Olde Barbershoppe, both at least 90% left. RazoRock Mudder Focker (limited edition) at least 90% left. Valobra Menthol Croap, used 3-5 times and formed into a Boston Market side dish bowl. Also including the Proraso White Balm shown in the pictures, only used 2-3 times. Price $50&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/wrRkEjd.jpg"&amp;gt;http://i.imgur.com/wrRkEjd.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/IsrUQJM.jpg"&amp;gt;http://i.imgur.com/IsrUQJM.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Other Items&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Slim Zippo Lighter - I haven&amp;amp;#39;t used this, I purchased it in it&amp;amp;#39;s current condition. The flint produces a spark. There is a tiny hole on one side as shown in the picture although the picture makes it seem larger than it actually is. Price $10 sold with another item only.&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/RVm6RhS.jpg"&amp;gt;http://i.imgur.com/RVm6RhS.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/fbbQ7FR.jpg"&amp;gt;http://i.imgur.com/fbbQ7FR.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Custom Ballpoint Pen by Elite Razor. This is Tourmaline Quartz with platinum fittings. Very nice piece with great weight to it. I paid $85. Asking $60&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/rhcgVUa.jpg"&amp;gt;http://i.imgur.com/rhcgVUa.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/6Ca67w5.jpg"&amp;gt;http://i.imgur.com/6Ca67w5.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;ol&amp;gt;
-&amp;lt;li&amp;gt;Whipped Dog Poor Man&amp;amp;#39;s Strop Kit. I used this once before deciding straights weren&amp;amp;#39;t for me. This strop isn&amp;amp;#39;t perfect, but it&amp;amp;#39;s useable for a beginner. There is a tiny nick shown in the pictures, not sure if this would make a difference, it&amp;amp;#39;s how I received it. Price $20&amp;lt;/li&amp;gt;
-&amp;lt;/ol&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;amp;quot;The Poor Man strop kit contains a 2&amp;amp;quot; x 26&amp;amp;quot; leather strop and a balsa strop to which abrasives have been added. It also includes a hook for wall mounting, and a small packet of Neatsfoot oil for treating the leather strop. The leather strop can also be looped around a towel rod as shown in the pictures.The balsa wood has been treated on one side with 0.3 micron chromium oxide (green) and with 0.1 micron iron oxide (red) on the other side. Additional supply of these abrasives are included.&amp;amp;quot;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Pics&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/flDEJyv.jpg"&amp;gt;http://i.imgur.com/flDEJyv.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://i.imgur.com/8ft7E62.jpg"&amp;gt;http://i.imgur.com/8ft7E62.jpg&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/Shave_Bazaar/comments/1l85hv/fs_den_clearance_fatboy_rocket_simpson/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="9" downVotes="2"/>
-		</activity:object>
-		<author>
-			<name>justateburrito</name>
-			<uri>http://www.reddit.com/user/justateburrito</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/justateburrito"/>
-			<id>http://www.reddit.com/user/justateburrito</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Schick ">"schick"</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7tb6</id>
-		<published>2013-08-27T22:49:12Z</published>
-		<updated>2013-08-27T22:49:12Z</updated>
-		<title>oh_rio_rio posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l7tb6/need_help_any_opinions_about_loreal_cosmetics/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22L%27oreal%22%20%22loreal%22%20%29&amp;limit=100&amp;after=t3_107krl"/>
-			<title>Reddit - Keyword - Search (Recent) - ("L'oreal" "loreal" )</title>
-			<updated>2013-08-28T18-40-15Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("L'oreal" "loreal" )
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7tb6</id>
-			<title>Need help! Any opinions about L'Oreal Cosmetics? Event coming up...</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Hi you guys!&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Lucky me, I have been chosen as an artist for the event I&amp;amp;#39;ve linked to below. It&amp;amp;#39;s the Cosmo magazine and L&amp;amp;#39;Oreal Cosmetic Campus Tour! I&amp;amp;#39;m really excited, but a little concerned. I&amp;amp;#39;m a stylist with a medium-sized Aveda salon, and I&amp;amp;#39;m more than comfortable with professional application and session work. I am not, however, familiar AT ALL with L&amp;amp;#39;Oreal makeup. The only training I will be receiving is the consumer website and about two hours the morning of the event! Does anyone have any opinions, feedback, knowledge of these products?? I&amp;amp;#39;d love any help??&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;a href="http://www.cosmopolitan.com/hairstyles-beauty/skin-care-makeup/cosmo-campus-tour"&amp;gt;http://www.cosmopolitan.com/hairstyles-beauty/skin-care-makeup/cosmo-campus-tour&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MakeupAddiction/comments/1l7tb6/need_help_any_opinions_about_loreal_cosmetics/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="3" downVotes="1"/>
-		</activity:object>
-		<author>
-			<name>oh_rio_rio</name>
-			<uri>http://www.reddit.com/user/oh_rio_rio</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/oh_rio_rio"/>
-			<id>http://www.reddit.com/user/oh_rio_rio</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="l'oreal">("L'oreal" "loreal" )</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l7btz</id>
-		<published>2013-08-27T19:25:31Z</published>
-		<updated>2013-08-27T19:25:31Z</updated>
-		<title>NickPressnall posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EarthPorn/comments/1l7btz/cutthroat_pass_pacific_crest_trail_wa_2560x1920/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22crest%22%20%29%20-%20%28%22pacific%20crest%22%20%29&amp;limit=100&amp;after=t3_10m52h"/>
-			<title>Reddit - Keyword - Search (Recent) - ("crest" ) - ("pacific crest" )</title>
-			<updated>2013-08-28T18-03-31Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("crest" ) - ("pacific crest" )
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l7btz</id>
-			<title>Cutthroat Pass, Pacific Crest Trail, WA [2560x1920]</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EarthPorn/comments/1l7btz/cutthroat_pass_pacific_crest_trail_wa_2560x1920/"/>
-			<link rel="enclosure" type="text/html" href="http://imgur.com/ndkVEBK"/>
-			<link rel="preview" type="image/jpeg" href="http://a.thumbs.redditmedia.com/tdar1BPz9bv3JmGx.jpg"/>
-			<gnip:statistics upVotes="8" downVotes="1"/>
-		</activity:object>
-		<author>
-			<name>NickPressnall</name>
-			<uri>http://www.reddit.com/user/NickPressnall</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/NickPressnall"/>
-			<id>http://www.reddit.com/user/NickPressnall</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Crest">("crest" ) - ("pacific crest" )</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l842y</id>
-		<published>2013-08-28T01:05:58Z</published>
-		<updated>2013-08-28T01:05:58Z</updated>
-		<title>mittens2248 posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MLPLounge/comments/1l842y/colgate_beadsprite_courtesy_of_opti/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22colgate%22%20%29&amp;limit=100&amp;after=t3_j7xv0"/>
-			<title>Reddit - Keyword - Search (Recent) - ("colgate" )</title>
-			<updated>2013-08-28T18-03-27Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("colgate" )
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l842y</id>
-			<title>Colgate Beadsprite, courtesy of Opti</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/MLPLounge/comments/1l842y/colgate_beadsprite_courtesy_of_opti/"/>
-			<link rel="enclosure" type="text/html" href="http://i.imgur.com/FbGICCJ.jpg"/>
-			<gnip:statistics upVotes="45" downVotes="3"/>
-		</activity:object>
-		<author>
-			<name>mittens2248</name>
-			<uri>http://www.reddit.com/user/mittens2248</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/mittens2248"/>
-			<id>http://www.reddit.com/user/mittens2248</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Colgate">("colgate" )</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1l8qmr</id>
-		<published>2013-08-28T06:29:57Z</published>
-		<updated>2013-08-28T06:29:57Z</updated>
-		<title>dejoblue posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EQNext/comments/1l8qmr/raids_without_loot/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%28%22Max%20Factor%22%20%29&amp;limit=100&amp;after=t3_zkcy0"/>
-			<title>Reddit - Keyword - Search (Recent) - ("Max Factor" )</title>
-			<updated>2013-08-28T18-01-30Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">("Max Factor" )
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1l8qmr</id>
-			<title>Raids Without Loot</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;I was thinking about not having levels and about what can be a motivating factor. As usual I resorted to my end game conclusion. Once you get to max level there is no more leveling, no more XP, what drives players? Character progression of some sort, usually in the form of a gear treadmill.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;What can we do that is different than the traditional loot drop from random raid boss X?&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;I thought back to my Nintendo upbringing to Mario and Zelda and Final Fantasy.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Saving the princess, making the triforce, defeating all the bosses and saving the world.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The princess can be kidnapped over and over, many magical items can be forged and the world will need saving many times over.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;This is what could be the driving force for EQN. Instead of loot drops perhaps a boss is guarding a magical cavern filled with rare ore to be mined.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;Maybe the boss has captured an Orc princess and when we save her we learn the Orc language which helps us discover some hidden treasure because we can read the orcish map we found at the beginning of the quest to save the princess.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;The ubiquitous forging of a magical blade could be the reason to defeat a raid boss, plunge your already forged weapon into the dragon&amp;amp;#39;s steaming dead body and seal in it&amp;amp;#39;s magical powers to infuse your weapon with might and power!&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;What other non loot scenarios can you think of guys?!&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/EQNext/comments/1l8qmr/raids_without_loot/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="13" downVotes="5"/>
-		</activity:object>
-		<author>
-			<name>dejoblue</name>
-			<uri>http://www.reddit.com/user/dejoblue</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/dejoblue"/>
-			<id>http://www.reddit.com/user/dejoblue</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="max_factor">("Max Factor" )</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1brddb</id>
-		<published>2013-04-05T22:29:01Z</published>
-		<updated>2013-04-05T22:29:01Z</updated>
-		<title>lemon_zest posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/realasians/comments/1brddb/i_guess_ill_go_outside_after_this_sunshine_ftw_d/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>
-			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>
-			<updated>2013-08-28T17-54-04Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1brddb</id>
-			<title>I guess I'll go outside after this; sunshine ftw :D</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/realasians/comments/1brddb/i_guess_ill_go_outside_after_this_sunshine_ftw_d/"/>
-			<link rel="enclosure" type="text/html" href="http://imgur.com/oyhmkzU"/>
-			<link rel="preview" type="image/jpeg" href="http://b.thumbs.redditmedia.com/TykUrjG05wYU0wiy.jpg"/>
-			<gnip:statistics upVotes="71" downVotes="68"/>
-		</activity:object>
-		<author>
-			<name>lemon_zest</name>
-			<uri>http://www.reddit.com/user/lemon_zest</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/lemon_zest"/>
-			<id>http://www.reddit.com/user/lemon_zest</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>i5fxh</id>
-		<published>2011-06-21T19:06:20Z</published>
-		<updated>2011-06-21T19:06:20Z</updated>
-		<title>_Laurana posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/trees/comments/i5fxh/chronic_cheesecake_recipe/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>
-			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>
-			<updated>2013-08-28T17-54-04Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>i5fxh</id>
-			<title>Chronic Cheesecake Recipe...</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Crust&amp;lt;/strong&amp;gt;
-3 cups graham cracker crumbs,
-2 tablespoons sugar,
-3/4 cup cannabutter warmed to liquid.
-Press into the bottom of a large springform pan and set aside. I used a 10 inch pan. &amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Filling&amp;lt;/strong&amp;gt;
-2 lb. cream cheese (softened),
-1/2 cup of cannabutter warmed to liquid,
-1 lb. sour cream,
-1/2 cup whole milk,
-6 eggs (at room temperature),
-2 cups sugar,
-1 cup flour,
-pinch of salt,
-2 tablespoons lemon zest,
-2 tablespoons vanilla extract.&amp;lt;/p&amp;gt;
-
-&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Directions&amp;lt;/strong&amp;gt;
-This recipe takes a lot of mixing to completely mix ingredients ans ensure a smooth texture. 
-Place cream cheese and sour cream in a large bowl. Mix for 30 seconds. Add whole milk and cannabutter, mix for another 30 seconds. Add sugar, flour, salt, vanilla and lemon zest. Mix until smooth, scraping the sides of the bowl with a spatula occasionally. Then add eggs one at a time, mixing 30 seconds between each egg. Pour mixture into springform pan with crust. Now to keep the top of your cake from cracking, you can place the springform pan into a baking pan that has about 1 to 1 1/2 inches of water in it. I prefer using a really wet towel and wrapping it around the springform pan. Make sure to place it on a large cookie sheet. Bake @ 350f for 1 1/2 hours or until a wooden toothpick inserted into the center comes out clean. When you remove cake from oven, make sure to let it cool for about 1 hour before placing it in the fridge to chill. I would hill it for at least 3 hours before serving. Make sure to run a knife along the edge of the springform pan before opening it! Hope every
 one enjoys. I use super potent cannabutter. It ensures my cake always turns out the best! Hope all you enjoy!&amp;lt;/p&amp;gt;
-
-&amp;lt;ul&amp;gt;
-&amp;lt;li&amp;gt;I had lots of request for this recipe. I hope everyone gets it that wanted it. I posted the recipe in the comment thread of my yesterdays post as well as in a new post. Ents Enjoy! 
-&amp;lt;a href="http://www.reddit.com/r/trees/comments/i4pqp/i_made_a_chronic_cheesecake_10/"&amp;gt;Chronic Cheesecake&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
-&amp;lt;/ul&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/trees/comments/i5fxh/chronic_cheesecake_recipe/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="88" downVotes="10"/>
-		</activity:object>
-		<author>
-			<name>_Laurana</name>
-			<uri>http://www.reddit.com/user/_Laurana</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/_Laurana"/>
-			<id>http://www.reddit.com/user/_Laurana</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>y8nml</id>
-		<published>2012-08-15T03:37:25Z</published>
-		<updated>2012-08-15T03:37:25Z</updated>
-		<title>dinkleberg31 posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/todayilearned/comments/y8nml/til_that_the_average_lemon_has_2_oz_of_lemon/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>
-			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>
-			<updated>2013-08-28T17-54-04Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>y8nml</id>
-			<title>TIL that the average lemon has 2 oz of lemon juice and one ounce of zest.</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/todayilearned/comments/y8nml/til_that_the_average_lemon_has_2_oz_of_lemon/"/>
-			<link rel="enclosure" type="text/html" href="http://www.howmuchisin.com/produce_converters/how-much-juice-in-a-lemon"/>
-			<link rel="preview" type="image/jpeg" href="http://c.thumbs.redditmedia.com/HVK6XcTIOu3JIXD2.jpg"/>
-			<gnip:statistics upVotes="39" downVotes="15"/>
-		</activity:object>
-		<author>
-			<name>dinkleberg31</name>
-			<uri>http://www.reddit.com/user/dinkleberg31</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/dinkleberg31"/>
-			<id>http://www.reddit.com/user/dinkleberg31</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1ax1ok</id>
-		<published>2013-03-24T17:07:41Z</published>
-		<updated>2013-03-24T17:07:41Z</updated>
-		<title>NinjaNerd posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/wicked_edge/comments/1ax1ok/anyone_ever_try_lathering_up_a_soap_not/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>
-			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>
-			<updated>2013-08-28T17-54-04Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1ax1ok</id>
-			<title>Anyone ever try lathering up a soap not specifically made for shaving?</title>
-			<content type="text/html">&amp;lt;!-- SC_OFF --&amp;gt;&amp;lt;div class="md"&amp;gt;&amp;lt;p&amp;gt;Anyone ever try this?  Curious to know whether you&amp;amp;#39;d be able to shave with any &amp;amp;#39;ol bar of soap, like one you&amp;amp;#39;d use in the shower for example (irish spring/zest/lever 2000).&amp;lt;/p&amp;gt;
-&amp;lt;/div&amp;gt;&amp;lt;!-- SC_ON --&amp;gt;</content>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/wicked_edge/comments/1ax1ok/anyone_ever_try_lathering_up_a_soap_not/"/>
-			<link rel="preview" type="image/jpeg" href="self"/>
-			<gnip:statistics upVotes="7" downVotes="2"/>
-		</activity:object>
-		<author>
-			<name>NinjaNerd</name>
-			<uri>http://www.reddit.com/user/NinjaNerd</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alternate" type="text/html" length="0" href="http://www.reddit.com/user/NinjaNerd"/>
-			<id>http://www.reddit.com/user/NinjaNerd</id>
-		</activity:actor>
-		<gnip:matching_rules>
-			<gnip:matching_rule rel="source" tag="Zest">"zest"  ""  --""</gnip:matching_rule>
-		</gnip:matching_rules>
-	</entry>
-	<entry xmlns="http://www.w3.org/2005/Atom" xmlns:activity="http://activitystrea.ms/spec/1.0/"
-		xmlns:service="http://activitystrea.ms/service-provider" xmlns:thr="http://purl.org/syndication/thread/1.0"
-		xmlns:gnip="http://www.gnip.com/schemas/2010">
-		<id>1c8oyd</id>
-		<published>2013-04-13T01:04:28Z</published>
-		<updated>2013-04-13T01:04:28Z</updated>
-		<title>substance_d posted an article Reddit</title>
-		<category term="ArticlePosted" label="Article Posted"/>
-		<link rel="alternate" type="text/html" href="http://www.reddit.com/r/FoodPorn/comments/1c8oyd/potato_and_yam_fries_with_parsley_and_lemon_zest/"/>
-		<source>
-			<link rel="self" type="application/json" href="http://com.facebook.api.reddit.com/search.json?q=%22zest%22%20%20%22%22%20%20--%22%22&amp;limit=100&amp;after=t3_1brddb"/>
-			<title>Reddit - Keyword - Search (Recent) - "zest"  ""  --""</title>
-			<updated>2013-08-28T17-54-04Z</updated>
-			<gnip:rule xmlns:gnip="http://www.gnip.com/schemas/2010">"zest"  ""  --""
-            </gnip:rule>
-		</source>
-		<service:provider>
-			<name>Reddit</name>
-			<uri>www.reddit.com</uri>
-		</service:provider>
-		<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
-		<activity:object>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/article</activity:object-type>
-			<id>1c8oyd</id>
-			<title>Potato and yam fries, with parsley and lemon zest. [612X612]</title>
-			<link rel="alternate" type="text/html" href="http://www.reddit.com/r/FoodPorn/comments/1c8oyd/potato_and_yam_fries_with_parsley_and_lemon_zest/"/>
-			<link rel="enclosure" type="text/html" href="http://i.imgur.com/t90QUxO.jpg"/>
-			<link rel="preview" type="image/jpeg" href="http://b.thumbs.redditmedia.com/ejqTTzQzftksFL-g.jpg"/>
-			<gnip:statistics upVotes="38" downVotes="4"/>
-		</activity:object>
-		<author>
-			<name>substance_d</name>
-			<uri>http://www.reddit.com/user/substance_d</uri>
-		</author>
-		<activity:actor>
-			<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
-			<link rel="alt

<TRUNCATED>

[61/71] [abbrv] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt b/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt
new file mode 100644
index 0000000..858756a
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/test/resources/datasift_jsons.txt
@@ -0,0 +1,101 @@
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361363177973366787","filter_level":"medium","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":7761,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5062,"description":"I hate everything. Especially you.","friends_count":385,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":241}},"salience":{"content":{"sentiment":5}},"klout":{"score":42},"interaction":{"schema":{"version":3},"content":"Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f7
 49b40d9ab00e0742908a9ff4d74","author":{"id":472480397,"username":"InsulinLover","name":"Alexander","link":"http://twitter.com/InsulinLover","language":"en","avatar":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/InsulinLover/statuses/361363177973366787","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361366536625201152","retweeted":{"id":"361363177973366787","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Sun, 28 Jul 2013 05:51:10 +0000","user":{"geo_enabled":true,"statuses_count":7765,"lang":"en","utc_offset":-14400,"id":472480397,"time_zone":"Eastern Time (US & Canada)","favourites_count":5064,"description":"I hate everything. Especially you.","friends_count":386,"name":"Alexander","created_at":"Tue, 24 Jan 2012 00:22:21 +0000","screen_name":"InsulinLover","id_str":"472480397","profile_image_url":"http://a0.twimg.com/profile_images/3078961290/b86c753148bdaf13fcf7f0ea3ea2ff57_normal.jpeg","followers_count":242}},"retweet":{"id":"361366536625201152","text":"Arm and Hammer sounds like a good porno. Not baking powder","source":"<a href=\"http://twitter.com/#!/download/ipad\" rel=\"nofollow\">Twitter for iPad<\/a>","count":1,"created_at":"Sun, 28 Jul 2013 0
 6:04:30 +0000","user":{"location":"Henderson, NV","statuses_count":4851,"lang":"en","url":"https://www.facebook.com/DonMfPatchUFemaleDogs","utc_offset":-25200,"id":537777703,"time_zone":"Pacific Time (US & Canada)","favourites_count":1235,"description":"Otherwise known as @Slender_Sir","friends_count":240,"name":"Iram Gonzalez","created_at":"Tue, 27 Mar 2012 02:35:56 +0000","screen_name":"gonzalez_iram","id_str":"537777703","profile_image_url":"http://a0.twimg.com/profile_images/3325430053/65b2d200115a97ff3f9061e9cc672136_normal.jpeg","followers_count":232},"lang":"en"}},"salience":{"content":{"sentiment":5}},"klout":{"score":40},"interaction":{"schema":{"version":3},"content":"RT @InsulinLover: Arm and Hammer sounds like a good porno. Not baking powder","id":"1e2f74b90e3eab00e07452795b51705e","author":{"id":537777703,"username":"gonzalez_iram","name":"Iram Gonzalez","link":"http://twitter.com/gonzalez_iram","language":"en","avatar":"http://a0.twimg.com/profile_images/3325430053/65b
 2d200115a97ff3f9061e9cc672136_normal.jpeg"},"source":"Twitter for iPad","link":"http://twitter.com/gonzalez_iram/statuses/361366536625201152","created_at":"Sun, 28 Jul 2013 06:04:30 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Weather","score":0.65636122226715}]}},"facebook":{"id":"557546084284515_565003810205409","message":"To get arm and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"application":"Pages Manager for Android","source":"Pages Manager for Android (121876164619130)","created_at":"Fri, 26 Jul 2013 19:39:11 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f62b0b691a980e066608cf545f2d6","content":"To get arm 
 and hammer laundry detergent for 1.29 go to Walgreens and get a rain check for this product. One you have the rain check go to www.thecouponclippers.com and order the arm and hammer detergent that's $1 off. The coupons are around 12 cent each. If you have any questions please post","author":{"id":"557546084284515","name":"Coupon Savings STL","link":"http://www.facebook.com/profile.php?id=557546084284515","avatar":"https://graph.facebook.com/557546084284515/picture"},"source":"Pages Manager for Android (121876164619130)","link":"http://www.facebook.com/557546084284515_565003810205409","subtype":"status","created_at":"Fri, 26 Jul 2013 19:39:25 +0000","type":"facebook"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"beyatch":"yo","tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":6}},"facebook":{"id":"741220477_10153006009870478","message":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","created_at":"Thu, 25 Jul 2013 16:51:28 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f54a72fb6a800e06682e7cdbf4b5c","content":"Arm and Hammer-sensitive laundry detergent is really my friend right now...#shehastolearnonewayoranother","author":{"id":"741220477","name":"Nicole Reed","link":"http://www.facebook.com/profile.php?id=741220477","avatar":"https://graph.facebook.com/741220477/picture"},"source":"web","subtype":"status","created_at":"Thu, 25 Jul 2013 16:51:56 +0000","type":"f
 acebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"facebook":{"id":"165282606905632_387817134652177","message":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.com/165282606905632/picture"},"source":"web","created_at":"Sat, 27 Jul 2013 02:20:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6630a53dae80e06600495e73832a","content":"Still Time To Get On This Deal>>>  Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon!>>>>>>>>>>>>http://crazyforcouponsandfreebies.com/blog/?p=60571","author":{"id":"165282606905632","name":"Crazy for coupons & freebies","link":"http://www.facebook.com/profile.php?id=165282606905632","avatar":"https://graph.facebook.c
 om/165282606905632/picture"},"source":"web","link":"http://www.facebook.com/165282606905632_387817134652177","subtype":"status","created_at":"Sat, 27 Jul 2013 02:20:17 +0000","type":"facebook"},"links":{"title":["Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog"],"normalized_url":["http://crazyforcouponsandfreebies.com/blog?p=60571"],"created_at":["Sat, 27 Jul 2013 02:20:27 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Hot Deal At County Market On Arm & Hammer Laundry Soap w/Coupon! | The Daily Blog","description":" You Can Get Arm & Hammer On Sale At County Market For $1.99 Each Go Here And Print Your $1/3 OP-$4.96 WYB 3 + Tax GO HERE HOT DEAL!~Cheryl","image":"http://crazyforcouponsandfreebies.com/blog/wp-content/uploads/2013/07/2013-07-24_1918.png","site_name":"The Daily Blog","type":"article","url":"http://crazyforcouponsandfreebies.com/blog/?p=60571"}],"content_type":["text/html"],"lang":["en-us"]},"
 url":["http://crazyforcouponsandfreebies.com/blog/?p=60571"]},"language":{"tag":"mt","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["Tide","ArmAndHammer"]}},"twitter":{"id":"360731330335608833","filter_level":"medium","text":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","source":"<a href=\"http://favstar.fm\" rel=\"nofollow\">Favstar.FM<\/a>","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","lang":"en","user":{"location":"Halifax, Canada","statuses_count":26676,"lang":"en","url":"http://favstar.fm/users/CindyMeakin/recent","id":267645953,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":156111,"description":"I wear sun glasses at night so people don't talk to me.","friends_count":2162,"name":"~Cindy~","created_at":"Thu, 17 Mar 2011 08:57:31 +0000","screen_name":"CindyMeakin","id_str":"267645953","profile_image_url":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg
 ","followers_count":7604,"listed_count":407}},"salience":{"content":{"sentiment":0}},"klout":{"score":61},"interaction":{"schema":{"version":3},"content":"You'd have to use your ARM &amp; HAMMER to get me to drink laundry detergent. What do I  GAIN from it? The TIDE comes in &amp; SUNLIGHT disappears?","id":"1e2f5eaf4a2da280e074c2f2b84aa4f8","author":{"id":267645953,"username":"CindyMeakin","name":"~Cindy~","link":"http://twitter.com/CindyMeakin","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000068549393/1045d699f983568a884240bf6e07ca8a_normal.jpeg"},"source":"Favstar.FM","link":"http://twitter.com/CindyMeakin/statuses/360731330335608833","created_at":"Fri, 26 Jul 2013 12:00:25 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361614949908361217","filter_level":"medium","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","mention_ids":[106891542],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","in_reply_to_user_id":"106891542","lang":"en","mentions":["THEmrReynolds"],"user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"Memoi
 rsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":423,"listed_count":10}},"salience":{"content":{"sentiment":0}},"klout":{"score":57},"interaction":{"schema":{"version":3},"content":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d576eeeaa80e074ae7154d45ee6","author":{"id":49340813,"username":"MemoirsofaGAYsh","name":"Dominique Delacroix","link":"http://twitter.com/MemoirsofaGAYsh","language":"en","avatar":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg"},"source":"Twitter for iPhone","mention_ids":[106891542],"link":"http://twitter.com/MemoirsofaGAYsh/statuses/361614949908361217","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"youtube":{"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponing"},"title":"Cvs red box coupons week of 07/07","duration":"58","category":"entertainment","videolink":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 08 Jul 2013 02:13:58 +0000","contenttype":"html","type":"video"},"interaction":{"schema":{"version":3},"id":"1e2e7740c1d3a700e061c997741cc686","content":"1 irish spring or softsoap body wash 15-18oz. $.50 cvs brand antacid $1/2 arm and hammer laundry detergent Blog:averagejoecouponing.blogspot.com.","author":{"name":"averagejoecouponing","link":"http://youtube.com/averagejoecouponin
 g"},"title":"Cvs red box coupons week of 07/07","link":"http://www.youtube.com/watch?v=zRPZqYpAvnc","created_at":"Mon, 29 Jul 2013 01:22:47 +0000","type":"youtube","contenttype":"html"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["StainRemoval"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-5}},"facebook":{"id":"602766199_10151557023101200","message":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"application":"Facebook for iPhone","source":"Facebook for iPhone (6628568379)","created_at":"Tue, 30 Jul 2013 00:06:43 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f8abea632ab80e066b5fddc080fa8","content":"Dust, dirt, chip crumbs, and God only knows what else are my mortal enemies as I wade in to this life or death battle armed only with this vacuum and arm and hammer odor eliminating powder. To battle!!!!","author":{"id":"602766
 199","name":"Chris Boothroy","link":"http://www.facebook.com/profile.php?id=602766199","avatar":"https://graph.facebook.com/602766199/picture"},"source":"Facebook for iPhone (6628568379)","subtype":"status","created_at":"Tue, 30 Jul 2013 00:06:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361950303878254592","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Mon, 29 Jul 2013 20:44:11 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Alberta,Canada ","statuses_count":208685,"lang":"en","url":"http://rocketgirl00.blogspot.com","id":23870867,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":105,"description":"I'm married,like to travel,think that friends and family are the most important thing in life.","friends_count":2842,"name":"Doris ","created_at":"Thu, 12 Mar 2009 01:36:56 +0000","screen_name":"dewinner","id_str":"23870867"
 ,"profile_image_url":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg","followers_count":2591,"listed_count":81}},"salience":{"content":{"sentiment":0}},"klout":{"score":47},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/Yk2d3zqihm via @MyBitsandBleeps","id":"1e2f88f9f3b1af80e074bd3a2171a578","author":{"id":23870867,"username":"dewinner","name":"Doris ","link":"http://twitter.com/dewinner","language":"en","avatar":"http://a0.twimg.com/profile_images/3066398820/1ac0eedaa1099ea172540dff0a4524de_normal.jpeg"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/dewinner/statuses/361950303878254592","created_at":"Mon, 29 Jul 2013 20:44:11 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["h
 ttp://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Sun, 28 Jul 2013 22:08:38 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry
 -detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0},"title":{"sentiment":0}},"interaction":{"schema":{"version":3},"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","author":{},"title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","created_at":"Tue, 30 Jul 2013 09:44:17 +0000","type":"board","contenttype":"html"},"language":{"tag":"en","confidence":95},"board":{"id":"1e2f455369a1a000e0619912c7bf4656","content":"I like the arm and hammer scent free powder.<br /> Not worried about UV as I,m either in a blind, blind around stand or high up in a climber.<br /> Scent and movement are the killers","title":"Scent free detergent on sale","link":"http://forum.gon.com/showthread.php?t=762688#post7957680","thread":"
 http://forum.gon.com/showthread.php?t=762688","domain":"www.gon.com","created_at":"Wed, 24 Jul 2013 11:36:00 +0000","contenttype":"html","type":"post"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"363008881179369473","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Thu, 01 Aug 2013 18:50:36 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1262903550,"friends_count":1,"name":"serenecerulean","created_at":"Tue, 12 Mar 2013 21:31:35 +0000","screen_name":"serenecerulean","id_str":"1262903550","statuses_count":6,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No problem! ARM &amp; H
 AMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/3DvTv6UOnp","id":"1e2fadb4069ea600e074e3962995fde4","author":{"id":1262903550,"username":"serenecerulean","name":"serenecerulean","link":"http://twitter.com/serenecerulean","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_6_normal.png"},"source":"Tweet Button","link":"http://twitter.com/serenecerulean/statuses/363008881179369473","created_at":"Thu, 01 Aug 2013 18:50:36 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Thu, 01 Aug 2013 12:23:26 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra 
 Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-2,"topics":[{"hits":0,"name":"Beverages","score":1.0265922546387}],"entities":[{"sentiment":0,"confident":1,"name":"Danny","evidence":1,"about":1,"label":"Person","themes":["washing soda"],"type":"Person"}]}},"facebook":{"id":"506582967_10151624053632968","message":"Hate when you are getting ready to do something productive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","created_at":"Sat, 03 Aug 2013 17:30:40 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fc626a99ea000e0664766345bbd9e","content":"Hate when you are getting ready to do something pro
 ductive and realize you are missing something....need arm and hammer washing soda before I can make the detergent and Danny is napping.guess I'll have the hubs get it on his way home...","author":{"id":"506582967","name":"Bethany Bennett","link":"http://www.facebook.com/profile.php?id=506582967","avatar":"https://graph.facebook.com/506582967/picture"},"source":"web","subtype":"status","created_at":"Sat, 03 Aug 2013 17:30:50 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362021838882209792","filter_level":"medium","text":"Luv da smell of gain and arm&amp;hammer washing powder","source":"<a href=\"https://path.com/\" rel=\"nofollow\">Path<\/a>","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","lang":"en","user":{"statuses_count":6590,"lang":"en","utc_offset":-10800,"id":762376266,"time_zone":"Atlantic Time (Canada)","favourites_count":133,"description":"#teamproudmommy #hardworking #independent #teamjrrockojc: Thru it all I still maintain and smile, with God on my side I don't care who's against me","friends_count":280,"name":"toya","created_at":"Thu, 16 Aug 2012 21:36:25 +0000","screen_name":"1ofakind_87","id_str":"762376266","profile_image_url":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg","followers_count":137}},"salience":{"content":{"sentiment":0}},"klout":{"score":30},"interaction":{"schema":{"version":3},"content":
 "Luv da smell of gain and arm&amp;hammer washing powder","id":"1e2f8b755662af80e0745b9f6321114e","author":{"id":762376266,"username":"1ofakind_87","name":"toya","link":"http://twitter.com/1ofakind_87","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000133672589/4c46242befe6daf5f05e1136df5cfe19_normal.jpeg"},"source":"Path","link":"http://twitter.com/1ofakind_87/statuses/362021838882209792","created_at":"Tue, 30 Jul 2013 01:28:27 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362230621323526145","retweeted":{"id":"362229784211750912","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"retweet":{"id":"362230621323526145","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter f
 or iPhone<\/a>","count":3,"mention_ids":[279691748],"created_at":"Tue, 30 Jul 2013 15:18:04 +0000","user":{"geo_enabled":true,"statuses_count":40607,"lang":"en","utc_offset":-18000,"id":442045360,"time_zone":"Central Time (US & Canada)","favourites_count":13074,"friends_count":190,"name":"sM","created_at":"Tue, 20 Dec 2011 17:58:45 +0000","screen_name":"SeanMeier_","id_str":"442045360","profile_image_url":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg","followers_count":1034,"listed_count":1},"mentions":["TheVikkiMinaj"],"lang":"en"}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Food","score":0.50305610895157}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"RT @legitCarll: We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92b3acd9ae00e0745976b013340a","author":{"id":442045360,"username":"SeanMei
 er_","name":"sM","link":"http://twitter.com/SeanMeier_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000156618013/8008e98a1d4634a27e65bf3517f2bf3f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/SeanMeier_/statuses/362230621323526145","created_at":"Tue, 30 Jul 2013 15:18:04 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362037402786729986","filter_level":"medium","text":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","lang":"en","user":{"geo_enabled":true,"location":"North Texas","statuses_count":24770,"lang":"en","url":"http://d1ligence.tumblr.com","id":224686933,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":638,"description":"Jussa yung nicca on the virtue of internet prosperity. Artist; ? of Elev?ted collective.","friends_count":670,"name":"Paul, The Apostle ","created_at":"Thu, 09 Dec 2010 16:26:43 +0000","screen_name":"MasterChefP","id_str":"224686933","profile_image_url":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg","followers_count":939,"listed_co
 unt":6}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Whippin that DIY wheat paste. So this is how the Arm &amp; Hammer powder slangers feel. I'm Pusha P lykabit","id":"1e2f8bff8bb4a280e074878bb70afd4a","author":{"id":224686933,"username":"MasterChefP","name":"Paul, The Apostle ","link":"http://twitter.com/MasterChefP","language":"en","avatar":"http://a0.twimg.com/profile_images/3674596098/7a4252c6a43db5cb373102b73b90e21d_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/MasterChefP/statuses/362037402786729986","created_at":"Tue, 30 Jul 2013 02:30:17 +0000","type":"twitter"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Advertising","ConcentratedFormulas","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4,"topics":[{"hits":0,"name":"Science","score":1.2123092412949},{"hits":0,"name":"Technology","score":0.59644603729248},{"hits":0,"name":"Hardware","score":0.4546263217926}],"entities":[{"sentiment":0,"confident":1,"name":"Procter & gamble","evidence":1,"about":1,"label":"Company","themes":["liquid laundry detergent","commercial products","ea dawn","liquid offers","grease-cutting ingredients","improved formula","longer-lasting suds","sink changeover"],"type":"Company"},{"sentiment":0,"confident":1,"name":"\"Liquid Detergents (Surfactant Science)\"","evidence":1,"about":0,"label":"Quote","themes":["liquid detergents","helpful search engine","different books","actual prices","fast search"],"type":"Quote"}]}},"facebook":{"id":"1406941246186240_1407041779509520","message":"Liquid Detergents (Surfactant Science)\n\n
 If you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry detergent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant sci
 ence);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"application":"Filipspacename","source":"Filipspacename (104453219725181)","created_at":"Tue, 06 Aug 2013 22:40:46 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2fee93be16ab00e066dedfa2d1c568","content":"Liquid Detergents (Surfactant Science)\n\nIf you want to find any book including \"Liquid Detergents (Surfactant Science)\" or if you want to read reviews on different books or to see the actual prices on books you may visit this website - AZBookFinder.com\n\nAZBookFinder.com is a helpful search engine and I want to share the way of fast search of books.\nBest regards.\n\nSome other books that may be interesting:\nArm & hammer 84555 liquid laundry deterg
 ent plus oxiclean he 35-loads (case of 6);\nProcter & gamble commercial products - dishwashing liquid, concentrated, 38 oz - sold as 1 ea - dawn dishwashing liquid offers more grease-cutting ingredients in this improved formula. longer-lasting suds reduce sink changeover. high-surfactant formula seeks out greasy soil, cuts through it, surrounds the removed soil and lifts it out of the way.;\nFramed print of soap bubbles from science photo library;\nPhoto jigsaw puzzle of soap bubbles from science photo library;\nHandbook of detergents, part f: production: 142 (surfactant science);\nChemical product design: towards a perspective through case studies, volume 23 (computer aided chemical engineering).","author":{"id":"1406941246186240","name":"Bookformats","link":"http://www.facebook.com/profile.php?id=1406941246186240","avatar":"https://graph.facebook.com/1406941246186240/picture"},"source":"Filipspacename (104453219725181)","subtype":"status","created_at":"Tue, 06 Aug 2013 22:41:01 +0
 000","type":"facebook"},"language":{"tag":"en","confidence":99}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364861019413164032","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 21:30:20 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"location":"Ontario, Canada","statuses_count":19585,"lang":"en","url":"http://yeewittlethings.com","id":438700992,"utc_offset":-18000,"time_zone":"Central Time (US & Canada)","favourites_count":132,"description":"#CDN Mom of 2 wonderful kids. Wife to an amazing hubby. #PR friendly #Blogger. #Reviews, #Giveaways, Random Musings & Every day living! #KinderMom","friends_count":7875,"name":"Yee Wittle Things","created_at":"Fri, 16 Dec 2011 22:33:08 +0000","screen_name":"yeewittlethings","id_str":"438700992","profile_image_url":"http://a0
 .twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg","followers_count":8712,"listed_count":58}},"salience":{"content":{"sentiment":0}},"klout":{"score":63},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/pvJC5hX28b via @Gingermommy","id":"1e2fedf64fcfae00e074af57bfa66a5c","author":{"id":438700992,"username":"yeewittlethings","name":"Yee Wittle Things","link":"http://twitter.com/yeewittlethings","language":"en","avatar":"http://a0.twimg.com/profile_images/2618536105/862tu9w2orhn68rc82lk_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/yeewittlethings/statuses/364861019413164032","created_at":"Tue, 06 Aug 2013 21:30:20 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-se
 nsitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364845410017230848","filter_level":"medium","text":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","mention_ids":[326314186],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"ThatGuy_Jesse10","in_reply_to_status_id":"364845085571031041","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","in_reply_to_user_id":"326314186","lang":"en","mentions":["ThatGuy_Jesse10"],"user":{"geo_enabled":true,"location":"Phoeniquera","statuses_count":41253,"lang":"en","utc_offset":-25200,"id":403930347,"time_zone":"Arizona","favourites_count":4362,"description":"You're gonna like THIS guy he's alright, He's a Good Fella.. 93 til.","friends_count":330,"name":"Simba","created_at":"Thu, 03 Nov 2011 06:10:20 +0000","screen_name":"JuanGTho","id_str":"403930347","profile_image_url":"http://a0.twimg.com/profile_images/37880000018266
 5838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg","followers_count":359}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Hannah Montana","evidence":1,"about":1,"label":"Person","type":"Person"}]}},"klout":{"score":38},"interaction":{"schema":{"version":3},"content":"Hannah Montana without the arm &amp; hammer orrrrrr? RT @ThatGuy_Jesse10: Got that powder. Hmu","id":"1e2fed6ba80dad00e074579fbdc03880","author":{"id":403930347,"username":"JuanGTho","name":"Simba","link":"http://twitter.com/JuanGTho","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000182665838/026c863eec52a3af8e3e40af8ab5c56f_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[326314186],"link":"http://twitter.com/JuanGTho/statuses/364845410017230848","created_at":"Tue, 06 Aug 2013 20:28:18 +0000","type":"twitter","mentions":["ThatGuy_Jesse10"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Convenience","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":-6,"topics":[{"hits":0,"name":"Beverages","score":1.056524515152}],"entities":[{"sentiment":-12,"confident":1,"name":"Target","evidence":1,"about":1,"label":"Company","themes":["brand laundry soap","cleaning team","washing soda"],"type":"Company"}]}},"facebook":{"id":"100005166043472_180980985417435","message":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/pro
 file.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Wed, 07 Aug 2013 02:32:06 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2ff098d015a700e066f80d5c4c0dd0","content":"A rogue ink pen exploded in my clothes dryer this morning :(  ruining two sets of my work clothes.....  I cleaned the inkout of the dryer drum with rubbing alcohol, and am trying to salvage my clothes.  Rigth now the greatest cleaning team ever assembled is at work in the washer.....  Target brand laundry soap, Fabuloso surface cleaner, half a cup of borax, and whatever was left in the box of Arm and Hammer washing soda on a small load cycle.....  Will keep posted.....","author":{"id":"100005166043472","name":"Zach Watts","link":"http://www.facebook.com/profile.php?id=100005166043472","avatar":"https://graph.facebook.com/100005166043472/picture"},"source":"Mobile (2915120374)","link":"http
 ://www.facebook.com/100005166043472_180980985417435","subtype":"status","created_at":"Wed, 07 Aug 2013 02:32:23 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":2}},"facebook":{"id":"753060211_10153029318745212","message":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"application":"Facebook for Android","source":"Facebook for Android (350685531728)","created_at":"Thu, 25 Jul 2013 18:08:27 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f555341edaf80e066003d5ea01da0","content":"The best carpet cleaner is arm and hammer plus oxi clean laundry soap plus a scoop of powder oxi clean hot water and elbow grease. My  carpet looks almost brand new. =)","author":{"id":"753060211","name":"Sarah McCormack","link":"http://www.facebook.com/
 profile.php?id=753060211","avatar":"https://graph.facebook.com/753060211/picture"},"source":"Facebook for Android (350685531728)","subtype":"status","created_at":"Thu, 25 Jul 2013 18:08:51 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability","ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"361171385718018048","filter_level":"medium","text":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","source":"<a href=\"http://satehut.com\" rel=\"nofollow\">Satehut<\/a>","domains":["dish-washers-dryers.com"],"created_at":"Sat, 27 Jul 2013 17:09:03 +0000","links":["http://dish-washers-dryers.com/?p=3858"],"lang":"en","media":[{"id":361171385722212352,"sizes":{"small":{"w":104,"h":140,"resize":"fit"},"thumb":{"w":104,"h":140,"resize":"crop"},"large":{"w":104,"h":140,"resize":"fit"},"medium":{"w":104,"h":140,"resize":"fit"}},"media_url_https":"https://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","media_url":"http://pbs.twimg.com/media/BQMjdjUCEAAMlDL.jpg","expanded_url":"http://twitter.com/Sate_Hut/status/361171385718018048/photo/1","id_str":"361171385722212352","display_url":"pic.twitter.com/7XvuTjDd0v","type":"photo","url
 ":"http://t.co/7XvuTjDd0v"}],"user":{"location":"Miami, FL","statuses_count":20248,"lang":"en","url":"http://SateHut.com","utc_offset":-14400,"id":342319003,"time_zone":"Eastern Time (US & Canada)","description":"For good sate (or Sateh) you can be anywhere!  We give you the recipes and ingredients to make it at home!","name":"Sate Hut","created_at":"Mon, 25 Jul 2011 20:37:12 +0000","screen_name":"Sate_Hut","id_str":"342319003","profile_image_url":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg","followers_count":15}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"8/31/13","evidence":1,"about":1,"label":"Date","type":"Pattern"}]}},"klout":{"score":13},"interaction":{"schema":{"version":3},"content":"20 $1/1 ARM&amp;HAMMER 4x concentrate detergent 8/31/13 - http://t.co/DwFm08iyOj http://t.co/7XvuTjDd0v","id":"1e2f6df3ca32a180e0745c1dc0cceda4","author":{"id":342319003,"username":"Sate_Hut","name":"Sate Hut","link":"http://
 twitter.com/Sate_Hut","language":"en","avatar":"http://a0.twimg.com/profile_images/1460610380/sate_hut_logo_normal.jpg"},"source":"Satehut","link":"http://twitter.com/Sate_Hut/statuses/361171385718018048","created_at":"Sat, 27 Jul 2013 17:09:03 +0000","type":"twitter"},"links":{"title":["20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers"],"normalized_url":["http://dish-washers-dryers.com/?p=3858"],"created_at":["Sat, 27 Jul 2013 17:09:07 +0000"],"retweet_count":[0],"code":[200],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"20 $1/1 ARM&HAMMER 4x concentrate detergent 8/31/13 | Dish-Washers & Dryers","description":"$0.99 (0 Bids)End Date: Saturday Jul-27-2013 19:47:26 PDTBuy It Now for only: $2.50Buy It Now | Bid now | Add to watch list","image":"http://thumbs1.ebaystatic.com/m/m5EkUMKNxAoIDYVzVioQCRg/140.jpg","site_name":"Dish-Washers & Dryers","type":"article","url":"http://dish-washers-dryers.com/?p=3858"}],"content_type":["text/html"],"lang":["en-us"
 ]},"url":["http://dish-washers-dryers.com/?p=3858"]},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":0}},"facebook":{"id":"297050503659016_614567205240676","message":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","created_at":"Fri, 26 Jul 2013 23:40:01 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f64cb0481ae80e0668a518d22dfe2","content":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27)\n\nhttp://wp.me/p22sqw-j1g","author":{"id":"297050503659016","name":"Cook, Coupon, Work","link":"http://www.facebook.com/profile.php?id=297050503659016","avatar":"https://graph.facebook.com/297050503659016/picture"},"source":"web","link":"http://www.facebook.com/297050503659016_614567205240
 676","subtype":"status","created_at":"Fri, 26 Jul 2013 23:40:22 +0000","type":"facebook"},"links":{"title":["Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work"],"normalized_url":["http://cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727"],"created_at":["Fri, 26 Jul 2013 23:40:16 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p22sqw-j1g","http://www.cookcouponwork.com/?p=73114"]],"meta":{"twitter":[{"site":"@CookCouponWork","card":"summary","creator":"@CookCouponWork"}],"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Laundry Detergent Just $1.92 at Walgreens (til 7/27) - Cook, Coupon, Work","description":"Need Laundry Detergent? Pick up a good deal on Arm & Hammer at Walgreens (til 7/27) Deal Idea: Buy (2) Arm & Hammer 2x Liquid Detergent, 25 ? 32 loads, $2.29 = $4.58 Use (1) $0.75/2 Arm & Hammer Liquid or Powder Detergent, or Fabric Softener Sheets, exp. 9/30/13 (SS 07/14/13) Pay $3.83 =$1.92 
 EACH!","image":"http://www.cookcouponwork.com/wp-content/uploads/2013/07/543-300x213.jpg","type":"article","site_name":"Cook, Coupon, Work","url":"http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"}],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.cookcouponwork.com/arm-hammer-laundry-detergent-just-1-92-at-walgreens-til-727/"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362022978235531264","filter_level":"medium","text":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","hashtags":["notracist"],"lang":"en","user":{"location":"Knoxville, TN","statuses_count":3202,"lang":"en","utc_offset":-14400,"id":442907220,"time_zone":"Eastern Time (US & Canada)","favourites_count":379,"description":"Never had a headache. Unable to grow a full beard.","friends_count":52,"name":"Uncle_D","created_at":"Wed, 21 Dec 2011 16:05:22 +0000","screen_name":"_UncleD_","id_str":"442907220","profile_image_url":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg","followers_count":59}},"salience":{"content":{"sentiment":6}},"klout":{"score":40},"interac
 tion":{"schema":{"version":3},"content":"Arm and hammer laundry detergent gets the whites to be super white. #notracist","id":"1e2f8b7f6ed8a100e074a98a4f29f3bc","author":{"id":442907220,"username":"_UncleD_","name":"Uncle_D","link":"http://twitter.com/_UncleD_","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000144278522/e2c248ef7011fe240871ee3beab46bfd_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/_UncleD_/statuses/362022978235531264","created_at":"Tue, 30 Jul 2013 01:32:58 +0000","type":"twitter"},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"100000487215935_704899129536321","message":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile.php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"application":"Mobile","source":"Mobile (2915120374)","created_at":"Sat, 27 Jul 2013 16:30:08 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f6d9ccde6a800e06674caf5177576","content":"Arm & hammer carpet powder $2.75.... The feeling & smell of clean priceless..... Trying to sprinkle powder on carpet in front of a fan.... Stupid! I crack myself up!","author":{"id":"100000487215935","name":"Joyce Warren Cantrell","link":"http://www.facebook.com/profile
 .php?id=100000487215935","avatar":"https://graph.facebook.com/100000487215935/picture"},"source":"Mobile (2915120374)","link":"http://www.facebook.com/100000487215935_704899129536321","subtype":"status","created_at":"Sat, 27 Jul 2013 16:30:26 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"mostly_female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"361615185913462785","retweeted":{"id":"361614949908361217","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","in_reply_to_screen_name":"THEmrReynolds","in_reply_to_status_id":"361603144695820288","in_reply_to_user_id":"106891542","created_at":"Sun, 28 Jul 2013 22:31:37 +0000","user":{"geo_enabled":true,"location":"Stanford, CA","statuses_count":22223,"lang":"en","url":"http://memoirsofaGAYsh.tumblr.com","id":49340813,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":4278,"description":"?Dance is the hidden language of the soul of the body? CSRE/DRAMA Major @Stanford.  #playwright #dancer","friends_count":436,"name":"Dominique Delacroix","created_at":"Sun, 21 Jun 2009 15:29:26 +0000","screen_name":"MemoirsofaGAYsh","id_str":"49340813","profile_image_url":"http://a0.twimg.com/profile_images/2258352218/MemoirsofaGAYsh_normal.jpg","followers_count":4
 23,"listed_count":10}},"retweet":{"id":"361615185913462785","text":"@THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","count":1,"mention_ids":[106891542],"created_at":"Sun, 28 Jul 2013 22:32:33 +0000","user":{"location":"soundcloud.com/mrReynoldsMusic","statuses_count":13351,"lang":"en","url":"http://www.THEmrReynolds.com","id":106891542,"utc_offset":-14400,"time_zone":"Eastern Time (US & Canada)","favourites_count":1353,"description":"I Mock The Party","friends_count":1554,"name":"Mr Reynolds","created_at":"Thu, 21 Jan 2010 00:37:45 +0000","screen_name":"THEmrReynolds","id_str":"106891542","profile_image_url":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg","followers_count":7938,"listed_count":49},"mentions":["THEmrReynolds"],"lang":"en"}},"salience":{"content":{"sentiment":0}},"klout":{"score":59},"int
 eraction":{"schema":{"version":3},"content":"RT @MemoirsofaGAYsh: @THEmrReynolds probably a mixture of prunes, icy hot, and arm and hammer foot powder","id":"1e2f7d5984fda680e074135a4b824dd0","author":{"id":106891542,"username":"THEmrReynolds","name":"Mr Reynolds","link":"http://twitter.com/THEmrReynolds","language":"en","avatar":"http://a0.twimg.com/profile_images/2828785203/a097d038f964b0a6125a95c0a0e8ff7d_normal.jpeg"},"source":"Twitter for Android","mention_ids":[106891542],"link":"http://twitter.com/THEmrReynolds/statuses/361615185913462785","created_at":"Sun, 28 Jul 2013 22:32:33 +0000","type":"twitter","mentions":["THEmrReynolds"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362467813958500354","filter_level":"medium","text":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","source":"<a href=\"http://www.networkedblogs.com/\" rel=\"nofollow\">NetworkedBlogs<\/a>","domains":["nblo.gs"],"created_at":"Wed, 31 Jul 2013 07:00:35 +0000","links":["http://nblo.gs/NEwDq"],"lang":"en","user":{"location":"Canada","statuses_count":2034,"lang":"en","url":"http://www.zeemaid.com","id":25435820,"utc_offset":-25200,"time_zone":"Pacific Time (US & Canada)","favourites_count":17,"description":"I am Zeemaid.  Momma to 3, an avid reader and an all around sassy momma.  I own my own video business, am married to my Mr. Darcy, love to throw pots and write","friends_count":1976,"name":"Zeemaid","created_at":"Fri, 20 Mar 2009 01:59:59 +0000","screen_name":"Zeemaid","id_str":"25435820","profile_image_url":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg","followers_count":10
 27,"listed_count":30}},"salience":{"content":{"sentiment":0}},"klout":{"score":41},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Sensitive Skin?Review &amp; Giveaway http://t.co/pS413KqHv5","id":"1e2f9aee5d36ab80e0745a0744aef83a","author":{"id":25435820,"username":"Zeemaid","name":"Zeemaid","link":"http://twitter.com/Zeemaid","language":"en","avatar":"http://a0.twimg.com/profile_images/1732650108/Zeemaid_normal.jpg"},"source":"NetworkedBlogs","link":"http://twitter.com/Zeemaid/statuses/362467813958500354","created_at":"Wed, 31 Jul 2013 07:00:35 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Sensitive Skin?Review & Giveaway"],"normalized_url":["http://networkedblogs.com/NEwDq"],"created_at":["Wed, 31 Jul 2013 07:00:43 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://nblo.gs/NEwDq"]],"meta":{"charset":["UTF-8"],"opengraph":[{"title":"Arm & Hammer Sensitive Skin?Review & Giveaway","description":"When you love a product you want to stick with it bu
 t as we all know price is a huge factor as to whether we continue to buy the brand we love or go elsewhere. Fortunately, Arm & Hammer?s affordability makes it easy for me to keep my cupboard well stocked with the Arm & Hammer products I love. Not","image":"http://lh6.ggpht.com/-8PeRiK68OMk/UfhgV8guCFI/AAAAAAAACgs/ubCE0V6ffqQ/CAN_AHLL_Sensitive_203L_thumb7.jpg?imgmax=800","site_name":"In the Mommy Trenches","type":"article","url":"http://networkedblogs.com/NEwDq"}],"content_type":["text/html"],"lang":["unknown"]},"url":["http://networkedblogs.com/NEwDq"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":4}},"facebook":{"id":"478623348890311_497707713648541","message":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/pictu
 re"},"source":"web","created_at":"Wed, 31 Jul 2013 06:44:42 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e2f9acadcb2a900e066515ce688d7d0","content":"Example of what you can save......\n(regular retail)\n1 Febeze Air Effects $2.99 each  ($1)\n1 Gillette Mach 3 disposables $7.49 each ($3)\n1 Gillette Shaving Cream $2.29 each ($1)\n1 Woolite High Traffic Cleaner $6.79 each ($2)\n1 Schick Women's Razors $5.69 each ($2)\n1 Colgate Toothbrush $1.89 each  ($1)\n1 Arm and Hammer Laundry Detergent $4.99 each ($2)\n1 Snuggle Fabric Softener $4.99 each ($2)\n1 Bayer Aspirin $2.99 each ($1)\n1 Herbal Essence Shampoo $2.99 each ($1)\n1 Herbal Essence Conditioner $2.99 each ($1)\n1 Herbal Essence Styling Products $3.39 each ($1)\nTotal: $52.48\nDOLLAR DEALS TOTAL: $18.00","author":{"id":"478623348890311","name":"Dollar Deals Delivered","link":"http://www.facebook.com/profile.php?id=478623348890311","avatar":"https://graph.facebook.com/478623348890311/picture"},"source":"we
 b","link":"http://www.facebook.com/478623348890311_497707713648541","subtype":"status","created_at":"Wed, 31 Jul 2013 06:44:57 +0000","type":"facebook"},"language":{"tag":"en","confidence":74}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"362269562365943809","filter_level":"medium","text":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","mention_ids":[151080077],"source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["wp.me"],"created_at":"Tue, 30 Jul 2013 17:52:48 +0000","links":["http://wp.me/p12Gyx-358"],"lang":"en","mentions":["MyBitsandBleeps"],"user":{"location":"Toronto,Ontario","statuses_count":29115,"lang":"en","utc_offset":-14400,"id":574859993,"time_zone":"Eastern Time (US & Canada)","favourites_count":13,"friends_count":1727,"name":"Andrew P","created_at":"Tue, 08 May 2012 23:07:45 +0000","screen_name":"apham17","id_str":"574859993","profile_image_url":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png","followers_count":455,"listed_count":7}
 },"salience":{"content":{"sentiment":0}},"klout":{"score":48},"interaction":{"schema":{"version":3},"content":"New ARM and HAMMER Sensitive Skin and Sensitive Scents?laundry detergent http://t.co/2HvWoZVjTt via @MyBitsandBleeps","id":"1e2f940d87f9a800e074438bcad545f2","author":{"id":574859993,"username":"apham17","name":"Andrew P","link":"http://twitter.com/apham17","language":"en","avatar":"http://a0.twimg.com/profile_images/3226883575/148106bd4d6dcb4e8f06d8e5f0cd197f_normal.png"},"source":"Tweet Button","mention_ids":[151080077],"link":"http://twitter.com/apham17/statuses/362269562365943809","created_at":"Tue, 30 Jul 2013 17:52:48 +0000","type":"twitter","mentions":["MyBitsandBleeps"]},"links":{"title":["New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent | Mybitsandbleeps&#039;s Blog"],"normalized_url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent"],"created_at":["Mon, 29 Jul 2013 23:20:31 +00
 00"],"retweet_count":[0],"code":[200],"hops":[["http://wp.me/p12Gyx-358"]],"meta":{"twitter":[{"site":"@wordpressdotcom","card":"gallery","creator":"@MyBitsandBleeps"}],"description":["A mom blog creating more buzz about your product!"],"charset":["UTF-8"],"opengraph":[{"title":"New ARM and HAMMER Sensitive Skin and Sensitive Scents laundry detergent","description":"School?s out and families are taking the fun outside, which means more muddy knees and grass-stained tees. Laundry will be piling up in no time but many Canadians will be forced to reach for unscen...","image":"http://i2.wp.com/mybitsandbleeps.files.wordpress.com/2013/07/img_00002130.jpg?fit=1000%2C1000","type":"article","site_name":"Mybitsandbleeps&#039;s Blog","url":"http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-scents-laundry-detergent/"}],"content_type":["text/html"],"lang":["en"]},"url":["http://mybitsandbleeps.com/2013/07/14/new-arm-and-hammer-sensitive-skin-and-sensitive-sce
 nts-laundry-detergent/"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"362229784211750912","filter_level":"medium","text":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","mention_ids":[279691748],"source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","lang":"en","mentions":["TheVikkiMinaj"],"user":{"location":"LA","statuses_count":18221,"lang":"en","utc_offset":-18000,"id":223342789,"time_zone":"Central Time (US & Canada)","favourites_count":6766,"description":"Onesie gang or die","friends_count":231,"name":"Carlage","created_at":"Mon, 06 Dec 2010 03:23:42 +0000","screen_name":"legitCarll","id_str":"223342789","profile_image_url":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg","followers_count":220}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Foo
 d","score":0.50475257635117}]}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"We're eating breakfast and @TheVikkiMinaj sits down and says the arm and hammer powder she put on her vagina burns. THANKS FOR THAT","id":"1e2f92ac430aa080e0748f373f80284e","author":{"id":223342789,"username":"legitCarll","name":"Carlage","link":"http://twitter.com/legitCarll","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000049299664/a636d7d245455eeb8b335ed4bd6480f8_normal.jpeg"},"source":"Twitter for iPhone","mention_ids":[279691748],"link":"http://twitter.com/legitCarll/statuses/362229784211750912","created_at":"Tue, 30 Jul 2013 15:14:45 +0000","type":"twitter","mentions":["TheVikkiMinaj"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"365738027701645314","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Fri, 09 Aug 2013 07:35:15 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1571552280,"friends_count":2,"name":"tim tunner","created_at":"Fri, 05 Jul 2013 23:43:28 +0000","screen_name":"timtunner0987","id_str":"1571552280","statuses_count":32,"profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":10},"interaction":{"schema":{"version":3},"content":"Missed a scoop? No pro
 blem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/VGNQ0i0KGb","id":"1e300c63b51fab80e074e71f77da87ca","author":{"id":1571552280,"username":"timtunner0987","name":"tim tunner","link":"http://twitter.com/timtunner0987","language":"en","avatar":"http://a0.twimg.com/sticky/default_profile_images/default_profile_4_normal.png"},"source":"Tweet Button","link":"http://twitter.com/timtunner0987/statuses/365738027701645314","created_at":"Fri, 09 Aug 2013 07:35:15 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Fri, 09 Aug 2013 07:35:18 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]],"description":["Missed a scoop? No problem! ARM & HAMM
 ER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","StainRemoval","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364421048600510464","filter_level":"medium","text":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","source":"<a href=\"http://uTweetDeals.com\" rel=\"nofollow\">U Tweet Deals<\/a>","domains":["bit.ly"],"created_at":"Mon, 05 Aug 2013 16:22:03 +0000","hashtags":["laundry"],"links":["http://bit.ly/15zY9H5"],"lang":"en","user":{"statuses_count":59620,"lang":"en","utc_offset":-25200,"id":1131374341,"time_zone":"Arizona","description":"We search for deals on Home and Garden related products. Bath, Kitchen, Furniture, Garden and more. *** I Follow Back ***","friends_count":1939,"name":"Home and Garden","created_at":"Tue, 29 Jan 2013 15:37:21 +0000","screen_name":"HomeGardenBuys","id_str":"1131374341","followers_count":1706,"profile_image_url":"http://a0.twimg.com/profile_images/3531065622/bc956b2a
 9da482ed071f2dbcdabea80b_normal.jpeg","listed_count":95}},"salience":{"content":{"sentiment":0}},"klout":{"score":49},"interaction":{"schema":{"version":3},"content":"10 bottles Arm &amp; Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent $0.99 http://t.co/89pkfqEgvl #laundry","id":"1e2fdeb29810a780e0747af2c3544504","author":{"id":1131374341,"username":"HomeGardenBuys","name":"Home and Garden","link":"http://twitter.com/HomeGardenBuys","language":"en","avatar":"http://a0.twimg.com/profile_images/3531065622/bc956b2a9da482ed071f2dbcdabea80b_normal.jpeg"},"source":"U Tweet Deals","link":"http://twitter.com/HomeGardenBuys/statuses/364421048600510464","created_at":"Mon, 05 Aug 2013 16:22:03 +0000","type":"twitter"},"links":{"title":["10 Bottles Arm Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent | eBay"],"normalized_url":["http://ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"],"created_at":["Mon, 05 Aug 2013 16:22:47 +0000"],"retweet_
 count":[0],"code":[200],"hops":[["http://bit.ly/15zY9H5","http://rover.ebay.com/rover/1/711-53200-19255-0/1/?type=2&campid=5337311970&toolid=10001&ext=121154908808&item=121154908808"]],"meta":{"keywords":[["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","Home & Garden","Housekeeping & Organization","Laundry Supplies"]],"description":["10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay"],"charset":["UTF-8"],"opengraph":[{"title":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent","description":"10 bottles Arm & Hammer Plus Oxi Clean Stain Fighters Liquid Laundry Detergent in Home & Garden, Housekeeping & Organization, Laundry Supplies | eBay","image":"http://thumbs1.ebaystatic.com/d/l225/m/mSRDHPf7_rrZnR75JtQxcCA.jpg","type":"ebay-objects:item","site_name":"eBay","url":"http://www.ebay.com/itm/10-bottles-Arm-Hammer-Plus-Oxi-C
 lean-Stain-Fighters-Liquid-Laundry-Detergent-/121154908808"}],"content_type":["text/html"],"lang":["en-gb"]},"url":["http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=121154908808&item=121154908808"]},"language":{"tag":"en","confidence":63}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364879533691772928","filter_level":"medium","text":"Arm and hammer carpet powder is amazing....#justsayin","source":"<a href=\"http://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android<\/a>","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","hashtags":["justsayin"],"lang":"en","user":{"location":"Indiana US of A","statuses_count":1400,"lang":"en","url":"http://www.quirkycreative.blogspot.com","utc_offset":-14400,"id":93704952,"time_zone":"Eastern Time (US & Canada)","favourites_count":9,"description":"Writer~ Random ~Quirky ~Creative ~Wife ~Believer ~Extroverted Introvert ~Animal Person ~Brony ~Girly-Girl w/ Tomboy Tendencies @JAInspired","friends_count":493,"name":"Rachel M","created_at":"Mon, 30 Nov 2009 20:20:15 +0000","screen_name":"thisrandomgirl","id_str":"93704952","profile_image_url":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg","followers_count":102}},"sa
 lience":{"content":{"sentiment":4}},"klout":{"score":18},"interaction":{"schema":{"version":3},"content":"Arm and hammer carpet powder is amazing....#justsayin","id":"1e2fee9abeffa100e074fa86d21b91e6","author":{"id":93704952,"username":"thisrandomgirl","name":"Rachel M","link":"http://twitter.com/thisrandomgirl","language":"en","avatar":"http://a0.twimg.com/profile_images/3376486852/bfc1a1d4c44cf09978fb2c5c0fb33892_normal.jpeg"},"source":"Twitter for Android","link":"http://twitter.com/thisrandomgirl/statuses/364879533691772928","created_at":"Tue, 06 Aug 2013 22:43:54 +0000","type":"twitter"},"language":{"tag":"en","confidence":61},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364749039100633088","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Tue, 06 Aug 2013 14:05:22 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"statuses_count":4853,"lang":"en","url":"http://www.mykidsguide.com/","id":612438542,"favourites_count":3,"description":"Everything you need to know about educational games and  activities for kids.","friends_count":613,"name":"MyKidsGuide","created_at":"Tue, 19 Jun 2012 10:11:57 +0000","screen_name":"MyKidsGuide","id_str":"612438542","followers_count":1542,"profile_image_url":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg","listed_count":14}},"salience":{"content":{"sentiment":0}},"klout":{"score":49
 },"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/MmPYCeqmgN via @Gingermommy","id":"1e2fea13bbd7ad00e0742b3a16342e3e","author":{"id":612438542,"username":"MyKidsGuide","name":"MyKidsGuide","link":"http://twitter.com/MyKidsGuide","language":"en","avatar":"http://a0.twimg.com/profile_images/2322033061/ryougq6v4o8gvddcx0ru_normal.jpeg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/MyKidsGuide/statuses/364749039100633088","created_at":"Tue, 06 Aug 2013 14:05:22 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Tue, 06 Aug 2013 06:53:13 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm 
 & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100}}
+{"w2o":{"tags":{"topic":["Scent","CouponUsage"],"brand":["Tide","ArmAndHammer"]}},"salience":{"content":{"sentiment":0,"entities":[{"sentiment":0,"confident":1,"name":"Gain","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"},{"sentiment":0,"confident":1,"name":"Tide","evidence":1,"about":1,"label":"Company","themes":["3 gallon gain"],"type":"Company"}]}},"facebook":{"id":"100001334708168_529689457085540","message":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $15\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author"
 :{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yx/r/og8V99JVf8G.gif","application":"Facebook for Android","source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3","created_at":"Mon, 05 Aug 2013 13:41:25 +0000","type":"photo"},"interaction":{"schema":{"version":3},"id":"1e2fdd4b8cefa080e0663432906416b4","content":"SAVE  SAVE  SAVE NOW\n\nProduct Price Sheet\n\n25 lb powder Gain or Tide: $20\n\n3 gallon Gain or Tide: $25\n\n3 gallon Clear Arm & Hammer (no dye, no perfume) $25\n\n4 gallon Bleach $15\n\nAngel Soft Tissue 32 rolls $25, 96 rolls $65\n\n1 gallon Pine-sol Multi-Purpose Soap $12\n\n1 gallon Dove bodywash $15\n\n1 gallon Dawn Dish liquid $12\n\n1 gallon Downy Fabric Softener $15\n\n25 bars of Dove Soap $1
 5\n\nTo place orders, call or text me at 678-531-1965\n\nSponsored by CarDM Mobile Mechanics and Hawaiian Breeze Auto Detailers","author":{"id":"100001334708168","name":"Albert Wells","link":"http://www.facebook.com/profile.php?id=100001334708168","avatar":"https://graph.facebook.com/100001334708168/picture"},"source":"Facebook for Android (350685531728)","link":"http://www.facebook.com/100001334708168_529689457085540","subtype":"photo","created_at":"Mon, 05 Aug 2013 13:41:44 +0000","type":"facebook"},"links":{"title":["Photos from Albert Wells&#039;s post | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"],"created_at":["Mon, 05 Aug 2013 13:41:51 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://www.facebook.com/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]],"meta":{"charset":["UTF-8"],"content_type":["text/html"],"lang":["en"]},"url":["https://www.facebook.c
 om/photo.php?fbid=529689133752239&set=pcb.529689457085540&type=1&relevant_count=3"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","LaundryDetergent"],"brand":["ArmAndHammer"]}},"twitter":{"id":"364070259025649666","filter_level":"medium","text":"Somebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","source":"<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone<\/a>","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","lang":"en","user":{"geo_enabled":true,"statuses_count":31708,"lang":"en","utc_offset":-18000,"id":57967571,"time_zone":"Quito","favourites_count":38,"description":"http://ask.fm/thatDudeBiggz","friends_count":727,"name":"Sen?r","created_at":"Sat, 18 Jul 2009 16:18:33 +0000","screen_name":"thatDudeBiggz","id_str":"57967571","profile_image_url":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg","followers_count":658,"listed_count":5}},"salience":{"content":{"sentiment":0}},"klout":{"score":43},"interaction":{"schema":{"version":3},"content":"S
 omebody Come Do My Laundry. I'll Pay You. U Dont Need Detergent. I Got This Arm And Hammer ?","id":"1e2fd286f28cac00e074ec9c56b152ac","author":{"id":57967571,"username":"thatDudeBiggz","name":"Sen?r","link":"http://twitter.com/thatDudeBiggz","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000020493320/c5b8669b417c8e362e0d92ad68bb24f9_normal.jpeg"},"source":"Twitter for iPhone","link":"http://twitter.com/thatDudeBiggz/statuses/364070259025649666","created_at":"Sun, 04 Aug 2013 17:08:08 +0000","type":"twitter"},"language":{"tag":"en","confidence":62}}
+{"w2o":{"tags":{"brand":["ArmAndHammer"]}},"twitter":{"id":"364267076807950339","filter_level":"medium","text":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","mention_ids":[126764623],"source":"<a href=\"http://triberr.com\" rel=\"nofollow\">Triberr<\/a>","domains":["goo.gl"],"created_at":"Mon, 05 Aug 2013 06:10:13 +0000","links":["http://goo.gl/DIOspt"],"lang":"en","mentions":["Gingermommy"],"user":{"geo_enabled":true,"location":"Lumsden, Saskatchewan","statuses_count":18479,"lang":"en","url":"http://www.mommykatandkids.com/","id":106185357,"utc_offset":-21600,"time_zone":"Mountain Time (US & Canada)","favourites_count":29,"description":"Mother of two active boys, blogger and writer. Lover of hot coffee, organic chocolate and sleeping in late whenever I get the chance.","friends_count":7894,"name":"Kathryn Lavallee","created_at":"Mon, 18 Jan 2010 19:29:48 +0000","screen_name":"mommykatandkids","id_str":"106185357","profile_image
 _url":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg","followers_count":15439,"listed_count":306}},"salience":{"content":{"sentiment":0}},"klout":{"score":65},"interaction":{"schema":{"version":3},"content":"Fresh laundry solution for sensitive skin Arm &amp; Hammer http://t.co/hkHzh1oFnq via @Gingermommy","id":"1e2fd95b0a39a080e07405af37275d4a","author":{"id":106185357,"username":"mommykatandkids","name":"Kathryn Lavallee","link":"http://twitter.com/mommykatandkids","language":"en","avatar":"http://a0.twimg.com/profile_images/1611498528/corel_touched-up_headshot_normal.jpg"},"source":"Triberr","mention_ids":[126764623],"link":"http://twitter.com/mommykatandkids/statuses/364267076807950339","created_at":"Mon, 05 Aug 2013 06:10:13 +0000","type":"twitter","mentions":["Gingermommy"]},"links":{"title":["Fresh laundry solution for sensitive skin Arm & Hammer - Tales of a Ranting Ginger"],"normalized_url":["http://talesofarantingginger.com/2013/08/fres
 h-laundry-solution-for-sensitive-skin-arm-hammer.html"],"created_at":["Sun, 04 Aug 2013 21:00:19 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://goo.gl/DIOspt"]],"meta":{"description":["sensitive skin arm & hammer"],"charset":["UTF-8"],"content_type":["text/html"],"lang":["en-us"]},"url":["http://www.talesofarantingginger.com/2013/08/fresh-laundry-solution-for-sensitive-skin-arm-hammer.html"]},"language":{"tag":"en","confidence":100},"demographic":{"gender":"female"}}
+{"w2o":{"tags":{"topic":["Sustainability"],"brand":["ArmAndHammer"]}},"twitter":{"id":"367633815277035520","filter_level":"medium","text":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","source":"<a href=\"http://www.facebook.com/twitter\" rel=\"nofollow\">Facebook<\/a>","domains":["fb.me"],"created_at":"Wed, 14 Aug 2013 13:08:26 +0000","links":["http://fb.me/2jIdLRYWm"],"lang":"en","user":{"location":"Ontario, Canada","statuses_count":11244,"lang":"en","url":"http://savebiglivebetter.com","id":465174690,"description":"The best Canadian deals, sales, coupons, freebies, recipes, money saving articles and more updated daily at http://SaveBigLiveBetter.com! HAPPY SAVING:)","friends_count":71,"name":"Save Big Live Better","created_at":"Mon, 16 Jan 2012 01:56:38 +0000","screen_name":"SBLBCanada","id_str":"465174690","followers_count":476,"profile_image_url":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401
 c696258306991b51_normal.png","listed_count":4}},"salience":{"content":{"sentiment":3}},"klout":{"score":37},"interaction":{"schema":{"version":3},"content":"Arm &amp; Hammer Detergent Only $1.99 Starting Saturday!\n\nTime to Stock Up!!  :) ~Ava~... http://t.co/LznOl9Me9k","id":"1e304e29af34a100e0742d305e733fa6","author":{"id":465174690,"username":"SBLBCanada","name":"Save Big Live Better","link":"http://twitter.com/SBLBCanada","language":"en","avatar":"http://a0.twimg.com/profile_images/3279225640/270245999d75d401c696258306991b51_normal.png"},"source":"Facebook","link":"http://twitter.com/SBLBCanada/statuses/367633815277035520","created_at":"Wed, 14 Aug 2013 13:08:26 +0000","type":"twitter"},"links":{"title":["Timeline Photos | Facebook"],"normalized_url":["https://facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"],"created_at":["Wed, 14 Aug 2013 13:08:58 +0000"],"retweet_count":[0],"code":[200],"hops":[["http://fb.me/2jIdLRYWm"]],"meta":{"charset":["UTF-8"],"content_type":[
 "text/html"],"lang":["en"]},"url":["https://www.facebook.com/photo.php?fbid=507697515973605&l=337aea86ef"]},"language":{"tag":"en","confidence":62},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","Scent"],"brand":["ArmAndHammer"]}},"salience":{"content":{"sentiment":1,"entities":[{"sentiment":-2,"confident":1,"name":"Vinegar","evidence":1,"about":0,"label":"Person","themes":["funky smell","washing machine","go-to product","regular detergent","vinegar smell"],"type":"Person"}]}},"facebook":{"id":"234885799896401_583141561737488","message":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old days.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest 
 thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":"Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","created_at":"Wed, 14 Aug 2013 17:23:45 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3050645c92a680e066aef68cf33be0","content":"One of my fans asked me how to get the funky smell out of her washing machine. Vinegar was the go-to product for this in the old day
 s.  Although you would need to run the load a second time with regular detergent to get the vinegar smell out.  It is possible to mix the detergent with vinegar if you want to try that.\n \nI've personally found that Arm & Hammer detergent works for me.  I used to have the same problem with some of my thick towels.  The A&H removed the smell. To avoid a washing machine smell, do the following:\n1) Make sure you clean the washing machine on a regular basis.  The easiest thing to do is to run an empty load with bleach.\n2) Leave the door open on the front loader between uses (if you have small children, though, make sure it's in a room here you can close the door).\n3) Make sure that the washing machine is set on the highest speed spin cycle.  Some machines allow you to crank the spin cycle to over 1000 RPM's.  That's what you need to do.  The more effective the spin cycle, the more water that is removed and the less chance of mold and mildew.","author":{"id":"234885799896401","name":
 "Tipman Tim - Tips, tools and tricks for life","link":"http://www.facebook.com/profile.php?id=234885799896401","avatar":"https://graph.facebook.com/234885799896401/picture"},"source":"web","link":"http://www.facebook.com/234885799896401_583141561737488","subtype":"status","created_at":"Wed, 14 Aug 2013 17:24:00 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"male"}}
+{"w2o":{"tags":{"topic":["Sustainability","CouponUsage","LaundryDetergent"],"brand":["ArmAndHammer","Purex"]}},"salience":{"content":{"sentiment":0,"topics":[{"hits":0,"name":"Beverages","score":0.92570048570633}]}},"facebook":{"id":"100000254074556_643746722310458","message":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nFill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  S
 tir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","created_at":"Fri, 09 Aug 2013 15:07:21 +0000","type":"status"},"interaction":{"schema":{"version":3},"id":"1e3010563ad1aa80e0660e6752dee246","content":"Ashley, that was the recipe for the powder detergent (which is amazing by the way) It won't last as long as the liquid and is more expensive.  Sorry. I didn't mean to copy that one.  Here is the liquid\nLIQUID SOAP MAKES 10 GALLONS\n? C PER LOAD ? 640 LOADS\n4 cups of Hot Tap Water\n1 Fels Naptha Soap Bar\n1 Cup Arm & Hammer Super Washing Soda\n? Cup Borax\n1 cup Purex liquid softener\nGrate soap, add to sauce pan with 4 cups of  water.  Heat and stir continually until soap dissolves & is melted.\nF
 ill 5 gallon Bucket ? full with Hot Tap Water, Add melted soap, soda, Purex and borax.  Stir well until powder is dissolved.  Fill bucket to top with more hot water, stir, cover, and let sit overnight to thicken.  Stir then fill a container (used laundry bottles or empty water jugs)  ? full with soap, fill the remainder with water. Shake well.","author":{"id":"100000254074556","name":"Sharon Bedwell Schluter","link":"http://www.facebook.com/profile.php?id=100000254074556","avatar":"https://graph.facebook.com/100000254074556/picture"},"source":"web","link":"http://www.facebook.com/100000254074556_643746722310458","subtype":"status","created_at":"Fri, 09 Aug 2013 15:07:35 +0000","type":"facebook"},"language":{"tag":"en","confidence":100},"demographic":{"gender":"unisex"}}
+{"w2o":{"tags":{"topic":["ConcentratedFormulas"],"brand":["ArmAndHammer"]}},"twitter":{"id":"359694365049896960","filter_level":"medium","text":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","source":"<a href=\"http://twitter.com/tweetbutton\" rel=\"nofollow\">Tweet Button<\/a>","domains":["www.armandhammer.com"],"created_at":"Tue, 23 Jul 2013 15:19:54 +0000","links":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"lang":"en","user":{"id":1546236864,"friends_count":82,"name":"Kyra Mitchell","created_at":"Tue, 25 Jun 2013 17:32:24 +0000","screen_name":"ArmyRebel0","id_str":"1546236864","statuses_count":14,"followers_count":10,"profile_image_url":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg","lang":"en"}},"salience":{"content":{"sentiment":2}},"klout":{"score":12},"interaction":{"schema":{"ver
 sion":3},"content":"Missed a scoop? No problem! ARM &amp; HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop. http://t.co/eZdNss2ClQ","id":"1e2f3ab537a0a900e074ec3e0933e560","author":{"id":1546236864,"username":"ArmyRebel0","name":"Kyra Mitchell","link":"http://twitter.com/ArmyRebel0","language":"en","avatar":"http://a0.twimg.com/profile_images/378800000084101648/95eff16837f6e9fd03585630e8e6b562_normal.jpeg"},"source":"Tweet Button","link":"http://twitter.com/ArmyRebel0/statuses/359694365049896960","created_at":"Tue, 23 Jul 2013 15:19:54 +0000","type":"twitter"},"links":{"title":["Arm & Hammer Multi-Brand - ARM & HAMMER? Ultra Last?"],"normalized_url":["http://armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-last.aspx"],"created_at":["Tue, 23 Jul 2013 15:20:08 +0000"],"retweet_count":[0],"code":[200],"meta":{"keywords":[["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."]
 ],"description":["Missed a scoop? No problem! ARM & HAMMER? Ultra Last? delivers long lasting odor control even when you can't scoop."],"charset":["UTF-8"],"content_type":["text/html"],"lang":["unknown"]},"url":["http://www.armandhammer.com/pet-care/cat-care/Products/arm-and-hammer-ultra-la

<TRUNCATED>

[29/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/test/resources/testpost.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/test/resources/testpost.json b/trunk/streams-contrib/streams-provider-facebook/src/test/resources/testpost.json
deleted file mode 100644
index 1817d28..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/test/resources/testpost.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
-    "id": "19292868552_10150189643478553",
-    "from": {
-        "category": "Product/service",
-        "name": "Facebook Developers",
-        "id": "19292868552"
-    },
-    "picture": "https://fbexternal-a.akamaihd.net/app_full_proxy.php?app=9953271133&v=3&size=z&cksum=e15ac22d55f6a9501d3b3ac64c5fb763&src=http%3A%2F%2Fimg.bitpixels.com%2Fgetthumbnail%3Fcode%3D78793%26size%3D120%26url%3Dhttp%3A%2F%2Fdevelopers.facebook.com%2Fblog%2F",
-    "link": "http://developers.facebook.com/blog/post/497",
-    "name": "Developer Roadmap Update: Moving to OAuth 2.0 + HTTPS",
-    "description": "\nWe continue to make Platform more secure for users. Earlier this year, we introduced the ability for users to browse Facebook over HTTPS. As a result, we provided ?Secure Canvas URL? and ?Secure Tab URL? fields in the Developer App for developers to serve their apps through an H",
-    "properties": [
-        {
-            "name": "source",
-            "text": "Official Facebook Developer Blog",
-            "href": "http://apps.facebook.com/blognetworks/blog/official_facebook_developer_blog"
-        },
-        {
-            "name": "link",
-            "text": "Full Article...",
-            "href": "http://developers.facebook.com/blog/post/497"
-        }
-    ],
-    "icon": "https://fbcdn-photos-g-a.akamaihd.net/hphotos-ak-prn1/851582_10151414659411134_455889750_n.gif",
-    "actions": [
-        {
-            "name": "Comment",
-            "link": "https://www.facebook.com/19292868552/posts/10150189643478553"
-        },
-        {
-            "name": "Like",
-            "link": "https://www.facebook.com/19292868552/posts/10150189643478553"
-        },
-        {
-            "name": "Share",
-            "link": "http://networkedblogs.com/hGWk3?a=share"
-        }
-    ],
-    "privacy": {
-        "value": ""
-    },
-    "type": "link",
-    "status_type": "app_created_story",
-    "application": {
-        "name": "NetworkedBlogs",
-        "namespace": "blognetworks",
-        "id": "9953271133"
-    },
-    "created_time": "2011-05-10T18:35:38+0000",
-    "updated_time": "2013-10-01T07:00:37+0000",
-    "likes": {
-        "data": [
-            {
-                "id": "100006210073538",
-                "name": "Coba Michigo"
-            },
-            {
-                "id": "1282493734",
-                "name": "Tu?rul Alpdo?an"
-            },
-            {
-                "id": "100000412097163",
-                "name": "Khoa L�"
-            },
-            {
-                "id": "100006459861243",
-                "name": "Cay Bautista"
-            },
-            {
-                "id": "1583193931",
-                "name": "Shikai Luo"
-            },
-            {
-                "id": "100000263093717",
-                "name": "Taheer Ali"
-            },
-            {
-                "id": "100000580222065",
-                "name": "Rui Miguel Botelho"
-            },
-            {
-                "id": "1046172886",
-                "name": "Petr Messner"
-            },
-            {
-                "id": "1082231972",
-                "name": "Kevin D Chang"
-            },
-            {
-                "id": "584859241",
-                "name": "Marco Re"
-            },
-            {
-                "id": "100000529975565",
-                "name": "Keith Lantz"
-            },
-            {
-                "id": "100001132836113",
-                "name": "Mehmet Yildirim"
-            },
-            {
-                "id": "100000957586565",
-                "name": "Aryfour Rahaman Repon"
-            },
-            {
-                "id": "100003371262883",
-                "name": "Fox Atari"
-            },
-            {
-                "id": "100001339517062",
-                "name": "Davut AyTa?"
-            },
-            {
-                "id": "100003864266319",
-                "name": "Elking Yasser"
-            },
-            {
-                "id": "100004789388632",
-                "name": "S�?h��? Ahm�?"
-            },
-            {
-                "id": "100003244374863",
-                "name": "B� Ki?n"
-            },
-            {
-                "id": "100006195824074",
-                "name": "Sofyan Firdaus Jempoler's"
-            },
-            {
-                "id": "100005363404988",
-                "name": "Aehr Love"
-            },
-            {
-                "id": "100005937755561",
-                "name": "Xhovani Shkreli"
-            },
-            {
-                "id": "100000843539139",
-                "name": "Little LampVengeance For'stamfordBridge"
-            },
-            {
-                "id": "100003439303139",
-                "name": "Shubham Malhotra"
-            },
-            {
-                "id": "652867253",
-                "name": "Noomomo Naruk"
-            },
-            {
-                "id": "1042034561",
-                "name": "Berkay Y?ld?z"
-            }
-        ],
-        "paging": {
-            "cursors": {
-                "after": "MTA0MjAzNDU2MQ==",
-                "before": "MTAwMDA2MjEwMDczNTM4"
-            },
-            "next": "https://graph.facebook.com/19292868552_10150189643478553/likes?limit=25&after=MTA0MjAzNDU2MQ=="
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
deleted file mode 100644
index 39befa4..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <groupId>org.apache.streams</groupId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-edc-facebook</artifactId>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</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>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-provider-facebook</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</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-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.jvnet.jaxb2.maven2</groupId>
-                <artifactId>maven-jaxb2-plugin</artifactId>
-                <configuration>
-                    <schemaDirectory>src/main/xmlschema/com/facebook/</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.facebook.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

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCAsActivityTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCAsActivityTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCAsActivityTest.java
deleted file mode 100644
index 587faa8..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCAsActivityTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.gnip.facebook.test;
-
-//import org.codehaus.jackson.map.ObjectMapper;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.commons.lang.StringUtils;
-import org.apache.streams.gnip.powertrack.GnipActivityFixer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-//import com.fasterxml.jackson.xml.XmlMapper;
-//import com.gnip.xmlpojo.generated.FacebookEDC;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 8/21/13
- * Time: 11:53 AM
- * To change this template use File | Settings | File Templates.
- */
-public class FacebookEDCAsActivityTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(FacebookEDCAsActivityTest.class);
-
-    private ObjectMapper jsonMapper = new ObjectMapper();
-    XmlMapper xmlMapper = new XmlMapper();
-
-    @Ignore
-    @Test
-    public void Tests()   throws Exception
-    {
-        InputStream is = FacebookEDCAsActivityTest.class.getResourceAsStream("/FacebookEDC.xml");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-        jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        jsonMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        jsonMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                if(!StringUtils.isEmpty(line))
-                {
-                    LOGGER.debug(line);
-                    Object activityObject = xmlMapper.readValue(line, Object.class);
-
-                    String jsonString = jsonMapper.writeValueAsString(activityObject);
-
-                    JSONObject jsonObject = new JSONObject(jsonString);
-
-                    JSONObject fixedObject = GnipActivityFixer.fix(jsonObject);
-
-                    Activity activity = null;
-                    try {
-                        activity = jsonMapper.readValue(fixedObject.toString(), Activity.class);
-                    } catch( Exception e ) {
-                        LOGGER.error(jsonObject.toString());
-                        LOGGER.error(fixedObject.toString());
-                        e.printStackTrace();
-                        Assert.fail();
-                    }
-                    //LOGGER.info(activity);
-                }
-            }
-        } catch( Exception e ) {
-            LOGGER.error(e.getMessage());
-            Assert.fail();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCSerDeTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCSerDeTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCSerDeTest.java
deleted file mode 100644
index df58820..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-facebook/src/test/java/org/apache/streams/gnip/facebook/test/FacebookEDCSerDeTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package org.apache.streams.gnip.facebook.test;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import com.gnip.api.Entry;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
- * Created with IntelliJ IDEA.
- * User: rebanks
- * Date: 8/21/13
- * Time: 11:53 AM
- * To change this template use File | Settings | File Templates.
- */
-public class FacebookEDCSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(FacebookEDCSerDeTest.class);
-
-    XmlMapper xmlMapper = new XmlMapper();
-
-    @Test
-    public void Tests()   throws Exception
-    {
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = FacebookEDCSerDeTest.class.getResourceAsStream("/FacebookEDC.xml");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                LOGGER.debug(line);
-
-                Entry xmlObject = xmlMapper.readValue(line, Entry.class);
-
-                String xml = xmlMapper.writeValueAsString(xmlObject);
-
-            }
-        } catch( Exception e ) {
-            LOGGER.error(e.getMessage());
-            Assert.fail();
-        }
-    }
-}


[62/71] [abbrv] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/pom.xml b/streams-contrib/streams-provider-google/google-gplus/pom.xml
new file mode 100644
index 0000000..99f9321
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/pom.xml
@@ -0,0 +1,145 @@
+<?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-provider-google</artifactId>
+        <version>0.1.STREAMS26-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>google-gplus</artifactId>
+
+    <repositories>
+        <repository>
+            <id>typesafe</id>
+            <name>typesafe</name>
+            <url>http://repo.typesafe.com/typesafe/repo</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.typesafe</groupId>
+            <artifactId>config</artifactId>
+        </dependency>
+        <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>org.jsonschema2pojo</groupId>
+            <artifactId>jsonschema2pojo-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</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>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.jayway.jsonpath</groupId>
+            <artifactId>json-path-assert</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.apis</groupId>
+            <artifactId>google-api-services-plus</artifactId>
+            <version>v1-rev118-1.17.0-rc</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.api-client</groupId>
+            <artifactId>google-api-client</artifactId>
+            <version>1.17.0-rc</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.http-client</groupId>
+            <artifactId>google-http-client-jackson2</artifactId>
+            <version>1.17.0-rc</version>
+        </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</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/com/google/gplus/GPlusConfiguration.json</sourcePath>
+                    </sourcePaths>
+                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
+                    <targetPackage>org.apache.streams.google.gplus.pojo</targetPackage>
+                    <useLongIntegers>true</useLongIntegers>
+                    <useJodaDates>false</useJodaDates>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
new file mode 100644
index 0000000..9bb6350
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusActivitySerializer.java
@@ -0,0 +1,117 @@
+package com.google.gplus.provider;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.streams.data.ActivitySerializer;
+import org.apache.streams.pojo.json.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* Created with IntelliJ IDEA.
+* User: mdelaet
+* Date: 9/30/13
+* Time: 9:24 AM
+* To change this template use File | Settings | File Templates.
+*/
+public class GPlusActivitySerializer implements ActivitySerializer<com.google.api.services.plus.model.Activity> {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(GPlusActivitySerializer.class);
+
+    GPlusProvider provider;
+
+    ObjectMapper mapper = new ObjectMapper();
+
+    public GPlusActivitySerializer(GPlusProvider provider) {
+
+        this.provider = provider;
+
+        mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, Boolean.FALSE);
+
+    }
+
+    public GPlusActivitySerializer() {
+    }
+
+    @Override
+    public String serializationFormat() {
+        return "gplus.v1";
+    }
+
+    @Override
+    public com.google.api.services.plus.model.Activity serialize(Activity deserialized) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+    @Override
+    public Activity deserialize(com.google.api.services.plus.model.Activity gplusActivity) {
+
+        // There is totally a better way to do this
+        //   1) Deep copy all jackson fields that overlap
+        //   2) Check all objects are present
+        //   3) Check essential fields have values
+        //   4) Any that don't, set them based on other fields that are present
+
+        Activity activity = new Activity();
+        activity.setId(formatId(gplusActivity.getId()));
+        activity.setPublished(new Date(gplusActivity.getPublished().getValue()));
+        Provider provider = new Provider();
+        provider.setId("http://plus.google.com");
+        provider.setDisplayName("GPlus");
+        activity.setProvider(provider);
+        Actor actor = new Actor();
+        actor.setId(gplusActivity.getActor().getId());
+        actor.setDisplayName(gplusActivity.getActor().getDisplayName());
+        actor.setUrl(gplusActivity.getActor().getUrl());
+        activity.setActor(actor);
+        activity.setVerb(gplusActivity.getVerb());
+        ActivityObject object = new ActivityObject();
+        object.setId(gplusActivity.getObject().getId());
+        object.setUrl(gplusActivity.getObject().getUrl());
+        object.setContent(gplusActivity.getObject().getContent());
+        activity.setTitle(gplusActivity.getTitle());
+        activity.setContent(gplusActivity.getObject().getContent());
+        activity.setObject(object);
+
+        return activity;
+    }
+
+    @Override
+    public List<Activity> deserializeAll(List<com.google.api.services.plus.model.Activity> serializedList) {
+        throw new NotImplementedException("Not currently implemented");
+    }
+
+    public static Generator buildGenerator(ObjectNode event) {
+        return null;
+    }
+
+    public static Icon getIcon(ObjectNode event) {
+        return null;
+    }
+
+    public static Provider buildProvider(ObjectNode event) {
+        Provider provider = new Provider();
+        provider.setId("id:providers:gmail");
+        return provider;
+    }
+
+    public static List<Object> getLinks(ObjectNode event) {
+        return null;
+    }
+
+    public static String getUrls(ObjectNode event) {
+        return null;
+    }
+
+    public static String formatId(String... idparts) {
+        return Joiner.on(":").join(Lists.asList("id:gmail", idparts));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java
new file mode 100644
index 0000000..9cd435d
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusConfigurator.java
@@ -0,0 +1,36 @@
+package com.google.gplus.provider;
+
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.google.gplus.GPlusConfiguration;
+import org.apache.streams.google.gplus.GPlusOAuthConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusConfigurator {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusConfigurator.class);
+
+    public static GPlusConfiguration detectConfiguration(Config config) {
+        Config oauth = StreamsConfigurator.config.getConfig("gplus.oauth");
+
+        GPlusConfiguration gplusConfiguration = new GPlusConfiguration();
+
+        gplusConfiguration.setProtocol(config.getString("protocol"));
+        gplusConfiguration.setHost(config.getString("host"));
+        gplusConfiguration.setPort(config.getLong("port"));
+        gplusConfiguration.setVersion(config.getString("version"));
+        GPlusOAuthConfiguration gPlusOAuthConfiguration = new GPlusOAuthConfiguration();
+        gPlusOAuthConfiguration.setConsumerKey(oauth.getString("consumerKey"));
+        gPlusOAuthConfiguration.setConsumerSecret(oauth.getString("consumerSecret"));
+        gPlusOAuthConfiguration.setAccessToken(oauth.getString("accessToken"));
+        gPlusOAuthConfiguration.setAccessTokenSecret(oauth.getString("accessTokenSecret"));
+        gplusConfiguration.setOauth(gPlusOAuthConfiguration);
+
+        return gplusConfiguration;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
new file mode 100644
index 0000000..579cdbf
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusEventProcessor.java
@@ -0,0 +1,79 @@
+package com.google.gplus.provider;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.pojo.json.Activity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.BlockingQueue;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusEventProcessor implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusEventProcessor.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private BlockingQueue<String> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    private Class inClass;
+    private Class outClass;
+
+    private GPlusActivitySerializer gPlusActivitySerializer = new GPlusActivitySerializer();
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    public GPlusEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class inClass, Class outClass) {
+        this.inQueue = inQueue;
+        this.outQueue = outQueue;
+        this.inClass = inClass;
+        this.outClass = outClass;
+    }
+
+    public GPlusEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class outClass) {
+        this.inQueue = inQueue;
+        this.outQueue = outQueue;
+        this.outClass = outClass;
+    }
+
+    @Override
+    public void run() {
+
+        while(true) {
+            try {
+                String item = inQueue.take();
+                Thread.sleep(new Random().nextInt(100));
+                if(item==TERMINATE) {
+                    LOGGER.info("Terminating!");
+                    break;
+                }
+
+                // first check for valid json
+                ObjectNode node = (ObjectNode)mapper.readTree(item);
+
+                // if the target is string, just pass-through
+                if( String.class.equals(outClass))
+                    outQueue.offer(new StreamsDatum(item));
+                else {
+                    // convert to desired format
+                    com.google.api.services.plus.model.Activity gplusActivity = (com.google.api.services.plus.model.Activity)mapper.readValue(item, com.google.api.services.plus.model.Activity.class);
+
+                    Activity streamsActivity = gPlusActivitySerializer.deserialize(gplusActivity);
+
+                    outQueue.offer(new StreamsDatum(streamsActivity));
+                }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java
new file mode 100644
index 0000000..1176843
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusHistoryProviderTask.java
@@ -0,0 +1,88 @@
+package com.google.gplus.provider;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.api.services.plus.Plus;
+import com.google.api.services.plus.model.ActivityFeed;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusHistoryProviderTask implements Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusHistoryProviderTask.class);
+
+    private ObjectMapper mapper;
+
+    private GPlusProvider provider;
+    private String userid;
+    private String circle;
+
+    public GPlusHistoryProviderTask(GPlusProvider provider, String userid, String circle) {
+        this.provider = provider;
+        this.userid = userid;
+        this.circle = circle;
+    }
+
+    @Override
+    public void run() {
+
+        Plus.Activities.List listActivities = null;
+        try {
+            listActivities = provider.plus.activities().list(userid, circle);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return;
+        }
+        listActivities.setMaxResults(100L);
+
+// Execute the request for the first page
+        ActivityFeed activityFeed = null;
+        try {
+            activityFeed = listActivities.execute();
+        } catch (IOException e) {
+            e.printStackTrace();
+            return;
+        }
+
+// Unwrap the request and extract the pieces we want
+        List<com.google.api.services.plus.model.Activity> activities = activityFeed.getItems();
+
+// Loop through until we arrive at an empty page
+        while (activities != null) {
+            for (com.google.api.services.plus.model.Activity gplusActivity : activities) {
+                String json = null;
+                try {
+                    json = mapper.writeValueAsString(gplusActivity);
+                } catch (JsonProcessingException e) {
+                    e.printStackTrace();
+                }
+                provider.inQueue.offer(json);
+            }
+
+            // We will know we are on the last page when the next page token is null.
+            // If this is the case, break.
+            if (activityFeed.getNextPageToken() == null) {
+                break;
+            }
+
+            // Prepare to request the next page of activities
+            listActivities.setPageToken(activityFeed.getNextPageToken());
+
+            // Execute and process the next page request
+            try {
+                activityFeed = listActivities.execute();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+            activities = activityFeed.getItems();
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java
new file mode 100644
index 0000000..523bd46
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/java/com/google/gplus/provider/GPlusProvider.java
@@ -0,0 +1,166 @@
+package com.google.gplus.provider;
+
+import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
+import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
+import com.google.api.client.googleapis.auth.oauth2.GoogleTokenResponse;
+import com.google.api.client.http.HttpTransport;
+import com.google.api.client.http.javanet.NetHttpTransport;
+import com.google.api.client.json.jackson2.JacksonFactory;
+import com.google.api.services.plus.Plus;
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import com.google.gson.Gson;
+import com.typesafe.config.Config;
+import org.apache.streams.config.StreamsConfigurator;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.apache.streams.google.gplus.GPlusConfiguration;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.util.Queue;
+import java.util.Random;
+import java.util.concurrent.*;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class GPlusProvider implements StreamsProvider {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusProvider.class);
+
+    private GPlusConfiguration config;
+
+    private Class klass;
+
+    public GPlusConfiguration getConfig() {
+        return config;
+    }
+
+    public void setConfig(GPlusConfiguration config) {
+        this.config = config;
+    }
+
+    protected BlockingQueue inQueue = new LinkedBlockingQueue<String>(10000);
+
+    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+
+    public BlockingQueue<Object> getInQueue() {
+        return inQueue;
+    }
+
+    private static final HttpTransport TRANSPORT = new NetHttpTransport();
+    private static final JacksonFactory JSON_FACTORY = new JacksonFactory();
+    private static final Gson GSON = new Gson();
+
+    protected GoogleClientSecrets clientSecrets;
+    protected GoogleCredential credential;
+    protected Plus plus;
+
+    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(5, 20));
+
+    ListenableFuture providerTaskComplete;
+
+    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
+        return new ThreadPoolExecutor(nThreads, nThreads,
+                5000L, TimeUnit.MILLISECONDS,
+                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
+    }
+
+    public GPlusProvider() {
+        Config config = StreamsConfigurator.config.getConfig("gplus");
+        this.config = GPlusConfigurator.detectConfiguration(config);
+    }
+
+    public GPlusProvider(GPlusConfiguration config) {
+        this.config = config;
+    }
+
+    public GPlusProvider(Class klass) {
+        Config config = StreamsConfigurator.config.getConfig("gplus");
+        this.config = GPlusConfigurator.detectConfiguration(config);
+        this.klass = klass;
+    }
+
+    public GPlusProvider(GPlusConfiguration config, Class klass) {
+        this.config = config;
+        this.klass = klass;
+    }
+
+    @Override
+    public void startStream() {
+
+        providerTaskComplete = executor.submit(new GPlusHistoryProviderTask(this, "me", "public"));
+
+        for (int i = 0; i < 1; i++) {
+            new Thread(new GPlusEventProcessor(inQueue, providerQueue, klass));
+        }
+
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+
+        startStream();
+
+        while( !providerTaskComplete.isDone()) {
+            try {
+                Thread.sleep(new Random().nextInt(100));
+            } catch (InterruptedException e) { }
+        }
+
+        return new StreamsResultSet(providerQueue);
+
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return null;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+        Preconditions.checkNotNull(this.klass);
+
+        Preconditions.checkNotNull(config.getOauth().getConsumerKey());
+        Preconditions.checkNotNull(config.getOauth().getConsumerSecret());
+        Preconditions.checkNotNull(config.getOauth().getAccessToken());
+        Preconditions.checkNotNull(config.getOauth().getAccessTokenSecret());
+
+        try {
+            credential = new GoogleCredential.Builder()
+                    .setJsonFactory(JSON_FACTORY)
+                    .setTransport(TRANSPORT)
+                    .setClientSecrets(config.getOauth().getConsumerKey(), config.getOauth().getConsumerSecret()).build()
+                    .setFromTokenResponse(JSON_FACTORY.fromString(
+                            config.getOauth().getAccessToken(), GoogleTokenResponse.class));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void cleanUp() {
+        for (int i = 0; i < 1; i++) {
+            inQueue.add(GPlusEventProcessor.TERMINATE);
+        }
+
+        try {
+            executor.awaitTermination(5, TimeUnit.SECONDS);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json b/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json
new file mode 100644
index 0000000..e2d8130
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/jsonschema/com/google/gplus/GPlusConfiguration.json
@@ -0,0 +1,58 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "org.apache.streams.google.gplus.GPlusConfiguration",
+    "properties": {
+        "protocol": {
+            "type": "string",
+            "description": "The protocol"
+        },
+        "host": {
+            "type": "string",
+            "description": "The host"
+        },
+        "port": {
+            "type": "integer",
+            "description": "The port"
+        },
+        "version": {
+            "type": "string",
+            "description": "The version"
+        },
+        "endpoint": {
+            "type": "string",
+            "description": "The endpoint"
+        },
+        "follow": {
+            "type": "array",
+            "description": "A list of user names, indicating the users whose activities should be delivered on the stream",
+            "items": {
+                "type": "string"
+            }
+        },
+        "oauth": {
+            "type": "object",
+            "dynamic": "true",
+            "javaType" : "org.apache.streams.google.gplus.GPlusOAuthConfiguration",
+            "javaInterfaces": ["java.io.Serializable"],
+            "properties": {
+                "appName": {
+                    "type": "string"
+                },
+                "consumerKey": {
+                    "type": "string"
+                },
+                "consumerSecret": {
+                    "type": "string"
+                },
+                "accessToken": {
+                    "type": "string"
+                },
+                "accessTokenSecret": {
+                    "type": "string"
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf b/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf
new file mode 100644
index 0000000..c6c1e01
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/main/resources/reference.conf
@@ -0,0 +1,11 @@
+gplus {
+    protocol = "https"
+    host = "www.googleapis.com/plus"
+    port = 443
+    version = "v1"
+    endpoint = "people/me/activities/public?maxResults=100"
+    filter-level = "none"
+    oauth {
+        appName = "Apache Streams"
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
new file mode 100644
index 0000000..e9641fc
--- /dev/null
+++ b/streams-contrib/streams-provider-google/google-gplus/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
@@ -0,0 +1,53 @@
+package com.google.gmail.test;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.junit.Assert;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: sblackmon
+ * Date: 8/20/13
+ * Time: 5:57 PM
+ * To change this template use File | Settings | File Templates.
+ */
+@Ignore
+public class GMailMessageSerDeTest {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(GMailMessageSerDeTest.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    @Ignore
+    @Test
+    public void Tests()
+    {
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
+        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
+
+        InputStream is = GMailMessageSerDeTest.class.getResourceAsStream("/datasift_jsons.txt");
+        InputStreamReader isr = new InputStreamReader(is);
+        BufferedReader br = new BufferedReader(isr);
+
+        try {
+            while (br.ready()) {
+                String line = br.readLine();
+                LOGGER.debug(line);
+
+                // implement
+            }
+        } catch( Exception e ) {
+            e.printStackTrace();
+            Assert.fail();
+        }
+    }
+}


[05/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streamsCamelContext.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streamsCamelContext.xml b/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streamsCamelContext.xml
deleted file mode 100644
index 4360f39..0000000
--- a/trunk/streams-eip-routes/src/main/resources/META-INF/spring/streamsCamelContext.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:osgi="http://www.springframework.org/schema/osgi"
-       xsi:schemaLocation="
-       http://www.springframework.org/schema/beans
-       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
-       http://camel.apache.org/schema/spring
-       http://camel.apache.org/schema/spring/camel-spring-2.0.0.xsd
-       http://www.springframework.org/schema/osgi
-       http://www.springframework.org/schema/osgi/spring-osgi.xsd">
-
-
-
-
-    <camelContext id="context" xmlns="http://camel.apache.org/schema/spring">
-
-        <endpoint id="consumerRegistrationEndpoint" uri="${consumer.registrationEndpoint}"/>
-        <endpoint id="subscriberRegistrationEndpoint" uri="${subscriber.registrationEndpoint}"/>
-        <!--publisher registration route setup -->
-        <route>
-            <from uri="ref:consumerRegistrationEndpoint"/>
-                <bean ref="activityRegistrationProcessor" />
-            <to uri="direct:publisher-register"/>
-        </route>
-
-        <route>
-            <from uri="direct:publisher-register"/>
-                <bean ref="activityPublisherRegistration" method="register"/>
-            <to uri="direct:add-publisher-route"/>
-        </route>
-
-        <route>
-            <from uri="direct:add-publisher-route"/>
-                <bean ref="activityConsumerRouter" method="createNewRouteForConsumer"/>
-            <to uri="log:ExampleLog"/>
-        </route>
-
-        <!--split activities on Q, waiting for aggregation -->
-        <route>
-            <from uri="direct:activityQ"/>
-            <inOnly uri="activemq:queue:activities"/>
-        </route>
-
-        <route>
-            <from uri="activemq:queue:activities"/>
-            <aggregate completionInterval="500" groupExchanges="true">
-                <correlationExpression>
-                    <constant>true</constant>
-                </correlationExpression>
-                <bean ref="activityService" method="receiveExchange"/>
-            </aggregate>
-        </route>
-
-
-        <!-- register as a subscriber - returned the endpoint to poll and add to subscription sources - GET/POST -->
-        <route>
-            <from uri="ref:subscriberRegistrationEndpoint"/>
-                <bean ref="subscriberRegistrationProcessor" />
-            <to uri="direct:subscriber-register"/>
-        </route>
-
-        <route>
-            <from uri="direct:subscriber-register"/>
-                <bean ref="activityStreamsSubscriberRegistration" method="register"/>
-            <to uri="direct:add-subscriber-route"/>
-        </route>
-
-        <route>
-            <from uri="direct:add-subscriber-route"/>
-            <bean ref="activityStreamsSubscriberRouter" method="createNewRouteForSubscriber"/>
-            <to uri="log:ExampleLog"/>
-        </route>
-
-
-    </camelContext>
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/main/resources/META-INF/streams.properties
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/main/resources/META-INF/streams.properties b/trunk/streams-eip-routes/src/main/resources/META-INF/streams.properties
deleted file mode 100644
index b7bbfce..0000000
--- a/trunk/streams-eip-routes/src/main/resources/META-INF/streams.properties
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# 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.
-#
-
-servlet.baseUrlPath=http://localhost:8080/streams-web/
-
-consumer.inRouteHost=localhost
-consumer.inRoutePort=8000
-consumer.activityQUri = direct:activityQ
-
-consumer.publisherEndpointProtocol=jetty:http://
-consumer.publisherEndpointUrlResource=streams/publish
-consumer.receiveMethod=receive
-consumer.splitMethod=split
-
-consumer.registrationEndpoint=jetty:http://localhost:8000/streams/publisher/register
-
-subscriber.inRouteHost=localhost
-subscriber.inRoutePort=8000
-subscriber.subscriberEndpointUrlResource=streams/subscriber
-subscriber.receiveMethod=receive
-subscriber.postMethod=updateActivityStreamsSubscriberConfiguration
-subscriber.getMethod=getStream
-subscriber.registrationEndpoint=jetty:http://localhost:8000/streams/subscriber/register
-subscriber.subscriberEndpointProtocol=jetty:http://
-
-activemq.jmsConnectionFactoryUrl=tcp://localhost:61616
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-eip-routes/src/test/java/org/apache/streams/messaging/service/impl/CassandraActivityServiceTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-eip-routes/src/test/java/org/apache/streams/messaging/service/impl/CassandraActivityServiceTest.java b/trunk/streams-eip-routes/src/test/java/org/apache/streams/messaging/service/impl/CassandraActivityServiceTest.java
deleted file mode 100644
index d22826f..0000000
--- a/trunk/streams-eip-routes/src/test/java/org/apache/streams/messaging/service/impl/CassandraActivityServiceTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * 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.messaging.service.impl;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import static org.easymock.EasyMock.*;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-public class CassandraActivityServiceTest {
-
-    private CassandraActivityService cassandraActivityService;
-
-    @Before
-    public void setup(){
-//        cassandraActivityService = new CassandraActivityService();
-    }
-
-    @Ignore
-    @Test
-    public void getActivititiesForFilterTest(){
-        List<String> activities = cassandraActivityService.getActivitiesForFilters(Arrays.asList("r501"), new Date(0));
-    }
-
-    @Ignore
-    @Test
-    public void receiveExchangeTest(){
-        Exchange e = createMock(Exchange.class);
-        List<Exchange> grouped = new ArrayList<Exchange>();
-        Exchange e2 = createMock(Exchange.class);
-        grouped.add(e2);
-        Message m = createMock(Message.class);
-
-        String activityJson = "{\n" +
-                "\"id\":\"id2\",\n" +
-                "\"verb\":\"verb2\",\n" +
-                "\"displayName\":\"displayname2\",\n" +
-                "\"target\":{\n" +
-                "\t\"id\":\"targetid2\",\n" +
-                "\t\"displayName\":\"targetname2\"\n" +
-                "\t},\n" +
-                "\t\"object\":{\n" +
-                "\t\"id\":\"objectid2\",\n" +
-                "\t\"displayName\":\"objectname2\"\n" +
-                "\t},\n" +
-                "\t\"actor\":{\n" +
-                "\t\"id\":\"actorid2\",\n" +
-                "\t\"displayName\":\"actorname2\"\n" +
-                "\t}\n" +
-                "\t\n" +
-                "\t}";
-
-        expect(e.getProperty(Exchange.GROUPED_EXCHANGE, List.class)).andReturn(grouped);
-        expect(e2.getIn()).andReturn(m);
-        expect(m.getBody(String.class)).andReturn(activityJson);
-
-        replay(e, e2, m);
-
-        cassandraActivityService.receiveExchange(e);
-        //List<String> myTest = cassandraActivityService.getActivitiesForQuery("select * from coltest");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/osgi.bnd
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/osgi.bnd b/trunk/streams-osgi-components/activity-consumer/osgi.bnd
deleted file mode 100644
index 55bbd6d..0000000
--- a/trunk/streams-osgi-components/activity-consumer/osgi.bnd
+++ /dev/null
@@ -1,5 +0,0 @@
-#-----------------------------------------------------------------
-# Use this file to add customized Bnd instructions for the bundle
-#-----------------------------------------------------------------
-
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/pom.xml b/trunk/streams-osgi-components/activity-consumer/pom.xml
deleted file mode 100644
index aa03c47..0000000
--- a/trunk/streams-osgi-components/activity-consumer/pom.xml
+++ /dev/null
@@ -1,150 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams.osgi.components</groupId>
-    <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>activity-consumer</artifactId>
-  <name>${bundle.symbolicName} [${bundle.namespace}]</name>
-
-  <packaging>bundle</packaging>
-
-  <properties>
-    <bundle.symbolicName>activity-consumer-bundle</bundle.symbolicName>
-    <bundle.namespace>org.apache.streams.osgi.components.activityconsumer</bundle.namespace>
-    <commons.log>1.1</commons.log><!--
-    <jackson.version>1.9.11</jackson.version>-->
-      <jackson.old.version>1.9.11</jackson.old.version>
-  </properties>
-
-  <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-            <!--
-             | example additional resource entries, useful when building Eclipse RCP applications
-            -->
-            <resource>
-                <directory>.</directory>
-                <includes>
-                    <include>plugin.xml</include>
-                    <include>plugin.properties</include>
-                    <include>icons/**</include>
-                </includes>
-            </resource>
-        </resources>
-        <plugins>
-
-            <plugin>
-                <groupId>org.ops4j</groupId>
-                <artifactId>maven-pax-plugin</artifactId>
-                <!--
-                 | enable improved OSGi compilation support for the bundle life-cycle.
-                 | to switch back to the standard bundle life-cycle, move this setting
-                 | down to the maven-bundle-plugin section
-                -->
-                <extensions>true</extensions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>1.4.3</version>
-                <!--
-                 | the following instructions build a simple set of public/private classes into an OSGi bundle
-                -->
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-                        <Bundle-Version>${project.version}</Bundle-Version>
-                        <Export-Package>${bundle.namespace};version="${project.version}",org.apache.streams.osgi.components.activityconsumer.impl</Export-Package>
-                        <Private-Package>${bundle.namespace}.impl.*</Private-Package>
-                        <Import-Package>org.apache.streams.osgi.components.activityconsumer,org.apache.streams.osgi.components.activityconsumer.impl,org.apache.commons.logging,org.codehaus.jackson.*;version="${jackson.version}",javax.xml.datatype, javax.xml.namespace, javax.xml.parsers, org.joda.time, org.joda.time.format, org.w3c.dom, org.w3c.dom.bootstrap, org.w3c.dom.ls, org.xml.sax, org.apache.rave.model, org.apache.rave.portal.model.impl, org.apache.streams.cassandra.model
-                        </Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_core</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mrbean</artifactId>
-            <version>${jackson.old.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-            <version>${jackson.old.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_compendium</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging-api</artifactId>
-            <version>${commons.log}</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.rave</groupId>
-            <artifactId>rave-core</artifactId>
-            <version>${rave.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.rave</groupId>
-            <artifactId>rave-core-api</artifactId>
-            <version>${rave.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-cassandra</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-
-    </dependencies>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumer.java b/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumer.java
deleted file mode 100644
index 1f7553b..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.apache.streams.osgi.components.activityconsumer;
-
-
-import org.codehaus.jackson.annotate.JsonTypeInfo;
-
-import java.net.URI;
-
-
-@JsonTypeInfo(use= JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
-public interface ActivityConsumer {
-    public String receive(String activity);
-    public void init();
-    public URI getSrc();
-    public void setSrc(String src);
-    public void setInRoute(String route);
-    public String getInRoute();
-    public String getAuthToken();
-    public void setAuthToken(String token);
-    public boolean isAuthenticated();
-    public void setAuthenticated(boolean authenticated);
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumerWarehouse.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumerWarehouse.java b/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumerWarehouse.java
deleted file mode 100644
index 96ca70a..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/ActivityConsumerWarehouse.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.streams.osgi.components.activityconsumer;
-
-/**
- * Public API representing an example OSGi service
- */
-public interface ActivityConsumerWarehouse {
-
-    public void register(ActivityConsumer activityConsumer);
-    public ActivityConsumer findConsumerBySrc(String src);
-    public int getConsumersCount();
-
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/ActivityConsumerWarehouseImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/ActivityConsumerWarehouseImpl.java b/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/ActivityConsumerWarehouseImpl.java
deleted file mode 100644
index 6a99882..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/ActivityConsumerWarehouseImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.apache.streams.osgi.components.activityconsumer.impl;
-
-import java.util.Date;
-import java.util.HashMap;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumerWarehouse;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumer;
-
-public class ActivityConsumerWarehouseImpl implements ActivityConsumerWarehouse {
-    private static final transient Log LOG = LogFactory.getLog(ActivityConsumerWarehouseImpl.class);
-
-    private HashMap<String,ActivityConsumer> consumers;
-
-    public ActivityConsumerWarehouseImpl(){
-        consumers = new HashMap<String, ActivityConsumer>();
-    }
-
-    public void register(ActivityConsumer activityConsumer) {
-
-        //key in warehouse is the activity publisher URI source
-        consumers.put(activityConsumer.getSrc().toASCIIString(), activityConsumer);
-        activityConsumer.init();
-
-
-    }
-
-    public ActivityConsumer findConsumerBySrc(String src){
-        return consumers.get(src);
-    }
-
-
-    public int getConsumersCount(){
-        return consumers.size();
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/PushActivityConsumer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/PushActivityConsumer.java b/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/PushActivityConsumer.java
deleted file mode 100644
index 38f1c5c..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/java/org/apache/streams/osgi/components/activityconsumer/impl/PushActivityConsumer.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package org.apache.streams.osgi.components.activityconsumer.impl;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.cassandra.model.CassandraActivityStreamsEntry;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumer;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.ArrayList;
-
-public class PushActivityConsumer implements ActivityConsumer {
-
-    private static final transient Log LOG = LogFactory.getLog(PushActivityConsumer.class);
-
-    private URI src;
-
-
-    private String authToken;
-
-    private boolean authenticated;
-
-    private String inRoute;
-
-    public PushActivityConsumer(){
-    }
-
-
-    public URI getSrc() {
-        return src;
-    }
-
-    public void setSrc(String src) {
-        try{
-            this.src = new URI(src);
-
-        } catch (URISyntaxException e) {
-           this.src=null;
-        }
-    }
-
-    public String getAuthToken() {
-        return authToken;
-    }
-
-    public void setAuthToken(String authToken) {
-        this.authToken = authToken;
-    }
-
-    public boolean isAuthenticated() {
-        return authenticated;
-    }
-
-    public void setAuthenticated(boolean authenticated) {
-        this.authenticated = authenticated;
-    }
-
-    public String receive (String activity){
-        //receive activities...do anything that is necessary
-        LOG.info("a message I published: " + activity);
-        return activity;
-        //pass off to activity splitter
-
-    }
-
-    public List<String> split(String activities) {
-        LOG.info("I am going to split this message: " + activities);
-
-        List<String> activitiesList = new ArrayList<String>();
-        activitiesList.add(activities);
-        return activitiesList;
-    }
-
-    public void init(){
-        //any initialization...
-    }
-
-    public String getInRoute() {
-        return inRoute;
-    }
-
-    public void setInRoute(String inRoute) {
-        this.inRoute = inRoute;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-context.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-context.xml b/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-context.xml
deleted file mode 100644
index 3507e27..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-context.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-    <!-- regular spring configuration file defining the beans for this
-bundle. The configuration of OSGi definitions is kept in a separate
-configuration file so that this file can easily be used
-for integration testing outside of an OSGi environment -->
-    <bean id="activityConsumerWarehouse" class="org.apache.streams.osgi.components.activityconsumer.impl.ActivityConsumerWarehouseImpl"/>
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-osgi.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-osgi.xml b/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-osgi.xml
deleted file mode 100644
index 2c46c12..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/resources/META-INF/spring/activity-consumer-osgi.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:osgi="http://www.springframework.org/schema/osgi"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-	http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://www.springframework.org/schema/osgi
-    http://www.springframework.org/schema/osgi/spring-osgi.xsd">
-
-    <osgi:service ref="activityConsumerWarehouse" interface="org.apache.streams.osgi.components.activityconsumer.ActivityConsumerWarehouse"/>
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-consumer/src/main/resources/readme.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-consumer/src/main/resources/readme.txt b/trunk/streams-osgi-components/activity-consumer/src/main/resources/readme.txt
deleted file mode 100644
index 5774586..0000000
--- a/trunk/streams-osgi-components/activity-consumer/src/main/resources/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Bundle resources go here

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/osgi.bnd
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/osgi.bnd b/trunk/streams-osgi-components/activity-registration/osgi.bnd
deleted file mode 100644
index 55bbd6d..0000000
--- a/trunk/streams-osgi-components/activity-registration/osgi.bnd
+++ /dev/null
@@ -1,5 +0,0 @@
-#-----------------------------------------------------------------
-# Use this file to add customized Bnd instructions for the bundle
-#-----------------------------------------------------------------
-
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/pom.xml b/trunk/streams-osgi-components/activity-registration/pom.xml
deleted file mode 100644
index 9ab8a74..0000000
--- a/trunk/streams-osgi-components/activity-registration/pom.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams.osgi.components</groupId>
-    <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>activity-registration</artifactId>
-
-  <name>${bundle.symbolicName} [${bundle.namespace}]</name>
-
-  <packaging>bundle</packaging>
-
-  <properties>
-    <bundle.symbolicName>activity-registration-bundle</bundle.symbolicName>
-    <bundle.namespace>org.apache.streams.osgi.components</bundle.namespace>
-    <commons.log>1.1</commons.log>
-  </properties>
-
-  <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-            <!--
-             | example additional resource entries, useful when building Eclipse RCP applications
-            -->
-            <resource>
-                <directory>.</directory>
-                <includes>
-                    <include>plugin.xml</include>
-                    <include>plugin.properties</include>
-                    <include>icons/**</include>
-                </includes>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.ops4j</groupId>
-                <artifactId>maven-pax-plugin</artifactId>
-                <!--
-                 | enable improved OSGi compilation support for the bundle life-cycle.
-                 | to switch back to the standard bundle life-cycle, move this setting
-                 | down to the maven-bundle-plugin section
-                -->
-                <extensions>true</extensions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>1.4.3</version>
-                <!--
-                 | the following instructions build a simple set of public/private classes into an OSGi bundle
-                -->
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-                        <Bundle-Version>${project.version}</Bundle-Version>
-                        <Export-Package>${bundle.namespace};version="${project.version}"</Export-Package>
-                        <Private-Package>${bundle.namespace}.impl.*</Private-Package>
-                        <Import-Package>org.apache.streams.osgi.components.activityconsumer.impl,org.apache.streams.osgi.components.activityconsumer,org.apache.streams.osgi.components.activitysubscriber,org.apache.streams.osgi.components.activitysubscriber.impl,org.apache.commons.logging, org.codehaus.jackson.map</Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_core</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_compendium</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging-api</artifactId>
-            <version>${commons.log}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-consumer</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-subscriber</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityPublisherRegistration.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityPublisherRegistration.java b/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityPublisherRegistration.java
deleted file mode 100644
index 1da3fa6..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityPublisherRegistration.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.apache.streams.osgi.components;
-
-/**
- * Public API representing an example OSGi service
- */
-public interface ActivityPublisherRegistration {
-
-    public Object register(Object obj);
-
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityStreamsSubscriberRegistration.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityStreamsSubscriberRegistration.java b/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityStreamsSubscriberRegistration.java
deleted file mode 100644
index 54de6e1..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/ActivityStreamsSubscriberRegistration.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.apache.streams.osgi.components;
-
-/**
- * Public API representing an example OSGi service
- */
-public interface ActivityStreamsSubscriberRegistration {
-
-    public Object register(Object obj);
-
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityPublisherRegistrationImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityPublisherRegistrationImpl.java b/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityPublisherRegistrationImpl.java
deleted file mode 100644
index f0b8649..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityPublisherRegistrationImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.apache.streams.osgi.components.impl;
-
-import java.util.Date;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.osgi.components.ActivityPublisherRegistration;
-import org.apache.streams.osgi.components.activityconsumer.ActivityConsumer;
-import org.apache.streams.osgi.components.activityconsumer.impl.PushActivityConsumer;
-
-public class ActivityPublisherRegistrationImpl implements ActivityPublisherRegistration {
-    private static final transient Log LOG = LogFactory.getLog(ActivityPublisherRegistrationImpl.class);
-    private boolean verbose = true;
-    private String prefix = "Activity Publisher Registration";
-
-    public Object register(Object body) {
-
-        //authorize this producer based on some rule set...
-        //create a new ActivityConsumer...
-        //using the URI supplied to set it up...
-        //return the consumer for addition to the consumer warehouse
-
-        String answer = prefix + " set body:  " + body + " " + new Date();
-        LOG.info(">> call >>" + answer);
-
-
-        ActivityConsumer activityConsumer =(ActivityConsumer)body;
-        //authenticate..
-        activityConsumer.setAuthenticated(true);
-        return activityConsumer;
-    }
-
-
-    public boolean isVerbose() {
-        return verbose;
-    }
-
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityStreamsSubscriberRegistrationImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityStreamsSubscriberRegistrationImpl.java b/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityStreamsSubscriberRegistrationImpl.java
deleted file mode 100644
index 0992cbe..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/java/org/apache/streams/osgi/components/impl/ActivityStreamsSubscriberRegistrationImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.apache.streams.osgi.components.impl;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.osgi.components.ActivityStreamsSubscriberRegistration;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-import org.apache.streams.osgi.components.activitysubscriber.impl.ActivityStreamsSubscriberDelegate;
-
-public class ActivityStreamsSubscriberRegistrationImpl implements ActivityStreamsSubscriberRegistration {
-    private static final transient Log LOG = LogFactory.getLog(ActivityStreamsSubscriberRegistrationImpl.class);
-    private boolean verbose = true;
-    private String prefix = "Activity Subscriber Registration";
-
-    public Object register(Object body) {
-
-        //authorize this subscriber based on some rule set...
-        //create a new SubscriberDelegate...
-        //using the URI supplied to set it up...
-        //return the consumer for addition to the consumer warehouse
-
-        ActivityStreamsSubscription configuration = (ActivityStreamsSubscription)body;
-
-        ActivityStreamsSubscriberDelegate delegate =    new ActivityStreamsSubscriberDelegate(configuration);
-        //authenticate
-        delegate.setAuthenticated(true);
-
-
-
-        return  delegate;
-    }
-
-
-
-    public boolean isVerbose() {
-        return verbose;
-    }
-
-    public void setVerbose(boolean verbose) {
-        this.verbose = verbose;
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-
-    public void setPrefix(String prefix) {
-        this.prefix = prefix;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context-osgi.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context-osgi.xml b/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context-osgi.xml
deleted file mode 100644
index f4d0cb7..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context-osgi.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:osgi="http://www.springframework.org/schema/osgi"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-	http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://www.springframework.org/schema/osgi
-    http://www.springframework.org/schema/osgi/spring-osgi.xsd">
-
-    <osgi:service ref="activityPublisherRegistration" interface="org.apache.streams.osgi.components.ActivityPublisherRegistration"/>
-    <osgi:service ref="activityStreamsSubscriberRegistration" interface="org.apache.streams.osgi.components.ActivityStreamsSubscriberRegistration"/>
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context.xml b/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context.xml
deleted file mode 100644
index 287053d..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/resources/META-INF/spring/activity-registration-context.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-    <!-- regular spring configuration file defining the beans for this
-bundle. The configuration of OSGi definitions is kept in a separate
-configuration file so that this file can easily be used
-for integration testing outside of an OSGi environment -->
-    <bean id="activityPublisherRegistration" class="org.apache.streams.osgi.components.impl.ActivityPublisherRegistrationImpl"/>
-    <bean id="activityStreamsSubscriberRegistration" class="org.apache.streams.osgi.components.impl.ActivityStreamsSubscriberRegistrationImpl"/>
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-registration/src/main/resources/readme.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-registration/src/main/resources/readme.txt b/trunk/streams-osgi-components/activity-registration/src/main/resources/readme.txt
deleted file mode 100644
index 5774586..0000000
--- a/trunk/streams-osgi-components/activity-registration/src/main/resources/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Bundle resources go here

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/osgi.bnd
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/osgi.bnd b/trunk/streams-osgi-components/activity-subscriber/osgi.bnd
deleted file mode 100644
index 55bbd6d..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/osgi.bnd
+++ /dev/null
@@ -1,5 +0,0 @@
-#-----------------------------------------------------------------
-# Use this file to add customized Bnd instructions for the bundle
-#-----------------------------------------------------------------
-
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/pom.xml b/trunk/streams-osgi-components/activity-subscriber/pom.xml
deleted file mode 100644
index 367fee7..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/pom.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams.osgi.components</groupId>
-    <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>activity-subscriber</artifactId>
-
-  <name>${bundle.symbolicName} [${bundle.namespace}]</name>
-
-  <packaging>bundle</packaging>
-
-  <properties>
-    <bundle.symbolicName>activity-subscriber-bundle</bundle.symbolicName>
-    <bundle.namespace>org.apache.streams.osgi.components.activitysubscriber</bundle.namespace>
-    <commons.log>1.1</commons.log>
-    <jackson.version>1.9.11</jackson.version>
-  </properties>
-
-  <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-            <!--
-             | example additional resource entries, useful when building Eclipse RCP applications
-            -->
-            <resource>
-                <directory>.</directory>
-                <includes>
-                    <include>plugin.xml</include>
-                    <include>plugin.properties</include>
-                    <include>icons/**</include>
-                </includes>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.ops4j</groupId>
-                <artifactId>maven-pax-plugin</artifactId>
-                <!--
-                 | enable improved OSGi compilation support for the bundle life-cycle.
-                 | to switch back to the standard bundle life-cycle, move this setting
-                 | down to the maven-bundle-plugin section
-                -->
-                <extensions>true</extensions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>1.4.3</version>
-                <!--
-                 | the following instructions build a simple set of public/private classes into an OSGi bundle
-                -->
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
-                        <Bundle-Version>${project.version}</Bundle-Version>
-                        <Export-Package>${bundle.namespace};version="${project.version}",org.apache.streams.osgi.components.activitysubscriber.impl</Export-Package>
-                        <Private-Package>${bundle.namespace}.impl.*</Private-Package>
-                        <Import-Package>org.apache.streams.osgi.components.activitysubscriber,org.apache.commons.logging,org.codehaus.jackson.*;version="${jackson.version}",javax.xml.datatype, javax.xml.namespace, javax.xml.parsers, org.joda.time, org.joda.time.format, org.w3c.dom, org.w3c.dom.bootstrap, org.w3c.dom.ls, org.xml.sax</Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_core</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mrbean</artifactId>
-            <version>${jackson.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-            <version>${jackson.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi_R4_compendium</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging-api</artifactId>
-            <version>${commons.log}</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriber.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriber.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriber.java
deleted file mode 100644
index a00aeef..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriber.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber;
-
-
-import java.util.Date;
-import java.util.List;
-
-public interface ActivityStreamsSubscriber {
-    public void receive(List<String> activity);
-    public String getStream();
-    public void init();
-    public void setInRoute(String route);
-    public String getInRoute();
-    public void setActivityStreamsSubscriberConfiguration(ActivityStreamsSubscription config);
-    public void updateActivityStreamsSubscriberConfiguration(String config);
-    public boolean isAuthenticated();
-    public void setAuthenticated(boolean authenticated);
-    public ActivityStreamsSubscription getActivityStreamsSubscriberConfiguration();
-    Date getLastUpdated();
-    void setLastUpdated(Date lastUpdated);
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriberWarehouse.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriberWarehouse.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriberWarehouse.java
deleted file mode 100644
index 0c6d4e7..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriberWarehouse.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber;
-
-import java.util.ArrayList;
-
-/**
- * Public API representing an example OSGi service
- */
-public interface ActivityStreamsSubscriberWarehouse {
-
-    public void register(ActivityStreamsSubscriber activitySubscriber);
-
-    public ArrayList<ActivityStreamsSubscriber> findSubscribersByFilters(String src);
-
-    public ArrayList<ActivityStreamsSubscriber> getAllSubscribers();
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscription.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscription.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscription.java
deleted file mode 100644
index 4017cc3..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscription.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber;
-
-import org.codehaus.jackson.annotate.JsonTypeInfo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@JsonTypeInfo(use= JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
-public interface ActivityStreamsSubscription {
-
-    public void setFilters(List<String> filters);
-    public List<String> getFilters();
-
-    public List<ActivityStreamsSubscriptionOutput> getActivityStreamsSubscriptionOutputs();
-    public void setActivityStreamsSubscriptionOutputs(List<ActivityStreamsSubscriptionOutput> outputs);
-
-    public String getAuthToken();
-    public void setAuthToken(String token);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionFilter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionFilter.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionFilter.java
deleted file mode 100644
index c63a1ef..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionFilter.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber;
-
-import org.codehaus.jackson.annotate.JsonTypeInfo;
-
-@JsonTypeInfo(use= JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")
-public interface ActivityStreamsSubscriptionFilter {
-
-
-
-    public void setQuery(String query);
-
-    public String getQuery();
-
-    public boolean evaluate(String activity);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionOutput.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionOutput.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionOutput.java
deleted file mode 100644
index 23b270f..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/ActivityStreamsSubscriptionOutput.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber;
-
-public interface ActivityStreamsSubscriptionOutput {
-
-    public String getOutputType();
-    public void setOutputType(String outputType);
-
-    public String getMethod();
-    public void setMethod(String method);
-
-    public String getUrl();
-    public void setUrl(String url);
-
-    public String getDeliveryFrequency();
-    public void setDeliveryFrequency(String deliveryFrequency);
-
-    public String getMaxSize();
-    public void setMaxSize(int maxSize);
-
-    public String getAuthType();
-    public void setAuthType(String authType);
-
-    public String getUsername();
-    public void setUsername(String username);
-
-    public String getPassword();
-    public void setPassword(String password);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberDelegate.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberDelegate.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberDelegate.java
deleted file mode 100644
index e41cfa4..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberDelegate.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber.impl;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriber;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-import org.codehaus.jackson.map.DeserializationConfig;
-import org.codehaus.jackson.map.ObjectMapper;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-public class ActivityStreamsSubscriberDelegate implements ActivityStreamsSubscriber {
-
-    private static final transient Log LOG = LogFactory.getLog(ActivityStreamsSubscriberDelegate.class);
-
-    private boolean authenticated;
-
-    private ActivityStreamsSubscription activityStreamsSubscriberConfiguration;
-
-    private String inRoute;
-
-    //an individual subscriber gets ONE stream which is an aggregation of all its SRCs
-    private List<String> stream;
-
-    private Date lastUpdated;
-
-
-    public ActivityStreamsSubscriberDelegate(ActivityStreamsSubscription configuration){
-        setActivityStreamsSubscriberConfiguration(configuration);
-        stream = new ArrayList<String>();
-        lastUpdated = new Date(0);
-    }
-
-
-    public ActivityStreamsSubscription getActivityStreamsSubscriberConfiguration() {
-        return activityStreamsSubscriberConfiguration;
-    }
-
-    public void setActivityStreamsSubscriberConfiguration(ActivityStreamsSubscription activityStreamsSubscriberConfiguration) {
-        this.activityStreamsSubscriberConfiguration = activityStreamsSubscriberConfiguration;
-    }
-
-    public void updateActivityStreamsSubscriberConfiguration(String activityStreamsSubscriberConfiguration) {
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);
-
-        try {
-            // read from file, convert it to user class
-            ActivityStreamsSubscription configuration = mapper.readValue(activityStreamsSubscriberConfiguration, ActivityStreamsSubscriptionImpl.class);
-            this.activityStreamsSubscriberConfiguration = configuration;
-
-        } catch (Exception e) {
-            LOG.info("exception" + e);
-
-        }
-
-    }
-
-    public boolean isAuthenticated() {
-        return authenticated;
-    }
-
-    public void setAuthenticated(boolean authenticated) {
-        this.authenticated = authenticated;
-    }
-
-    public String getInRoute() {
-        return inRoute;
-    }
-
-    public void setInRoute(String inRoute) {
-        this.inRoute = inRoute;
-    }
-
-    public void receive (List<String> activity){
-        //add new activities to stream
-        LOG.info("adding activities to subscription stream");
-        stream.addAll(0,activity);
-    }
-
-    //return the list of activities (stream) as a json string
-    public String getStream() {
-
-        return stream.toString();
-    }
-
-    public Date getLastUpdated() {
-        return lastUpdated;
-    }
-
-    public void setLastUpdated(Date lastUpdated) {
-        this.lastUpdated = lastUpdated;
-    }
-
-    public void init(){
-        //any initialization... gets called directly after registration
-
-
-
-    }
-
-
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberWarehouseImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberWarehouseImpl.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberWarehouseImpl.java
deleted file mode 100644
index 9357196..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriberWarehouseImpl.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriber;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriberWarehouse;
-
-
-public class ActivityStreamsSubscriberWarehouseImpl implements ActivityStreamsSubscriberWarehouse {
-    private static final transient Log LOG = LogFactory.getLog(ActivityStreamsSubscriberWarehouseImpl.class);
-
-    private ArrayList<ActivityStreamsSubscriber> subscribers;
-
-    public ActivityStreamsSubscriberWarehouseImpl(){
-        subscribers = new ArrayList<ActivityStreamsSubscriber>();
-    }
-
-    public void register(ActivityStreamsSubscriber activitySubscriber) {
-
-        if (!subscribers.contains(activitySubscriber)){
-            subscribers.add(activitySubscriber);
-            activitySubscriber.init();
-        }
-
-    }
-
-
-    //the warehouse can do some interesting things to make the filtering efficient i think...
-    public ArrayList<ActivityStreamsSubscriber> findSubscribersByFilters(String src){
-        return subscribers;
-    }
-
-
-    public ArrayList<ActivityStreamsSubscriber> getAllSubscribers(){
-        return subscribers;
-    }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionCassandraFilterImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionCassandraFilterImpl.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionCassandraFilterImpl.java
deleted file mode 100644
index 20713a6..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionCassandraFilterImpl.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber.impl;
-
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriptionFilter;
-
-import java.util.List;
-
-public class ActivityStreamsSubscriptionCassandraFilterImpl implements ActivityStreamsSubscriptionFilter {
-    private String query;
-    private List<String> filters;
-
-    public ActivityStreamsSubscriptionCassandraFilterImpl(){}
-
-    public void setQuery(String query) {
-        this.query=query;
-    }
-
-    public String getQuery() {
-        return query;
-    }
-
-    public boolean evaluate(String activity){
-        return true;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionImpl.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionImpl.java
deleted file mode 100644
index 40389e4..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber.impl;
-
-
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscription;
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriptionOutput;
-
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ActivityStreamsSubscriptionImpl implements ActivityStreamsSubscription {
-
-    @JsonDeserialize(as=ArrayList.class)
-    private List<String> filters;
-
-    @JsonDeserialize(as=ArrayList.class)
-    private List<ActivityStreamsSubscriptionOutput> outputs;
-
-    private String authToken;
-
-    public void setFilters(List<String> filters) {
-        this.filters = filters;
-    }
-
-    @Override
-    public List<ActivityStreamsSubscriptionOutput> getActivityStreamsSubscriptionOutputs() {
-        return outputs;
-    }
-
-    @Override
-    public void setActivityStreamsSubscriptionOutputs(List<ActivityStreamsSubscriptionOutput> outputs) {
-        this.outputs = outputs;
-    }
-
-    @Override
-    public List<String> getFilters(){
-        return filters;
-
-    }
-
-    @Override
-    public String getAuthToken() {
-        return authToken;
-    }
-
-    @Override
-    public void setAuthToken(String auth_token) {
-        this.authToken = auth_token;
-    }
-
-
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionLuceneFilterImpl.java
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionLuceneFilterImpl.java b/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionLuceneFilterImpl.java
deleted file mode 100644
index 4dcb88c..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/java/org/apache/streams/osgi/components/activitysubscriber/impl/ActivityStreamsSubscriptionLuceneFilterImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.apache.streams.osgi.components.activitysubscriber.impl;
-
-
-import org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriptionFilter;
-
-public class ActivityStreamsSubscriptionLuceneFilterImpl implements ActivityStreamsSubscriptionFilter{
-
-    private String query;
-
-
-
-    public void setQuery(String query) {
-        this.query=query;
-    }
-
-    public String getQuery() {
-        return query;
-    }
-
-    public boolean evaluate(String activity){
-        return true;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-context.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-context.xml b/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-context.xml
deleted file mode 100644
index 7fff1ec..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-context.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
-
-    <!-- regular spring configuration file defining the beans for this
-bundle. The configuration of OSGi definitions is kept in a separate
-configuration file so that this file can easily be used
-for integration testing outside of an OSGi environment -->
-    <bean id="activitySubscriberWarehouse" class="org.apache.streams.osgi.components.activitysubscriber.impl.ActivityStreamsSubscriberWarehouseImpl"/>
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-osgi.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-osgi.xml b/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-osgi.xml
deleted file mode 100644
index c83f8b3..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/resources/META-INF/spring/activity-subscriber-osgi.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:osgi="http://www.springframework.org/schema/osgi"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-	http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://www.springframework.org/schema/osgi
-    http://www.springframework.org/schema/osgi/spring-osgi.xsd">
-
-    <osgi:service ref="activitySubscriberWarehouse" interface="org.apache.streams.osgi.components.activitysubscriber.ActivityStreamsSubscriberWarehouse"/>
-
-</beans>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/activity-subscriber/src/main/resources/readme.txt
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/activity-subscriber/src/main/resources/readme.txt b/trunk/streams-osgi-components/activity-subscriber/src/main/resources/readme.txt
deleted file mode 100644
index 5774586..0000000
--- a/trunk/streams-osgi-components/activity-subscriber/src/main/resources/readme.txt
+++ /dev/null
@@ -1 +0,0 @@
-Bundle resources go here

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/pom.xml b/trunk/streams-osgi-components/pom.xml
deleted file mode 100644
index d7f68cd..0000000
--- a/trunk/streams-osgi-components/pom.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-<modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams</groupId>
-    <artifactId>streams-project</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <groupId>org.apache.streams.osgi.components</groupId>
-  <artifactId>streams-osgi-components</artifactId>
-
-  <name>Apache Streams OSGI Components</name>
-
-  <packaging>pom</packaging>
-
-
-  <modules>
-    <module>activity-registration</module>
-    <module>activity-consumer</module>
-    <module>activity-subscriber</module>
-    <module>streams-components-all</module>
-  </modules>
-
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-osgi-components/streams-components-all/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-osgi-components/streams-components-all/pom.xml b/trunk/streams-osgi-components/streams-components-all/pom.xml
deleted file mode 100644
index 7fb055c..0000000
--- a/trunk/streams-osgi-components/streams-components-all/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="MACROMAN"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.streams.osgi.components</groupId>
-    <artifactId>streams-osgi-components</artifactId>
-    <version>0.1-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>streams-components-all</artifactId>
-
-  <name>Apache Streams Components All</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-registration</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-subscriber</artifactId>
-          <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams.osgi.components</groupId>
-            <artifactId>activity-consumer</artifactId>
-          <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-eip-routes</artifactId>
-          <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-cassandra</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
-
-  <packaging>jar</packaging>
-
-    <build>
-     <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-shade-plugin</artifactId>
-        <version>1.7</version>
-        <executions>
-            <execution>
-                <phase>package</phase>
-                <goals>
-                    <goal>shade</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/6ea69f29/trunk/streams-pojo-extensions/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo-extensions/pom.xml b/trunk/streams-pojo-extensions/pom.xml
deleted file mode 100644
index 85796dd..0000000
--- a/trunk/streams-pojo-extensions/pom.xml
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.apache.streams</groupId>
-        <artifactId>streams-project</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>streams-pojo-extensions</artifactId>
-
-    <properties>
-    <streams.version>0.1-SNAPSHOT</streams.version>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>${streams.version}</version>
-        </dependency>
-        <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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</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>-->
-                <!--<artifactId>maven-remote-resources-plugin</artifactId>-->
-                <!--<configuration>-->
-                    <!--<resourceBundles>-->
-                        <!--<resourceBundle>org.apache.streams:shared-resources:${project.version}</resourceBundle>-->
-                    <!--</resourceBundles>-->
-                <!--</configuration>-->
-                <!--<executions>-->
-                    <!--<execution>-->
-                        <!--<id>process-remote-resources</id>-->
-                        <!--<goals>-->
-                            <!--<goal>process</goal>-->
-                        <!--</goals>-->
-                    <!--</execution>-->
-                <!--</executions>-->
-                <!--<configuration>-->
-                    <!--<includes>-->
-                        <!--<include>**/*.json</include>-->
-                    <!--</includes>-->
-                <!--</configuration>-->
-            <!--</plugin>-->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </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/ActivityExtended.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-pojo-extensions/src/main/jsonschema/org/apache/streams/ActivityExtended.json
----------------------------------------------------------------------
diff --git a/trunk/streams-pojo-extensions/src/main/jsonschema/org/apache/streams/ActivityExtended.json b/trunk/streams-pojo-extensions/src/main/jsonschema/org/apache/streams/ActivityExtended.json
deleted file mode 100644
index c900c05..0000000
--- a/trunk/streams-pojo-extensions/src/main/jsonschema/org/apache/streams/ActivityExtended.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "type": "object",
-    "title" : "activity",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.pojo.json.ActivityExtended",
-    "properties": {
-        "extensions": {
-            "type": "object",
-            "dynamic": "true",
-            "required": false,
-            "description": "Extension fields go here.",
-            "javaType" : "org.apache.streams.pojo.json.Extensions"
-        }
-    },
-    "extends": "file://../../../../../../../streams-pojo/src/main/jsonschema/org/apache/streams/pojo/activity.json"
-}
\ No newline at end of file


[22/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.json b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.json
deleted file mode 100644
index 4f63aa7..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-reddit/src/test/resources/RedditEDC.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{"name":"t3_1lemut","permalink":"/r/InfertilityBabies/comments/1lemut/one_milestone_down/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":2,"ups":3,"link_flair_text":null,"title":"ONE MILESTONE DOWN!!","author_flair_css_class":"","author":"beermethestrength","thumbnail":"","created_utc":1377878382.0,"url":"http://www.reddit.com/r/InfertilityBabies/comments/1lemut/one_milestone_down/","stickied":false,"banned_by":null,"domain":"self.InfertilityBabies","id":"1lemut","selftext":"We had our early pregnancy scan today with our RE, and I was shocked to actually see the heartbeat! So shocked in fact, that I immediately burst into tears. The very kind intern grabbed a kleenex for me while the RE continued to look around. Everything looks perfect so far - I'm at 6 weeks 5 days, and the ultrasound reflected that. That puts our due date at 4/20 (haha, won't forget that date). \n\nI just called the OB, who is super popular and apparently difficult to get in with
 , and left a message for a new patient visit. Fingers crossed I hear back by Tuesday. And we scheduled one last visit with the RE for next Friday. Of course I'm still scared, but I can relax a little bit. And I can actually hang that photo on the fridge this time, and not crumple it up and throw it away like I did last October. \n\nSo now we're faced with the dilemma - do we tell the family yet? I'm thinking no, because when I miscarried last year my family was not helpful at all. Plus my mother-in-law is psycho and will call me every fucking day to ask how I'm doing, and I can't take that stress right now. \n\nI just texted my hubby about feeling like we shouldn't tell, and he agrees, so I guess that settles that. :)","distinguished":null,"author_flair_text":"6 time's the charm? IUI #6 worked, due 4/20/14","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2vy6k","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;We had our early pregnan
 cy scan today with our RE, and I was shocked to actually see the heartbeat! So shocked in fact, that I immediately burst into tears. The very kind intern grabbed a kleenex for me while the RE continued to look around. Everything looks perfect so far - I&amp;#39;m at 6 weeks 5 days, and the ultrasound reflected that. That puts our due date at 4/20 (haha, won&amp;#39;t forget that date). &lt;/p&gt;\n\n&lt;p&gt;I just called the OB, who is super popular and apparently difficult to get in with, and left a message for a new patient visit. Fingers crossed I hear back by Tuesday. And we scheduled one last visit with the RE for next Friday. Of course I&amp;#39;m still scared, but I can relax a little bit. And I can actually hang that photo on the fridge this time, and not crumple it up and throw it away like I did last October. &lt;/p&gt;\n\n&lt;p&gt;So now we&amp;#39;re faced with the dilemma - do we tell the family yet? I&amp;#39;m thinking no, because when I miscarried last year my famil
 y was not helpful at all. Plus my mother-in-law is psycho and will call me every fucking day to ask how I&amp;#39;m doing, and I can&amp;#39;t take that stress right now. &lt;/p&gt;\n\n&lt;p&gt;I just texted my hubby about feeling like we shouldn&amp;#39;t tell, and he agrees, so I guess that settles that. :)&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":3,"saved":false,"num_reports":null,"created":1377907182.0,"downs":0,"hidden":false,"likes":null,"subreddit":"InfertilityBabies"},
-{"name":"t3_1lekxw","permalink":"/r/Amsterdam/comments/1lekxw/cold_medicine_in_holland/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":0,"ups":1,"link_flair_text":null,"title":"Cold Medicine in Holland","author_flair_css_class":null,"author":"1upped","thumbnail":"","created_utc":1377876854.0,"url":"http://www.reddit.com/r/Amsterdam/comments/1lekxw/cold_medicine_in_holland/","stickied":false,"banned_by":null,"domain":"self.Amsterdam","id":"1lekxw","selftext":"I have a cold and I'm losing my mind that there are so few over the counter options here. Even benadryl and mucinex aren't sold here!\n\nI'm really only looking for an over the counter expectorant (like mucinex) to help clear the mucus out of my chest. Can someone please recommend something? Do I just have to get a friend to mail it to me from the States? That would truly suck.\n\nThanks!","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"sub
 reddit_id":"t5_2r117","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I have a cold and I&amp;#39;m losing my mind that there are so few over the counter options here. Even benadryl and mucinex aren&amp;#39;t sold here!&lt;/p&gt;\n\n&lt;p&gt;I&amp;#39;m really only looking for an over the counter expectorant (like mucinex) to help clear the mucus out of my chest. Can someone please recommend something? Do I just have to get a friend to mail it to me from the States? That would truly suck.&lt;/p&gt;\n\n&lt;p&gt;Thanks!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377905654.0,"downs":0,"hidden":false,"likes":null,"subreddit":"Amsterdam"},
-{"name":"t3_1ldwu2","permalink":"/r/GunPorn/comments/1ldwu2/remington_msr_1600x1200/","edited":false,"over_18":false,"approved_by":null,"is_self":false,"num_comments":0,"ups":29,"link_flair_text":null,"title":"Remington msr [1600x1200]","author_flair_css_class":null,"author":"SirJilliumz","thumbnail":"http://d.thumbs.redditmedia.com/_g2HL6kdjbIXJ43W.jpg","created_utc":1377844697.0,"url":"http://i.imgur.com/wRAhTyw.jpg","stickied":false,"banned_by":null,"domain":"i.imgur.com","id":"1ldwu2","selftext":"","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2sey3","selftext_html":null,"media_embed":{},"score":26,"saved":false,"num_reports":null,"created":1377873497.0,"downs":3,"hidden":false,"likes":null,"subreddit":"GunPorn"},
-{"name":"t3_1leeb7","permalink":"/r/Fitness/comments/1leeb7/2_year_progress_pics/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":6,"ups":23,"link_flair_text":null,"title":"~2 year progress (pics)","author_flair_css_class":"","author":"adderallnredbull","thumbnail":"","created_utc":1377871202.0,"url":"http://www.reddit.com/r/Fitness/comments/1leeb7/2_year_progress_pics/","stickied":false,"banned_by":null,"domain":"self.Fitness","id":"1leeb7","selftext":"This is my second year progress post to follow my first year one [HERE](http://www.reddit.com/r/Fitness/comments/wgicu/1_year_progress_pics/).\n \n**Info and Stats**\n\nI am 5'11 and 24 years old in a few weeks. I started at 180lb/81kg and ~17% bf and am currently at 173lb/78.6kg and ~9% bf. \n\n    |Aug 2011|July 2012|Feb 2013|Aug 2013\n:---|:---:|:--:|:---: |---:\nWeight|180lb/81kg|165lb/74kg |190lb/86kg |173lb/81kg\nBF % est.|17%|9%|14%|9%\nBench|175lb|255lb|295lb|305lb\nSquat|185lb|295lb|345lb|365
 lb\nDeadlift|205lb|315lb|425lb|465lb\nOHP|115lb|155lb|180lb|195lb\n\n[Some pretty graphs](http://i.imgur.com/pkOWeqYh.png)\n\n**PICS** \n\n[Full album with detailed info here or just click below for single pics](http://imgur.com/a/wqVe8)\n\n[Front Progress](http://i.imgur.com/Pb6op4v.jpg)  + [Back progress](http://i.imgur.com/AxMmkDD.jpg) + [Front Total Progression](http://i.imgur.com/4xpK6fTh.jpg) + [Back Total Progression](http://i.imgur.com/WAEL4NA.jpg) + [Legs doing Leg things](http://i.imgur.com/GNjJT8P.jpg) + [1 year bulk and cut comparison](http://i.imgur.com/cCrQPAP.jpg)+ [Extra back pic](http://i.imgur.com/EqNpYwlh.jpg) + [Leg and body proportions](http://i.imgur.com/g8ZT9NAh.jpg) + [Bonus goofing around pic](http://i.imgur.com/jvoDPB0h.jpg)\n\n\n\n**Quick background recap**\n\nI went from athletic in HS to being an out of shape computer gamer in college. I decided to fix it when I realized I disliked my picture being taken. \n\nSo I started working out in August 2011, 5 da
 ys a week with no set program, terrible nutrition, and bad form. Over the next 6 months I found /r/fitness and other weightlifting sites and quickly improved my nutrition and started doing a split body workout. The next 6 months I started cutting weight and added leg workouts as well (had a nagging knee injury and had to fix computer guy posture).\n\n**Year 2**\n\nAfter my last post I tried bulking on purpose this time with a goal weight of 190lbs/86kg. I tried to gain about 1lb/.45kg a week while still eating the clean healthy food, but just more of it. I decided to keep the same general lifting routine since I had not plateaued. Additionally I started the 9-5 work life in Sept 2012 and it took a couple weeks to get my sleep, nutrition and gym rhythm back. I lift about 2 hours after my dinner (get to gym at 7-8pm) and it takes about 1.5-2 hours including the commute. I eventually hit my goal weight of 190lbs/86kg in February and then decided to do another slow cut to see what kind 
 of progress I had made. I tried to cut weight slowly at about the same rate as I had gained it so I (hopefully) wouldn’t lose everything I gained from bulking. Besides a 10 day, eating everything, no gym vacation in July I stuck to the schedule and it worked out great! My main lifts didn’t drop off during my cut which was better than expected.\n\n**General Diet**\n\nI went by basic macros and not calories when keeping track of food. Since I eat the same things I just tweaked the amounts if I wasn’t gaining/losing weight at the right speeds. I eat 3 meals a day usually with room for 1 snack/protein shake if needed. If I absolutely had to go over my macros for a day I went over on protein. Seasonings don’t get counted and I only use sriracha or low calorie sauces. Stevia is my 0 calorie sweetener of choice.\n\n**Bulking Diet** \n\n45% protein 35% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s\n\n**Breakfast**: medium/larg
 e bowl of rolled oats with almond butter + 5 eggs + large coffee (I add ON Vanilla Whey protein powder to hazelnut coffee for amazingness)\n\n**Lunch**: 1.5lbs/24oz of chicken/leaner beefs/fish + equal size portion of veggies (brassica type veggie preferred) + 80g of your favorite complex carb (brown rice, sweet potato, beans)\n\n**After work dinner**: Dinner is 1lb/16oz of chicken/beef + equal size portion of veggies + 80g of complex carbs again. \n\n**Snack if needed**: Make a shake that fits your needed macros for the day. If you struggle to eat a lot of meat/get enough protein try taking 0% fat plain greek yogurt and add lemon juice and 0 calorie sweetener for a delicious concoction. To cut the acidity try using lemon extract and lemon zest instead of juice. \n\n**Cutting Diet** \n\n50% protein 30% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s\n\n**Breakfast**: small bowl of rolled oats + 2 eggs + large coffee (I add ON Va
 nilla Whey protein powder to hazelnut coffee)\n\n**Lunch**: 2/3lbs/12oz of chicken/leaner beefs/fish + equal size portion of veggies (brassica type veggie preferred) \n\n**After work dinner**: Dinner is 2/3lb/12oz of chicken/lean beef/fish + equal size portion of veggies + half of a small avocado or some other healthy fat. \n\n**Snack if needed**: 0% fat plain greek yogurt mixed with lemon juice, lemon extract, lemon zest and 0 calorie sweetener OR kimchee OR a spinach salad with a bit of goat cheese and balsamic OR seasoned seaweed sheets filled with dried baby shrimp/fish. (you can only pick one....)\n\n**Drinks**: Coffee, Green Tea, Water, Lemon Iced Tea \n\n**Supplements**: Creatine, ON Nutrition Whey protein (vanilla ice cream flavor &lt;3 still tastes like powdered unicorn), Fish Oil, Multivitamin, Vitamin D, Spirulina, Psycillium Husk, only when cutting EC stack and Yohimbine occasionally. Use Examine.com to learn more about these supplements\n\n**Workout Routine** \n\nThese 
 are general standard workouts I do but I frequently swap various auxiliary lifts in and out of rotation all the time. I do lifts in 3 sets of 10-12 with medium weight or 3 sets of 10,8,6 with heavy weights. Usually I am close to failure by the end of 3rd set no matter what. Proper form is the main emphasis during all lifts. I try to increase the weight or # of reps each week or just the difficulty and ROM in general. I do cardio 2-3 times a week when cutting and it consists of incline walking or cycling or stairmaster for 10-15 minutes total at moderate pace. 5-10 sets of HIIT sprints occasionally when I can talk myself into it. I only need a coffee occasionally to get me ready for the gym.\n\n**Day1** Chest/Abs\n\nDB incline flies\n\nDB flat bench flies\n\nDB incline bench press\n\nDB flat bench press\n\nCable Flies from top, middle, and bottom angles.\n\nWide-grip bench or dips if still energetic\n\nWeighted Leg raises\n\nWeighted cable crunches\n\nPlanks\n\n**Day2** Back\n\nWeigh
 ted pull-ups wide-grip\n\nWeighted pull-ups parallel-grip\n\nWeighted chin-ups\n\nDeadlifts (rep range of only 4-8)\n\nStanding cable pullover close-grip\n\nCable pullover wide-grip\n\nT-bar rows\n\nWide-grip seated row\n\nUn-weighted pull-ups if still energetic\n\n**Day3** Shoulders/arms\n\nFront and Side DB raises\n\nStanding OHP\n\nCable raises with single arm grip (front and side)\n\nStanding one arm shoulder press (use T-bar row equipment but facing it)\n\nFace pulls\n\nRear delt Flies\n\nHammer or concentration curls\n\nEZ bar bicep curls with different grip each set (6 or 9 sets)\n\nSkullcrushers with close-grip bench supersets using a close-grip with the EZ bar\n\nTricep rope pushdowns\n\nAlso some extra light stabilization work/lifts for my shoulder joints/rotator cuff\n\n**Day4** Legs/Abs\n\nSquats high bar (I end with a widowmaker set as well) \n\nMachine leg extension\n\nMachine single leg extension\n\nMachine leg curl\n\nLying leg curl\n\nLeg press \n\nLeg press calf ra
 ises\n\nCalf raises\n\nWeighted hip thrust (do these in a corner as they look terribly awkward) \n\nSame abs lifts as day1\n\n**Day5** Check how your body is feeling and pick accordingly\n\nRest or light cardio with a lagging bodypart/muscle workout\n\n**Extra Stuff**\n\nI did not do SS due to already having basic strength level when I learned about it. I do highly recommend it to anyone starting lifting weights for the first time as it provides a solid foundation. \n\nMy tattoos have not noticeably changed in size or proportions. From last post to this post my waist size went from a 31 to a 33-34 and back down to a 32-31. For t-shirt size I used to be able to wear most medium shirts. By the end of my bulk I could only wear larges and now I currently can wear only looser neck mediums and smaller larges. \n\nI drank a bit less than once a week while bulking and usually was 4 or so strong drinks over 5+ hours to reach and keep a good level. When cutting I drink about twice a month and
  only 2-3 strong drinks is needed to reach the same level. For tracking lifts and food I suggest using Fitocracy and/or Myfitnesspal. I used Fitocracy for 4-5 months but realized I was doing more of the social stuff and wasting time than tracking my lifts so I stopped. \n\nFor goals I still have not reached a lean 180lb/81kg but now I want to be a lean 185lb/84kg. I hit the 1000lb club and now want to reach the 1250lb club and/or 400 wilks score. I still don’t have a bicep vein and really want one. \n\nLet me know if you have any questions or suggestions for me. Are there any areas that need work and I hope this is helpful to someone!","distinguished":null,"author_flair_text":"Highland Games","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qhx4","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;This is my second year progress post to follow my first year one &lt;a href=\"http://www.reddit.com/r/Fitness/comments/wgicu/1_year_progres
 s_pics/\"&gt;HERE&lt;/a&gt;.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Info and Stats&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;I am 5&amp;#39;11 and 24 years old in a few weeks. I started at 180lb/81kg and ~17% bf and am currently at 173lb/78.6kg and ~9% bf. &lt;/p&gt;\n\n&lt;table&gt;&lt;thead&gt;\n&lt;tr&gt;\n&lt;th align=\"left\"&gt;&lt;/th&gt;\n&lt;th align=\"center\"&gt;Aug 2011&lt;/th&gt;\n&lt;th align=\"center\"&gt;July 2012&lt;/th&gt;\n&lt;th align=\"center\"&gt;Feb 2013&lt;/th&gt;\n&lt;th align=\"right\"&gt;Aug 2013&lt;/th&gt;\n&lt;/tr&gt;\n&lt;/thead&gt;&lt;tbody&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Weight&lt;/td&gt;\n&lt;td align=\"center\"&gt;180lb/81kg&lt;/td&gt;\n&lt;td align=\"center\"&gt;165lb/74kg&lt;/td&gt;\n&lt;td align=\"center\"&gt;190lb/86kg&lt;/td&gt;\n&lt;td align=\"right\"&gt;173lb/81kg&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;BF % est.&lt;/td&gt;\n&lt;td align=\"center\"&gt;17%&lt;/td&gt;\n&lt;td align=\"center\"&gt;9%&lt;/td&gt;\n&lt;td ali
 gn=\"center\"&gt;14%&lt;/td&gt;\n&lt;td align=\"right\"&gt;9%&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Bench&lt;/td&gt;\n&lt;td align=\"center\"&gt;175lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;255lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;295lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;305lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Squat&lt;/td&gt;\n&lt;td align=\"center\"&gt;185lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;295lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;345lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;365lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;Deadlift&lt;/td&gt;\n&lt;td align=\"center\"&gt;205lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;315lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;425lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;465lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;tr&gt;\n&lt;td align=\"left\"&gt;OHP&lt;/td&gt;\n&lt;td align=\"center\"&gt;115lb&lt;/td&gt;\n&lt;td align=\"center\"&gt;155lb&lt;/td&gt;\n&lt;td align=\"center\"
 &gt;180lb&lt;/td&gt;\n&lt;td align=\"right\"&gt;195lb&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/tbody&gt;&lt;/table&gt;\n\n&lt;p&gt;&lt;a href=\"http://i.imgur.com/pkOWeqYh.png\"&gt;Some pretty graphs&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;PICS&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"http://imgur.com/a/wqVe8\"&gt;Full album with detailed info here or just click below for single pics&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"http://i.imgur.com/Pb6op4v.jpg\"&gt;Front Progress&lt;/a&gt;  + &lt;a href=\"http://i.imgur.com/AxMmkDD.jpg\"&gt;Back progress&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/4xpK6fTh.jpg\"&gt;Front Total Progression&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/WAEL4NA.jpg\"&gt;Back Total Progression&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/GNjJT8P.jpg\"&gt;Legs doing Leg things&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/cCrQPAP.jpg\"&gt;1 year bulk and cut comparison&lt;/a&gt;+ &lt;a href=\"http://i.imgur.com/EqNpYwlh.jpg\"&gt;Extra back pic&lt;/a&gt; + 
 &lt;a href=\"http://i.imgur.com/g8ZT9NAh.jpg\"&gt;Leg and body proportions&lt;/a&gt; + &lt;a href=\"http://i.imgur.com/jvoDPB0h.jpg\"&gt;Bonus goofing around pic&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Quick background recap&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;I went from athletic in HS to being an out of shape computer gamer in college. I decided to fix it when I realized I disliked my picture being taken. &lt;/p&gt;\n\n&lt;p&gt;So I started working out in August 2011, 5 days a week with no set program, terrible nutrition, and bad form. Over the next 6 months I found &lt;a href=\"/r/fitness\"&gt;/r/fitness&lt;/a&gt; and other weightlifting sites and quickly improved my nutrition and started doing a split body workout. The next 6 months I started cutting weight and added leg workouts as well (had a nagging knee injury and had to fix computer guy posture).&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Year 2&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;After my last post I tried bulking on purp
 ose this time with a goal weight of 190lbs/86kg. I tried to gain about 1lb/.45kg a week while still eating the clean healthy food, but just more of it. I decided to keep the same general lifting routine since I had not plateaued. Additionally I started the 9-5 work life in Sept 2012 and it took a couple weeks to get my sleep, nutrition and gym rhythm back. I lift about 2 hours after my dinner (get to gym at 7-8pm) and it takes about 1.5-2 hours including the commute. I eventually hit my goal weight of 190lbs/86kg in February and then decided to do another slow cut to see what kind of progress I had made. I tried to cut weight slowly at about the same rate as I had gained it so I (hopefully) wouldn’t lose everything I gained from bulking. Besides a 10 day, eating everything, no gym vacation in July I stuck to the schedule and it worked out great! My main lifts didn’t drop off during my cut which was better than expected.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;General Diet&lt;/strong
 &gt;&lt;/p&gt;\n\n&lt;p&gt;I went by basic macros and not calories when keeping track of food. Since I eat the same things I just tweaked the amounts if I wasn’t gaining/losing weight at the right speeds. I eat 3 meals a day usually with room for 1 snack/protein shake if needed. If I absolutely had to go over my macros for a day I went over on protein. Seasonings don’t get counted and I only use sriracha or low calorie sauces. Stevia is my 0 calorie sweetener of choice.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Bulking Diet&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;45% protein 35% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Breakfast&lt;/strong&gt;: medium/large bowl of rolled oats with almond butter + 5 eggs + large coffee (I add ON Vanilla Whey protein powder to hazelnut coffee for amazingness)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Lunch&lt;/strong&gt;: 1.5lbs/24oz of chicken/leaner beefs/fish +
  equal size portion of veggies (brassica type veggie preferred) + 80g of your favorite complex carb (brown rice, sweet potato, beans)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;After work dinner&lt;/strong&gt;: Dinner is 1lb/16oz of chicken/beef + equal size portion of veggies + 80g of complex carbs again. &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Snack if needed&lt;/strong&gt;: Make a shake that fits your needed macros for the day. If you struggle to eat a lot of meat/get enough protein try taking 0% fat plain greek yogurt and add lemon juice and 0 calorie sweetener for a delicious concoction. To cut the acidity try using lemon extract and lemon zest instead of juice. &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Cutting Diet&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;50% protein 30% carbs 20% fats. Adjust food amounts to fit your calorie needs while still getting close to macro %’s&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Breakfast&lt;/strong&gt;: small bowl of rolled oats + 2 eggs + large coffee (I add ON Va
 nilla Whey protein powder to hazelnut coffee)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Lunch&lt;/strong&gt;: 2/3lbs/12oz of chicken/leaner beefs/fish + equal size portion of veggies (brassica type veggie preferred) &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;After work dinner&lt;/strong&gt;: Dinner is 2/3lb/12oz of chicken/lean beef/fish + equal size portion of veggies + half of a small avocado or some other healthy fat. &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Snack if needed&lt;/strong&gt;: 0% fat plain greek yogurt mixed with lemon juice, lemon extract, lemon zest and 0 calorie sweetener OR kimchee OR a spinach salad with a bit of goat cheese and balsamic OR seasoned seaweed sheets filled with dried baby shrimp/fish. (you can only pick one....)&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Drinks&lt;/strong&gt;: Coffee, Green Tea, Water, Lemon Iced Tea &lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Supplements&lt;/strong&gt;: Creatine, ON Nutrition Whey protein (vanilla ice cream flavor &amp;lt;3 still tastes like 
 powdered unicorn), Fish Oil, Multivitamin, Vitamin D, Spirulina, Psycillium Husk, only when cutting EC stack and Yohimbine occasionally. Use Examine.com to learn more about these supplements&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Workout Routine&lt;/strong&gt; &lt;/p&gt;\n\n&lt;p&gt;These are general standard workouts I do but I frequently swap various auxiliary lifts in and out of rotation all the time. I do lifts in 3 sets of 10-12 with medium weight or 3 sets of 10,8,6 with heavy weights. Usually I am close to failure by the end of 3rd set no matter what. Proper form is the main emphasis during all lifts. I try to increase the weight or # of reps each week or just the difficulty and ROM in general. I do cardio 2-3 times a week when cutting and it consists of incline walking or cycling or stairmaster for 10-15 minutes total at moderate pace. 5-10 sets of HIIT sprints occasionally when I can talk myself into it. I only need a coffee occasionally to get me ready for the gym.&lt;/p&gt;\
 n\n&lt;p&gt;&lt;strong&gt;Day1&lt;/strong&gt; Chest/Abs&lt;/p&gt;\n\n&lt;p&gt;DB incline flies&lt;/p&gt;\n\n&lt;p&gt;DB flat bench flies&lt;/p&gt;\n\n&lt;p&gt;DB incline bench press&lt;/p&gt;\n\n&lt;p&gt;DB flat bench press&lt;/p&gt;\n\n&lt;p&gt;Cable Flies from top, middle, and bottom angles.&lt;/p&gt;\n\n&lt;p&gt;Wide-grip bench or dips if still energetic&lt;/p&gt;\n\n&lt;p&gt;Weighted Leg raises&lt;/p&gt;\n\n&lt;p&gt;Weighted cable crunches&lt;/p&gt;\n\n&lt;p&gt;Planks&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Day2&lt;/strong&gt; Back&lt;/p&gt;\n\n&lt;p&gt;Weighted pull-ups wide-grip&lt;/p&gt;\n\n&lt;p&gt;Weighted pull-ups parallel-grip&lt;/p&gt;\n\n&lt;p&gt;Weighted chin-ups&lt;/p&gt;\n\n&lt;p&gt;Deadlifts (rep range of only 4-8)&lt;/p&gt;\n\n&lt;p&gt;Standing cable pullover close-grip&lt;/p&gt;\n\n&lt;p&gt;Cable pullover wide-grip&lt;/p&gt;\n\n&lt;p&gt;T-bar rows&lt;/p&gt;\n\n&lt;p&gt;Wide-grip seated row&lt;/p&gt;\n\n&lt;p&gt;Un-weighted pull-ups if still energetic&lt;/p&gt;\n\n&lt;
 p&gt;&lt;strong&gt;Day3&lt;/strong&gt; Shoulders/arms&lt;/p&gt;\n\n&lt;p&gt;Front and Side DB raises&lt;/p&gt;\n\n&lt;p&gt;Standing OHP&lt;/p&gt;\n\n&lt;p&gt;Cable raises with single arm grip (front and side)&lt;/p&gt;\n\n&lt;p&gt;Standing one arm shoulder press (use T-bar row equipment but facing it)&lt;/p&gt;\n\n&lt;p&gt;Face pulls&lt;/p&gt;\n\n&lt;p&gt;Rear delt Flies&lt;/p&gt;\n\n&lt;p&gt;Hammer or concentration curls&lt;/p&gt;\n\n&lt;p&gt;EZ bar bicep curls with different grip each set (6 or 9 sets)&lt;/p&gt;\n\n&lt;p&gt;Skullcrushers with close-grip bench supersets using a close-grip with the EZ bar&lt;/p&gt;\n\n&lt;p&gt;Tricep rope pushdowns&lt;/p&gt;\n\n&lt;p&gt;Also some extra light stabilization work/lifts for my shoulder joints/rotator cuff&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Day4&lt;/strong&gt; Legs/Abs&lt;/p&gt;\n\n&lt;p&gt;Squats high bar (I end with a widowmaker set as well) &lt;/p&gt;\n\n&lt;p&gt;Machine leg extension&lt;/p&gt;\n\n&lt;p&gt;Machine single leg extensio
 n&lt;/p&gt;\n\n&lt;p&gt;Machine leg curl&lt;/p&gt;\n\n&lt;p&gt;Lying leg curl&lt;/p&gt;\n\n&lt;p&gt;Leg press &lt;/p&gt;\n\n&lt;p&gt;Leg press calf raises&lt;/p&gt;\n\n&lt;p&gt;Calf raises&lt;/p&gt;\n\n&lt;p&gt;Weighted hip thrust (do these in a corner as they look terribly awkward) &lt;/p&gt;\n\n&lt;p&gt;Same abs lifts as day1&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Day5&lt;/strong&gt; Check how your body is feeling and pick accordingly&lt;/p&gt;\n\n&lt;p&gt;Rest or light cardio with a lagging bodypart/muscle workout&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Extra Stuff&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;I did not do SS due to already having basic strength level when I learned about it. I do highly recommend it to anyone starting lifting weights for the first time as it provides a solid foundation. &lt;/p&gt;\n\n&lt;p&gt;My tattoos have not noticeably changed in size or proportions. From last post to this post my waist size went from a 31 to a 33-34 and back down to a 32-31. For t-shirt si
 ze I used to be able to wear most medium shirts. By the end of my bulk I could only wear larges and now I currently can wear only looser neck mediums and smaller larges. &lt;/p&gt;\n\n&lt;p&gt;I drank a bit less than once a week while bulking and usually was 4 or so strong drinks over 5+ hours to reach and keep a good level. When cutting I drink about twice a month and only 2-3 strong drinks is needed to reach the same level. For tracking lifts and food I suggest using Fitocracy and/or Myfitnesspal. I used Fitocracy for 4-5 months but realized I was doing more of the social stuff and wasting time than tracking my lifts so I stopped. &lt;/p&gt;\n\n&lt;p&gt;For goals I still have not reached a lean 180lb/81kg but now I want to be a lean 185lb/84kg. I hit the 1000lb club and now want to reach the 1250lb club and/or 400 wilks score. I still don’t have a bicep vein and really want one. &lt;/p&gt;\n\n&lt;p&gt;Let me know if you have any questions or suggestions for me. Are there any are
 as that need work and I hope this is helpful to someone!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":20,"saved":false,"num_reports":null,"created":1377900002.0,"downs":3,"hidden":false,"likes":null,"subreddit":"Fitness"},
-{"name":"t3_1lefsj","permalink":"/r/BabyBumps/comments/1lefsj/achievement_unlocked_aka_my_pregnancy_superpower/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":0,"ups":1,"link_flair_text":"Symptom","title":"Achievement Unlocked! (aka my pregnancy superpower)","author_flair_css_class":"","author":"troll_wifey","thumbnail":"self","created_utc":1377872542.0,"url":"http://www.reddit.com/r/BabyBumps/comments/1lefsj/achievement_unlocked_aka_my_pregnancy_superpower/","stickied":false,"banned_by":null,"domain":"self.BabyBumps","id":"1lefsj","selftext":"Since finding out I was pregnant 10 days ago, my congestion has been out of control.  Like, to the point where I didn't even want to leave the house because I had to have a box of tissues glued to my side.  About 3 days ago, the congestion finally went away (thank goodness!) only to be replaced with my new pregnancy superpower: the ability to smell EVERYTHING.\n\nI mean absolutely everything.  I walk out of ou
 r bedroom and I can smell the dog who's on the other side of the house in his crate.  I can smell when the neighbor upstairs is making brownies even though the windows and doors are shut and normally I can't smell anything she's cooking.  I can smell the garbage at the end of the driveway when I'm still in the garage (and it wasn't even a particularly smelly garbage week).  But last night took it to a whole new level.\n\nI fell asleep about 30 minutes before DH came to bed.  Woke up after he'd fallen asleep because I could smell something extremely sweet and minty and it was making me nauseous.  Roll over to find my DH asleep and breathing out of his mouth, but not actually breathing on me.  The smell of our toothpaste after he brushed his teeth was apparently strong enough with my preggy-powers to wake me up out of a Unisom-induced sleep!\n\nHoly superpowers, Batman!  ","distinguished":null,"author_flair_text":"Nugget #1 due 4/27/14","media":null,"clicked":false,"link_flair_css_cla
 ss":"Symptom","subreddit_id":"t5_2s7cl","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Since finding out I was pregnant 10 days ago, my congestion has been out of control.  Like, to the point where I didn&amp;#39;t even want to leave the house because I had to have a box of tissues glued to my side.  About 3 days ago, the congestion finally went away (thank goodness!) only to be replaced with my new pregnancy superpower: the ability to smell EVERYTHING.&lt;/p&gt;\n\n&lt;p&gt;I mean absolutely everything.  I walk out of our bedroom and I can smell the dog who&amp;#39;s on the other side of the house in his crate.  I can smell when the neighbor upstairs is making brownies even though the windows and doors are shut and normally I can&amp;#39;t smell anything she&amp;#39;s cooking.  I can smell the garbage at the end of the driveway when I&amp;#39;m still in the garage (and it wasn&amp;#39;t even a particularly smelly garbage week).  But last night took it to a w
 hole new level.&lt;/p&gt;\n\n&lt;p&gt;I fell asleep about 30 minutes before DH came to bed.  Woke up after he&amp;#39;d fallen asleep because I could smell something extremely sweet and minty and it was making me nauseous.  Roll over to find my DH asleep and breathing out of his mouth, but not actually breathing on me.  The smell of our toothpaste after he brushed his teeth was apparently strong enough with my preggy-powers to wake me up out of a Unisom-induced sleep!&lt;/p&gt;\n\n&lt;p&gt;Holy superpowers, Batman!  &lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377901342.0,"downs":0,"hidden":false,"likes":null,"subreddit":"BabyBumps"},
-{"name":"t3_1ldnh5","permalink":"/r/makeupexchange/comments/1ldnh5/request_foundation_samples_from_sephora/","edited":1377868787.0,"over_18":false,"approved_by":null,"is_self":true,"num_comments":12,"ups":6,"link_flair_text":"Request","title":"[REQUEST] Foundation samples from Sephora","author_flair_css_class":null,"author":"amurow","thumbnail":"self","created_utc":1377834354.0,"url":"http://www.reddit.com/r/makeupexchange/comments/1ldnh5/request_foundation_samples_from_sephora/","stickied":false,"banned_by":null,"domain":"self.makeupexchange","id":"1ldnh5","selftext":"Some of you might remember someone selling a KVD Lock-It Tattoo Foundation in M62 here. That was me. Because I was a doofus who looked at online reviews and decided it was my shade. But it wasn't -- it was too dark, and I had to sell if off. Unfortunately, I'm having a tough time finding the right KVD shade, so I'm here asking you guys for help. There's no Sephora in my country (the Philippines), and I was wondering i
 f anybody could send me some samples of the following before I waste money importing makeup I will never use:\n\nKat Von D Lock-it Tattoo Foundation in M54 and M57. -- PRIORITY\n\nAnd, if they're available, and you're willing to help me more in my quest to find an HG foundation for oily skin, I would like to sample these, too:\n\n*Estee Lauder Double wear in Tawny and Cashew\n\n*MUFE Mat Velvet+ in #40 and #65.\n\n*Tarte Amazonian clay 12-hour full coverage foundation in Medium Sand and Tan-Deep Sand.\n\n*Any other foundation for oily skin you can recommend. For reference, I'm NC40 most of the time!\n\nOf course, I'll pay for the shipping and would love to give you/pay you something for your trouble. Please just let me know if you'd be able to lend this girl a hand! Thank you!","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":"Request","subreddit_id":"t5_2tijo","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Som
 e of you might remember someone selling a KVD Lock-It Tattoo Foundation in M62 here. That was me. Because I was a doofus who looked at online reviews and decided it was my shade. But it wasn&amp;#39;t -- it was too dark, and I had to sell if off. Unfortunately, I&amp;#39;m having a tough time finding the right KVD shade, so I&amp;#39;m here asking you guys for help. There&amp;#39;s no Sephora in my country (the Philippines), and I was wondering if anybody could send me some samples of the following before I waste money importing makeup I will never use:&lt;/p&gt;\n\n&lt;p&gt;Kat Von D Lock-it Tattoo Foundation in M54 and M57. -- PRIORITY&lt;/p&gt;\n\n&lt;p&gt;And, if they&amp;#39;re available, and you&amp;#39;re willing to help me more in my quest to find an HG foundation for oily skin, I would like to sample these, too:&lt;/p&gt;\n\n&lt;p&gt;*Estee Lauder Double wear in Tawny and Cashew&lt;/p&gt;\n\n&lt;p&gt;*MUFE Mat Velvet+ in #40 and #65.&lt;/p&gt;\n\n&lt;p&gt;*Tarte Amazonian c
 lay 12-hour full coverage foundation in Medium Sand and Tan-Deep Sand.&lt;/p&gt;\n\n&lt;p&gt;*Any other foundation for oily skin you can recommend. For reference, I&amp;#39;m NC40 most of the time!&lt;/p&gt;\n\n&lt;p&gt;Of course, I&amp;#39;ll pay for the shipping and would love to give you/pay you something for your trouble. Please just let me know if you&amp;#39;d be able to lend this girl a hand! Thank you!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":6,"saved":false,"num_reports":null,"created":1377863154.0,"downs":0,"hidden":false,"likes":null,"subreddit":"makeupexchange"},
-{"name":"t3_1lea62","permalink":"/r/buildapc/comments/1lea62/help_with_picking_either_atx_or_matx_for_my_build/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":1,"ups":5,"link_flair_text":null,"title":"Help with picking either ATX or mATX for my build. You're my only hope, r/buildapc!","author_flair_css_class":null,"author":"imightbefickle","thumbnail":"","created_utc":1377866776.0,"url":"http://www.reddit.com/r/buildapc/comments/1lea62/help_with_picking_either_atx_or_matx_for_my_build/","stickied":false,"banned_by":null,"domain":"self.buildapc","id":"1lea62","selftext":"Is it generally cheaper to go for an mATX build instead of ATX? What sacrifices am I making by going on a smaller form factor? I was thinking of a 4670 (4670k if it's not too much more expensive + an OC motherboard) for the CPU and a 7950 for the GPU (or waiting for when the 9xxx series drops, and using the iGPU while I wait). I'm building this mainly for gaming, but also for Photosh
 op (I do a lot of digital painting), and CAD with Zbrush/3DSMax/Mudbox. I have a max? budget of £500 British, for everything minus the cost of a GPU. No need for peripherals as I already have a screen, keyboard, mouse.","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2rnve","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Is it generally cheaper to go for an mATX build instead of ATX? What sacrifices am I making by going on a smaller form factor? I was thinking of a 4670 (4670k if it&amp;#39;s not too much more expensive + an OC motherboard) for the CPU and a 7950 for the GPU (or waiting for when the 9xxx series drops, and using the iGPU while I wait). I&amp;#39;m building this mainly for gaming, but also for Photoshop (I do a lot of digital painting), and CAD with Zbrush/3DSMax/Mudbox. I have a max? budget of £500 British, for everything minus the cost of a GPU. No need for peripherals
  as I already have a screen, keyboard, mouse.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":5,"saved":false,"num_reports":null,"created":1377895576.0,"downs":0,"hidden":false,"likes":null,"subreddit":"buildapc"},
-{"name":"t3_1lddej","permalink":"/r/photocritique/comments/1lddej/this_is_hector_panasonic_g6_20mm_800isof17/","edited":false,"over_18":false,"approved_by":null,"is_self":false,"num_comments":3,"ups":13,"link_flair_text":null,"title":"This is Hector. (Panasonic G6 20mm 800iso/f1.7 shutter 20)","author_flair_css_class":null,"author":"Clintown","thumbnail":"http://f.thumbs.redditmedia.com/zs8qo2G9_msKN5Rk.jpg","created_utc":1377825633.0,"url":"http://www.flickr.com/photos/clintonsosnoski/9626857746/sizes/c/in/photostream/","stickied":false,"banned_by":null,"domain":"flickr.com","id":"1lddej","selftext":"","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qymy","selftext_html":null,"media_embed":{},"score":9,"saved":false,"num_reports":null,"created":1377854433.0,"downs":4,"hidden":false,"likes":null,"subreddit":"photocritique"},
-{"name":"t3_1ldo6g","permalink":"/r/Quebec/comments/1ldo6g/taimes_faire_du_cinéma_et_tu_sais_pas_quoi_faire/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":0,"ups":3,"link_flair_text":null,"title":"T'aimes faire du cinéma et tu sais pas quoi faire de ta fin de semaine, grand corps mou? Si tu es dans la région de la Rive-Sud, viens au Kabaret Kino R-S!","author_flair_css_class":"on","author":"le_brouhaha","thumbnail":"self","created_utc":1377835010.0,"url":"http://www.reddit.com/r/Quebec/comments/1ldo6g/taimes_faire_du_cinéma_et_tu_sais_pas_quoi_faire/","stickied":false,"banned_by":null,"domain":"self.Quebec","id":"1ldo6g","selftext":"Donc, invitation de dernière minute, à qui cela peut intéresser :\n\nEn cette fin de semaine de la fête du travail se tient, à Boucherville, la dixième édition du Kabaret Kino Rive-Sud.\n\n**C'est quoi ça Kino?**\n\nKino, c'est un regroupement de cinéastes amateurs qui tournent des courts métrages pour leu
 r plaisir à eux et les projettent en groupe à chaque mois pour le plaisir des autres. Il existe plusieurs cellules, la plus connue étant celle de Montréal. Ici, l'on parle de la cellule de la Rive-Sud, centrée près de Longueuil, et les environs.\n\n**C'est quoi ça un Kabaret?**\n\nTout simple, c'est un évènement d'une fin de semaine, ou plusieurs personnes aimant faire du cinéma se réunissent et travaillent tous ensemble pour réaliser plusieurs projet. C'est un bouillonnement de créativité, d'imagination, de création. Il y a autant des gens qui travaillent dans le domaine que des gens qui viennent s'y initier. C'est dans un grand esprit de camaraderie, les gens s'entraident, travaillent en équipe, partagent.\n\n**C'est ouvert à tous?**\n\nC'est ouvert à tous, oui. Pas besoin d'être membre de la cellule de la Rive-Sud, ou d'une autre cellule quelle qu'elle soit. Certains découvrent même Kino lors de cette occasion! Même pas besoin d'être de la région, moi mêm
 e je suis de Lanaudière et j'y participe.\n\n**C'est quoi les \"pré-requis?\"**\n\nIl n'y a pas de pré-requis, réellement. Pas besoin d'expérience ou de connaissances particulières. Bien sûr, pour filmer vos projets et les monter, vaut mieux avoir son matériel, mais dès qu'une caméra peut filmer et un ordinateur monter, vous êtes en affaire! Il y a des tas de gens sur place pour vous aider, et vous aurez la chance de participer à tout plein de projets intéressants.\n\n**C'est quoi les heures?**\n\nEn fait, plus que des heures, ça se passe en fait du vendredi 30 août à 17h00 jusqu'au lundi 2 septembre vers les environs de 20h, où se commence la projection des films tournés la fin de semaine. On parle d'un total d'un peu plus de 72h.\n\n**Ça coûte de quoi?**\n\nOui, 35$.\n\n**Ben là, ça vient avec quoi?**\n\nPremièrement, tous les repas pour la fin de semaine, du vendredi soir jusqu'au lundi soir. T'as aussi les collations et autres, les breuvages, la liqueur, n
 ame it. Popcorn aussi. On a la chance d'avoir ça, une machine à popcorn sur les lieux, roulant à peu près 18h par jour. Sinon, y'a la salle, que l'on surnomme Kinolab, où tout le matériel est placé pour les tournages et le montage, il y a aussi des zones réservées pour ce qui est de dormir (qui est assez bonne franquette, amené votre sac de couchage et votre matelas de sol, un lit de camp aussi c'est bon), les douches, tout ça. Nogé, lourris, logé, nourris. Sinon, la bière est pas fournie, mais elle est à 2$. Moins cher qu'au bar quand t'es pas le mardi.\n\n**Ah ok. Autre chose à savoir?**\n\nEuh... Moi même j'me demande, j'pense avoir fait le tour. Sinon, il y a quand même la projection le lundi soir, vers 20h (à prendre avec +ou- 15min, surtout +) qui est ouverte à tous, contribution volontaire. Je conseillerais quand même d'éviter les enfants trop trop jeunes, parfois c'est cru, surtout en deuxième partie.\n\nAh et aussi, si ça change de quoi, la bière c'
 est de la boréale.\n\n**L'adresse c'est?**\n\nC'est à la Salle paroissiale Sainte Famille, dans l'idyllique vieux Boucherville, au 539 rue Notre-Dame (J4B 3P3). La salle ouvre généralement vers 15h, pour accueillir ceux qui arrivent tôt.\n\n**Vous avez des liens?**\n\n[Oui, un site web pour l'évènement \\(qui reprendra beaucoup pour vous ce que j'ai dis ici mais qui possède un embedded google maps pour les indications\\)](http://www.kinors.com/kabaret/) \n\n[Une page d'évènement Facebook \\(toujours drôle\\)](https://www.facebook.com/events/678574408836861/)\n\nTL;DR : Si tu sais pas quoi faire de ta fin de semaine, 35$ j't'arrange de quoi. Tu vas avoir du plaisir facque viens.\n\nPour moi, Kino c'est particulièrement important. Ça fait maintenant 6 ans que je m'implique dans différentes cellules, et 4 ans que je participe au Kabaret de Kino Rive-Sud, et chaque fois c'est unique et génial. C'est un peu comme l'excitation que j'avais à Noël quand j'étais enfant. Don
 c voilà, si cet évènement interpelle certains d'entre-vous, vous êtes invités et les bienvenus. Ne vous privez pas de votre plaisir, ce sera une fin de semaine incroyable que vous aurez.\n\nSi vous ne pouvez pas participer, il y aura toujours la soirée de projection. Lundi 2 septembre, 20h.\n\nP.S. : Oui /u/pierluc, j'vais poster des photos de ce que j'ai fait avec le champignons c'est promis, j'suis juste super occupé!","distinguished":null,"author_flair_text":"ON [membre]","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qhh9","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Donc, invitation de dernière minute, à qui cela peut intéresser :&lt;/p&gt;\n\n&lt;p&gt;En cette fin de semaine de la fête du travail se tient, à Boucherville, la dixième édition du Kabaret Kino Rive-Sud.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi ça Kino?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Kino, c&amp;#39;est un regroupement de cin
 éastes amateurs qui tournent des courts métrages pour leur plaisir à eux et les projettent en groupe à chaque mois pour le plaisir des autres. Il existe plusieurs cellules, la plus connue étant celle de Montréal. Ici, l&amp;#39;on parle de la cellule de la Rive-Sud, centrée près de Longueuil, et les environs.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi ça un Kabaret?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Tout simple, c&amp;#39;est un évènement d&amp;#39;une fin de semaine, ou plusieurs personnes aimant faire du cinéma se réunissent et travaillent tous ensemble pour réaliser plusieurs projet. C&amp;#39;est un bouillonnement de créativité, d&amp;#39;imagination, de création. Il y a autant des gens qui travaillent dans le domaine que des gens qui viennent s&amp;#39;y initier. C&amp;#39;est dans un grand esprit de camaraderie, les gens s&amp;#39;entraident, travaillent en équipe, partagent.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est ouvert à tous?&lt;
 /strong&gt;&lt;/p&gt;\n\n&lt;p&gt;C&amp;#39;est ouvert à tous, oui. Pas besoin d&amp;#39;être membre de la cellule de la Rive-Sud, ou d&amp;#39;une autre cellule quelle qu&amp;#39;elle soit. Certains découvrent même Kino lors de cette occasion! Même pas besoin d&amp;#39;être de la région, moi même je suis de Lanaudière et j&amp;#39;y participe.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi les &amp;quot;pré-requis?&amp;quot;&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Il n&amp;#39;y a pas de pré-requis, réellement. Pas besoin d&amp;#39;expérience ou de connaissances particulières. Bien sûr, pour filmer vos projets et les monter, vaut mieux avoir son matériel, mais dès qu&amp;#39;une caméra peut filmer et un ordinateur monter, vous êtes en affaire! Il y a des tas de gens sur place pour vous aider, et vous aurez la chance de participer à tout plein de projets intéressants.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;C&amp;#39;est quoi les heures?&lt;/strong&gt;&lt;/p&gt
 ;\n\n&lt;p&gt;En fait, plus que des heures, ça se passe en fait du vendredi 30 août à 17h00 jusqu&amp;#39;au lundi 2 septembre vers les environs de 20h, où se commence la projection des films tournés la fin de semaine. On parle d&amp;#39;un total d&amp;#39;un peu plus de 72h.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Ça coûte de quoi?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Oui, 35$.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Ben là, ça vient avec quoi?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Premièrement, tous les repas pour la fin de semaine, du vendredi soir jusqu&amp;#39;au lundi soir. T&amp;#39;as aussi les collations et autres, les breuvages, la liqueur, name it. Popcorn aussi. On a la chance d&amp;#39;avoir ça, une machine à popcorn sur les lieux, roulant à peu près 18h par jour. Sinon, y&amp;#39;a la salle, que l&amp;#39;on surnomme Kinolab, où tout le matériel est placé pour les tournages et le montage, il y a aussi des zones réservées pour ce qui est de dormir (qui est ass
 ez bonne franquette, amené votre sac de couchage et votre matelas de sol, un lit de camp aussi c&amp;#39;est bon), les douches, tout ça. Nogé, lourris, logé, nourris. Sinon, la bière est pas fournie, mais elle est à 2$. Moins cher qu&amp;#39;au bar quand t&amp;#39;es pas le mardi.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Ah ok. Autre chose à savoir?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;Euh... Moi même j&amp;#39;me demande, j&amp;#39;pense avoir fait le tour. Sinon, il y a quand même la projection le lundi soir, vers 20h (à prendre avec +ou- 15min, surtout +) qui est ouverte à tous, contribution volontaire. Je conseillerais quand même d&amp;#39;éviter les enfants trop trop jeunes, parfois c&amp;#39;est cru, surtout en deuxième partie.&lt;/p&gt;\n\n&lt;p&gt;Ah et aussi, si ça change de quoi, la bière c&amp;#39;est de la boréale.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;L&amp;#39;adresse c&amp;#39;est?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;C&amp;#39;est à la Salle paroissiale Sa
 inte Famille, dans l&amp;#39;idyllique vieux Boucherville, au 539 rue Notre-Dame (J4B 3P3). La salle ouvre généralement vers 15h, pour accueillir ceux qui arrivent tôt.&lt;/p&gt;\n\n&lt;p&gt;&lt;strong&gt;Vous avez des liens?&lt;/strong&gt;&lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"http://www.kinors.com/kabaret/\"&gt;Oui, un site web pour l&amp;#39;évènement (qui reprendra beaucoup pour vous ce que j&amp;#39;ai dis ici mais qui possède un embedded google maps pour les indications)&lt;/a&gt; &lt;/p&gt;\n\n&lt;p&gt;&lt;a href=\"https://www.facebook.com/events/678574408836861/\"&gt;Une page d&amp;#39;évènement Facebook (toujours drôle)&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;TL;DR : Si tu sais pas quoi faire de ta fin de semaine, 35$ j&amp;#39;t&amp;#39;arrange de quoi. Tu vas avoir du plaisir facque viens.&lt;/p&gt;\n\n&lt;p&gt;Pour moi, Kino c&amp;#39;est particulièrement important. Ça fait maintenant 6 ans que je m&amp;#39;implique dans différentes cellules, et 4 ans que je participe a
 u Kabaret de Kino Rive-Sud, et chaque fois c&amp;#39;est unique et génial. C&amp;#39;est un peu comme l&amp;#39;excitation que j&amp;#39;avais à Noël quand j&amp;#39;étais enfant. Donc voilà, si cet évènement interpelle certains d&amp;#39;entre-vous, vous êtes invités et les bienvenus. Ne vous privez pas de votre plaisir, ce sera une fin de semaine incroyable que vous aurez.&lt;/p&gt;\n\n&lt;p&gt;Si vous ne pouvez pas participer, il y aura toujours la soirée de projection. Lundi 2 septembre, 20h.&lt;/p&gt;\n\n&lt;p&gt;P.S. : Oui &lt;a href=\"/u/pierluc\"&gt;/u/pierluc&lt;/a&gt;, j&amp;#39;vais poster des photos de ce que j&amp;#39;ai fait avec le champignons c&amp;#39;est promis, j&amp;#39;suis juste super occupé!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377863810.0,"downs":2,"hidden":false,"likes":null,"subreddit":"Quebec"},
-{"name":"t3_1ld3th","permalink":"/r/offmychest/comments/1ld3th/listen_bitch_youre_evil_and_a_bad_person_you/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":2,"ups":4,"link_flair_text":null,"title":"Listen Bitch, you're evil and a bad person. You crushed my heart and I want to move on....","author_flair_css_class":null,"author":"MakeMeNaked","thumbnail":"","created_utc":1377817349.0,"url":"http://www.reddit.com/r/offmychest/comments/1ld3th/listen_bitch_youre_evil_and_a_bad_person_you/","stickied":false,"banned_by":null,"domain":"self.offmychest","id":"1ld3th","selftext":"But what the fuck is up with this crying over you every fucking day at 3pm?? I have to choke back the tears until I leave work and can cry the whole way home. Really?  You were selfish, VERY fucking selfish, I was probably 3rd on your list behind your work and friends, yet I still made you a priority and I still stuck up for you. I had your back and you stabbed me in mine....So why t
 he fuck am I being such a little bitch about it? And why at the same time every day??\n\nYou're a drunken wreck waiting to happen, A DUI in the making, and good luck paying your taxes. So many negatives but I fucking loved the shit out of you. I'm off work in 20 minutes and the kleenex is waiting, fuck this sucks.","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2ranw","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;But what the fuck is up with this crying over you every fucking day at 3pm?? I have to choke back the tears until I leave work and can cry the whole way home. Really?  You were selfish, VERY fucking selfish, I was probably 3rd on your list behind your work and friends, yet I still made you a priority and I still stuck up for you. I had your back and you stabbed me in mine....So why the fuck am I being such a little bitch about it? And why at the same time every day??&lt;/p&gt
 ;\n\n&lt;p&gt;You&amp;#39;re a drunken wreck waiting to happen, A DUI in the making, and good luck paying your taxes. So many negatives but I fucking loved the shit out of you. I&amp;#39;m off work in 20 minutes and the kleenex is waiting, fuck this sucks.&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":4,"saved":false,"num_reports":null,"created":1377846149.0,"downs":0,"hidden":false,"likes":null,"subreddit":"offmychest"},
-{"name":"t3_1lcp4y","permalink":"/r/guns/comments/1lcp4y/my_marlin_336_1949_that_my_gramps_gave_me_when_i/","edited":false,"over_18":false,"approved_by":null,"is_self":false,"num_comments":12,"ups":24,"link_flair_text":null,"title":"My marlin 336 (1949) that my gramps gave me when I turned 16. Also, why I temporarily loathe Remington","author_flair_css_class":null,"author":"PantsChillman","thumbnail":"","created_utc":1377806298.0,"url":"http://imgur.com/a/jWIwz","stickied":false,"banned_by":null,"domain":"imgur.com","id":"1lcp4y","selftext":"","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qhc8","selftext_html":null,"media_embed":{},"score":17,"saved":false,"num_reports":null,"created":1377835098.0,"downs":7,"hidden":false,"likes":null,"subreddit":"guns"},
-{"name":"t3_1lcglg","permalink":"/r/nba/comments/1lcglg/mythbusters_would_stockton_be_stockton_without/","edited":1377801369.0,"over_18":false,"approved_by":null,"is_self":true,"num_comments":30,"ups":75,"link_flair_text":null,"title":"Mythbusters: Would Stockton be Stockton without Malone?","author_flair_css_class":"Jazz2","author":"ofmonster","thumbnail":"","created_utc":1377800023.0,"url":"http://www.reddit.com/r/nba/comments/1lcglg/mythbusters_would_stockton_be_stockton_without/","stickied":false,"banned_by":null,"domain":"self.nba","id":"1lcglg","selftext":"This post was spurred by another post about unbreakable records, people seemed interested in this discussion so hopefully you like it and it will spur other ones.\n\nAs a lifelong and die hard jazz fan, I have always heard people argue whether Malone was great because of Stockton or whether Stockton was great because of Malone, or whether both would have had similar production even without a legend as their pick and roll par
 tner. Rather than attempt to answer all of these at once, I decided to at least start with the most common one I have heard: that Stockton would not have had other worldly assist numbers without Malone as the finisher on pick and rolls.\n\nI am by no means trying to make this the definitive answer to this two decade long question, and want to get some caveats to everything I'm about to write out of the way now:\n\n1. There are limited advanced statistics from Stockton and Malone's prime years, or at least, I am struggling to find them. Some of the most useful for answering this question, like the number of pick and rolls that were run, percentage of baskets assisted, and overall league numbers pertaining to those two things during that era, as well as accurate on/off numbers or even how much time Malone and Stockton DID NOT share on the court. As such, I am working with what I can.\n2. Because of the above, I am forced to make some logical (in my opinion) leaps and assumptions about
  the vicinity of those stats that may or may not have a semblance of accuracy.\n3. Since there is no data analyzing to whom and how often Stockton passed, I did not feel comfortable making precise assumptions about how many of his assists went to each player and instead played it on the safe side for the sake of the critics (this will be covered below).\n4. When analyzing what the Jazz would do without Malone, I did not bother to add additional usage rates to other members of the Jazz. While this would inevitably happen, it is impossible to say who would receive the largest bumps and how it would affect efficiency so I purposely left it out because I didn't think I could make anyone totally happy.\n5. When evaluating league-wide stats compared to Malone's, I used the arbitrary search limitations (via BR) of C-F's, F's, C's, and F-C's that started at least 41 games. I used this because I saw it as necessary to assume Malone's replacement and competition would be  starting caliber big
 men (its logical to assume he wouldn't play against or be replaced by below average bigs) and that group seemed to fit the bill the best. However I recognize that there are some weird outliers (like Larry Bird) who aren't the best comp's but it was the best I could find. Also, since fg% was a factor, I feel obligated to point out that some of the players in this data set shot threes, which lower overall fg% (unless your Curry or Korver), and are an extremely unlikely result as a roll man in a PnR, but the average 3's per minute attempted by this group was extremely low, and I deemed them insignificant noise, but they are noise all the same.\n6. Everyone must understand that the Jazz at this time were running the pick and roll largely IN SPITE of the rest of the league. It was considered an outdated offense that wasn't adapted by the rest of the league until the 2000's (it is now the most common play run in the half court set, and by a wide margin). As such, many speculate that the J
 azz had an advantage because pick and roll defenses were much less refined and practiced than they are now, so players within the Jazz's system would see a boost in production/efficiency. There is some evidence supporting this, but it isn't conclusive and I did not assume this because of that.\n7. On a similar note, there is no way to say whether the lethality of the Stockton to Malone duo helped draw in double teams and thus opened easier dishes, and consequently assists to outside shooters or bigs under the basket. I do not take this into account because of that, as well as I think it is fair to assume many of those assists would have come from Malone after the double team hit him which would not affect Stockton's assist numbers, as well as there are often double teams even in PnR's with lesser players than Malone.\n\nThe longevity of Stockton and Malone makes this even harder to answer because there are so many years to analyze. I could average their prime years, do the equations
  to convert them into advanced stats and go from there, but frankly I am a college student without that much time and patience and their ridiculous longevity also calls into question exactly what would be considered their \"prime\". Because of this, I chose a single year that I determined to be the best average year for both of them within their \"prime\". The year I chose was 1991-1992, a solid year for both Stockton and Malone, but neither had a career high in any relevant stat to his question, and at the same time it wasn't close to any career low.\n\nIn 1991-1992, Stockton averaged 13.7 assists. Malone averaged 28 points on 9.9 (is it fair to call that 10?) made field goals a game. In order to understand how many of those \"10\" field goals were assisted, we have to look at modern day equivalents since that data is not available before 06-07 (if this data exists PLEASE tell me where). In order to find a similar number, I looked at modern day bigs who had high usage rates, played
  with a good passing point guard, and ran the pick and roll a lot (I also looked for players with similar skill sats and roles as Malone). Some of the players I used to help you get a feel were (in no order, according to Hoopdata): Amare in 10-11 (ran the PnR with Felton [he was decent that year ok?] a ton. 52.6% assisted), Amare again in 06-07 (dat PnR wit Nash, 64.9% assisted), Scola 10-11 (ran it with Lowry. 64.3 assisted), Boozer in 09-10 &amp; 10-11 (ran it with Deron, then with Rose. Interestingly went from 74.2% assisted to 64.7% assisted), Blake Griffin in 12-13 (with Chris Paul, 64.1% assisted), and David West in 10-11 (with Chris Paul, 60% assisted). I looked at some other examples as well, but you get the gist, teams with a good pick and roll duo, who ran the pick and roll a lot, generally had a roll guy with an average assist percentage of approximately 64% (As an interesting aside, starting bigs actually seem to have a higher percentage of their baskets assisted when th
 ey are not in a pick and roll heavy offense or are not the primary roll man, the league average for PF's was closer to 66-67%, not what I would have expected). I have often heard that many teams in the current era of the NBA run the PnR even more than the Jazz did in the 90's, but there is no way to prove this aside from me watching film and counting pick and rolls, so let's assume the assist percentage translates somewhat accurately. Let's say that Malone had 64% of his baskets assisted. \n\nIt is safe to assume that not 100% of Malone's assisted baskets came from Stockton, but it IS safe to assume it was the vast majority, and since there is no number I could pull that wouldn't be 100% guesswork, we are going to assume that Stockton was indeed responsible for all of Malone's assisted baskets, just to stop the haters (that's a joke). So that means 6.4 baskets to Malone were Stockton assists, and 4.6 weren't. \n\nLet's assume then that Malone got traded to another team early in his 
 career (heaven forbid!) for an average starting power forward ([this is the list I used for the upcoming analysis btw](http://www.basketball-reference.com/play-index/psl_finder.cgi?request=1&amp;match=single&amp;type=totals&amp;per_minute_base=36&amp;lg_id=NBA&amp;is_playoffs=N&amp;year_min=1992&amp;year_max=1992&amp;franch_id=&amp;season_start=1&amp;season_end=-1&amp;age_min=0&amp;age_max=99&amp;height_min=0&amp;height_max=99&amp;birth_country_is=Y&amp;birth_country=&amp;is_active=&amp;is_hof=&amp;is_as=&amp;as_comp=gt&amp;as_val=&amp;pos_is_f=Y&amp;pos_is_fc=Y&amp;pos_is_c=Y&amp;pos_is_cf=Y&amp;qual=&amp;c1stat=gs&amp;c1comp=gt&amp;c1val=41&amp;c2stat=&amp;c2comp=gt&amp;c2val=&amp;c3stat=&amp;c3comp=gt&amp;c3val=&amp;c4stat=&amp;c4comp=gt&amp;c4val=&amp;c5stat=&amp;c5comp=gt&amp;c6mult=1.0&amp;c6stat=&amp;order_by=ts_pct)). In 91-92, the average big shot 49%, compared to Malone's 52.6%. The average big also had a usage rate of 19.7%, compared to Malone's leading 30.3%. The average
  turnover rate for starting bigs was 12.9%, surprisingly Malone's was only 11.6%. Let's assume that the Jazz's primary PnR man is exactly average, and that the Jazz still stick with a PnR based offense (Sloan is still the coach, so we can be pretty sure of this), so 64% of his baskets are assisted. We'll also assume this player absorbs all of Malone's minutes (37.7 per game is a lot, but then again, back then starters played more minutes. 17 bigs in 91-92 played over 37 mpg, this year only 14 players total averaged that much). This average player would make about 6.3 buckets a game. This means 4 (4.032) of those a game would be assists from Stockton (sticking with the \"Stockton makes ALL the assists\" assumption [reeeeal bad meme reference]). \n\nDoing the simple math gets us to our conclusion: Stockton would average less assists a game, dropping from 13.7 assists to about 11.3 assists per game. This is a significant drop, but still outstanding assist numbers, especially with the u
 nderstanding that there would be an additional 7-8 shot attempts to be disbursed in Malone's absence, some of those probably resulting in additional Stockton assists. \n\nIn summary, Stockton would at LEAST average 11.3 assists in our 1991-1992 isolated example, and if you assume that 1991-1992 is a good indicator for the entire Stockton-Malone era, Stockton would have ended his career with somewhere between 12,200 and 12,800 assists (depending on minutes for him and the replacement player[s]). He would have had at least 6 seasons of double digit assists. This means he would still be the all-time assist leader (by a smallish margin), and in all likelihood still considered a top 5 point guard of all time. Again, this is all WITHOUT counting those left over possessions in Malone's absence. Given that Stockton dished an assist on 14.3% of all the Jazz's possessions in 1991-1992, if we include those possessions in the discussion then Stockton probably averages just over 1 assist more pe
 r game, which seems small but brings his average that year to 12.3 assists. Career wise that would mean he dishes between 13,500 and 14,200 assists, still giving him a very large lead in the record books and would mean he likely still holds at least 4 of the top 10 assists per game seasons (although no longer the top spot). \n\nBasically, John Stockton was a beast of a point guard with or without Malone. Malone's absence would have been a significant hit to Stockton's production but he would still put up otherworldly assist numbers.\n\nThe real question might be: What would Stockton be without the Pick and Roll? The world may never know...\n\nPlease give me feedback and criticism, I love hearing feedback about two of my idols whether its positive or negative. \n\n","distinguished":null,"author_flair_text":"[UTA] Enes Kanter","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2qo4s","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;This p
 ost was spurred by another post about unbreakable records, people seemed interested in this discussion so hopefully you like it and it will spur other ones.&lt;/p&gt;\n\n&lt;p&gt;As a lifelong and die hard jazz fan, I have always heard people argue whether Malone was great because of Stockton or whether Stockton was great because of Malone, or whether both would have had similar production even without a legend as their pick and roll partner. Rather than attempt to answer all of these at once, I decided to at least start with the most common one I have heard: that Stockton would not have had other worldly assist numbers without Malone as the finisher on pick and rolls.&lt;/p&gt;\n\n&lt;p&gt;I am by no means trying to make this the definitive answer to this two decade long question, and want to get some caveats to everything I&amp;#39;m about to write out of the way now:&lt;/p&gt;\n\n&lt;ol&gt;\n&lt;li&gt;There are limited advanced statistics from Stockton and Malone&amp;#39;s prime 
 years, or at least, I am struggling to find them. Some of the most useful for answering this question, like the number of pick and rolls that were run, percentage of baskets assisted, and overall league numbers pertaining to those two things during that era, as well as accurate on/off numbers or even how much time Malone and Stockton DID NOT share on the court. As such, I am working with what I can.&lt;/li&gt;\n&lt;li&gt;Because of the above, I am forced to make some logical (in my opinion) leaps and assumptions about the vicinity of those stats that may or may not have a semblance of accuracy.&lt;/li&gt;\n&lt;li&gt;Since there is no data analyzing to whom and how often Stockton passed, I did not feel comfortable making precise assumptions about how many of his assists went to each player and instead played it on the safe side for the sake of the critics (this will be covered below).&lt;/li&gt;\n&lt;li&gt;When analyzing what the Jazz would do without Malone, I did not bother to add 
 additional usage rates to other members of the Jazz. While this would inevitably happen, it is impossible to say who would receive the largest bumps and how it would affect efficiency so I purposely left it out because I didn&amp;#39;t think I could make anyone totally happy.&lt;/li&gt;\n&lt;li&gt;When evaluating league-wide stats compared to Malone&amp;#39;s, I used the arbitrary search limitations (via BR) of C-F&amp;#39;s, F&amp;#39;s, C&amp;#39;s, and F-C&amp;#39;s that started at least 41 games. I used this because I saw it as necessary to assume Malone&amp;#39;s replacement and competition would be  starting caliber bigmen (its logical to assume he wouldn&amp;#39;t play against or be replaced by below average bigs) and that group seemed to fit the bill the best. However I recognize that there are some weird outliers (like Larry Bird) who aren&amp;#39;t the best comp&amp;#39;s but it was the best I could find. Also, since fg% was a factor, I feel obligated to point out that som
 e of the players in this data set shot threes, which lower overall fg% (unless your Curry or Korver), and are an extremely unlikely result as a roll man in a PnR, but the average 3&amp;#39;s per minute attempted by this group was extremely low, and I deemed them insignificant noise, but they are noise all the same.&lt;/li&gt;\n&lt;li&gt;Everyone must understand that the Jazz at this time were running the pick and roll largely IN SPITE of the rest of the league. It was considered an outdated offense that wasn&amp;#39;t adapted by the rest of the league until the 2000&amp;#39;s (it is now the most common play run in the half court set, and by a wide margin). As such, many speculate that the Jazz had an advantage because pick and roll defenses were much less refined and practiced than they are now, so players within the Jazz&amp;#39;s system would see a boost in production/efficiency. There is some evidence supporting this, but it isn&amp;#39;t conclusive and I did not assume this beca
 use of that.&lt;/li&gt;\n&lt;li&gt;On a similar note, there is no way to say whether the lethality of the Stockton to Malone duo helped draw in double teams and thus opened easier dishes, and consequently assists to outside shooters or bigs under the basket. I do not take this into account because of that, as well as I think it is fair to assume many of those assists would have come from Malone after the double team hit him which would not affect Stockton&amp;#39;s assist numbers, as well as there are often double teams even in PnR&amp;#39;s with lesser players than Malone.&lt;/li&gt;\n&lt;/ol&gt;\n\n&lt;p&gt;The longevity of Stockton and Malone makes this even harder to answer because there are so many years to analyze. I could average their prime years, do the equations to convert them into advanced stats and go from there, but frankly I am a college student without that much time and patience and their ridiculous longevity also calls into question exactly what would be considered
  their &amp;quot;prime&amp;quot;. Because of this, I chose a single year that I determined to be the best average year for both of them within their &amp;quot;prime&amp;quot;. The year I chose was 1991-1992, a solid year for both Stockton and Malone, but neither had a career high in any relevant stat to his question, and at the same time it wasn&amp;#39;t close to any career low.&lt;/p&gt;\n\n&lt;p&gt;In 1991-1992, Stockton averaged 13.7 assists. Malone averaged 28 points on 9.9 (is it fair to call that 10?) made field goals a game. In order to understand how many of those &amp;quot;10&amp;quot; field goals were assisted, we have to look at modern day equivalents since that data is not available before 06-07 (if this data exists PLEASE tell me where). In order to find a similar number, I looked at modern day bigs who had high usage rates, played with a good passing point guard, and ran the pick and roll a lot (I also looked for players with similar skill sats and roles as Malone). S
 ome of the players I used to help you get a feel were (in no order, according to Hoopdata): Amare in 10-11 (ran the PnR with Felton [he was decent that year ok?] a ton. 52.6% assisted), Amare again in 06-07 (dat PnR wit Nash, 64.9% assisted), Scola 10-11 (ran it with Lowry. 64.3 assisted), Boozer in 09-10 &amp;amp; 10-11 (ran it with Deron, then with Rose. Interestingly went from 74.2% assisted to 64.7% assisted), Blake Griffin in 12-13 (with Chris Paul, 64.1% assisted), and David West in 10-11 (with Chris Paul, 60% assisted). I looked at some other examples as well, but you get the gist, teams with a good pick and roll duo, who ran the pick and roll a lot, generally had a roll guy with an average assist percentage of approximately 64% (As an interesting aside, starting bigs actually seem to have a higher percentage of their baskets assisted when they are not in a pick and roll heavy offense or are not the primary roll man, the league average for PF&amp;#39;s was closer to 66-67%, n
 ot what I would have expected). I have often heard that many teams in the current era of the NBA run the PnR even more than the Jazz did in the 90&amp;#39;s, but there is no way to prove this aside from me watching film and counting pick and rolls, so let&amp;#39;s assume the assist percentage translates somewhat accurately. Let&amp;#39;s say that Malone had 64% of his baskets assisted. &lt;/p&gt;\n\n&lt;p&gt;It is safe to assume that not 100% of Malone&amp;#39;s assisted baskets came from Stockton, but it IS safe to assume it was the vast majority, and since there is no number I could pull that wouldn&amp;#39;t be 100% guesswork, we are going to assume that Stockton was indeed responsible for all of Malone&amp;#39;s assisted baskets, just to stop the haters (that&amp;#39;s a joke). So that means 6.4 baskets to Malone were Stockton assists, and 4.6 weren&amp;#39;t. &lt;/p&gt;\n\n&lt;p&gt;Let&amp;#39;s assume then that Malone got traded to another team early in his career (heaven for
 bid!) for an average starting power forward (&lt;a href=\"http://www.basketball-reference.com/play-index/psl_finder.cgi?request=1&amp;amp;match=single&amp;amp;type=totals&amp;amp;per_minute_base=36&amp;amp;lg_id=NBA&amp;amp;is_playoffs=N&amp;amp;year_min=1992&amp;amp;year_max=1992&amp;amp;franch_id=&amp;amp;season_start=1&amp;amp;season_end=-1&amp;amp;age_min=0&amp;amp;age_max=99&amp;amp;height_min=0&amp;amp;height_max=99&amp;amp;birth_country_is=Y&amp;amp;birth_country=&amp;amp;is_active=&amp;amp;is_hof=&amp;amp;is_as=&amp;amp;as_comp=gt&amp;amp;as_val=&amp;amp;pos_is_f=Y&amp;amp;pos_is_fc=Y&amp;amp;pos_is_c=Y&amp;amp;pos_is_cf=Y&amp;amp;qual=&amp;amp;c1stat=gs&amp;amp;c1comp=gt&amp;amp;c1val=41&amp;amp;c2stat=&amp;amp;c2comp=gt&amp;amp;c2val=&amp;amp;c3stat=&amp;amp;c3comp=gt&amp;amp;c3val=&amp;amp;c4stat=&amp;amp;c4comp=gt&amp;amp;c4val=&amp;amp;c5stat=&amp;amp;c5comp=gt&amp;amp;c6mult=1.0&amp;amp;c6stat=&amp;amp;order_by=ts_pct\"&gt;this is the list I used for the upcoming analy
 sis btw&lt;/a&gt;). In 91-92, the average big shot 49%, compared to Malone&amp;#39;s 52.6%. The average big also had a usage rate of 19.7%, compared to Malone&amp;#39;s leading 30.3%. The average turnover rate for starting bigs was 12.9%, surprisingly Malone&amp;#39;s was only 11.6%. Let&amp;#39;s assume that the Jazz&amp;#39;s primary PnR man is exactly average, and that the Jazz still stick with a PnR based offense (Sloan is still the coach, so we can be pretty sure of this), so 64% of his baskets are assisted. We&amp;#39;ll also assume this player absorbs all of Malone&amp;#39;s minutes (37.7 per game is a lot, but then again, back then starters played more minutes. 17 bigs in 91-92 played over 37 mpg, this year only 14 players total averaged that much). This average player would make about 6.3 buckets a game. This means 4 (4.032) of those a game would be assists from Stockton (sticking with the &amp;quot;Stockton makes ALL the assists&amp;quot; assumption [reeeeal bad meme refer
 ence]). &lt;/p&gt;\n\n&lt;p&gt;Doing the simple math gets us to our conclusion: Stockton would average less assists a game, dropping from 13.7 assists to about 11.3 assists per game. This is a significant drop, but still outstanding assist numbers, especially with the understanding that there would be an additional 7-8 shot attempts to be disbursed in Malone&amp;#39;s absence, some of those probably resulting in additional Stockton assists. &lt;/p&gt;\n\n&lt;p&gt;In summary, Stockton would at LEAST average 11.3 assists in our 1991-1992 isolated example, and if you assume that 1991-1992 is a good indicator for the entire Stockton-Malone era, Stockton would have ended his career with somewhere between 12,200 and 12,800 assists (depending on minutes for him and the replacement player[s]). He would have had at least 6 seasons of double digit assists. This means he would still be the all-time assist leader (by a smallish margin), and in all likelihood still considered a top 5 point guard
  of all time. Again, this is all WITHOUT counting those left over possessions in Malone&amp;#39;s absence. Given that Stockton dished an assist on 14.3% of all the Jazz&amp;#39;s possessions in 1991-1992, if we include those possessions in the discussion then Stockton probably averages just over 1 assist more per game, which seems small but brings his average that year to 12.3 assists. Career wise that would mean he dishes between 13,500 and 14,200 assists, still giving him a very large lead in the record books and would mean he likely still holds at least 4 of the top 10 assists per game seasons (although no longer the top spot). &lt;/p&gt;\n\n&lt;p&gt;Basically, John Stockton was a beast of a point guard with or without Malone. Malone&amp;#39;s absence would have been a significant hit to Stockton&amp;#39;s production but he would still put up otherworldly assist numbers.&lt;/p&gt;\n\n&lt;p&gt;The real question might be: What would Stockton be without the Pick and Roll? The world 
 may never know...&lt;/p&gt;\n\n&lt;p&gt;Please give me feedback and criticism, I love hearing feedback about two of my idols whether its positive or negative. &lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":63,"saved":false,"num_reports":null,"created":1377828823.0,"downs":12,"hidden":false,"likes":null,"subreddit":"nba"},
-{"name":"t3_1l9ybg","permalink":"/r/OkCupid/comments/1l9ybg/critique_request_requesting_again/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":2,"ups":1,"link_flair_text":null,"title":"[Critique request] requesting again","author_flair_css_class":null,"author":"luniawar20","thumbnail":"self","created_utc":1377715116.0,"url":"http://www.reddit.com/r/OkCupid/comments/1l9ybg/critique_request_requesting_again/","stickied":false,"banned_by":null,"domain":"self.OkCupid","id":"1l9ybg","selftext":"[My profile](http://www.okcupid.com/profile/gksrl123?cf=regular)\n\nSo I deleted self-summary section because I felt like I was just writing cliches.\n\nIn your honest opinion, how about my photos? I know they are all selfie... but my other photos look even more terrible =( I am just bad with photos.\n\nFor the most private thin I'll admit section, I am thinking to write: \"I can't watch sad movies without Kleenex\" ok thing to write?","distinguished":null,"author_
 flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2rct2","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;&lt;a href=\"http://www.okcupid.com/profile/gksrl123?cf=regular\"&gt;My profile&lt;/a&gt;&lt;/p&gt;\n\n&lt;p&gt;So I deleted self-summary section because I felt like I was just writing cliches.&lt;/p&gt;\n\n&lt;p&gt;In your honest opinion, how about my photos? I know they are all selfie... but my other photos look even more terrible =( I am just bad with photos.&lt;/p&gt;\n\n&lt;p&gt;For the most private thin I&amp;#39;ll admit section, I am thinking to write: &amp;quot;I can&amp;#39;t watch sad movies without Kleenex&amp;quot; ok thing to write?&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":1,"saved":false,"num_reports":null,"created":1377743916.0,"downs":0,"hidden":false,"likes":null,"subreddit":"OkCupid"},
-{"name":"t3_1l9ubq","permalink":"/r/hometheater/comments/1l9ubq/looking_for_a_60_new_plasma_and_sound_between/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":29,"ups":4,"link_flair_text":null,"title":"Looking for a 60\" New Plasma and Sound between $1500-$2000","author_flair_css_class":null,"author":"fratzcatsfw","thumbnail":"self","created_utc":1377712365.0,"url":"http://www.reddit.com/r/hometheater/comments/1l9ubq/looking_for_a_60_new_plasma_and_sound_between/","stickied":false,"banned_by":null,"domain":"self.hometheater","id":"1l9ubq","selftext":"I'm looking for a 60\" Plasma under $2k.  Would love to stay panasonic because I have a 42\" that I've had in my bedroom for almost 4 years and it's been fantastic.  Just bought a new house with a finished basement and have dimming lights and no external windows in the tv room.  I want to go nice and big for a mini-theatre experience but I can't find anything conclusive for the budget.  I was hoping on s
 pending $1500 and putting the extra $500 into a nice sound system.\n\nThoughts? \n\nP.S.  I saw some good stuff on Samsung Plasma's and then I heard that the new glass they use between screens cracks at high running temps and break the tv with no customer support from Samsung for the issue.  :\\  I've always admired their LED's but I know that I want a Plasma.\n\n\nThanks in advance guys/gals!","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2rof6","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I&amp;#39;m looking for a 60&amp;quot; Plasma under $2k.  Would love to stay panasonic because I have a 42&amp;quot; that I&amp;#39;ve had in my bedroom for almost 4 years and it&amp;#39;s been fantastic.  Just bought a new house with a finished basement and have dimming lights and no external windows in the tv room.  I want to go nice and big for a mini-theatre experience but I can&amp;#39;t fin
 d anything conclusive for the budget.  I was hoping on spending $1500 and putting the extra $500 into a nice sound system.&lt;/p&gt;\n\n&lt;p&gt;Thoughts? &lt;/p&gt;\n\n&lt;p&gt;P.S.  I saw some good stuff on Samsung Plasma&amp;#39;s and then I heard that the new glass they use between screens cracks at high running temps and break the tv with no customer support from Samsung for the issue.  :\\  I&amp;#39;ve always admired their LED&amp;#39;s but I know that I want a Plasma.&lt;/p&gt;\n\n&lt;p&gt;Thanks in advance guys/gals!&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":2,"saved":false,"num_reports":null,"created":1377741165.0,"downs":2,"hidden":false,"likes":null,"subreddit":"hometheater"},
-{"name":"t3_1lallx","permalink":"/r/microgrowery/comments/1lallx/some_plants_have_purple_stems_some_purple_fan/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":9,"ups":1,"link_flair_text":null,"title":"Some plants have purple stems, some purple fan leaves, but how to spot the one that will have purple buds?","author_flair_css_class":"CFL","author":"LostInJam","thumbnail":"","created_utc":1377732544.0,"url":"http://www.reddit.com/r/microgrowery/comments/1lallx/some_plants_have_purple_stems_some_purple_fan/","stickied":false,"banned_by":null,"domain":"self.microgrowery","id":"1lallx","selftext":"Picking a clone is not an option for me. I want to grow a bunch of \"purple\" seeds and pick one or two (max space) for the microgrow - but is there a way to know from a vegging plant if it will give purple buds? Waiting till it shows the buds is not an option neither. Stealth is the factor. \n\nI once had (and killed, r.i.p.) a purple seedling, and that's the 
 closest I have been to the cool purple :|","distinguished":null,"author_flair_text":"200W 2100k CFL, mycorrhizae, air pots, mostly organic","media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2s5jo","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;Picking a clone is not an option for me. I want to grow a bunch of &amp;quot;purple&amp;quot; seeds and pick one or two (max space) for the microgrow - but is there a way to know from a vegging plant if it will give purple buds? Waiting till it shows the buds is not an option neither. Stealth is the factor. &lt;/p&gt;\n\n&lt;p&gt;I once had (and killed, r.i.p.) a purple seedling, and that&amp;#39;s the closest I have been to the cool purple :|&lt;/p&gt;\n&lt;/div&gt;&lt;!-- SC_ON --&gt;","media_embed":{},"score":0,"saved":false,"num_reports":null,"created":1377761344.0,"downs":7,"hidden":false,"likes":null,"subreddit":"microgrowery"},
-{"name":"t3_1la0ec","permalink":"/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/","edited":false,"over_18":false,"approved_by":null,"is_self":true,"num_comments":1,"ups":2,"link_flair_text":null,"title":"Need help finding a new skincare routine.","author_flair_css_class":null,"author":"skincarerevamp","thumbnail":"self","created_utc":1377716610.0,"url":"http://www.reddit.com/r/SkincareAddiction/comments/1la0ec/need_help_finding_a_new_skincare_routine/","stickied":false,"banned_by":null,"domain":"self.SkincareAddiction","id":"1la0ec","selftext":"I recently found this subreddit, and since then have discovered the many errors of my skincare ways. I am a 26(F) who has been using Proactiv for about 3-4 years now. I know that there are less expensive products I can use that would be better on my skin.  \n\nSkin: I have somewhat oily skin, my forehead can get shiny. The pores on my nose and chin clog easily but my cheeks are always really smooth and clear. My
  biggest annoyance is my nose, which has been red and tends to flake since I was a teenager. I will get the occasional breakout, almost always hormonal. As long as I use Proactiv religiously, my skin stays overall pretty decent looking.  Also I have dark circles/uneven skin tone under my eyes and have tried many products without finding one I really love.  \n\nRoutine: I think I have overdone it with my routine in the past. I have recently stopped exfoliating as often, but I will list my previous routine.\n  \nAM – St. Ives scrub, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv repairing treatment, Simple protecting light moisturizer SPF 15, Clean &amp; Clear Advantage Spot Treatment, eye cream/serum (either Philosophy Eye Believe or Genifique Yeux Light-Pearl)\n\nPM – Ponds makeup removing wipes, Proactiv facewash (with or without Clarisonic), Proactiv toner over entire face, Proactiv clarifying night cream, Proactiv repairing treatment
 , Simple protecting light moisturizer SPF 15, eye cream/serum\n\nAlso once or twice a week I may use Proactiv refining mask, Proactiv blackhead dissolving gel, or \tProactiv glycolic acid peel\n\nOver the past few weeks I have stopped using the St. Ives Scrub and switched to an Aveeno scrub, which I can tell is a lot more gentle on my face. I only use the scrub now a couple times a week and my Clarisonic every few days at night.  \n\n\nSo basically I’m looking for advice because this routine is quite tedious/expensive and it works decently but not great.  Thanks!\n","distinguished":null,"author_flair_text":null,"media":null,"clicked":false,"link_flair_css_class":null,"subreddit_id":"t5_2tbbg","selftext_html":"&lt;!-- SC_OFF --&gt;&lt;div class=\"md\"&gt;&lt;p&gt;I recently found this subreddit, and since then have discovered the many errors of my skincare ways. I am a 26(F) who has been using Proactiv for about 3-4 years now. I know that there are less expensive products I can use
  that would be better on my skin.  &lt;/p&gt;\n\n&lt;p&gt;Skin: I have somewhat oily skin, my forehead can get shiny. The pores on my nose and chin clog easily but my cheeks are always really smooth and clear. My biggest annoyance is my nose, which has been red and tends to flake since I was a teenager. I will get the occasional breakout, almost always hormonal. As long as I use Proactiv religiously, my skin stays overall p

<TRUNCATED>

[69/71] [abbrv] git commit: iml should not be in source control

Posted by sb...@apache.org.
iml should not be in source control


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/aaeb0217
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/aaeb0217
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/aaeb0217

Branch: refs/heads/master
Commit: aaeb0217911150e58333776dc211b1940a48dbcc
Parents: c614c6a
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 18:18:42 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 18:18:42 2014 -0500

----------------------------------------------------------------------
 .../streams-components-test.iml                 | 55 --------------------
 1 file changed, 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/aaeb0217/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
deleted file mode 100644
index 60ae74a..0000000
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="streams-core (1)" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="module" module-name="streams-util (1)" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.1" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.1" level="project" />
-    <orderEntry type="module" module-name="streams-pojo (1)" />
-    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
-    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-


[14/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.xml b/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.xml
deleted file mode 100644
index be20319..0000000
--- a/trunk/streams-contrib/streams-provider-moreover/src/test/resources/org/apache/streams/data/moreover.xml
+++ /dev/null
@@ -1,1324 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://metabase.moreover.com/schema/articles10.xsd">
-	<status>SUCCESS</status>
-	<messageCode></messageCode>
-	<userMessage></userMessage>
-	<developerMessage></developerMessage>
-	<articles>
-		<article>
-			<sequenceId>245456021413</sequenceId>
-			<id>15418800603</id>
-			<language>English</language>
-			<title>Ed Miliband proving himself “a brave and adroit leader”</title>
-			<content>Peter Oborne’s article in the Telegraph about the political strength of Ed Miliband is very welcome . I do not agree with Oborne on the question of Miliband’s proposed reforms of the party’s relationship with the unions, but his article is a very useful corrective to the erroneous “common sense” that Ed is a weak leader of the opposition. 
- 
-In fact, Miliband has been extraordinarily successful in imposing his priorities, and the priorities of the Labour opposition onto the political agenda, despite the tendency of the mainstream media to sideline any opposition party. In that regard he has already been more successful than Thatcher, Cameron, Kinnock, Smith or Blair were in opposition 
- 
-Oborne writes: 
- 
-He has done several big and important things. The first was an act of great bravery. For roughly three decades all senior British politicians had deferred in the most demeaning and improper way to the media tycoon Rupert Murdoch. Mr Miliband refused to go along with this, thus helping to remove a giant stench from the heart of British public life. 
- 
-His second move was almost as audacious. When Ed Miliband became Labour leader, all political parties allowed the super-rich to buy access to decision-making, and in some cases even to purchase government policy. 
- 
-Again breaking with precedent, the new Labour leader refused to go weak at the knees when meeting billionaires. He even told them to pay their taxes. He has done his best to prioritise what he called the “squeezed middle” – hard-working people who obey the law, pay their taxes and find it very hard to get by. Greatly to his credit, over time he has dragged the Coalition with him in this mission. 
- 
-… Now we come to Mr Miliband’s great achievement: his opposition to David Cameron’s foolish suggestion three weeks ago that Britain should take part in an impetuous military attack on Syria. The Labour leader stood up against this – and changed the course of events. Whatever the fate of Mr Miliband from now on, even suppose he falls under a bus tomorrow, he has made the history books. 
- 
-Remember this: had Mr Cameron got his way, Tomahawk missiles were due to hit Damascus within 48 hours of that Commons vote. Ed Miliband’s level-headed demand for evidence, and respect for due process in the shape of the United Nations, bought the world time to think again. As a result, Assad has agreed to destroy his chemical weapons peacefully, thus creating the space for possible talks in Geneva that (let us pray) may bring an end to the conflict. 
- 
-Of course, a number of factors, above all the wise and skilful statesmanship of Russia’s Sergei Lavrov (the most formidable and clear-headed foreign minister in the world today) are responsible for the changed state of affairs. But Mr Miliband played his part. Not since Hugh Gaitskell unsuccessfully tried to avert the Suez invasion in 1956 has an opposition leader diverged from the government so dramatically, or so honourably, on an urgent issue of war and peace. 
- 
-These are wise words, and it is important to recognise how difficult the art of politics is. As with any skill, those who are good at it make it look easy, but what Miliband has achieved so far has been difficult, and he deserves more credit. 
- 
-Going into conference Labour faces two major challenges. 
- 
-Firstly, we are getting closer to a general election, and it is necessary to start fleshing out the vision of One Nation Labour with more defined policies, so that voters can see how a Labour government will actually work to benefit them, their families, their workmates and their communities. 
- 
-Secondly, the relationship with the affiliated unions needs to be resolved with an acceptable compromise that does not fundamentally jettison the collective basis with which unions relate to the party, but which still helps to move towards Ed’s vision of a mass membership party. 
- 
-There will be many outside the party, and sadly some inside it, who will be determined to misrepresent any compromise with the unions as a defeat or climb down by Miliband. Yet, precisely because he has demonstrated skill and bravery as leader of the opposition, he can afford to ignore those luring him onto the rocks. Compromise is not a sign of weakness, it is a manifestation of strength. 
- 
-The unions and Ed Milband share a common goal to have a fairer and better Britain, they share a common goal of a Labour Party that is engaged with ordinary working people. These are the foundations for building a stronger relationship, not for breaking apart. 
-   Bookmarks  
-  
-      
- Hide Sites</content>
-			<tags>
-				<tag>Uncategorized</tag>
-			</tags>
-			<publishedDate>2013-09-18T20:10:29Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=8dd0ef402cfe03bd1379538175859f21d30c79d949f0&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://www.leftfutures.org/2013/09/ed-miliband-proving-himself-a-brave-and-adroit-leader/#comments</commentsUrl>
-			<outboundUrls>
-				<outboundUrl>http://www.telegraph.co.uk/news/politics/ed-miliband/10318072/Ed-Miliband-is-proving-himself-to-be-a-brave-and-adroit-leader.html</outboundUrl>
-				<outboundUrl>http://del.icio.us/post?url=http%3A%2F%2Fwww.leftfutures.org%2F2013%2F09%2Fed-miliband-proving-himself-a-brave-and-adroit-leader%2F&amp;title=Ed+Miliband+proving+himself+%26%238220%3Ba+brave+and+adroit+leader%26%238221%3B</outboundUrl>
-				<outboundUrl>http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.leftfutures.org%2F2013%2F09%2Fed-miliband-proving-himself-a-brave-and-adroit-leader%2F</outboundUrl>
-				<outboundUrl>http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.leftfutures.org%2F2013%2F09%2Fed-miliband-proving-himself-a-brave-and-adroit-leader%2F&amp;title=Ed+Miliband+proving+himself+%26%238220%3Ba+brave+and+adroit+leader%26%238221%3B</outboundUrl>
-				<outboundUrl>http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.leftfutures.org%2F2013%2F09%2Fed-miliband-proving-himself-a-brave-and-adroit-leader%2F&amp;title=Ed+Miliband+proving+himself+%26%238220%3Ba+brave+and+adroit+leader%26%238221%3B</outboundUrl>
-				<outboundUrl>http://twitter.com/home/?status=Check+out+Ed+Miliband+proving+himself+%26%238220%3Ba+brave+and+adroit+leader%26%238221%3B+@+http%3A%2F%2Fwww.leftfutures.org%2F2013%2F09%2Fed-miliband-proving-himself-a-brave-and-adroit-leader%2F</outboundUrl>
-			</outboundUrls>
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800603</duplicateGroupId>
-			<media>
-				<image>
-					<url>http://www.leftfutures.org/wp-content/uploads/2012/11/imgres-e1351847823456.jpeg</url>
-					<mimeType></mimeType>
-					<caption></caption>
-				</image>
-			</media>
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies />
-			<locations />
-			<author>
-				<name>Andy Newman</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Left Futures</name>
-				<homeUrl>http://www.leftfutures.org</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>132864423</id>
-					<name>Left Futures</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.6</generator>
-					<description>Forward thinking for the democratic left</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>13620</autoRankOrder>
-						<inboundLinkCount>181</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics>
-						<autoTopic>ugc politics feeds</autoTopic>
-						<autoTopic>ugc financial feeds</autoTopic>
-						<autoTopic>ugc economics feeds</autoTopic>
-					</autoTopics>
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456021728</sequenceId>
-			<id>15418800619</id>
-			<language>English</language>
-			<title>Uma Baleia Franca de aproximadamente 15 metros e seu filhote são vistos na manhã na praia do Pecado, na costa de Macaé</title>
-			<content>Foto: Rui Porto Filho/ Fotoarena</content>
-			<tags>
-				<tag>Alimária</tag>
-			</tags>
-			<publishedDate>2013-09-18T19:05:17Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:56Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=b088fcaae1da433c1379538176008c07da746b4ef4149&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://www.blogger.com/comment.g?blogID=1606853466481575678&amp;postID=5174197942611715761&amp;isPopup=true</commentsUrl>
-			<outboundUrls>
-				<outboundUrl>http://1.bp.blogspot.com/-f_RgGkHB_00/Ujn5DASOWxI/AAAAAAAA5LY/ifHWBUU5ckc/s1600/imagens-do-dia-best-pictures-of-day-20130902-15-size-598.jpg</outboundUrl>
-				<outboundUrl>http://feeds.feedburner.com/~ff/Photografia?a=AQhasqnkOeI:VGYZMvK7hlU:4cEx4HpKnUU</outboundUrl>
-			</outboundUrls>
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800619</duplicateGroupId>
-			<media>
-				<image>
-					<url>http://1.bp.blogspot.com/-f_RgGkHB_00/Ujn5DASOWxI/AAAAAAAA5LY/ifHWBUU5ckc/s640/imagens-do-dia-best-pictures-of-day-20130902-15-size-598.jpg</url>
-					<mimeType></mimeType>
-					<caption></caption>
-				</image>
-			</media>
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies />
-			<locations />
-			<author>
-				<name>Antonio F. Nogueira Jr.</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Photografia</name>
-				<homeUrl>http://pincel-photos.blogspot.com/</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country></country>
-					<countryCode></countryCode>
-					<region></region>
-					<subregion></subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>79846770</id>
-					<name>Photografia</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>Blogger</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>Blogger http://www.blogger.com</generator>
-					<description>Arte, Charges &amp; Fotos</description>
-					<tags>
-						<tag>Em Tempo</tag>
-						<tag>Esporte</tag>
-						<tag>Poítica de Privacidade</tag>
-						<tag>Publicidade</tag>
-						<tag>Bert Hardy</tag>
-						<tag>Digitus</tag>
-						<tag>Re-vista</tag>
-						<tag>Timm Suess</tag>
-						<tag>Festival de Luz em Jerusalém</tag>
-						<tag>Arquelogia</tag>
-						<tag>Poh Ling Yeow</tag>
-						<tag>Em Movimento</tag>
-						<tag>Grafitt</tag>
-						<tag>Metragem</tag>
-						<tag>iPhone Photography Awards</tag>
-						<tag>LP</tag>
-						<tag>Protesto</tag>
-						<tag>Animado</tag>
-						<tag>Quim Barreiros</tag>
-						<tag>Ai Weiwei</tag>
-						<tag>Jean-Clau</tag>
-					</tags>
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>Unassigned</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>4</autoRank>
-						<autoRankOrder>30725</autoRankOrder>
-						<inboundLinkCount>51</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022040</sequenceId>
-			<id>15418800633</id>
-			<language>English</language>
-			<title>canada land</title>
-			<content>1.  Explain why you think land is an important part of our Canadian identity: it's famous for being cold and we have first nation land 
-2.  Find one example of Canadian artwork portraying an example of “land” in Canada and use it as an example in your post:</content>
-			<tags />
-			<publishedDate>2013-09-18T21:02:50Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:56Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=9da02a1e88b76ff613795381760621b30b8d1bb884e74&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl></commentsUrl>
-			<outboundUrls />
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800633</duplicateGroupId>
-			<media>
-				<image>
-					<url>http://images02.olx.ca/ui/5/91/30/1273688622_93079130_4-1000-Silver-Spray-Drive-Greater-Victoria-BC-Canada-Ocean-Front-Acreage-Land-1273688622.jpg</url>
-					<mimeType></mimeType>
-					<caption></caption>
-				</image>
-			</media>
-			<publishingPlatform>
-				<itemId>456</itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies>
-				<company>
-					<name>Being Co., Ltd.</name>
-					<symbol>4734</symbol>
-					<exchange>TSE</exchange>
-					<isin>JP3799650001</isin>
-					<titleCount>0</titleCount>
-					<contentCount>1</contentCount>
-					<primary>true</primary>
-				</company>
-			</companies>
-			<locations />
-			<author>
-				<name>oopp2</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId>17344533</userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Oopp2's Blog</name>
-				<homeUrl>http://oopp2.wordpress.com</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country></country>
-					<countryCode></countryCode>
-					<region></region>
-					<subregion></subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>164381453</id>
-					<name>Oopp2's Blog</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher>16727032</idFromPublisher>
-					<generator>http://wordpress.com/</generator>
-					<description>Just another WordPress.com site</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>Unassigned</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>9</autoRank>
-						<autoRankOrder>355091</autoRankOrder>
-						<inboundLinkCount>0</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022253</sequenceId>
-			<id>15418800595</id>
-			<language>English</language>
-			<title>Comment on Peugeot 208 já está em promoção no Rio: R$ 36.990 by m21</title>
-			<content>Quem sabe a solu&amp;ccedil;&amp;atilde;o &amp;eacute; esta :  https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak...</content>
-			<tags />
-			<publishedDate>2013-09-18T21:02:55Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=8f1f7857c111f2341379538175771fb684bc8c01e4161&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl></commentsUrl>
-			<outboundUrls>
-				<outboundUrl>https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-ash3/545204_614110681944140_104952307_n.jpg</outboundUrl>
-			</outboundUrls>
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800595</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics>
-				<topic>
-					<name>European business news</name>
-					<group>Business</group>
-				</topic>
-				<topic>
-					<name>France news</name>
-					<group>Regional</group>
-				</topic>
-				<topic>
-					<name>Automotive industry news</name>
-					<group>Industry</group>
-				</topic>
-			</topics>
-			<companies>
-				<company>
-					<name>Peugeot</name>
-					<symbol>UG</symbol>
-					<exchange>XPAR</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEUGF</symbol>
-					<exchange>OTCPK</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>BER</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>FRA</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>DUS</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>STU</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>MUN</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEUGY</symbol>
-					<exchange>OTCPK</exchange>
-					<isin>US7168255005</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>XTER</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>PEU</symbol>
-					<exchange>HAM</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-				<company>
-					<name>Peugeot</name>
-					<symbol>0NQ9</symbol>
-					<exchange>LTS</exchange>
-					<isin>FR0000121501</isin>
-					<titleCount>1</titleCount>
-					<contentCount>0</contentCount>
-					<primary>true</primary>
-				</company>
-			</companies>
-			<locations />
-			<author>
-				<name>m21</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Noticias Automotivas</name>
-				<homeUrl>http://www.noticiasautomotivas.com.br</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>Brazil</country>
-					<countryCode>br</countryCode>
-					<region>Americas</region>
-					<subregion>South America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>154990358</id>
-					<name>Noticias Automotivas</name>
-					<mediaType>Comment</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.com/</generator>
-					<description>Noticias Automotivas</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>Unassigned</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>6</autoRank>
-						<autoRankOrder>72552</autoRankOrder>
-						<inboundLinkCount>15</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022351</sequenceId>
-			<id>15418800551</id>
-			<language>English</language>
-			<title>Jeff Wescott Gully Factory 2013</title>
-			<content>Jeff Wescott Gully Factory 2013 By drewhosselton
-Wed, Sep 18 2013 11:51 am | Comments SHARE: Arizona transplant Jeff Wescott went in on this juicy peach for The Gully Factory. There is some absolutely insane shit in this, Wescott is a boss and if my memory serves me right he is without a bike sponsor. Someone hook this guy up! “Rider: Jeff Wescott Filmed &amp; Edited by Tony Malouf Additional filming by Joey Motta, Jon Schmoldt &amp; Christian Rigal TheGullyFactory.com“ CATEGORIZED: Promo, Rider Section, Riding, site, Videos
-TAGS: best of the web, Jeff Wescott, The Gully Factory SHARE: RELATED ARTICLES The Gully Factory Clippeach at Camelback Plaza The Gully Factory – Overdue Video: Jeff Wescott’s TGF Halloween Treat BSD in Puerto Rico</content>
-			<tags>
-				<tag>Promo</tag>
-				<tag>Rider Section</tag>
-				<tag>Riding</tag>
-				<tag>site</tag>
-				<tag>Videos</tag>
-				<tag>best of the web</tag>
-				<tag>Jeff Wescott</tag>
-				<tag>The Gully Factory</tag>
-			</tags>
-			<publishedDate>2013-09-18T18:51:48Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=af761ac8a48c197513795381753703d3e1d3738c744aa&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://bmx.transworld.net/1000181107/videos/jeff-wescott-gully-factory-2013/#comments</commentsUrl>
-			<outboundUrls>
-				<outboundUrl>http://www.TheGullyFactory.com/</outboundUrl>
-			</outboundUrls>
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800551</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies />
-			<locations />
-			<author>
-				<name>drewhosselton</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Ride BMX »  | Transworld BMX</name>
-				<homeUrl>http://bmx.transworld.net</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>58495349</id>
-					<name>Ride BMX »  | Transworld BMX</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.2.1</generator>
-					<description>BMX Videos, BMX Bikes, News, Photos, Pro Bike Checks, Products, And More By Transworld\'s Ride BMX Magazine</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>8762</autoRankOrder>
-						<inboundLinkCount>286</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022506</sequenceId>
-			<id>15418800553</id>
-			<language>English</language>
-			<title>Video – Proving Grounds Stop 3: San Diego, California</title>
-			<content>Video – Proving Grounds Stop 3: San Diego, California By Ryan Fudger
-Wed, Sep 18 2013 9:55 am | Comments SHARE: The third and final stop of our No Fear Proving Grounds series went down at the epic Mission Valley YMCA park in San Diego, California. If one place in SoCal has a heavy park scene, it’s centered around this park. Tons of locals are far beyond “good,” and age apparently doesn’t matter, as the 11 and under class was just as entertaining as any other under-18 class. Check the highlights and results from the day… VIEW: open in colorbox presented by transworld.tv   No Fear Proving Grounds Stop 3: Mission Valley, San Diego Results: 11 &amp; Under Novice
-1. Jason Blais   11 &amp; Under Advanced
-1. Kaden Stone
-2. Cayden Hubbard
-3. Tyler Bush   12-14 Novice
-1. John Kovacs
-2. Alex Taylor
-3. Tony Moreno
-4. Jarod Peck
-5. Jocob Blais
-6. Noah Nelson
-7. Chris Segars
-8. Travis Northington
-9. Braden Davis
-10. Mitchell Flores
-11. Jose Esteves   12-14 Advanced
-1. Jadin Covert
-2. Brian Vazquez
-3. Andrew Casarez
-4. Tucker Smith
-5. John Kovacs
-6. Kaden Stone   15-17 Novice
-1. Daniel Posten
-2. Omar Liborio
-3. Austin Sosnowski
-4. Jaosn Platz
-5. Nikita Ducarroz
-  15-17 Advanced
-1. Tyler Thompson
-2. Jacob Bailey
-3. Chris Friedrichs
-4. Brennan Mills
-5. Shay Hawkins
-6. Jared Stone   18+ Novice
-1. Nikita Ducarroz
-2. Bryan Fitzer   Girls
-1. Nikita Ducarroz   18+ Advanced
-1. Brad Thomas
-2. Tyler Vosburgh
-3. Austin McIntosh
-4. Nic Hilton
-5. Jacob Carbajal
-6. Joseph Valles   Old Guys: 35+
-1. Mike Grosse
-2. Juca Farela
-3. David White
-4. Freddy Chulo
-5. Bryant Dubon
-6. Vince Torres
-7. Dave Correll   Open
-1. Jake Leiva
-2. Brad Thomas
-3. Edward Percival
-4. Parker Heath
-5. Sebastian Smith
-6. Trevor Fitz
-7. Robbie DeCelle
-8. Derek Kenny
-9. Tyler Thompson
-10. Robin Davis
-11. Blake Peters
-12. Jon Hernandez
-13. Meimetis Lawrence
-14. Shane Davis
-15. Jadin Covert
-16. Kaden Stone
-  Best Trick
-Sebastian Smith (720 barspin)” CATEGORIZED: Article, Events, Features, Product, Riding, site, Videos
-SHARE: RELATED ARTICLES No Fear Proving Grounds, Stop 3: Mission Valley – Results &amp; Photos Video – Proving Grounds Stop 2: Long Beach, California No Fear Proving Grounds, Stop 1: Escondido Results &amp; Photos Video – No Fear Proving Grounds, Stop 1: Escondido</content>
-			<tags>
-				<tag>Article</tag>
-				<tag>Events</tag>
-				<tag>Features</tag>
-				<tag>Product</tag>
-				<tag>Riding</tag>
-				<tag>site</tag>
-				<tag>Videos</tag>
-			</tags>
-			<publishedDate>2013-09-18T16:55:08Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=a6ae06305918a39413795381753763cecc9bca1e0450b&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://bmx.transworld.net/1000181089/features/video-proving-grounds-stop-3-san-diego-california/#comments</commentsUrl>
-			<outboundUrls />
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800553</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics>
-				<topic>
-					<name>US news</name>
-					<group>Regional</group>
-				</topic>
-				<topic>
-					<name>San Diego news</name>
-					<group>US regional</group>
-				</topic>
-			</topics>
-			<companies />
-			<locations />
-			<author>
-				<name>Ryan Fudger</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Ride BMX »  | Transworld BMX</name>
-				<homeUrl>http://bmx.transworld.net</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>58495349</id>
-					<name>Ride BMX »  | Transworld BMX</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.2.1</generator>
-					<description>BMX Videos, BMX Bikes, News, Photos, Pro Bike Checks, Products, And More By Transworld\'s Ride BMX Magazine</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>8762</autoRankOrder>
-						<inboundLinkCount>286</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022661</sequenceId>
-			<id>15418800554</id>
-			<language>English</language>
-			<title>No Fear Proving Grounds, Stop 3: Mission Valley – Results &amp; Photos</title>
-			<content>No Fear Proving Grounds, Stop 3: Mission Valley – Results &amp; Photos By Jeff Z.
-Wed, Sep 18 2013 9:22 am | Comments SHARE: The third and final comp of the three-stop 2013 No Fear Proving Grounds amateur contest series took place at Mission Valley YMCA in San Diego this past weekend, with the biggest turnout at what was arguably the best park of the series. Well over 50 shredders showed up to battle it out in their age and skill level classes, with many riding in the open class, as well. Know that the future is bright—there were so many good kids there throwing down all day, the riding was seriously impressive! Plenty of young rippers are coming up through the ranks, and you’re gonna start hearing a lot of their names a lot more often. Here you’ll find the results for all the classes (below the galleries) and a photo gallery for each. Be sure to watch for our edit to see all the highlights in motion. Thanks to No Fear for making this series awesome, and to all the core BMX brands who donated prizes and supported these comps! —Mulligan 11 &amp; Under Nov
 ice, 11 &amp; Under Advanced Photo Gallery   12-14 Novice Photo Gallery   12-14 Advanced, 18+ Novice, Girls Photo Gallery   15-17 Novice Photo Gallery   15-17 Advanced Photo Gallery   18+ Advanced Photo Gallery   Old Guys 35+ Photo Gallery   Open Class Photo Gallery   Best Trick Photo Gallery   No Fear Proving Grounds
-Stop 3: Mission Valley, San Diego Results 11 &amp; Under Novice
-1. Jason Blais 11 &amp; Under Advanced
-1. Kaden Stone
-2. Cayden Hubbard
-3. Tyler Bush 12-14 Novice
-1. John Kovacs
-2. Alex Taylor
-3. Tony Moreno
-4. Jarod Peck
-5. Jocob Blais
-6. Noah Nelson
-7. Chris Segars
-8. Travis Northington
-9. Braden Davis
-10. Mitchell Flores
-11. Jose Esteves 12-14 Advanced
-1. Jadin Covert
-2. Brian Vazquez
-3. Andrew Casarez
-4. Tucker Smith
-5. John Kovacs
-6. Kaden Stone 15-17 Novice
-1. Daniel Posten
-2. Omar Liborio
-3. Austin Sosnowski
-4. Jason Platz
-5. Nikita Ducarroz 15-17 Advanced
-1. Tyler Thompson
-2. Jacob Bailey
-3. Chris Friedrichs
-4. Brennan Mills
-5. Shay Hawkins
-6. Jared Stone 18+ Novice
-1. Bryan Fitzer Girls
-1. Nikita Ducarroz 18+ Advanced
-1. Brad Thomas
-2. Tyler Vosburgh
-3. Austin McIntosh
-4. Nic Hilton
-5. Jacob Carbajal
-6. Joseph Valles Old Guys: 35+
-1. Mike Grosse
-2. Juca Farela
-3. David White
-4. Freddy Chulo
-5. Bryant Dubon
-6. Vince Torres
-7. Dave Correll Open
-1. Jake Leiva
-2. Brad Thomas
-3. Edward Percival
-4. Parker Heath
-5. Sebastian Smith
-6. Trevor Fitz
-7. Robbie DeCelle
-8. Derek Kenny
-9. Tyler Thompson
-10. Robin Davis
-11. Blake Peters
-12. Jon Hernandez
-13. Lawrence Meimetis
-14. Shane Davis
-15. Jadin Covert
-16. Kaden Stone Best Trick
-Sebastian Smith (720 barspin) Product toss…aaarrrghhh! Photo: Mulligan CATEGORIZED: Article, Event Coverage, Features, Photos
-TAGS: 2013 no fear proving grounds, Am, Contest, event, Mission Valley YMCA, No Fear, No Fear Proving Grounds, ODI, proving grounds, results, Stop 3: Mission Valley SHARE: RELATED ARTICLES No Fear Proving Grounds, Stop 1: Escondido Results &amp; Photos Video – Proving Grounds Stop 2: Long Beach, California Video – No Fear Proving Grounds, Stop 1: Escondido No Fear Presents Proving Grounds</content>
-			<tags>
-				<tag>Article</tag>
-				<tag>Event Coverage</tag>
-				<tag>Features</tag>
-				<tag>Photos</tag>
-				<tag>2013 no fear proving grounds</tag>
-				<tag>Am</tag>
-				<tag>Contest</tag>
-				<tag>event</tag>
-				<tag>Mission Valley YMCA</tag>
-				<tag>No Fear</tag>
-				<tag>No Fear Proving Grounds</tag>
-				<tag>ODI</tag>
-				<tag>proving grounds</tag>
-				<tag>results</tag>
-				<tag>Stop 3: Mission Valley</tag>
-			</tags>
-			<publishedDate>2013-09-18T16:22:13Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=b90a6d4c6eb24f711379538175397b807df7510be46bb&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://bmx.transworld.net/1000180913/features/no-fear-proving-grounds-stop-3-mission-valley-results-photos/#comments</commentsUrl>
-			<outboundUrls />
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800554</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies />
-			<locations />
-			<author>
-				<name>Jeff Z.</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Ride BMX »  | Transworld BMX</name>
-				<homeUrl>http://bmx.transworld.net</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>58495349</id>
-					<name>Ride BMX »  | Transworld BMX</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.2.1</generator>
-					<description>BMX Videos, BMX Bikes, News, Photos, Pro Bike Checks, Products, And More By Transworld\'s Ride BMX Magazine</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>8762</autoRankOrder>
-						<inboundLinkCount>286</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022816</sequenceId>
-			<id>15418800594</id>
-			<language>English</language>
-			<title>Area 51 Trail Session</title>
-			<content>Area 51 Trail Session By Rex Reynolds
-Wed, Sep 18 2013 1:12 am | Comments SHARE: Fall time means that trails season is in full effect, and the guys at Area 51 have been taking advantage of the cooler temperatures that the changing season has brought. “Filmed and Edited by: Bryan Carter Song: Bob Seger “Night Moves” CATEGORIZED: Mix Edit, Videos
-TAGS: Area 51, best of the web SHARE: RELATED ARTICLES Video: Brian Yeagle’s Austin Eastside Trail Session Scotty Cranmer’s Welcome to Hyper Edit 2013 New Zealand Trail Trip Video: Corey Bohan’s Cali Trails Session</content>
-			<tags>
-				<tag>Mix Edit</tag>
-				<tag>Videos</tag>
-				<tag>Area 51</tag>
-				<tag>best of the web</tag>
-			</tags>
-			<publishedDate>2013-09-18T08:12:52Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=85e3a1fb6bc75ed01379538175735c2acb06c59eb4dc0&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://bmx.transworld.net/1000181085/videos/area-51-trail-session/#comments</commentsUrl>
-			<outboundUrls />
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800594</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies />
-			<locations />
-			<author>
-				<name>Rex Reynolds</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Ride BMX »  | Transworld BMX</name>
-				<homeUrl>http://bmx.transworld.net</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>58495349</id>
-					<name>Ride BMX »  | Transworld BMX</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.2.1</generator>
-					<description>BMX Videos, BMX Bikes, News, Photos, Pro Bike Checks, Products, And More By Transworld\'s Ride BMX Magazine</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>8762</autoRankOrder>
-						<inboundLinkCount>286</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456022971</sequenceId>
-			<id>15418800596</id>
-			<language>English</language>
-			<title>Tom Stretton – Colony 2013</title>
-			<content>Tom Stretton – Colony 2013 By Lino Gonzalez
-Tue, Sep 17 2013 9:19 pm | Comments SHARE: Tom Stretton puts down some creative flatland inspired moves in the parks and streets… “Filmed over the past 6 months, most of which was in a space of a month roadtrip throughout Australia. 
-We hope you enjoy Tom’s riding as much as we do… Filmed and Edited by Cooper Brownlee
-Additional footage from Tristan Montagu and Troy Charlesworth colonybmx.com.au
-@colonybmxbrand
-facebook.com/colonybmxbrand“ CATEGORIZED: Rider Section, Videos
-TAGS: Australia, best of the web, Tom Stretton SHARE: RELATED ARTICLES Video: Tom Stretton’s Ten Clips for Colony Cooper Brownlee’s Colony DVD Section Marnold’s Ten Clips for Colony Mick Bayzand – Colony DVD</content>
-			<tags>
-				<tag>Rider Section</tag>
-				<tag>Videos</tag>
-				<tag>Australia</tag>
-				<tag>best of the web</tag>
-				<tag>Tom Stretton</tag>
-			</tags>
-			<publishedDate>2013-09-18T04:19:10Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=81c4145993677b751379538175780f40981ce19a14954&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://bmx.transworld.net/1000181081/videos/tom-stretton-colony-2013/#comments</commentsUrl>
-			<outboundUrls>
-				<outboundUrl>http://www.colonybmx.com.au/</outboundUrl>
-				<outboundUrl>https://www.facebook.com/colonybmxbrand</outboundUrl>
-			</outboundUrls>
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800596</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics />
-			<companies />
-			<locations />
-			<author>
-				<name>Lino Gonzalez</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Ride BMX »  | Transworld BMX</name>
-				<homeUrl>http://bmx.transworld.net</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>58495349</id>
-					<name>Ride BMX »  | Transworld BMX</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.2.1</generator>
-					<description>BMX Videos, BMX Bikes, News, Photos, Pro Bike Checks, Products, And More By Transworld\'s Ride BMX Magazine</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>8762</autoRankOrder>
-						<inboundLinkCount>286</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-		<article>
-			<sequenceId>245456023126</sequenceId>
-			<id>15418800598</id>
-			<language>English</language>
-			<title>Zak Earley – Windowless Van Living in Smog</title>
-			<content>Zak Earley – Windowless Van Living in Smog By drewhosselton
-Tue, Sep 17 2013 8:18 pm | Comments SHARE: Its quite apparent from this video that Zak Earley knows how to have fun. He shreds nearly every terrain on his bike, and still manages to get a surf and moto session in. It looks like he definitely had the full Cali experience. CATEGORIZED: Mix Edit, Rider Section, Riding, Videos
-TAGS: best of the web, Zak Earley SHARE: RELATED ARTICLES Inside The Man Van With BMX’er Zak Earley: Crooked World BMX Can-Can How To With Zak Earley &amp; Ryan Nyquist: Getting Awesome Ep. 17 BSD Living for the City Part II BSD’s Living for the City, Part One</content>
-			<tags>
-				<tag>Mix Edit</tag>
-				<tag>Rider Section</tag>
-				<tag>Riding</tag>
-				<tag>Videos</tag>
-				<tag>best of the web</tag>
-				<tag>Zak Earley</tag>
-			</tags>
-			<publishedDate>2013-09-18T03:18:31Z</publishedDate>
-			<harvestDate>2013-09-18T21:02:55Z</harvestDate>
-			<embargoDate></embargoDate>
-			<licenseEndDate></licenseEndDate>
-			<url>http://ct.moreover.com/ct?haid=a2b1fce0705c114c137953817580331c68c232363444b&amp;co=f000000014264s-3426307852</url>
-			<commentsUrl>http://bmx.transworld.net/1000181077/videos/zak-earley-windowless-van-living-in-smog/#comments</commentsUrl>
-			<outboundUrls />
-			<dataFormat>text</dataFormat>
-			<copyright></copyright>
-			<loginStatus></loginStatus>
-			<duplicateGroupId>15418800598</duplicateGroupId>
-			<media />
-			<publishingPlatform>
-				<itemId></itemId>
-				<statusId></statusId>
-				<inReplyToUserId></inReplyToUserId>
-				<inReplyToStatusId></inReplyToStatusId>
-				<totalViews></totalViews>
-			</publishingPlatform>
-			<adultLanguage>false</adultLanguage>
-			<topics>
-				<topic>
-					<name>Environment news</name>
-					<group>Science</group>
-				</topic>
-			</topics>
-			<companies />
-			<locations />
-			<author>
-				<name>drewhosselton</name>
-				<homeUrl></homeUrl>
-				<email></email>
-				<description></description>
-				<dateLastActive></dateLastActive>
-				<publishingPlatform>
-					<userName></userName>
-					<userId></userId>
-					<statusesCount></statusesCount>
-					<totalViews></totalViews>
-					<followingCount></followingCount>
-					<followersCount></followersCount>
-					<kloutScore></kloutScore>
-				</publishingPlatform>
-			</author>
-			<source>
-				<name>Ride BMX »  | Transworld BMX</name>
-				<homeUrl>http://bmx.transworld.net</homeUrl>
-				<publisher></publisher>
-				<primaryLanguage></primaryLanguage>
-				<primaryMediaType></primaryMediaType>
-				<category></category>
-				<editorialRank></editorialRank>
-				<location>
-					<country>United States</country>
-					<countryCode>us</countryCode>
-					<region>Americas</region>
-					<subregion>Northern America</subregion>
-					<state></state>
-					<zipArea></zipArea>
-					<zipCode></zipCode>
-				</location>
-				<feed>
-					<id>58495349</id>
-					<name>Ride BMX »  | Transworld BMX</name>
-					<mediaType>Blog</mediaType>
-					<publishingPlatform>WordPress</publishingPlatform>
-					<idFromPublisher></idFromPublisher>
-					<generator>http://wordpress.org/?v=3.2.1</generator>
-					<description>BMX Videos, BMX Bikes, News, Photos, Pro Bike Checks, Products, And More By Transworld\'s Ride BMX Magazine</description>
-					<tags />
-					<imageUrl></imageUrl>
-					<copyright></copyright>
-					<language>English</language>
-					<dataFormat>text</dataFormat>
-					<rank>
-						<autoRank>3</autoRank>
-						<autoRankOrder>8762</autoRankOrder>
-						<inboundLinkCount>286</inboundLinkCount>
-					</rank>
-					<inWhiteList>true</inWhiteList>
-					<autoTopics />
-					<editorialTopics />
-					<genre></genre>
-				</feed>
-			</source>
-		</article>
-	</articles>
-</response>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/README.markdown
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/README.markdown b/trunk/streams-contrib/streams-provider-rss/README.markdown
deleted file mode 100644
index e31b5ce..0000000
--- a/trunk/streams-contrib/streams-provider-rss/README.markdown
+++ /dev/null
@@ -1,16 +0,0 @@
-streams-provider-rss
-
-Purpose
-
-  Module connects to rss feeds, collects events, and passes each message downstream once.
-
-Capabilities
-
-  Simplification
-
-    Optionally, module can output messages as basic text
-
-  Normalization
-
-    Optionally, module can output messages as other json objects such as Activity
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/pom.xml b/trunk/streams-contrib/streams-provider-rss/pom.xml
deleted file mode 100644
index ae2d00f..0000000
--- a/trunk/streams-contrib/streams-provider-rss/pom.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?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-rss</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.typesafe</groupId>
-            <artifactId>config</artifactId>
-        </dependency>
-        <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>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</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>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.jayway.jsonpath</groupId>
-            <artifactId>json-path</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.jayway.jsonpath</groupId>
-            <artifactId>json-path-assert</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-persist-console</artifactId>
-            <version>0.1-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>rome</groupId>
-            <artifactId>rome</artifactId>
-            <version>1.0</version>
-        </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</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/RssStreamConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams.rss.pojo</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</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>org.apache.streams.rss</generatePackage>-->
-                    <!--<schemas>-->
-                        <!--<schema>-->
-                        <!--<fileset>-->
-                            <!--&lt;!&ndash; Defaults to schemaIncludes &ndash;&gt;-->
-                            <!--<includes>-->
-                                <!--<include>contents.xsd</include>-->
-                                <!--<include>opml.xsd</include>-->
-                            <!--</includes>-->
-                        <!--</fileset>-->
-                        <!--</schema>-->
-                    <!--</schemas>-->
-                    <!--&lt;!&ndash;<plugins>&ndash;&gt;-->
-                        <!--&lt;!&ndash;<plugin>&ndash;&gt;-->
-                            <!--&lt;!&ndash;<groupId>org.jvnet.jaxb2_commons</groupId>&ndash;&gt;-->
-                            <!--&lt;!&ndash;<artifactId>jaxb2-basics</artifactId>&ndash;&gt;-->
-                            <!--&lt;!&ndash;<version>0.6.5</version>&ndash;&gt;-->
-                        <!--&lt;!&ndash;</plugin>&ndash;&gt;-->
-                    <!--&lt;!&ndash;</plugins>&ndash;&gt;-->
-                <!--</configuration>-->
-                <!--<executions>-->
-                    <!--<execution>-->
-                        <!--<goals>-->
-                            <!--<goal>generate</goal>-->
-                        <!--</goals>-->
-                    <!--</execution>-->
-                <!--</executions>-->
-            <!--</plugin>-->
-        </plugins>
-    </build>
-</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventClassifier.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventClassifier.java b/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventClassifier.java
deleted file mode 100644
index 57f9630..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventClassifier.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.streams.rss.provider;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.sun.syndication.feed.synd.SyndEntry;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public class RssEventClassifier {
-
-    public static Class detectClass( ObjectNode bean ) {
-        return SyndEntry.class;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java b/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
deleted file mode 100644
index 0a64a8d..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package org.apache.streams.rss.provider;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.sun.syndication.feed.synd.SyndEntry;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.pojo.json.Activity;
-import org.apache.streams.rss.serializer.SyndEntryActivitySerializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Queue;
-import java.util.Random;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class RssEventProcessor implements Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(RssEventProcessor.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private Queue<SyndEntry> inQueue;
-    private Queue<StreamsDatum> outQueue;
-
-    private Class inClass;
-    private Class outClass;
-
-    private SyndEntryActivitySerializer syndEntryActivitySerializer = new SyndEntryActivitySerializer();
-
-    public final static String TERMINATE = new String("TERMINATE");
-
-    public RssEventProcessor(Queue<SyndEntry> inQueue, Queue<StreamsDatum> outQueue, Class inClass, Class outClass) {
-        this.inQueue = inQueue;
-        this.outQueue = outQueue;
-        this.inClass = inClass;
-        this.outClass = outClass;
-    }
-
-    public RssEventProcessor(Queue<SyndEntry> inQueue, Queue<StreamsDatum> outQueue, Class outClass) {
-        this.inQueue = inQueue;
-        this.outQueue = outQueue;
-        this.outClass = outClass;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            Object item;
-            try {
-                item = inQueue.poll();
-                if(item instanceof String && item.equals(TERMINATE)) {
-                    LOGGER.info("Terminating!");
-                    break;
-                }
-
-                Thread.sleep(new Random().nextInt(100));
-
-                // if the target is string, just pass-through
-                if( String.class.equals(outClass))
-                    outQueue.offer(new StreamsDatum(item.toString()));
-                else if( SyndEntry.class.equals(outClass))
-                {
-                    outQueue.offer(new StreamsDatum(item));
-                }
-                else if( Activity.class.equals(outClass))
-                {
-                    // convert to desired format
-                    SyndEntry entry = (SyndEntry)item;
-                    if( entry != null ) {
-                        Activity out = syndEntryActivitySerializer.deserialize((SyndEntry)item);
-
-                        if( out != null )
-                            outQueue.offer(new StreamsDatum(out));
-                    }
-                }
-
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
-};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamConfigurator.java b/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamConfigurator.java
deleted file mode 100644
index 8ed46a2..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamConfigurator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apache.streams.rss.provider;
-
-import com.google.common.collect.Lists;
-import com.typesafe.config.Config;
-import org.apache.streams.rss.FeedDetails;
-import org.apache.streams.rss.RssStreamConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class RssStreamConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(RssStreamConfigurator.class);
-
-    public static RssStreamConfiguration detectConfiguration(Config rss) {
-
-        RssStreamConfiguration rssStreamConfiguration = new RssStreamConfiguration();
-
-        List<FeedDetails> feeds = Lists.newArrayList();
-        feeds.add(new FeedDetails().withUrl(rss.getString("url")));
-
-        rssStreamConfiguration.setFeeds(feeds);
-        return rssStreamConfiguration;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java b/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
deleted file mode 100644
index fa76f67..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProvider.java
+++ /dev/null
@@ -1,190 +0,0 @@
-package org.apache.streams.rss.provider;
-
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.sun.syndication.feed.synd.SyndEntry;
-import com.sun.syndication.feed.synd.SyndFeed;
-import com.sun.syndication.io.FeedException;
-import com.sun.syndication.io.SyndFeedInput;
-import com.sun.syndication.io.XmlReader;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsProvider;
-import org.apache.streams.core.StreamsResultSet;
-import org.apache.streams.rss.FeedDetails;
-import org.apache.streams.rss.RssStreamConfiguration;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-import java.util.Queue;
-import java.util.concurrent.*;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class RssStreamProvider /*extends BaseRichSpout*/ implements StreamsProvider, Serializable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(RssStreamProvider.class);
-
-    private RssStreamConfiguration config;
-
-    private Class klass;
-
-    public RssStreamConfiguration getConfig() {
-        return config;
-    }
-
-    public void setConfig(RssStreamConfiguration config) {
-        this.config = config;
-    }
-
-    protected BlockingQueue inQueue = new LinkedBlockingQueue<SyndEntry>(10000);
-
-    protected volatile Queue<StreamsDatum> providerQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-
-    public BlockingQueue<Object> getInQueue() {
-        return inQueue;
-    }
-
-    protected ListeningExecutorService executor = MoreExecutors.listeningDecorator(newFixedThreadPoolWithQueueSize(100, 100));
-
-    protected List<SyndFeed> feeds;
-
-    private static ExecutorService newFixedThreadPoolWithQueueSize(int nThreads, int queueSize) {
-        return new ThreadPoolExecutor(nThreads, nThreads,
-                5000L, TimeUnit.MILLISECONDS,
-                new ArrayBlockingQueue<Runnable>(queueSize, true), new ThreadPoolExecutor.CallerRunsPolicy());
-    }
-
-    public RssStreamProvider() {
-        Config config = StreamsConfigurator.config.getConfig("rss");
-        this.config = RssStreamConfigurator.detectConfiguration(config);
-    }
-
-    public RssStreamProvider(RssStreamConfiguration config) {
-        this.config = config;
-    }
-
-    public RssStreamProvider(Class klass) {
-        Config config = StreamsConfigurator.config.getConfig("rss");
-        this.config = RssStreamConfigurator.detectConfiguration(config);
-        this.klass = klass;
-    }
-
-    public RssStreamProvider(RssStreamConfiguration config, Class klass) {
-        this.config = config;
-        this.klass = klass;
-    }
-
-    @Override
-    public void start() {
-
-        Preconditions.checkNotNull(this.klass);
-
-        Preconditions.checkNotNull(config.getFeeds());
-
-        Preconditions.checkNotNull(config.getFeeds().get(0).getUrl());
-
-        for( FeedDetails feedDetails : config.getFeeds()) {
-
-            executor.submit(new RssFeedSetupTask(this, feedDetails));
-
-        }
-
-        for( int i = 0; i < ((config.getFeeds().size() / 5) + 1); i++ )
-            executor.submit(new RssEventProcessor(inQueue, providerQueue, klass));
-
-    }
-
-    @Override
-    public void stop() {
-        for (int i = 0; i < ((config.getFeeds().size() / 5) + 1); i++) {
-            inQueue.add(RssEventProcessor.TERMINATE);
-        }
-    }
-
-    @Override
-    public Queue<StreamsDatum> getProviderQueue() {
-        return this.providerQueue;
-    }
-
-    @Override
-    public StreamsResultSet readCurrent() {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger sequence) {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime start, DateTime end) {
-        return null;
-    }
-//
-//    @Override
-//    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
-//        outputFieldsDeclarer.declare(new Fields("document"));
-//        outputFieldsDeclarer.declare(new Fields("type"));
-//    }
-//
-//    @Override
-//    public void open(Map map, TopologyContext topologyContext, SpoutOutputCollector spoutOutputCollector) {
-//        collector = spoutOutputCollector;
-//        run();
-//    }
-//
-//    @Override
-//    public void nextTuple() {
-//        try {
-//            collector.emit( new Values(outQueue.take(), klass) );
-//        } catch (InterruptedException e) {
-//            e.printStackTrace();
-//        }
-//
-//    }
-
-    private class RssFeedSetupTask implements Runnable {
-
-        private RssStreamProvider provider;
-        private FeedDetails feedDetails;
-
-        private RssFeedSetupTask(RssStreamProvider provider, FeedDetails feedDetails) {
-            this.provider = provider;
-            this.feedDetails = feedDetails;
-        }
-
-        @Override
-        public void run() {
-
-            URL feedUrl;
-            SyndFeed feed;
-            try {
-                feedUrl = new URL(feedDetails.getUrl());
-                SyndFeedInput input = new SyndFeedInput();
-                try {
-                    feed = input.build(new XmlReader(feedUrl));
-                    executor.submit(new RssStreamProviderTask(provider, feed, feedDetails));
-                    LOGGER.info("Connected: " + feedDetails.getUrl());
-                } catch (FeedException e) {
-                    LOGGER.warn("FeedException: " + feedDetails.getUrl());
-                } catch (IOException e) {
-                    LOGGER.warn("IOException: " + feedDetails.getUrl());
-                }
-            } catch (MalformedURLException e) {
-                LOGGER.warn("MalformedURLException: " + feedDetails.getUrl());
-            }
-
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java b/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
deleted file mode 100644
index f3a39fc..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.apache.streams.rss.provider;
-
-import com.google.common.collect.Sets;
-import com.sun.syndication.feed.synd.SyndEntry;
-import com.sun.syndication.feed.synd.SyndFeed;
-import org.apache.streams.rss.FeedDetails;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Set;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class RssStreamProviderTask implements Runnable {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(RssStreamProviderTask.class);
-
-    private RssStreamProvider provider;
-    private FeedDetails feedDetails;
-    private SyndFeed feed;
-
-    private Set<SyndEntry> priorPollResult = Sets.newHashSet();
-
-    public RssStreamProviderTask(RssStreamProvider provider, SyndFeed feed, FeedDetails feedDetails) {
-        this.provider = provider;
-        this.feed = feed;
-        this.feedDetails = feedDetails;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            try {
-                Set<SyndEntry> update = Sets.newHashSet(feed.getEntries());
-                Set<SyndEntry> repeats = Sets.intersection(priorPollResult, Sets.newHashSet(update));
-                Set<SyndEntry> entrySet = Sets.difference(update, repeats);
-                for( SyndEntry item : entrySet) {
-                    item.setSource(feed);
-                    provider.inQueue.offer(item);
-                }
-                priorPollResult = update;
-                Thread.sleep(feedDetails.getPollIntervalMillis());
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntryActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntryActivitySerializer.java b/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntryActivitySerializer.java
deleted file mode 100644
index 40468d1..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntryActivitySerializer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package org.apache.streams.rss.serializer;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.sun.syndication.feed.synd.SyndEntry;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.pojo.json.*;
-
-import java.util.List;
-
-/**
- * Deserializes the Rome SyndEntry POJO and converts it to an instance of {@link Activity}
- */
-public class SyndEntryActivitySerializer implements ActivitySerializer<SyndEntry> {
-
-    @Override
-    public String serializationFormat() {
-        return "application/streams-provider-rss";
-    }
-
-    @Override
-    public SyndEntry serialize(Activity deserialized) {
-        throw new UnsupportedOperationException("Cannot currently serialize to Rome");
-    }
-
-    @Override
-    public Activity deserialize(SyndEntry serialized) {
-        Preconditions.checkNotNull(serialized);
-        Activity activity = new Activity();
-        Provider provider = new Provider();
-        if( serialized.getSource() != null )
-            if( serialized.getSource().getUri() != null )
-                provider.setId("rss:"+serialized.getSource().getUri());
-        else
-            provider.setId("rss:unknown");
-        Actor actor = new Actor();
-        Author author = new Author();
-        if( serialized.getAuthor() != null ) {
-            author.setId(serialized.getAuthor());
-            author.setDisplayName(serialized.getAuthor());
-            actor.setAuthor(author);
-        }
-        activity.setActor(actor);
-        activity.setVerb("blog");
-        activity.setProvider(provider);
-        ActivityObject activityObject = new ActivityObject();
-        activityObject.setSummary(serialized.getTitle());
-        activityObject.setUrl(serialized.getLink());
-        activity.setObject(activityObject);
-        activity.setId(serialized.getLink());
-        return activity;
-    }
-
-    @Override
-    public List<Activity> deserializeAll(List<SyndEntry> serializedList) {
-        List<Activity> activityList = Lists.newArrayList();
-        for(SyndEntry entry : serializedList) {
-            activityList.add(deserialize(entry));
-        }
-        return activityList;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-rss/src/main/jsonschema/RssStreamConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-rss/src/main/jsonschema/RssStreamConfiguration.json b/trunk/streams-contrib/streams-provider-rss/src/main/jsonschema/RssStreamConfiguration.json
deleted file mode 100644
index ac12d27..0000000
--- a/trunk/streams-contrib/streams-provider-rss/src/main/jsonschema/RssStreamConfiguration.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.rss.RssStreamConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "feeds": {
-            "type": "array",
-            "minItems": 1,
-            "items": {
-                "type": "object",
-                "javaType" : "org.apache.streams.rss.FeedDetails",
-                "javaInterfaces": ["java.io.Serializable"],
-                "properties": {
-                    "url": {
-                        "type": "string",
-                        "description": "The feed url"
-                    },
-                    "pollIntervalMillis": {
-                        "type": "integer",
-                        "description": "Polling interval in ms"
-                    }
-                }
-            }
-        }
-    }
-}
\ No newline at end of file


[02/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-web/src/main/webapp/demo/js/handlebars.js
----------------------------------------------------------------------
diff --git a/trunk/streams-web/src/main/webapp/demo/js/handlebars.js b/trunk/streams-web/src/main/webapp/demo/js/handlebars.js
deleted file mode 100644
index 560c34c..0000000
--- a/trunk/streams-web/src/main/webapp/demo/js/handlebars.js
+++ /dev/null
@@ -1,2278 +0,0 @@
-/*
-
- Copyright (C) 2011 by Yehuda Katz
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-
- */
-
-// lib/handlebars/browser-prefix.js
-var Handlebars = {};
-
-(function(Handlebars, undefined) {
-    ;
-// lib/handlebars/base.js
-
-    Handlebars.VERSION = "1.0.0";
-    Handlebars.COMPILER_REVISION = 4;
-
-    Handlebars.REVISION_CHANGES = {
-        1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
-        2: '== 1.0.0-rc.3',
-        3: '== 1.0.0-rc.4',
-        4: '>= 1.0.0'
-    };
-
-    Handlebars.helpers  = {};
-    Handlebars.partials = {};
-
-    var toString = Object.prototype.toString,
-        functionType = '[object Function]',
-        objectType = '[object Object]';
-
-    Handlebars.registerHelper = function(name, fn, inverse) {
-        if (toString.call(name) === objectType) {
-            if (inverse || fn) { throw new Handlebars.Exception('Arg not supported with multiple helpers'); }
-            Handlebars.Utils.extend(this.helpers, name);
-        } else {
-            if (inverse) { fn.not = inverse; }
-            this.helpers[name] = fn;
-        }
-    };
-
-    Handlebars.registerPartial = function(name, str) {
-        if (toString.call(name) === objectType) {
-            Handlebars.Utils.extend(this.partials,  name);
-        } else {
-            this.partials[name] = str;
-        }
-    };
-
-    Handlebars.registerHelper('helperMissing', function(arg) {
-        if(arguments.length === 2) {
-            return undefined;
-        } else {
-            throw new Error("Missing helper: '" + arg + "'");
-        }
-    });
-
-    Handlebars.registerHelper('blockHelperMissing', function(context, options) {
-        var inverse = options.inverse || function() {}, fn = options.fn;
-
-        var type = toString.call(context);
-
-        if(type === functionType) { context = context.call(this); }
-
-        if(context === true) {
-            return fn(this);
-        } else if(context === false || context == null) {
-            return inverse(this);
-        } else if(type === "[object Array]") {
-            if(context.length > 0) {
-                return Handlebars.helpers.each(context, options);
-            } else {
-                return inverse(this);
-            }
-        } else {
-            return fn(context);
-        }
-    });
-
-    Handlebars.K = function() {};
-
-    Handlebars.createFrame = Object.create || function(object) {
-        Handlebars.K.prototype = object;
-        var obj = new Handlebars.K();
-        Handlebars.K.prototype = null;
-        return obj;
-    };
-
-    Handlebars.logger = {
-        DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, level: 3,
-
-        methodMap: {0: 'debug', 1: 'info', 2: 'warn', 3: 'error'},
-
-        // can be overridden in the host environment
-        log: function(level, obj) {
-            if (Handlebars.logger.level <= level) {
-                var method = Handlebars.logger.methodMap[level];
-                if (typeof console !== 'undefined' && console[method]) {
-                    console[method].call(console, obj);
-                }
-            }
-        }
-    };
-
-    Handlebars.log = function(level, obj) { Handlebars.logger.log(level, obj); };
-
-    Handlebars.registerHelper('each', function(context, options) {
-        var fn = options.fn, inverse = options.inverse;
-        var i = 0, ret = "", data;
-
-        var type = toString.call(context);
-        if(type === functionType) { context = context.call(this); }
-
-        if (options.data) {
-            data = Handlebars.createFrame(options.data);
-        }
-
-        if(context && typeof context === 'object') {
-            if(context instanceof Array){
-                for(var j = context.length; i<j; i++) {
-                    if (data) { data.index = i; }
-                    ret = ret + fn(context[i], { data: data });
-                }
-            } else {
-                for(var key in context) {
-                    if(context.hasOwnProperty(key)) {
-                        if(data) { data.key = key; }
-                        ret = ret + fn(context[key], {data: data});
-                        i++;
-                    }
-                }
-            }
-        }
-
-        if(i === 0){
-            ret = inverse(this);
-        }
-
-        return ret;
-    });
-
-    Handlebars.registerHelper('if', function(conditional, options) {
-        var type = toString.call(conditional);
-        if(type === functionType) { conditional = conditional.call(this); }
-
-        if(!conditional || Handlebars.Utils.isEmpty(conditional)) {
-            return options.inverse(this);
-        } else {
-            return options.fn(this);
-        }
-    });
-
-    Handlebars.registerHelper('unless', function(conditional, options) {
-        return Handlebars.helpers['if'].call(this, conditional, {fn: options.inverse, inverse: options.fn});
-    });
-
-    Handlebars.registerHelper('with', function(context, options) {
-        var type = toString.call(context);
-        if(type === functionType) { context = context.call(this); }
-
-        if (!Handlebars.Utils.isEmpty(context)) return options.fn(context);
-    });
-
-    Handlebars.registerHelper('log', function(context, options) {
-        var level = options.data && options.data.level != null ? parseInt(options.data.level, 10) : 1;
-        Handlebars.log(level, context);
-    });
-    ;
-// lib/handlebars/compiler/parser.js
-    /* Jison generated parser */
-    var handlebars = (function(){
-        var parser = {trace: function trace() { },
-            yy: {},
-            symbols_: {"error":2,"root":3,"program":4,"EOF":5,"simpleInverse":6,"statements":7,"statement":8,"openInverse":9,"closeBlock":10,"openBlock":11,"mustache":12,"partial":13,"CONTENT":14,"COMMENT":15,"OPEN_BLOCK":16,"inMustache":17,"CLOSE":18,"OPEN_INVERSE":19,"OPEN_ENDBLOCK":20,"path":21,"OPEN":22,"OPEN_UNESCAPED":23,"CLOSE_UNESCAPED":24,"OPEN_PARTIAL":25,"partialName":26,"params":27,"hash":28,"dataName":29,"param":30,"STRING":31,"INTEGER":32,"BOOLEAN":33,"hashSegments":34,"hashSegment":35,"ID":36,"EQUALS":37,"DATA":38,"pathSegments":39,"SEP":40,"$accept":0,"$end":1},
-            terminals_: {2:"error",5:"EOF",14:"CONTENT",15:"COMMENT",16:"OPEN_BLOCK",18:"CLOSE",19:"OPEN_INVERSE",20:"OPEN_ENDBLOCK",22:"OPEN",23:"OPEN_UNESCAPED",24:"CLOSE_UNESCAPED",25:"OPEN_PARTIAL",31:"STRING",32:"INTEGER",33:"BOOLEAN",36:"ID",37:"EQUALS",38:"DATA",40:"SEP"},
-            productions_: [0,[3,2],[4,2],[4,3],[4,2],[4,1],[4,1],[4,0],[7,1],[7,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[6,2],[17,3],[17,2],[17,2],[17,1],[17,1],[27,2],[27,1],[30,1],[30,1],[30,1],[30,1],[30,1],[28,1],[34,2],[34,1],[35,3],[35,3],[35,3],[35,3],[35,3],[26,1],[26,1],[26,1],[29,2],[21,1],[39,3],[39,1]],
-            performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {
-
-                var $0 = $$.length - 1;
-                switch (yystate) {
-                    case 1: return $$[$0-1];
-                        break;
-                    case 2: this.$ = new yy.ProgramNode([], $$[$0]);
-                        break;
-                    case 3: this.$ = new yy.ProgramNode($$[$0-2], $$[$0]);
-                        break;
-                    case 4: this.$ = new yy.ProgramNode($$[$0-1], []);
-                        break;
-                    case 5: this.$ = new yy.ProgramNode($$[$0]);
-                        break;
-                    case 6: this.$ = new yy.ProgramNode([], []);
-                        break;
-                    case 7: this.$ = new yy.ProgramNode([]);
-                        break;
-                    case 8: this.$ = [$$[$0]];
-                        break;
-                    case 9: $$[$0-1].push($$[$0]); this.$ = $$[$0-1];
-                        break;
-                    case 10: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0]);
-                        break;
-                    case 11: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0]);
-                        break;
-                    case 12: this.$ = $$[$0];
-                        break;
-                    case 13: this.$ = $$[$0];
-                        break;
-                    case 14: this.$ = new yy.ContentNode($$[$0]);
-                        break;
-                    case 15: this.$ = new yy.CommentNode($$[$0]);
-                        break;
-                    case 16: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]);
-                        break;
-                    case 17: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]);
-                        break;
-                    case 18: this.$ = $$[$0-1];
-                        break;
-                    case 19:
-                        // Parsing out the '&' escape token at this level saves ~500 bytes after min due to the removal of one parser node.
-                        this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], $$[$0-2][2] === '&');
-
-                        break;
-                    case 20: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true);
-                        break;
-                    case 21: this.$ = new yy.PartialNode($$[$0-1]);
-                        break;
-                    case 22: this.$ = new yy.PartialNode($$[$0-2], $$[$0-1]);
-                        break;
-                    case 23:
-                        break;
-                    case 24: this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]];
-                        break;
-                    case 25: this.$ = [[$$[$0-1]].concat($$[$0]), null];
-                        break;
-                    case 26: this.$ = [[$$[$0-1]], $$[$0]];
-                        break;
-                    case 27: this.$ = [[$$[$0]], null];
-                        break;
-                    case 28: this.$ = [[$$[$0]], null];
-                        break;
-                    case 29: $$[$0-1].push($$[$0]); this.$ = $$[$0-1];
-                        break;
-                    case 30: this.$ = [$$[$0]];
-                        break;
-                    case 31: this.$ = $$[$0];
-                        break;
-                    case 32: this.$ = new yy.StringNode($$[$0]);
-                        break;
-                    case 33: this.$ = new yy.IntegerNode($$[$0]);
-                        break;
-                    case 34: this.$ = new yy.BooleanNode($$[$0]);
-                        break;
-                    case 35: this.$ = $$[$0];
-                        break;
-                    case 36: this.$ = new yy.HashNode($$[$0]);
-                        break;
-                    case 37: $$[$0-1].push($$[$0]); this.$ = $$[$0-1];
-                        break;
-                    case 38: this.$ = [$$[$0]];
-                        break;
-                    case 39: this.$ = [$$[$0-2], $$[$0]];
-                        break;
-                    case 40: this.$ = [$$[$0-2], new yy.StringNode($$[$0])];
-                        break;
-                    case 41: this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])];
-                        break;
-                    case 42: this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])];
-                        break;
-                    case 43: this.$ = [$$[$0-2], $$[$0]];
-                        break;
-                    case 44: this.$ = new yy.PartialNameNode($$[$0]);
-                        break;
-                    case 45: this.$ = new yy.PartialNameNode(new yy.StringNode($$[$0]));
-                        break;
-                    case 46: this.$ = new yy.PartialNameNode(new yy.IntegerNode($$[$0]));
-                        break;
-                    case 47: this.$ = new yy.DataNode($$[$0]);
-                        break;
-                    case 48: this.$ = new yy.IdNode($$[$0]);
-                        break;
-                    case 49: $$[$0-2].push({part: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2];
-                        break;
-                    case 50: this.$ = [{part: $$[$0]}];
-                        break;
-                }
-            },
-            table: [{3:1,4:2,5:[2,7],6:3,7:4,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],22:[1,14],23:[1,15],25:[1,16]},{1:[3]},{5:[1,17]},{5:[2,6],7:18,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,6],22:[1,14],23:[1,15],25:[1,16]},{5:[2,5],6:20,8:21,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],20:[2,5],22:[1,14],23:[1,15],25:[1,16]},{17:23,18:[1,22],21:24,29:25,36:[1,28],38:[1,27],39:26},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],25:[2,8]},{4:29,6:3,7:4,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],20:[2,7],22:[1,14],23:[1,15],25:[1,16]},{4:30,6:3,7:4,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,5],20:[2,7],22:[1,14],23:[1,15],25:[1,16]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],25:[2,12]},{5:[2,13],14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],25:[2,13]},{5:[2,14],14:[2,14],15:[2,14],16:[2,14],19:[2,14]
 ,20:[2,14],22:[2,14],23:[2,14],25:[2,14]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],25:[2,15]},{17:31,21:24,29:25,36:[1,28],38:[1,27],39:26},{17:32,21:24,29:25,36:[1,28],38:[1,27],39:26},{17:33,21:24,29:25,36:[1,28],38:[1,27],39:26},{21:35,26:34,31:[1,36],32:[1,37],36:[1,28],39:26},{1:[2,1]},{5:[2,2],8:21,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,2],22:[1,14],23:[1,15],25:[1,16]},{17:23,21:24,29:25,36:[1,28],38:[1,27],39:26},{5:[2,4],7:38,8:6,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,4],22:[1,14],23:[1,15],25:[1,16]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],25:[2,9]},{5:[2,23],14:[2,23],15:[2,23],16:[2,23],19:[2,23],20:[2,23],22:[2,23],23:[2,23],25:[2,23]},{18:[1,39]},{18:[2,27],21:44,24:[2,27],27:40,28:41,29:48,30:42,31:[1,45],32:[1,46],33:[1,47],34:43,35:49,36:[1,50],38:[1,27],39:26},{18:[2,28],24:[2,28]},{18:[2,48],24:[2,48],31:[2,48],32:[2,48],33:[2,48],36:[2,48],
 38:[2,48],40:[1,51]},{21:52,36:[1,28],39:26},{18:[2,50],24:[2,50],31:[2,50],32:[2,50],33:[2,50],36:[2,50],38:[2,50],40:[2,50]},{10:53,20:[1,54]},{10:55,20:[1,54]},{18:[1,56]},{18:[1,57]},{24:[1,58]},{18:[1,59],21:60,36:[1,28],39:26},{18:[2,44],36:[2,44]},{18:[2,45],36:[2,45]},{18:[2,46],36:[2,46]},{5:[2,3],8:21,9:7,11:8,12:9,13:10,14:[1,11],15:[1,12],16:[1,13],19:[1,19],20:[2,3],22:[1,14],23:[1,15],25:[1,16]},{14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],25:[2,17]},{18:[2,25],21:44,24:[2,25],28:61,29:48,30:62,31:[1,45],32:[1,46],33:[1,47],34:43,35:49,36:[1,50],38:[1,27],39:26},{18:[2,26],24:[2,26]},{18:[2,30],24:[2,30],31:[2,30],32:[2,30],33:[2,30],36:[2,30],38:[2,30]},{18:[2,36],24:[2,36],35:63,36:[1,64]},{18:[2,31],24:[2,31],31:[2,31],32:[2,31],33:[2,31],36:[2,31],38:[2,31]},{18:[2,32],24:[2,32],31:[2,32],32:[2,32],33:[2,32],36:[2,32],38:[2,32]},{18:[2,33],24:[2,33],31:[2,33],32:[2,33],33:[2,33],36:[2,33],38:[2,33]},{18:[2,34],24:[2,34],31:[2,34],32:[2,34]
 ,33:[2,34],36:[2,34],38:[2,34]},{18:[2,35],24:[2,35],31:[2,35],32:[2,35],33:[2,35],36:[2,35],38:[2,35]},{18:[2,38],24:[2,38],36:[2,38]},{18:[2,50],24:[2,50],31:[2,50],32:[2,50],33:[2,50],36:[2,50],37:[1,65],38:[2,50],40:[2,50]},{36:[1,66]},{18:[2,47],24:[2,47],31:[2,47],32:[2,47],33:[2,47],36:[2,47],38:[2,47]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],25:[2,10]},{21:67,36:[1,28],39:26},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],25:[2,11]},{14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],25:[2,16]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],25:[2,19]},{5:[2,20],14:[2,20],15:[2,20],16:[2,20],19:[2,20],20:[2,20],22:[2,20],23:[2,20],25:[2,20]},{5:[2,21],14:[2,21],15:[2,21],16:[2,21],19:[2,21],20:[2,21],22:[2,21],23:[2,21],25:[2,21]},{18:[1,68]},{18:[2,24],24:[2,24]},{18:[2,29],24:[2,29],31:[2,29],32:[2,29],33:[2,29],36:[2,29],38:[2,29]},{18:[2,37],24:[2,3
 7],36:[2,37]},{37:[1,65]},{21:69,29:73,31:[1,70],32:[1,71],33:[1,72],36:[1,28],38:[1,27],39:26},{18:[2,49],24:[2,49],31:[2,49],32:[2,49],33:[2,49],36:[2,49],38:[2,49],40:[2,49]},{18:[1,74]},{5:[2,22],14:[2,22],15:[2,22],16:[2,22],19:[2,22],20:[2,22],22:[2,22],23:[2,22],25:[2,22]},{18:[2,39],24:[2,39],36:[2,39]},{18:[2,40],24:[2,40],36:[2,40]},{18:[2,41],24:[2,41],36:[2,41]},{18:[2,42],24:[2,42],36:[2,42]},{18:[2,43],24:[2,43],36:[2,43]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],25:[2,18]}],
-            defaultActions: {17:[2,1]},
-            parseError: function parseError(str, hash) {
-                throw new Error(str);
-            },
-            parse: function parse(input) {
-                var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
-                this.lexer.setInput(input);
-                this.lexer.yy = this.yy;
-                this.yy.lexer = this.lexer;
-                this.yy.parser = this;
-                if (typeof this.lexer.yylloc == "undefined")
-                    this.lexer.yylloc = {};
-                var yyloc = this.lexer.yylloc;
-                lstack.push(yyloc);
-                var ranges = this.lexer.options && this.lexer.options.ranges;
-                if (typeof this.yy.parseError === "function")
-                    this.parseError = this.yy.parseError;
-                function popStack(n) {
-                    stack.length = stack.length - 2 * n;
-                    vstack.length = vstack.length - n;
-                    lstack.length = lstack.length - n;
-                }
-                function lex() {
-                    var token;
-                    token = self.lexer.lex() || 1;
-                    if (typeof token !== "number") {
-                        token = self.symbols_[token] || token;
-                    }
-                    return token;
-                }
-                var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
-                while (true) {
-                    state = stack[stack.length - 1];
-                    if (this.defaultActions[state]) {
-                        action = this.defaultActions[state];
-                    } else {
-                        if (symbol === null || typeof symbol == "undefined") {
-                            symbol = lex();
-                        }
-                        action = table[state] && table[state][symbol];
-                    }
-                    if (typeof action === "undefined" || !action.length || !action[0]) {
-                        var errStr = "";
-                        if (!recovering) {
-                            expected = [];
-                            for (p in table[state])
-                                if (this.terminals_[p] && p > 2) {
-                                    expected.push("'" + this.terminals_[p] + "'");
-                                }
-                            if (this.lexer.showPosition) {
-                                errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
-                            } else {
-                                errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1?"end of input":"'" + (this.terminals_[symbol] || symbol) + "'");
-                            }
-                            this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
-                        }
-                    }
-                    if (action[0] instanceof Array && action.length > 1) {
-                        throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
-                    }
-                    switch (action[0]) {
-                        case 1:
-                            stack.push(symbol);
-                            vstack.push(this.lexer.yytext);
-                            lstack.push(this.lexer.yylloc);
-                            stack.push(action[1]);
-                            symbol = null;
-                            if (!preErrorSymbol) {
-                                yyleng = this.lexer.yyleng;
-                                yytext = this.lexer.yytext;
-                                yylineno = this.lexer.yylineno;
-                                yyloc = this.lexer.yylloc;
-                                if (recovering > 0)
-                                    recovering--;
-                            } else {
-                                symbol = preErrorSymbol;
-                                preErrorSymbol = null;
-                            }
-                            break;
-                        case 2:
-                            len = this.productions_[action[1]][1];
-                            yyval.$ = vstack[vstack.length - len];
-                            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};
-                            if (ranges) {
-                                yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
-                            }
-                            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
-                            if (typeof r !== "undefined") {
-                                return r;
-                            }
-                            if (len) {
-                                stack = stack.slice(0, -1 * len * 2);
-                                vstack = vstack.slice(0, -1 * len);
-                                lstack = lstack.slice(0, -1 * len);
-                            }
-                            stack.push(this.productions_[action[1]][0]);
-                            vstack.push(yyval.$);
-                            lstack.push(yyval._$);
-                            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
-                            stack.push(newState);
-                            break;
-                        case 3:
-                            return true;
-                    }
-                }
-                return true;
-            }
-        };
-        /* Jison generated lexer */
-        var lexer = (function(){
-            var lexer = ({EOF:1,
-                parseError:function parseError(str, hash) {
-                    if (this.yy.parser) {
-                        this.yy.parser.parseError(str, hash);
-                    } else {
-                        throw new Error(str);
-                    }
-                },
-                setInput:function (input) {
-                    this._input = input;
-                    this._more = this._less = this.done = false;
-                    this.yylineno = this.yyleng = 0;
-                    this.yytext = this.matched = this.match = '';
-                    this.conditionStack = ['INITIAL'];
-                    this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
-                    if (this.options.ranges) this.yylloc.range = [0,0];
-                    this.offset = 0;
-                    return this;
-                },
-                input:function () {
-                    var ch = this._input[0];
-                    this.yytext += ch;
-                    this.yyleng++;
-                    this.offset++;
-                    this.match += ch;
-                    this.matched += ch;
-                    var lines = ch.match(/(?:\r\n?|\n).*/g);
-                    if (lines) {
-                        this.yylineno++;
-                        this.yylloc.last_line++;
-                    } else {
-                        this.yylloc.last_column++;
-                    }
-                    if (this.options.ranges) this.yylloc.range[1]++;
-
-                    this._input = this._input.slice(1);
-                    return ch;
-                },
-                unput:function (ch) {
-                    var len = ch.length;
-                    var lines = ch.split(/(?:\r\n?|\n)/g);
-
-                    this._input = ch + this._input;
-                    this.yytext = this.yytext.substr(0, this.yytext.length-len-1);
-                    //this.yyleng -= len;
-                    this.offset -= len;
-                    var oldLines = this.match.split(/(?:\r\n?|\n)/g);
-                    this.match = this.match.substr(0, this.match.length-1);
-                    this.matched = this.matched.substr(0, this.matched.length-1);
-
-                    if (lines.length-1) this.yylineno -= lines.length-1;
-                    var r = this.yylloc.range;
-
-                    this.yylloc = {first_line: this.yylloc.first_line,
-                        last_line: this.yylineno+1,
-                        first_column: this.yylloc.first_column,
-                        last_column: lines ?
-                            (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:
-                            this.yylloc.first_column - len
-                    };
-
-                    if (this.options.ranges) {
-                        this.yylloc.range = [r[0], r[0] + this.yyleng - len];
-                    }
-                    return this;
-                },
-                more:function () {
-                    this._more = true;
-                    return this;
-                },
-                less:function (n) {
-                    this.unput(this.match.slice(n));
-                },
-                pastInput:function () {
-                    var past = this.matched.substr(0, this.matched.length - this.match.length);
-                    return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
-                },
-                upcomingInput:function () {
-                    var next = this.match;
-                    if (next.length < 20) {
-                        next += this._input.substr(0, 20-next.length);
-                    }
-                    return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
-                },
-                showPosition:function () {
-                    var pre = this.pastInput();
-                    var c = new Array(pre.length + 1).join("-");
-                    return pre + this.upcomingInput() + "\n" + c+"^";
-                },
-                next:function () {
-                    if (this.done) {
-                        return this.EOF;
-                    }
-                    if (!this._input) this.done = true;
-
-                    var token,
-                        match,
-                        tempMatch,
-                        index,
-                        col,
-                        lines;
-                    if (!this._more) {
-                        this.yytext = '';
-                        this.match = '';
-                    }
-                    var rules = this._currentRules();
-                    for (var i=0;i < rules.length; i++) {
-                        tempMatch = this._input.match(this.rules[rules[i]]);
-                        if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
-                            match = tempMatch;
-                            index = i;
-                            if (!this.options.flex) break;
-                        }
-                    }
-                    if (match) {
-                        lines = match[0].match(/(?:\r\n?|\n).*/g);
-                        if (lines) this.yylineno += lines.length;
-                        this.yylloc = {first_line: this.yylloc.last_line,
-                            last_line: this.yylineno+1,
-                            first_column: this.yylloc.last_column,
-                            last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length};
-                        this.yytext += match[0];
-                        this.match += match[0];
-                        this.matches = match;
-                        this.yyleng = this.yytext.length;
-                        if (this.options.ranges) {
-                            this.yylloc.range = [this.offset, this.offset += this.yyleng];
-                        }
-                        this._more = false;
-                        this._input = this._input.slice(match[0].length);
-                        this.matched += match[0];
-                        token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
-                        if (this.done && this._input) this.done = false;
-                        if (token) return token;
-                        else return;
-                    }
-                    if (this._input === "") {
-                        return this.EOF;
-                    } else {
-                        return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
-                            {text: "", token: null, line: this.yylineno});
-                    }
-                },
-                lex:function lex() {
-                    var r = this.next();
-                    if (typeof r !== 'undefined') {
-                        return r;
-                    } else {
-                        return this.lex();
-                    }
-                },
-                begin:function begin(condition) {
-                    this.conditionStack.push(condition);
-                },
-                popState:function popState() {
-                    return this.conditionStack.pop();
-                },
-                _currentRules:function _currentRules() {
-                    return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
-                },
-                topState:function () {
-                    return this.conditionStack[this.conditionStack.length-2];
-                },
-                pushState:function begin(condition) {
-                    this.begin(condition);
-                }});
-            lexer.options = {};
-            lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
-
-                var YYSTATE=YY_START
-                switch($avoiding_name_collisions) {
-                    case 0: yy_.yytext = "\\"; return 14;
-                        break;
-                    case 1:
-                        if(yy_.yytext.slice(-1) !== "\\") this.begin("mu");
-                        if(yy_.yytext.slice(-1) === "\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin("emu");
-                        if(yy_.yytext) return 14;
-
-                        break;
-                    case 2: return 14;
-                        break;
-                    case 3:
-                        if(yy_.yytext.slice(-1) !== "\\") this.popState();
-                        if(yy_.yytext.slice(-1) === "\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1);
-                        return 14;
-
-                        break;
-                    case 4: yy_.yytext = yy_.yytext.substr(0, yy_.yyleng-4); this.popState(); return 15;
-                        break;
-                    case 5: return 25;
-                        break;
-                    case 6: return 16;
-                        break;
-                    case 7: return 20;
-                        break;
-                    case 8: return 19;
-                        break;
-                    case 9: return 19;
-                        break;
-                    case 10: return 23;
-                        break;
-                    case 11: return 22;
-                        break;
-                    case 12: this.popState(); this.begin('com');
-                        break;
-                    case 13: yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15;
-                        break;
-                    case 14: return 22;
-                        break;
-                    case 15: return 37;
-                        break;
-                    case 16: return 36;
-                        break;
-                    case 17: return 36;
-                        break;
-                    case 18: return 40;
-                        break;
-                    case 19: /*ignore whitespace*/
-                        break;
-                    case 20: this.popState(); return 24;
-                        break;
-                    case 21: this.popState(); return 18;
-                        break;
-                    case 22: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\"/g,'"'); return 31;
-                        break;
-                    case 23: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\'/g,"'"); return 31;
-                        break;
-                    case 24: return 38;
-                        break;
-                    case 25: return 33;
-                        break;
-                    case 26: return 33;
-                        break;
-                    case 27: return 32;
-                        break;
-                    case 28: return 36;
-                        break;
-                    case 29: yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 36;
-                        break;
-                    case 30: return 'INVALID';
-                        break;
-                    case 31: return 5;
-                        break;
-                }
-            };
-            lexer.rules = [/^(?:\\\\(?=(\{\{)))/,/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|$)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\{\{>)/,/^(?:\{\{#)/,/^(?:\{\{\/)/,/^(?:\{\{\^)/,/^(?:\{\{\s*else\b)/,/^(?:\{\{\{)/,/^(?:\{\{&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{)/,/^(?:=)/,/^(?:\.(?=[}\/ ]))/,/^(?:\.\.)/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}\}\})/,/^(?:\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=[}\s]))/,/^(?:false(?=[}\s]))/,/^(?:-?[0-9]+(?=[}\s]))/,/^(?:[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.]))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/];
-            lexer.conditions = {"mu":{"rules":[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],"inclusive":false},"emu":{"rules":[3],"inclusive":false},"com":{"rules":[4],"inclusive":false},"INITIAL":{"rules":[0,1,2,31],"inclusive":true}};
-            return lexer;})()
-        parser.lexer = lexer;
-        function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;
-        return new Parser;
-    })();;
-// lib/handlebars/compiler/base.js
-
-    Handlebars.Parser = handlebars;
-
-    Handlebars.parse = function(input) {
-
-        // Just return if an already-compile AST was passed in.
-        if(input.constructor === Handlebars.AST.ProgramNode) { return input; }
-
-        Handlebars.Parser.yy = Handlebars.AST;
-        return Handlebars.Parser.parse(input);
-    };
-    ;
-// lib/handlebars/compiler/ast.js
-    Handlebars.AST = {};
-
-    Handlebars.AST.ProgramNode = function(statements, inverse) {
-        this.type = "program";
-        this.statements = statements;
-        if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }
-    };
-
-    Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {
-        this.type = "mustache";
-        this.escaped = !unescaped;
-        this.hash = hash;
-
-        var id = this.id = rawParams[0];
-        var params = this.params = rawParams.slice(1);
-
-        // a mustache is an eligible helper if:
-        // * its id is simple (a single part, not `this` or `..`)
-        var eligibleHelper = this.eligibleHelper = id.isSimple;
-
-        // a mustache is definitely a helper if:
-        // * it is an eligible helper, and
-        // * it has at least one parameter or hash segment
-        this.isHelper = eligibleHelper && (params.length || hash);
-
-        // if a mustache is an eligible helper but not a definite
-        // helper, it is ambiguous, and will be resolved in a later
-        // pass or at runtime.
-    };
-
-    Handlebars.AST.PartialNode = function(partialName, context) {
-        this.type         = "partial";
-        this.partialName  = partialName;
-        this.context      = context;
-    };
-
-    Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {
-        var verifyMatch = function(open, close) {
-            if(open.original !== close.original) {
-                throw new Handlebars.Exception(open.original + " doesn't match " + close.original);
-            }
-        };
-
-        verifyMatch(mustache.id, close);
-        this.type = "block";
-        this.mustache = mustache;
-        this.program  = program;
-        this.inverse  = inverse;
-
-        if (this.inverse && !this.program) {
-            this.isInverse = true;
-        }
-    };
-
-    Handlebars.AST.ContentNode = function(string) {
-        this.type = "content";
-        this.string = string;
-    };
-
-    Handlebars.AST.HashNode = function(pairs) {
-        this.type = "hash";
-        this.pairs = pairs;
-    };
-
-    Handlebars.AST.IdNode = function(parts) {
-        this.type = "ID";
-
-        var original = "",
-            dig = [],
-            depth = 0;
-
-        for(var i=0,l=parts.length; i<l; i++) {
-            var part = parts[i].part;
-            original += (parts[i].separator || '') + part;
-
-            if (part === ".." || part === "." || part === "this") {
-                if (dig.length > 0) { throw new Handlebars.Exception("Invalid path: " + original); }
-                else if (part === "..") { depth++; }
-                else { this.isScoped = true; }
-            }
-            else { dig.push(part); }
-        }
-
-        this.original = original;
-        this.parts    = dig;
-        this.string   = dig.join('.');
-        this.depth    = depth;
-
-        // an ID is simple if it only has one part, and that part is not
-        // `..` or `this`.
-        this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;
-
-        this.stringModeValue = this.string;
-    };
-
-    Handlebars.AST.PartialNameNode = function(name) {
-        this.type = "PARTIAL_NAME";
-        this.name = name.original;
-    };
-
-    Handlebars.AST.DataNode = function(id) {
-        this.type = "DATA";
-        this.id = id;
-    };
-
-    Handlebars.AST.StringNode = function(string) {
-        this.type = "STRING";
-        this.original =
-            this.string =
-                this.stringModeValue = string;
-    };
-
-    Handlebars.AST.IntegerNode = function(integer) {
-        this.type = "INTEGER";
-        this.original =
-            this.integer = integer;
-        this.stringModeValue = Number(integer);
-    };
-
-    Handlebars.AST.BooleanNode = function(bool) {
-        this.type = "BOOLEAN";
-        this.bool = bool;
-        this.stringModeValue = bool === "true";
-    };
-
-    Handlebars.AST.CommentNode = function(comment) {
-        this.type = "comment";
-        this.comment = comment;
-    };
-    ;
-// lib/handlebars/utils.js
-
-    var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
-
-    Handlebars.Exception = function(message) {
-        var tmp = Error.prototype.constructor.apply(this, arguments);
-
-        // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
-        for (var idx = 0; idx < errorProps.length; idx++) {
-            this[errorProps[idx]] = tmp[errorProps[idx]];
-        }
-    };
-    Handlebars.Exception.prototype = new Error();
-
-// Build out our basic SafeString type
-    Handlebars.SafeString = function(string) {
-        this.string = string;
-    };
-    Handlebars.SafeString.prototype.toString = function() {
-        return this.string.toString();
-    };
-
-    var escape = {
-        "&": "&amp;",
-        "<": "&lt;",
-        ">": "&gt;",
-        '"': "&quot;",
-        "'": "&#x27;",
-        "`": "&#x60;"
-    };
-
-    var badChars = /[&<>"'`]/g;
-    var possible = /[&<>"'`]/;
-
-    var escapeChar = function(chr) {
-        return escape[chr] || "&amp;";
-    };
-
-    Handlebars.Utils = {
-        extend: function(obj, value) {
-            for(var key in value) {
-                if(value.hasOwnProperty(key)) {
-                    obj[key] = value[key];
-                }
-            }
-        },
-
-        escapeExpression: function(string) {
-            // don't escape SafeStrings, since they're already safe
-            if (string instanceof Handlebars.SafeString) {
-                return string.toString();
-            } else if (string == null || string === false) {
-                return "";
-            }
-
-            // Force a string conversion as this will be done by the append regardless and
-            // the regex test will do this transparently behind the scenes, causing issues if
-            // an object's to string has escaped characters in it.
-            string = string.toString();
-
-            if(!possible.test(string)) { return string; }
-            return string.replace(badChars, escapeChar);
-        },
-
-        isEmpty: function(value) {
-            if (!value && value !== 0) {
-                return true;
-            } else if(toString.call(value) === "[object Array]" && value.length === 0) {
-                return true;
-            } else {
-                return false;
-            }
-        }
-    };
-    ;
-// lib/handlebars/compiler/compiler.js
-
-    /*jshint eqnull:true*/
-    var Compiler = Handlebars.Compiler = function() {};
-    var JavaScriptCompiler = Handlebars.JavaScriptCompiler = function() {};
-
-// the foundHelper register will disambiguate helper lookup from finding a
-// function in a context. This is necessary for mustache compatibility, which
-// requires that context functions in blocks are evaluated by blockHelperMissing,
-// and then proceed as if the resulting value was provided to blockHelperMissing.
-
-    Compiler.prototype = {
-        compiler: Compiler,
-
-        disassemble: function() {
-            var opcodes = this.opcodes, opcode, out = [], params, param;
-
-            for (var i=0, l=opcodes.length; i<l; i++) {
-                opcode = opcodes[i];
-
-                if (opcode.opcode === 'DECLARE') {
-                    out.push("DECLARE " + opcode.name + "=" + opcode.value);
-                } else {
-                    params = [];
-                    for (var j=0; j<opcode.args.length; j++) {
-                        param = opcode.args[j];
-                        if (typeof param === "string") {
-                            param = "\"" + param.replace("\n", "\\n") + "\"";
-                        }
-                        params.push(param);
-                    }
-                    out.push(opcode.opcode + " " + params.join(" "));
-                }
-            }
-
-            return out.join("\n");
-        },
-        equals: function(other) {
-            var len = this.opcodes.length;
-            if (other.opcodes.length !== len) {
-                return false;
-            }
-
-            for (var i = 0; i < len; i++) {
-                var opcode = this.opcodes[i],
-                    otherOpcode = other.opcodes[i];
-                if (opcode.opcode !== otherOpcode.opcode || opcode.args.length !== otherOpcode.args.length) {
-                    return false;
-                }
-                for (var j = 0; j < opcode.args.length; j++) {
-                    if (opcode.args[j] !== otherOpcode.args[j]) {
-                        return false;
-                    }
-                }
-            }
-
-            len = this.children.length;
-            if (other.children.length !== len) {
-                return false;
-            }
-            for (i = 0; i < len; i++) {
-                if (!this.children[i].equals(other.children[i])) {
-                    return false;
-                }
-            }
-
-            return true;
-        },
-
-        guid: 0,
-
-        compile: function(program, options) {
-            this.children = [];
-            this.depths = {list: []};
-            this.options = options;
-
-            // These changes will propagate to the other compiler components
-            var knownHelpers = this.options.knownHelpers;
-            this.options.knownHelpers = {
-                'helperMissing': true,
-                'blockHelperMissing': true,
-                'each': true,
-                'if': true,
-                'unless': true,
-                'with': true,
-                'log': true
-            };
-            if (knownHelpers) {
-                for (var name in knownHelpers) {
-                    this.options.knownHelpers[name] = knownHelpers[name];
-                }
-            }
-
-            return this.program(program);
-        },
-
-        accept: function(node) {
-            return this[node.type](node);
-        },
-
-        program: function(program) {
-            var statements = program.statements, statement;
-            this.opcodes = [];
-
-            for(var i=0, l=statements.length; i<l; i++) {
-                statement = statements[i];
-                this[statement.type](statement);
-            }
-            this.isSimple = l === 1;
-
-            this.depths.list = this.depths.list.sort(function(a, b) {
-                return a - b;
-            });
-
-            return this;
-        },
-
-        compileProgram: function(program) {
-            var result = new this.compiler().compile(program, this.options);
-            var guid = this.guid++, depth;
-
-            this.usePartial = this.usePartial || result.usePartial;
-
-            this.children[guid] = result;
-
-            for(var i=0, l=result.depths.list.length; i<l; i++) {
-                depth = result.depths.list[i];
-
-                if(depth < 2) { continue; }
-                else { this.addDepth(depth - 1); }
-            }
-
-            return guid;
-        },
-
-        block: function(block) {
-            var mustache = block.mustache,
-                program = block.program,
-                inverse = block.inverse;
-
-            if (program) {
-                program = this.compileProgram(program);
-            }
-
-            if (inverse) {
-                inverse = this.compileProgram(inverse);
-            }
-
-            var type = this.classifyMustache(mustache);
-
-            if (type === "helper") {
-                this.helperMustache(mustache, program, inverse);
-            } else if (type === "simple") {
-                this.simpleMustache(mustache);
-
-                // now that the simple mustache is resolved, we need to
-                // evaluate it by executing `blockHelperMissing`
-                this.opcode('pushProgram', program);
-                this.opcode('pushProgram', inverse);
-                this.opcode('emptyHash');
-                this.opcode('blockValue');
-            } else {
-                this.ambiguousMustache(mustache, program, inverse);
-
-                // now that the simple mustache is resolved, we need to
-                // evaluate it by executing `blockHelperMissing`
-                this.opcode('pushProgram', program);
-                this.opcode('pushProgram', inverse);
-                this.opcode('emptyHash');
-                this.opcode('ambiguousBlockValue');
-            }
-
-            this.opcode('append');
-        },
-
-        hash: function(hash) {
-            var pairs = hash.pairs, pair, val;
-
-            this.opcode('pushHash');
-
-            for(var i=0, l=pairs.length; i<l; i++) {
-                pair = pairs[i];
-                val  = pair[1];
-
-                if (this.options.stringParams) {
-                    if(val.depth) {
-                        this.addDepth(val.depth);
-                    }
-                    this.opcode('getContext', val.depth || 0);
-                    this.opcode('pushStringParam', val.stringModeValue, val.type);
-                } else {
-                    this.accept(val);
-                }
-
-                this.opcode('assignToHash', pair[0]);
-            }
-            this.opcode('popHash');
-        },
-
-        partial: function(partial) {
-            var partialName = partial.partialName;
-            this.usePartial = true;
-
-            if(partial.context) {
-                this.ID(partial.context);
-            } else {
-                this.opcode('push', 'depth0');
-            }
-
-            this.opcode('invokePartial', partialName.name);
-            this.opcode('append');
-        },
-
-        content: function(content) {
-            this.opcode('appendContent', content.string);
-        },
-
-        mustache: function(mustache) {
-            var options = this.options;
-            var type = this.classifyMustache(mustache);
-
-            if (type === "simple") {
-                this.simpleMustache(mustache);
-            } else if (type === "helper") {
-                this.helperMustache(mustache);
-            } else {
-                this.ambiguousMustache(mustache);
-            }
-
-            if(mustache.escaped && !options.noEscape) {
-                this.opcode('appendEscaped');
-            } else {
-                this.opcode('append');
-            }
-        },
-
-        ambiguousMustache: function(mustache, program, inverse) {
-            var id = mustache.id,
-                name = id.parts[0],
-                isBlock = program != null || inverse != null;
-
-            this.opcode('getContext', id.depth);
-
-            this.opcode('pushProgram', program);
-            this.opcode('pushProgram', inverse);
-
-            this.opcode('invokeAmbiguous', name, isBlock);
-        },
-
-        simpleMustache: function(mustache) {
-            var id = mustache.id;
-
-            if (id.type === 'DATA') {
-                this.DATA(id);
-            } else if (id.parts.length) {
-                this.ID(id);
-            } else {
-                // Simplified ID for `this`
-                this.addDepth(id.depth);
-                this.opcode('getContext', id.depth);
-                this.opcode('pushContext');
-            }
-
-            this.opcode('resolvePossibleLambda');
-        },
-
-        helperMustache: function(mustache, program, inverse) {
-            var params = this.setupFullMustacheParams(mustache, program, inverse),
-                name = mustache.id.parts[0];
-
-            if (this.options.knownHelpers[name]) {
-                this.opcode('invokeKnownHelper', params.length, name);
-            } else if (this.options.knownHelpersOnly) {
-                throw new Error("You specified knownHelpersOnly, but used the unknown helper " + name);
-            } else {
-                this.opcode('invokeHelper', params.length, name);
-            }
-        },
-
-        ID: function(id) {
-            this.addDepth(id.depth);
-            this.opcode('getContext', id.depth);
-
-            var name = id.parts[0];
-            if (!name) {
-                this.opcode('pushContext');
-            } else {
-                this.opcode('lookupOnContext', id.parts[0]);
-            }
-
-            for(var i=1, l=id.parts.length; i<l; i++) {
-                this.opcode('lookup', id.parts[i]);
-            }
-        },
-
-        DATA: function(data) {
-            this.options.data = true;
-            if (data.id.isScoped || data.id.depth) {
-                throw new Handlebars.Exception('Scoped data references are not supported: ' + data.original);
-            }
-
-            this.opcode('lookupData');
-            var parts = data.id.parts;
-            for(var i=0, l=parts.length; i<l; i++) {
-                this.opcode('lookup', parts[i]);
-            }
-        },
-
-        STRING: function(string) {
-            this.opcode('pushString', string.string);
-        },
-
-        INTEGER: function(integer) {
-            this.opcode('pushLiteral', integer.integer);
-        },
-
-        BOOLEAN: function(bool) {
-            this.opcode('pushLiteral', bool.bool);
-        },
-
-        comment: function() {},
-
-        // HELPERS
-        opcode: function(name) {
-            this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });
-        },
-
-        declare: function(name, value) {
-            this.opcodes.push({ opcode: 'DECLARE', name: name, value: value });
-        },
-
-        addDepth: function(depth) {
-            if(isNaN(depth)) { throw new Error("EWOT"); }
-            if(depth === 0) { return; }
-
-            if(!this.depths[depth]) {
-                this.depths[depth] = true;
-                this.depths.list.push(depth);
-            }
-        },
-
-        classifyMustache: function(mustache) {
-            var isHelper   = mustache.isHelper;
-            var isEligible = mustache.eligibleHelper;
-            var options    = this.options;
-
-            // if ambiguous, we can possibly resolve the ambiguity now
-            if (isEligible && !isHelper) {
-                var name = mustache.id.parts[0];
-
-                if (options.knownHelpers[name]) {
-                    isHelper = true;
-                } else if (options.knownHelpersOnly) {
-                    isEligible = false;
-                }
-            }
-
-            if (isHelper) { return "helper"; }
-            else if (isEligible) { return "ambiguous"; }
-            else { return "simple"; }
-        },
-
-        pushParams: function(params) {
-            var i = params.length, param;
-
-            while(i--) {
-                param = params[i];
-
-                if(this.options.stringParams) {
-                    if(param.depth) {
-                        this.addDepth(param.depth);
-                    }
-
-                    this.opcode('getContext', param.depth || 0);
-                    this.opcode('pushStringParam', param.stringModeValue, param.type);
-                } else {
-                    this[param.type](param);
-                }
-            }
-        },
-
-        setupMustacheParams: function(mustache) {
-            var params = mustache.params;
-            this.pushParams(params);
-
-            if(mustache.hash) {
-                this.hash(mustache.hash);
-            } else {
-                this.opcode('emptyHash');
-            }
-
-            return params;
-        },
-
-        // this will replace setupMustacheParams when we're done
-        setupFullMustacheParams: function(mustache, program, inverse) {
-            var params = mustache.params;
-            this.pushParams(params);
-
-            this.opcode('pushProgram', program);
-            this.opcode('pushProgram', inverse);
-
-            if(mustache.hash) {
-                this.hash(mustache.hash);
-            } else {
-                this.opcode('emptyHash');
-            }
-
-            return params;
-        }
-    };
-
-    var Literal = function(value) {
-        this.value = value;
-    };
-
-    JavaScriptCompiler.prototype = {
-        // PUBLIC API: You can override these methods in a subclass to provide
-        // alternative compiled forms for name lookup and buffering semantics
-        nameLookup: function(parent, name /* , type*/) {
-            if (/^[0-9]+$/.test(name)) {
-                return parent + "[" + name + "]";
-            } else if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
-                return parent + "." + name;
-            }
-            else {
-                return parent + "['" + name + "']";
-            }
-        },
-
-        appendToBuffer: function(string) {
-            if (this.environment.isSimple) {
-                return "return " + string + ";";
-            } else {
-                return {
-                    appendToBuffer: true,
-                    content: string,
-                    toString: function() { return "buffer += " + string + ";"; }
-                };
-            }
-        },
-
-        initializeBuffer: function() {
-            return this.quotedString("");
-        },
-
-        namespace: "Handlebars",
-        // END PUBLIC API
-
-        compile: function(environment, options, context, asObject) {
-            this.environment = environment;
-            this.options = options || {};
-
-            Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + "\n\n");
-
-            this.name = this.environment.name;
-            this.isChild = !!context;
-            this.context = context || {
-                programs: [],
-                environments: [],
-                aliases: { }
-            };
-
-            this.preamble();
-
-            this.stackSlot = 0;
-            this.stackVars = [];
-            this.registers = { list: [] };
-            this.compileStack = [];
-            this.inlineStack = [];
-
-            this.compileChildren(environment, options);
-
-            var opcodes = environment.opcodes, opcode;
-
-            this.i = 0;
-
-            for(l=opcodes.length; this.i<l; this.i++) {
-                opcode = opcodes[this.i];
-
-                if(opcode.opcode === 'DECLARE') {
-                    this[opcode.name] = opcode.value;
-                } else {
-                    this[opcode.opcode].apply(this, opcode.args);
-                }
-            }
-
-            return this.createFunctionContext(asObject);
-        },
-
-        nextOpcode: function() {
-            var opcodes = this.environment.opcodes;
-            return opcodes[this.i + 1];
-        },
-
-        eat: function() {
-            this.i = this.i + 1;
-        },
-
-        preamble: function() {
-            var out = [];
-
-            if (!this.isChild) {
-                var namespace = this.namespace;
-
-                var copies = "helpers = this.merge(helpers, " + namespace + ".helpers);";
-                if (this.environment.usePartial) { copies = copies + " partials = this.merge(partials, " + namespace + ".partials);"; }
-                if (this.options.data) { copies = copies + " data = data || {};"; }
-                out.push(copies);
-            } else {
-                out.push('');
-            }
-
-            if (!this.environment.isSimple) {
-                out.push(", buffer = " + this.initializeBuffer());
-            } else {
-                out.push("");
-            }
-
-            // track the last context pushed into place to allow skipping the
-            // getContext opcode when it would be a noop
-            this.lastContext = 0;
-            this.source = out;
-        },
-
-        createFunctionContext: function(asObject) {
-            var locals = this.stackVars.concat(this.registers.list);
-
-            if(locals.length > 0) {
-                this.source[1] = this.source[1] + ", " + locals.join(", ");
-            }
-
-            // Generate minimizer alias mappings
-            if (!this.isChild) {
-                for (var alias in this.context.aliases) {
-                    if (this.context.aliases.hasOwnProperty(alias)) {
-                        this.source[1] = this.source[1] + ', ' + alias + '=' + this.context.aliases[alias];
-                    }
-                }
-            }
-
-            if (this.source[1]) {
-                this.source[1] = "var " + this.source[1].substring(2) + ";";
-            }
-
-            // Merge children
-            if (!this.isChild) {
-                this.source[1] += '\n' + this.context.programs.join('\n') + '\n';
-            }
-
-            if (!this.environment.isSimple) {
-                this.source.push("return buffer;");
-            }
-
-            var params = this.isChild ? ["depth0", "data"] : ["Handlebars", "depth0", "helpers", "partials", "data"];
-
-            for(var i=0, l=this.environment.depths.list.length; i<l; i++) {
-                params.push("depth" + this.environment.depths.list[i]);
-            }
-
-            // Perform a second pass over the output to merge content when possible
-            var source = this.mergeSource();
-
-            if (!this.isChild) {
-                var revision = Handlebars.COMPILER_REVISION,
-                    versions = Handlebars.REVISION_CHANGES[revision];
-                source = "this.compilerInfo = ["+revision+",'"+versions+"'];\n"+source;
-            }
-
-            if (asObject) {
-                params.push(source);
-
-                return Function.apply(this, params);
-            } else {
-                var functionSource = 'function ' + (this.name || '') + '(' + params.join(',') + ') {\n  ' + source + '}';
-                Handlebars.log(Handlebars.logger.DEBUG, functionSource + "\n\n");
-                return functionSource;
-            }
-        },
-        mergeSource: function() {
-            // WARN: We are not handling the case where buffer is still populated as the source should
-            // not have buffer append operations as their final action.
-            var source = '',
-                buffer;
-            for (var i = 0, len = this.source.length; i < len; i++) {
-                var line = this.source[i];
-                if (line.appendToBuffer) {
-                    if (buffer) {
-                        buffer = buffer + '\n    + ' + line.content;
-                    } else {
-                        buffer = line.content;
-                    }
-                } else {
-                    if (buffer) {
-                        source += 'buffer += ' + buffer + ';\n  ';
-                        buffer = undefined;
-                    }
-                    source += line + '\n  ';
-                }
-            }
-            return source;
-        },
-
-        // [blockValue]
-        //
-        // On stack, before: hash, inverse, program, value
-        // On stack, after: return value of blockHelperMissing
-        //
-        // The purpose of this opcode is to take a block of the form
-        // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and
-        // replace it on the stack with the result of properly
-        // invoking blockHelperMissing.
-        blockValue: function() {
-            this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';
-
-            var params = ["depth0"];
-            this.setupParams(0, params);
-
-            this.replaceStack(function(current) {
-                params.splice(1, 0, current);
-                return "blockHelperMissing.call(" + params.join(", ") + ")";
-            });
-        },
-
-        // [ambiguousBlockValue]
-        //
-        // On stack, before: hash, inverse, program, value
-        // Compiler value, before: lastHelper=value of last found helper, if any
-        // On stack, after, if no lastHelper: same as [blockValue]
-        // On stack, after, if lastHelper: value
-        ambiguousBlockValue: function() {
-            this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';
-
-            var params = ["depth0"];
-            this.setupParams(0, params);
-
-            var current = this.topStack();
-            params.splice(1, 0, current);
-
-            // Use the options value generated from the invocation
-            params[params.length-1] = 'options';
-
-            this.source.push("if (!" + this.lastHelper + ") { " + current + " = blockHelperMissing.call(" + params.join(", ") + "); }");
-        },
-
-        // [appendContent]
-        //
-        // On stack, before: ...
-        // On stack, after: ...
-        //
-        // Appends the string value of `content` to the current buffer
-        appendContent: function(content) {
-            this.source.push(this.appendToBuffer(this.quotedString(content)));
-        },
-
-        // [append]
-        //
-        // On stack, before: value, ...
-        // On stack, after: ...
-        //
-        // Coerces `value` to a String and appends it to the current buffer.
-        //
-        // If `value` is truthy, or 0, it is coerced into a string and appended
-        // Otherwise, the empty string is appended
-        append: function() {
-            // Force anything that is inlined onto the stack so we don't have duplication
-            // when we examine local
-            this.flushInline();
-            var local = this.popStack();
-            this.source.push("if(" + local + " || " + local + " === 0) { " + this.appendToBuffer(local) + " }");
-            if (this.environment.isSimple) {
-                this.source.push("else { " + this.appendToBuffer("''") + " }");
-            }
-        },
-
-        // [appendEscaped]
-        //
-        // On stack, before: value, ...
-        // On stack, after: ...
-        //
-        // Escape `value` and append it to the buffer
-        appendEscaped: function() {
-            this.context.aliases.escapeExpression = 'this.escapeExpression';
-
-            this.source.push(this.appendToBuffer("escapeExpression(" + this.popStack() + ")"));
-        },
-
-        // [getContext]
-        //
-        // On stack, before: ...
-        // On stack, after: ...
-        // Compiler value, after: lastContext=depth
-        //
-        // Set the value of the `lastContext` compiler value to the depth
-        getContext: function(depth) {
-            if(this.lastContext !== depth) {
-                this.lastContext = depth;
-            }
-        },
-
-        // [lookupOnContext]
-        //
-        // On stack, before: ...
-        // On stack, after: currentContext[name], ...
-        //
-        // Looks up the value of `name` on the current context and pushes
-        // it onto the stack.
-        lookupOnContext: function(name) {
-            this.push(this.nameLookup('depth' + this.lastContext, name, 'context'));
-        },
-
-        // [pushContext]
-        //
-        // On stack, before: ...
-        // On stack, after: currentContext, ...
-        //
-        // Pushes the value of the current context onto the stack.
-        pushContext: function() {
-            this.pushStackLiteral('depth' + this.lastContext);
-        },
-
-        // [resolvePossibleLambda]
-        //
-        // On stack, before: value, ...
-        // On stack, after: resolved value, ...
-        //
-        // If the `value` is a lambda, replace it on the stack by
-        // the return value of the lambda
-        resolvePossibleLambda: function() {
-            this.context.aliases.functionType = '"function"';
-
-            this.replaceStack(function(current) {
-                return "typeof " + current + " === functionType ? " + current + ".apply(depth0) : " + current;
-            });
-        },
-
-        // [lookup]
-        //
-        // On stack, before: value, ...
-        // On stack, after: value[name], ...
-        //
-        // Replace the value on the stack with the result of looking
-        // up `name` on `value`
-        lookup: function(name) {
-            this.replaceStack(function(current) {
-                return current + " == null || " + current + " === false ? " + current + " : " + this.nameLookup(current, name, 'context');
-            });
-        },
-
-        // [lookupData]
-        //
-        // On stack, before: ...
-        // On stack, after: data[id], ...
-        //
-        // Push the result of looking up `id` on the current data
-        lookupData: function(id) {
-            this.push('data');
-        },
-
-        // [pushStringParam]
-        //
-        // On stack, before: ...
-        // On stack, after: string, currentContext, ...
-        //
-        // This opcode is designed for use in string mode, which
-        // provides the string value of a parameter along with its
-        // depth rather than resolving it immediately.
-        pushStringParam: function(string, type) {
-            this.pushStackLiteral('depth' + this.lastContext);
-
-            this.pushString(type);
-
-            if (typeof string === 'string') {
-                this.pushString(string);
-            } else {
-                this.pushStackLiteral(string);
-            }
-        },
-
-        emptyHash: function() {
-            this.pushStackLiteral('{}');
-
-            if (this.options.stringParams) {
-                this.register('hashTypes', '{}');
-                this.register('hashContexts', '{}');
-            }
-        },
-        pushHash: function() {
-            this.hash = {values: [], types: [], contexts: []};
-        },
-        popHash: function() {
-            var hash = this.hash;
-            this.hash = undefined;
-
-            if (this.options.stringParams) {
-                this.register('hashContexts', '{' + hash.contexts.join(',') + '}');
-                this.register('hashTypes', '{' + hash.types.join(',') + '}');
-            }
-            this.push('{\n    ' + hash.values.join(',\n    ') + '\n  }');
-        },
-
-        // [pushString]
-        //
-        // On stack, before: ...
-        // On stack, after: quotedString(string), ...
-        //
-        // Push a quoted version of `string` onto the stack
-        pushString: function(string) {
-            this.pushStackLiteral(this.quotedString(string));
-        },
-
-        // [push]
-        //
-        // On stack, before: ...
-        // On stack, after: expr, ...
-        //
-        // Push an expression onto the stack
-        push: function(expr) {
-            this.inlineStack.push(expr);
-            return expr;
-        },
-
-        // [pushLiteral]
-        //
-        // On stack, before: ...
-        // On stack, after: value, ...
-        //
-        // Pushes a value onto the stack. This operation prevents
-        // the compiler from creating a temporary variable to hold
-        // it.
-        pushLiteral: function(value) {
-            this.pushStackLiteral(value);
-        },
-
-        // [pushProgram]
-        //
-        // On stack, before: ...
-        // On stack, after: program(guid), ...
-        //
-        // Push a program expression onto the stack. This takes
-        // a compile-time guid and converts it into a runtime-accessible
-        // expression.
-        pushProgram: function(guid) {
-            if (guid != null) {
-                this.pushStackLiteral(this.programExpression(guid));
-            } else {
-                this.pushStackLiteral(null);
-            }
-        },
-
-        // [invokeHelper]
-        //
-        // On stack, before: hash, inverse, program, params..., ...
-        // On stack, after: result of helper invocation
-        //
-        // Pops off the helper's parameters, invokes the helper,
-        // and pushes the helper's return value onto the stack.
-        //
-        // If the helper is not found, `helperMissing` is called.
-        invokeHelper: function(paramSize, name) {
-            this.context.aliases.helperMissing = 'helpers.helperMissing';
-
-            var helper = this.lastHelper = this.setupHelper(paramSize, name, true);
-            var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
-
-            this.push(helper.name + ' || ' + nonHelper);
-            this.replaceStack(function(name) {
-                return name + ' ? ' + name + '.call(' +
-                    helper.callParams + ") " + ": helperMissing.call(" +
-                    helper.helperMissingParams + ")";
-            });
-        },
-
-        // [invokeKnownHelper]
-        //
-        // On stack, before: hash, inverse, program, params..., ...
-        // On stack, after: result of helper invocation
-        //
-        // This operation is used when the helper is known to exist,
-        // so a `helperMissing` fallback is not required.
-        invokeKnownHelper: function(paramSize, name) {
-            var helper = this.setupHelper(paramSize, name);
-            this.push(helper.name + ".call(" + helper.callParams + ")");
-        },
-
-        // [invokeAmbiguous]
-        //
-        // On stack, before: hash, inverse, program, params..., ...
-        // On stack, after: result of disambiguation
-        //
-        // This operation is used when an expression like `{{foo}}`
-        // is provided, but we don't know at compile-time whether it
-        // is a helper or a path.
-        //
-        // This operation emits more code than the other options,
-        // and can be avoided by passing the `knownHelpers` and
-        // `knownHelpersOnly` flags at compile-time.
-        invokeAmbiguous: function(name, helperCall) {
-            this.context.aliases.functionType = '"function"';
-
-            this.pushStackLiteral('{}');    // Hash value
-            var helper = this.setupHelper(0, name, helperCall);
-
-            var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
-
-            var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
-            var nextStack = this.nextStack();
-
-            this.source.push('if (' + nextStack + ' = ' + helperName + ') { ' + nextStack + ' = ' + nextStack + '.call(' + helper.callParams + '); }');
-            this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '.apply(depth0) : ' + nextStack + '; }');
-        },
-
-        // [invokePartial]
-        //
-        // On stack, before: context, ...
-        // On stack after: result of partial invocation
-        //
-        // This operation pops off a context, invokes a partial with that context,
-        // and pushes the result of the invocation back.
-        invokePartial: function(name) {
-            var params = [this.nameLookup('partials', name, 'partial'), "'" + name + "'", this.popStack(), "helpers", "partials"];
-
-            if (this.options.data) {
-                params.push("data");
-            }
-
-            this.context.aliases.self = "this";
-            this.push("self.invokePartial(" + params.join(", ") + ")");
-        },
-
-        // [assignToHash]
-        //
-        // On stack, before: value, hash, ...
-        // On stack, after: hash, ...
-        //
-        // Pops a value and hash off the stack, assigns `hash[key] = value`
-        // and pushes the hash back onto the stack.
-        assignToHash: function(key) {
-            var value = this.popStack(),
-                context,
-                type;
-
-            if (this.options.stringParams) {
-                type = this.popStack();
-                context = this.popStack();
-            }
-
-            var hash = this.hash;
-            if (context) {
-                hash.contexts.push("'" + key + "': " + context);
-            }
-            if (type) {
-                hash.types.push("'" + key + "': " + type);
-            }
-            hash.values.push("'" + key + "': (" + value + ")");
-        },
-
-        // HELPERS
-
-        compiler: JavaScriptCompiler,
-
-        compileChildren: function(environment, options) {
-            var children = environment.children, child, compiler;
-
-            for(var i=0, l=children.length; i<l; i++) {
-                child = children[i];
-                compiler = new this.compiler();
-
-                var index = this.matchExistingProgram(child);
-
-                if (index == null) {
-                    this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children
-                    index = this.context.programs.length;
-                    child.index = index;
-                    child.name = 'program' + index;
-                    this.context.programs[index] = compiler.compile(child, options, this.context);
-                    this.context.environments[index] = child;
-                } else {
-                    child.index = index;
-                    child.name = 'program' + index;
-                }
-            }
-        },
-        matchExistingProgram: function(child) {
-            for (var i = 0, len = this.context.environments.length; i < len; i++) {
-                var environment = this.context.environments[i];
-                if (environment && environment.equals(child)) {
-                    return i;
-                }
-            }
-        },
-
-        programExpression: function(guid) {
-            this.context.aliases.self = "this";
-
-            if(guid == null) {
-                return "self.noop";
-            }
-
-            var child = this.environment.children[guid],
-                depths = child.depths.list, depth;
-
-            var programParams = [child.index, child.name, "data"];
-
-            for(var i=0, l = depths.length; i<l; i++) {
-                depth = depths[i];
-
-                if(depth === 1) { programParams.push("depth0"); }
-                else { programParams.push("depth" + (depth - 1)); }
-            }
-
-            return (depths.length === 0 ? "self.program(" : "self.programWithDepth(") + programParams.join(", ") + ")";
-        },
-
-        register: function(name, val) {
-            this.useRegister(name);
-            this.source.push(name + " = " + val + ";");
-        },
-
-        useRegister: function(name) {
-            if(!this.registers[name]) {
-                this.registers[name] = true;
-                this.registers.list.push(name);
-            }
-        },
-
-        pushStackLiteral: function(item) {
-            return this.push(new Literal(item));
-        },
-
-        pushStack: function(item) {
-            this.flushInline();
-
-            var stack = this.incrStack();
-            if (item) {
-                this.source.push(stack + " = " + item + ";");
-            }
-            this.compileStack.push(stack);
-            return stack;
-        },
-
-        replaceStack: function(callback) {
-            var prefix = '',
-                inline = this.isInline(),
-                stack;
-
-            // If we are currently inline then we want to merge the inline statement into the
-            // replacement statement via ','
-            if (inline) {
-                var top = this.popStack(true);
-
-                if (top instanceof Literal) {
-                    // Literals do not need to be inlined
-                    stack = top.value;
-                } else {
-                    // Get or create the current stack name for use by the inline
-                    var name = this.stackSlot ? this.topStackName() : this.incrStack();
-
-                    prefix = '(' + this.push(name) + ' = ' + top + '),';
-                    stack = this.topStack();
-                }
-            } else {
-                stack = this.topStack();
-            }
-
-            var item = callback.call(this, stack);
-
-            if (inline) {
-                if (this.inlineStack.length || this.compileStack.length) {
-                    this.popStack();
-                }
-                this.push('(' + prefix + item + ')');
-            } else {
-                // Prevent modification of the context depth variable. Through replaceStack
-                if (!/^stack/.test(stack)) {
-                    stack = this.nextStack();
-                }
-
-                this.source.push(stack + " = (" + prefix + item + ");");
-            }
-            return stack;
-        },
-
-        nextStack: function() {
-            return this.pushStack();
-        },
-
-        incrStack: function() {
-            this.stackSlot++;
-            if(this.stackSlot > this.stackVars.length) { this.stackVars.push("stack" + this.stackSlot); }
-            return this.topStackName();
-        },
-        topStackName: function() {
-            return "stack" + this.stackSlot;
-        },
-        flushInline: function() {
-            var inlineStack = this.inlineStack;
-            if (inlineStack.length) {
-                this.inlineStack = [];
-                for (var i = 0, len = inlineStack.length; i < len; i++) {
-                    var entry = inlineStack[i];
-                    if (entry instanceof Literal) {
-                        this.compileStack.push(entry);
-                    } else {
-                        this.pushStack(entry);
-                    }
-                }
-            }
-        },
-        isInline: function() {
-            return this.inlineStack.length;
-        },
-
-        popStack: function(wrapped) {
-            var inline = this.isInline(),
-                item = (inline ? this.inlineStack : this.compileStack).pop();
-
-            if (!wrapped && (item instanceof Literal)) {
-                return item.value;
-            } else {
-                if (!inline) {
-                    this.stackSlot--;
-                }
-                return item;
-            }
-        },
-
-        topStack: function(wrapped) {
-            var stack = (this.isInline() ? this.inlineStack : this.compileStack),
-                item = stack[stack.length - 1];
-
-            if (!wrapped && (item instanceof Literal)) {
-                return item.value;
-            } else {
-                return item;
-            }
-        },
-
-        quotedString: function(str) {
-            return '"' + str
-                .replace(/\\/g, '\\\\')
-                .replace(/"/g, '\\"')
-                .replace(/\n/g, '\\n')
-                .replace(/\r/g, '\\r')
-                .replace(/\u2028/g, '\\u2028')   // Per Ecma-262 7.3 + 7.8.4
-                .replace(/\u2029/g, '\\u2029') + '"';
-        },
-
-        setupHelper: function(paramSize, name, missingParams) {
-            var params = [];
-            this.setupParams(paramSize, params, missingParams);
-            var foundHelper = this.nameLookup('helpers', name, 'helper');
-
-            return {
-                params: params,
-                name: foundHelper,
-                callParams: ["depth0"].concat(params).join(", "),
-                helperMissingParams: missingParams && ["depth0", this.quotedString(name)].concat(params).join(", ")
-            };
-        },
-
-        // the params and contexts arguments are passed in arrays
-        // to fill in
-        setupParams: function(paramSize, params, useRegister) {
-            var options = [], contexts = [], types = [], param, inverse, program;
-
-            options.push("hash:" + this.popStack());
-
-            inverse = this.popStack();
-            program = this.popStack();
-
-            // Avoid setting fn and inverse if neither are set. This allows
-            // helpers to do a check for `if (options.fn)`
-            if (program || inverse) {
-                if (!program) {
-                    this.context.aliases.self = "this";
-                    program = "self.noop";
-                }
-
-                if (!inverse) {
-                    this.context.aliases.self = "this";
-                    inverse = "self.noop";
-                }
-
-                options.push("inverse:" + inverse);
-                options.push("fn:" + program);
-            }
-
-            for(var i=0; i<paramSize; i++) {
-                param = this.popStack();
-                params.push(param);
-
-                if(this.options.stringParams) {
-                    types.push(this.popStack());
-                    contexts.push(this.popStack());
-                }
-            }
-
-            if (this.options.stringParams) {
-                options.push("contexts:[" + contexts.join(",") + "]");
-                options.push("types:[" + types.join(",") + "]");
-                options.push("hashContexts:hashContexts");
-                options.push("hashTypes:hashTypes");
-            }
-
-            if(this.options.data) {
-                options.push("data:data");
-            }
-
-            options = "{" + options.join(",") + "}";
-            if (useRegister) {
-                this.register('options', options);
-                params.push('options');
-            } else {
-                params.push(options);
-            }
-            return params.join(", ");
-        }
-    };
-
-    var reservedWords = (
-        "break else new var" +
-            " case finally return void" +
-            " catch for switch while" +
-            " continue function this with" +
-            " default if throw" +
-            " delete in try" +
-            " do instanceof typeof" +
-            " abstract enum int short" +
-            " boolean export interface static" +
-            " byte extends long super" +
-            " char final native synchronized" +
-            " class float package throws" +
-            " const goto private transient" +
-            " debugger implements protected volatile" +
-            " double import public let yield"
-        ).split(" ");
-
-    var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
-
-    for(var i=0, l=reservedWords.length; i<l; i++) {
-        compilerWords[reservedWords[i]] = true;
-    }
-
-    JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {
-        if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(name)) {
-            return true;
-        }
-        return false;
-    };
-
-    Handlebars.precompile = function(input, options) {
-        if (input == null || (typeof input !== 'string' && input.constructor !== Handlebars.AST.ProgramNode)) {
-            throw new Handlebars.Exception("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + input);
-        }
-
-        options = options || {};
-        if (!('data' in options)) {
-            options.data = true;
-        }
-        var ast = Handlebars.parse(input);
-        var environment = new Compiler().compile(ast, options);
-        return new JavaScriptCompiler().compile(environment, options);
-    };
-
-    Handlebars.compile = function(input, options) {
-        if (input == null || (typeof input !== 'string' && input.constructor !== Handlebars.AST.ProgramNode)) {
-            throw new Handlebars.Exception("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + input);
-        }
-
-        options = options || {};
-        if (!('data' in options)) {
-            options.data = true;
-        }
-        var compiled;
-        function compile() {
-            var ast = Handlebars.parse(input);
-            var environment = new Compiler().compile(ast, options);
-            var templateSpec = new JavaScriptCompiler().compile(environment, options, undefined, true);
-            return Handlebars.template(templateSpec);
-        }
-
-        // Template is only compiled on first use and cached after that point.
-        return function(context, options) {
-            if (!compiled) {
-                compiled = compile();
-            }
-            return compiled.call(this, context, options);
-        };
-    };
-
-    ;
-// lib/handlebars/runtime.js
-
-   

<TRUNCATED>

[58/71] [abbrv] git commit: Merge branch 'STREAMS-26' of https://git-wip-us.apache.org/repos/asf/incubator-streams into STREAMS-26

Posted by sb...@apache.org.
Merge branch 'STREAMS-26' of https://git-wip-us.apache.org/repos/asf/incubator-streams into STREAMS-26

Conflicts:
	provision/provision.iml
	streams-contrib/streams-components-test/streams-components-test.iml
	streams-contrib/streams-provider-rss/streams-provider-rss.iml


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/81478217
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/81478217
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/81478217

Branch: refs/heads/master
Commit: 81478217f66cb326bd377977fdddd7129c9ca196
Parents: d4b03f8 3a19288
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Wed Mar 19 19:22:59 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Wed Mar 19 19:22:59 2014 -0500

----------------------------------------------------------------------
 provision/provision.iml                         | 19 ++++++
 streams-contrib/pom.xml                         | 11 ++--
 .../streams-components-test.iml                 | 55 +++++++++++++++++
 .../streams/hdfs/WebHdfsPersistReader.java      | 27 ++++++---
 .../streams/hdfs/WebHdfsPersistReaderTask.java  |  4 +-
 .../streams/rss/provider/RssStreamProvider.java |  2 +-
 .../streams/rss/test/Top100FeedsTest.java       |  4 +-
 .../streams-provider-rss.iml                    | 63 ++++++++++++++++++++
 .../apache/streams/sysomos/SysomosProvider.java | 20 +++----
 .../core/builders/LocalStreamBuilder.java       |  2 +-
 .../core/builders/LocalStreamBuilderTest.java   | 10 ++--
 11 files changed, 182 insertions(+), 35 deletions(-)
----------------------------------------------------------------------



[48/71] [abbrv] git commit: Adding a missing package

Posted by sb...@apache.org.
Adding a missing package

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1572764 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/2eb90cd6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/2eb90cd6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/2eb90cd6

Branch: refs/heads/master
Commit: 2eb90cd654e8c80fd073a570fbc573d07f644a56
Parents: 728a225
Author: sblackmon <sb...@unknown>
Authored: Thu Feb 27 22:37:40 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Thu Feb 27 22:37:40 2014 +0000

----------------------------------------------------------------------
 .../processor/TwitterEventProcessor.java        | 195 +++++++++++++++++
 .../processor/TwitterProfileProcessor.java      | 109 ++++++++++
 .../twitter/processor/TwitterTypeConverter.java | 217 +++++++++++++++++++
 3 files changed, 521 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2eb90cd6/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterEventProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterEventProcessor.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterEventProcessor.java
new file mode 100644
index 0000000..c3707cb
--- /dev/null
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterEventProcessor.java
@@ -0,0 +1,195 @@
+package org.apache.streams.twitter.processor;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+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.provider.TwitterEventClassifier;
+import org.apache.streams.twitter.serializer.TwitterJsonDeleteActivitySerializer;
+import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
+import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Queue;
+import java.util.concurrent.BlockingQueue;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class TwitterEventProcessor implements StreamsProcessor, Runnable {
+
+    private final static String STREAMS_ID = "TwitterEventProcessor";
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterEventProcessor.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private BlockingQueue<String> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    private Class inClass;
+    private Class outClass;
+
+    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
+    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
+    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    public TwitterEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class inClass, Class outClass) {
+        this.inQueue = inQueue;
+        this.outQueue = outQueue;
+        this.inClass = inClass;
+        this.outClass = outClass;
+    }
+
+    public TwitterEventProcessor(BlockingQueue<String> inQueue, Queue<StreamsDatum> outQueue, Class outClass) {
+        this.inQueue = inQueue;
+        this.outQueue = outQueue;
+        this.outClass = outClass;
+    }
+
+    public void run() {
+
+        while(true) {
+            String item;
+            try {
+                item = inQueue.poll();
+                if(item instanceof String && item.equals(TERMINATE)) {
+                    LOGGER.info("Terminating!");
+                    break;
+                }
+
+                ObjectNode objectNode = (ObjectNode) mapper.readTree(item);
+
+                StreamsDatum rawDatum = new StreamsDatum(objectNode);
+
+                for( StreamsDatum entry : process(rawDatum)) {
+                    outQueue.offer(entry);
+                }
+
+            } catch (Exception e) {
+                e.printStackTrace();
+
+            }
+        }
+    }
+
+    public Object convert(ObjectNode event, Class inClass, Class outClass) {
+
+        Object result = null;
+
+        if( outClass.equals( Activity.class )) {
+            if( inClass.equals( Delete.class )) {
+                LOGGER.debug("ACTIVITY DELETE");
+                result = twitterJsonDeleteActivitySerializer.convert(event);
+            } else if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("ACTIVITY RETWEET");
+                result = twitterJsonRetweetActivitySerializer.convert(event);
+            } else if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("ACTIVITY TWEET");
+                result = twitterJsonTweetActivitySerializer.convert(event);
+            } else {
+                return null;
+            }
+        } else if( outClass.equals( Tweet.class )) {
+            if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("TWEET");
+                result = mapper.convertValue(event, Tweet.class);
+            }
+        } else if( outClass.equals( Retweet.class )) {
+            if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("RETWEET");
+                result = mapper.convertValue(event, Retweet.class);
+            }
+        } else if( outClass.equals( Delete.class )) {
+            if ( inClass.equals( Delete.class )) {
+                LOGGER.debug("DELETE");
+                result = mapper.convertValue(event, Delete.class);
+            }
+        } else if( outClass.equals( ObjectNode.class )) {
+            LOGGER.debug("OBJECTNODE");
+            result = mapper.convertValue(event, ObjectNode.class);
+        }
+
+            // no supported conversion were applied
+        if( result != null )
+            return result;
+
+        LOGGER.debug("CONVERT FAILED");
+
+        return null;
+
+    }
+
+    public boolean validate(Object document, Class klass) {
+
+        // TODO
+        return true;
+    }
+
+    public boolean isValidJSON(final String json) {
+        boolean valid = false;
+        try {
+            final JsonParser parser = new ObjectMapper().getJsonFactory()
+                    .createJsonParser(json);
+            while (parser.nextToken() != null) {
+            }
+            valid = true;
+        } catch (JsonParseException jpe) {
+            LOGGER.warn("validate: {}", jpe);
+        } catch (IOException ioe) {
+            LOGGER.warn("validate: {}", ioe);
+        }
+
+        return valid;
+    }
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        // first check for valid json
+        ObjectNode node = (ObjectNode) entry.getDocument();
+
+        LOGGER.debug("{} processing {}", STREAMS_ID, node.getClass());
+
+        String json = node.asText();
+
+        // since data is coming from outside provider, we don't know what type the events are
+        Class inClass = TwitterEventClassifier.detectClass(json);
+
+        // if the target is string, just pass-through
+        if( java.lang.String.class.equals(outClass))
+            return Lists.newArrayList(new StreamsDatum(json));
+        else {
+            // convert to desired format
+            Object out = convert(node, inClass, outClass);
+
+            if( out != null && validate(out, outClass))
+                return Lists.newArrayList(new StreamsDatum(out));
+        }
+
+        return Lists.newArrayList();
+
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2eb90cd6/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterProfileProcessor.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterProfileProcessor.java b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterProfileProcessor.java
new file mode 100644
index 0000000..97bcbaf
--- /dev/null
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterProfileProcessor.java
@@ -0,0 +1,109 @@
+package org.apache.streams.twitter.processor;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+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.provider.TwitterEventClassifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Queue;
+import java.util.Random;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class TwitterProfileProcessor implements StreamsProcessor, Runnable {
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterProfileProcessor.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private Queue<StreamsDatum> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    @Override
+    public void run() {
+
+        while(true) {
+            StreamsDatum item;
+                try {
+                    item = inQueue.poll();
+                    if(item.getDocument() instanceof String && item.equals(TERMINATE)) {
+                        LOGGER.info("Terminating!");
+                        break;
+                    }
+
+                    Thread.sleep(new Random().nextInt(100));
+
+                    for( StreamsDatum entry : process(item)) {
+                        outQueue.offer(entry);
+                    }
+
+
+            } catch (Exception e) {
+                e.printStackTrace();
+
+            }
+        }
+    }
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        List<StreamsDatum> result = Lists.newArrayList();
+        String item;
+        try {
+            // first check for valid json
+            // since data is coming from outside provider, we don't know what type the events are
+            if( entry.getDocument() instanceof String) {
+                item = (String) entry.getDocument();
+            } else {
+                item = mapper.writeValueAsString((ObjectNode)entry.getDocument());
+            }
+
+            Class inClass = TwitterEventClassifier.detectClass(item);
+
+            User user;
+
+            if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("TWEET");
+                Tweet tweet = mapper.readValue(item, Tweet.class);
+                user = tweet.getUser();
+                result.add(new StreamsDatum(user));
+            }
+            else if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("RETWEET");
+                Retweet retweet = mapper.readValue(item, Retweet.class);
+                user = retweet.getRetweetedStatus().getUser();
+                result.add(new StreamsDatum(user));
+            } else {
+                return Lists.newArrayList();
+            }
+
+            return result;
+        } catch (Exception e) {
+            e.printStackTrace();
+            LOGGER.warn("Error processing " + entry.toString());
+            return Lists.newArrayList();
+        }
+    }
+
+    @Override
+    public void prepare(Object o) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+};

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/2eb90cd6/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
new file mode 100644
index 0000000..73744c1
--- /dev/null
+++ b/streams-contrib/streams-provider-twitter/src/main/java/org/apache/streams/twitter/processor/TwitterTypeConverter.java
@@ -0,0 +1,217 @@
+package org.apache.streams.twitter.processor;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.common.collect.Lists;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+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.provider.TwitterEventClassifier;
+import org.apache.streams.twitter.serializer.TwitterJsonDeleteActivitySerializer;
+import org.apache.streams.twitter.serializer.TwitterJsonRetweetActivitySerializer;
+import org.apache.streams.twitter.serializer.TwitterJsonTweetActivitySerializer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Queue;
+
+/**
+ * Created by sblackmon on 12/10/13.
+ */
+public class TwitterTypeConverter implements StreamsProcessor {
+
+    private final static String STREAMS_ID = "TwitterTypeConverter";
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterTypeConverter.class);
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private Queue<StreamsDatum> inQueue;
+    private Queue<StreamsDatum> outQueue;
+
+    private Class inClass;
+    private Class outClass;
+
+    private TwitterJsonTweetActivitySerializer twitterJsonTweetActivitySerializer = new TwitterJsonTweetActivitySerializer();
+    private TwitterJsonRetweetActivitySerializer twitterJsonRetweetActivitySerializer = new TwitterJsonRetweetActivitySerializer();
+    private TwitterJsonDeleteActivitySerializer twitterJsonDeleteActivitySerializer = new TwitterJsonDeleteActivitySerializer();
+
+    public final static String TERMINATE = new String("TERMINATE");
+
+    public TwitterTypeConverter(Class inClass, Class outClass) {
+        this.inClass = inClass;
+        this.outClass = outClass;
+    }
+
+    public Queue<StreamsDatum> getProcessorOutputQueue() {
+        return outQueue;
+    }
+
+    public void setProcessorInputQueue(Queue<StreamsDatum> inputQueue) {
+        inQueue = inputQueue;
+    }
+
+    public Object convert(ObjectNode event, Class inClass, Class outClass) {
+
+        Object result = null;
+
+        if( outClass.equals( Activity.class )) {
+            if( inClass.equals( Delete.class )) {
+                LOGGER.debug("ACTIVITY DELETE");
+                result = twitterJsonDeleteActivitySerializer.convert(event);
+            } else if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("ACTIVITY RETWEET");
+                result = twitterJsonRetweetActivitySerializer.convert(event);
+            } else if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("ACTIVITY TWEET");
+                result = twitterJsonTweetActivitySerializer.convert(event);
+            } else {
+                return null;
+            }
+        } else if( outClass.equals( Tweet.class )) {
+            if ( inClass.equals( Tweet.class )) {
+                LOGGER.debug("TWEET");
+                result = mapper.convertValue(event, Tweet.class);
+            }
+        } else if( outClass.equals( Retweet.class )) {
+            if ( inClass.equals( Retweet.class )) {
+                LOGGER.debug("RETWEET");
+                result = mapper.convertValue(event, Retweet.class);
+            }
+        } else if( outClass.equals( Delete.class )) {
+            if ( inClass.equals( Delete.class )) {
+                LOGGER.debug("DELETE");
+                result = mapper.convertValue(event, Delete.class);
+            }
+        } else if( outClass.equals( ObjectNode.class )) {
+            LOGGER.debug("OBJECTNODE");
+            result = mapper.convertValue(event, ObjectNode.class);
+        }
+
+            // no supported conversion were applied
+        if( result != null )
+            return result;
+
+        LOGGER.debug("CONVERT FAILED");
+
+        return null;
+
+    }
+
+    public boolean validate(Object document, Class klass) {
+
+        // TODO
+        return true;
+    }
+
+    public boolean isValidJSON(final String json) {
+        boolean valid = false;
+        try {
+            final JsonParser parser = new ObjectMapper().getJsonFactory()
+                    .createJsonParser(json);
+            while (parser.nextToken() != null) {
+            }
+            valid = true;
+        } catch (JsonParseException jpe) {
+            LOGGER.warn("validate: {}", jpe);
+        } catch (IOException ioe) {
+            LOGGER.warn("validate: {}", ioe);
+        }
+
+        return valid;
+    }
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+
+        StreamsDatum result = null;
+
+        try {
+
+            Object item = entry.getDocument();
+            ObjectNode node;
+
+            LOGGER.debug("{} processing {}", STREAMS_ID, item.getClass());
+
+            if( item instanceof String ) {
+
+                // if the target is string, just pass-through
+                if( String.class.equals(outClass)) {
+                    result = entry;
+                }
+                else {
+                    // first check for valid json
+                    node = (ObjectNode)mapper.readTree((String)item);
+
+                    // since data is coming from outside provider, we don't know what type the events are
+                    Class inClass = TwitterEventClassifier.detectClass((String) item);
+
+                    Object out = convert(node, inClass, outClass);
+
+                    if( out != null && validate(out, outClass))
+                        result = new StreamsDatum(out);
+                }
+
+            } else if( item instanceof ObjectNode ) {
+
+                // first check for valid json
+                node = (ObjectNode)mapper.valueToTree(item);
+
+                // since data is coming from outside provider, we don't know what type the events are
+                Class inClass = TwitterEventClassifier.detectClass((String)item);
+
+                Object out = convert(node, inClass, outClass);
+
+                if( out != null && validate(out, outClass))
+                    result = new StreamsDatum(out);
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        if( result != null )
+            return Lists.newArrayList(result);
+        else
+            return Lists.newArrayList();
+    }
+
+    @Override
+    public void prepare(Object o) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+
+//    public void run() {
+//        while(true) {
+//            StreamsDatum item;
+//            try {
+//                item = inQueue.poll();
+//                if(item.getDocument() instanceof String && item.equals(TERMINATE)) {
+//                    LOGGER.info("Terminating!");
+//                    break;
+//                }
+//
+//                for( StreamsDatum entry : process(item)) {
+//                    outQueue.offer(entry);
+//                }
+//
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//
+//            }
+//        }
+//    }
+}


[67/71] [abbrv] git commit: changing build version back to 0.1-SNAPSHOT to prepare for merge

Posted by sb...@apache.org.
changing build version back to 0.1-SNAPSHOT to prepare for merge


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/e3d0469c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/e3d0469c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/e3d0469c

Branch: refs/heads/master
Commit: e3d0469c2db745f709356faaddb90784a0c42b7d
Parents: 61592dc
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Fri Mar 21 15:39:26 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Fri Mar 21 15:39:26 2014 -0500

----------------------------------------------------------------------
 pom.xml                                         |   2 +-
 poms/compiled/pom.xml                           |   2 +-
 poms/pom.xml                                    |   2 +-
 poms/wrappers/pom.xml                           |   2 +-
 provision/pom.xml                               |   2 +-
 streams-cassandra/pom.xml                       |   2 +-
 streams-config-graph/pom.xml                    |   2 +-
 streams-config/pom.xml                          |   2 +-
 streams-contrib/pom.xml                         |   2 +-
 streams-contrib/streams-components-test/pom.xml |   4 +-
 streams-contrib/streams-persist-console/pom.xml |   6 +-
 .../streams-persist-elasticsearch/pom.xml       |  10 +-
 streams-contrib/streams-persist-hdfs/pom.xml    |  10 +-
 streams-contrib/streams-persist-kafka/pom.xml   |  10 +-
 streams-contrib/streams-persist-mongo/pom.xml   |  10 +-
 .../streams-provider-datasift/pom.xml           |   2 +-
 .../streams-provider-facebook/pom.xml           |   2 +-
 .../gnip-edc-facebook/pom.xml                   |   6 +-
 .../gnip-edc-flickr/pom.xml                     |   4 +-
 .../gnip-edc-googleplus/pom.xml                 |   6 +-
 .../gnip-edc-instagram/pom.xml                  |   2 +-
 .../gnip-edc-reddit/pom.xml                     |   6 +-
 .../gnip-edc-youtube/pom.xml                    |   4 +-
 .../gnip-powertrack/pom.xml                     |   2 +-
 streams-contrib/streams-provider-gnip/pom.xml   |   2 +-
 .../google-gmail/pom.xml                        |   9 +-
 .../gmail/test/GMailMessageSerDeTest.java       |  53 ----------
 .../src/test/resources/datasift_jsons.txt       | 101 -------------------
 .../google-gplus/pom.xml                        |   2 +-
 streams-contrib/streams-provider-google/pom.xml |   2 +-
 .../streams-provider-moreover/pom.xml           |   2 +-
 streams-contrib/streams-provider-rss/pom.xml    |   4 +-
 .../streams-provider-sysomos/pom.xml            |   2 +-
 .../streams-provider-twitter/pom.xml            |   2 +-
 streams-core/pom.xml                            |   2 +-
 streams-eip-routes/pom.xml                      |   2 +-
 .../activity-consumer/pom.xml                   |   4 +-
 .../activity-registration/pom.xml               |   2 +-
 .../activity-subscriber/pom.xml                 |   2 +-
 streams-osgi-components/pom.xml                 |   2 +-
 .../streams-components-all/pom.xml              |   2 +-
 streams-pojo-extensions/pom.xml                 |   4 +-
 streams-pojo/pom.xml                            |   2 +-
 streams-storm/pom.xml                           |  10 +-
 streams-util/pom.xml                            |   2 +-
 streams-web/pom.xml                             |   2 +-
 46 files changed, 83 insertions(+), 234 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b358dc6..fd39720 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
 
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
 
     <name>Apache Streams Project</name>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/poms/compiled/pom.xml
----------------------------------------------------------------------
diff --git a/poms/compiled/pom.xml b/poms/compiled/pom.xml
index a7bfe6f..ca176d2 100644
--- a/poms/compiled/pom.xml
+++ b/poms/compiled/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams.build</groupId>
     <artifactId>shared-plugin-settings</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>compiled-bundle-settings</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/poms/pom.xml
----------------------------------------------------------------------
diff --git a/poms/pom.xml b/poms/pom.xml
index f722997..321beee 100644
--- a/poms/pom.xml
+++ b/poms/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.streams.build</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/poms/wrappers/pom.xml
----------------------------------------------------------------------
diff --git a/poms/wrappers/pom.xml b/poms/wrappers/pom.xml
index dd14544..5c83d59 100644
--- a/poms/wrappers/pom.xml
+++ b/poms/wrappers/pom.xml
@@ -25,7 +25,7 @@
   <parent>
     <groupId>org.apache.streams.build</groupId>
     <artifactId>shared-plugin-settings</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <artifactId>wrapper-bundle-settings</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/provision/pom.xml
----------------------------------------------------------------------
diff --git a/provision/pom.xml b/provision/pom.xml
index f0e7979..2b66e2e 100644
--- a/provision/pom.xml
+++ b/provision/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.streams</groupId>
     <artifactId>streams-project</artifactId>
-    <version>0.1.STREAMS26-SNAPSHOT</version>
+    <version>0.1-SNAPSHOT</version>
   </parent>
 
   <groupId>org.apache.streams.build</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/streams-cassandra/pom.xml b/streams-cassandra/pom.xml
index 53d158a..4837649 100644
--- a/streams-cassandra/pom.xml
+++ b/streams-cassandra/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
 
     <artifactId>streams-cassandra</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-config-graph/pom.xml
----------------------------------------------------------------------
diff --git a/streams-config-graph/pom.xml b/streams-config-graph/pom.xml
index 8ec62c3..d4a3dbb 100644
--- a/streams-config-graph/pom.xml
+++ b/streams-config-graph/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
 
     <artifactId>streams-config-graph</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-config/pom.xml
----------------------------------------------------------------------
diff --git a/streams-config/pom.xml b/streams-config/pom.xml
index 59b725c..a8cdd9a 100644
--- a/streams-config/pom.xml
+++ b/streams-config/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-project</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
 
     <artifactId>streams-config</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index 239644b..fc08b4e 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>streams-project</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-components-test/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/pom.xml b/streams-contrib/streams-components-test/pom.xml
index c63385e..88973ba 100644
--- a/streams-contrib/streams-components-test/pom.xml
+++ b/streams-contrib/streams-components-test/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
@@ -16,7 +16,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>junit</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-persist-console/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/pom.xml b/streams-contrib/streams-persist-console/pom.xml
index c10a830..c7f2cd3 100644
--- a/streams-contrib/streams-persist-console/pom.xml
+++ b/streams-contrib/streams-persist-console/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,12 +15,12 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index cb321f3..a7a4979 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.elasticsearch</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-persist-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/pom.xml b/streams-contrib/streams-persist-hdfs/pom.xml
index 45dcc32..40e73a5 100644
--- a/streams-contrib/streams-persist-hdfs/pom.xml
+++ b/streams-contrib/streams-persist-hdfs/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.hadoop</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-persist-kafka/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-kafka/pom.xml b/streams-contrib/streams-persist-kafka/pom.xml
index eb519f4..f4fcaea 100644
--- a/streams-contrib/streams-persist-kafka/pom.xml
+++ b/streams-contrib/streams-persist-kafka/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.kafka</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-persist-mongo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-mongo/pom.xml b/streams-contrib/streams-persist-mongo/pom.xml
index 0e99483..a209acb 100644
--- a/streams-contrib/streams-persist-mongo/pom.xml
+++ b/streams-contrib/streams-persist-mongo/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -15,22 +15,22 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-config</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-core</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-util</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.mongodb</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-datasift/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-datasift/pom.xml b/streams-contrib/streams-provider-datasift/pom.xml
index dff9c98..b49db93 100644
--- a/streams-contrib/streams-provider-datasift/pom.xml
+++ b/streams-contrib/streams-provider-datasift/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-facebook/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-facebook/pom.xml b/streams-contrib/streams-provider-facebook/pom.xml
index 3d511bf..bda986b 100644
--- a/streams-contrib/streams-provider-facebook/pom.xml
+++ b/streams-contrib/streams-provider-facebook/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-contrib</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>streams-provider-facebook</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
index add41af..39befa4 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-facebook/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-provider-gnip</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -48,12 +48,12 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-provider-facebook</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
index 9496f13..f56f9cc 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-flickr/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-provider-gnip</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
index 2f1d900..9933f57 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -67,13 +67,13 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
     </dependencies>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
index cde8a5a..fd50125 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-instagram/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
index de63e03..d74def2 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-reddit/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -65,13 +65,13 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>streams-pojo</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml b/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
index db8a69b..1acaae6 100644
--- a/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-edc-youtube/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>streams-provider-gnip</artifactId>
         <groupId>org.apache.streams</groupId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -44,7 +44,7 @@
         <dependency>
             <groupId>org.apache.streams</groupId>
             <artifactId>gnip-powertrack</artifactId>
-            <version>0.1.STREAMS26-SNAPSHOT</version>
+            <version>0.1-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml b/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
index 0399392..57578f0 100644
--- a/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
+++ b/streams-contrib/streams-provider-gnip/gnip-powertrack/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-gnip</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-gnip/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-gnip/pom.xml b/streams-contrib/streams-provider-gnip/pom.xml
index 00b983a..68d6591 100644
--- a/streams-contrib/streams-provider-gnip/pom.xml
+++ b/streams-contrib/streams-provider-gnip/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-contrib</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-google/google-gmail/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/pom.xml b/streams-contrib/streams-provider-google/google-gmail/pom.xml
index 84e0346..f035202 100644
--- a/streams-contrib/streams-provider-google/google-gmail/pom.xml
+++ b/streams-contrib/streams-provider-google/google-gmail/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.apache.streams</groupId>
         <artifactId>streams-provider-google</artifactId>
-        <version>0.1.STREAMS26-SNAPSHOT</version>
+        <version>0.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -13,9 +13,12 @@
 
     <repositories>
         <repository>
-            <id>typesafe</id>
+            <id>sonatype</id>
             <name>typesafe</name>
-            <url>http://repo.typesafe.com/typesafe/repo</url>
+            <url>http://oss.sonatype.org/content/repositories/snapshots</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
         </repository>
     </repositories>
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/e3d0469c/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java b/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
deleted file mode 100644
index e9641fc..0000000
--- a/streams-contrib/streams-provider-google/google-gmail/src/test/java/com/google/gmail/test/GMailMessageSerDeTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.google.gmail.test;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
- * Created with IntelliJ IDEA.
- * User: sblackmon
- * Date: 8/20/13
- * Time: 5:57 PM
- * To change this template use File | Settings | File Templates.
- */
-@Ignore
-public class GMailMessageSerDeTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(GMailMessageSerDeTest.class);
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @Ignore
-    @Test
-    public void Tests()
-    {
-        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        InputStream is = GMailMessageSerDeTest.class.getResourceAsStream("/datasift_jsons.txt");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-                LOGGER.debug(line);
-
-                // implement
-            }
-        } catch( Exception e ) {
-            e.printStackTrace();
-            Assert.fail();
-        }
-    }
-}


[37/71] [abbrv] git commit: fixing STREAMS-26

Posted by sb...@apache.org.
fixing STREAMS-26

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1571367 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/d256daf4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/d256daf4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/d256daf4

Branch: refs/heads/master
Commit: d256daf40d9facf11af817c6c3bcd2853a1f14e4
Parents: 6ea69f2
Author: sblackmon <sb...@unknown>
Authored: Mon Feb 24 17:35:27 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Mon Feb 24 17:35:27 2014 +0000

----------------------------------------------------------------------
 .../console/ConsolePersistWriterTask.java       | 54 ++++++++++++++++++++
 1 file changed, 54 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/d256daf4/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriterTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriterTask.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriterTask.java
new file mode 100644
index 0000000..e5009f0
--- /dev/null
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriterTask.java
@@ -0,0 +1,54 @@
+/*
+ * 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.console;
+
+import org.apache.streams.core.StreamsDatum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Random;
+
+public class ConsolePersistWriterTask implements Runnable {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ConsolePersistWriterTask.class);
+
+    private ConsolePersistWriter writer;
+
+    public ConsolePersistWriterTask(ConsolePersistWriter writer) {
+        this.writer = writer;
+    }
+
+    @Override
+    public void run() {
+        while(true) {
+            if( writer.persistQueue.peek() != null ) {
+                try {
+                    StreamsDatum entry = writer.persistQueue.remove();
+                    writer.write(entry);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            try {
+                Thread.sleep(new Random().nextInt(100));
+            } catch (InterruptedException e) {}
+        }
+    }
+
+}


[25/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
deleted file mode 100644
index 9933f57..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/pom.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?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-provider-gnip</artifactId>
-        <version>0.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>gnip-edc-googleplus</artifactId>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.jsonschema2pojo</groupId>
-            <artifactId>jsonschema2pojo-core</artifactId>
-
-            <type>jar</type>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-            <version>2.1.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-xml</artifactId>
-            <version>${jackson.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>jackson-xml-databind</artifactId>
-            <version>0.5.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <version>1.0.9</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.json</groupId>
-            <artifactId>json</artifactId>
-            <version>20090211</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>gnip-powertrack</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </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>
-                <artifactId>maven-clean-plugin</artifactId>
-                <version>2.5</version>
-                <configuration>
-                    <filesets>
-                        <fileset>
-                            <directory>target</directory>
-                            <includes>
-                                <include>**/*</include>
-                            </includes>
-                        </fileset>
-                    </filesets>
-                </configuration>
-            </plugin>
-            <!--<plugin>-->
-            <!--<groupId>org.jsonschema2pojo</groupId>-->
-            <!--<artifactId>jsonschema2pojo-maven-plugin</artifactId>-->
-            <!---->
-            <!--<configuration>-->
-            <!--<addCompileSourceRoot>true</addCompileSourceRoot>-->
-            <!--<generateBuilders>true</generateBuilders>-->
-            <!--<sourcePaths>-->
-            <!--<sourcePath>src/main/jsonschema/com/reddit</sourcePath>-->
-            <!--</sourcePaths>-->
-            <!--<outputDirectory>src/main/java</outputDirectory>-->
-            <!--<targetPackage>org.apache.streams</targetPackage>-->
-            <!--<useLongIntegers>true</useLongIntegers>-->
-            <!--<useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/main/java/com/gplus/api/GPlusActivitySerializer.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/main/java/com/gplus/api/GPlusActivitySerializer.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/main/java/com/gplus/api/GPlusActivitySerializer.java
deleted file mode 100644
index dfe02fc..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/main/java/com/gplus/api/GPlusActivitySerializer.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.gplus.api;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.streams.data.ActivitySerializer;
-import org.apache.streams.data.util.ActivityUtil;
-import org.apache.streams.gnip.powertrack.GnipActivityFixer;
-import org.apache.streams.pojo.json.Activity;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Created with IntelliJ IDEA.
- * User: mdelaet
- * Date: 8/30/13
- * Time: 10:48 AM
- * To change this template use File | Settings | File Templates.
- */
-public class GPlusActivitySerializer implements ActivitySerializer<String> {
-    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusActivitySerializer.class);
-
-    @Override
-    public String serializationFormat() {
-        return "application/gplus+xml";
-    }
-
-    @Override
-    public String serialize(Activity deserialized) {
-        ObjectMapper jsonMapper = new ObjectMapper();
-        String jsonString = new String();
-        try{
-            jsonString = jsonMapper.writeValueAsString(deserialized);
-        }catch(Exception e){
-            LOGGER.error("Exception serializing Activity Object: " + e);
-        }
-        return jsonString;  //To change body of implemented methods use File | Settings | File Templates.
-    }
-
-    @Override
-    public Activity deserialize(String serialized) {
-        ObjectMapper jsonMapper = new ObjectMapper();
-        JSONObject jsonObject = new JSONObject();
-        JSONObject fixedObject = new JSONObject();
-
-        try{
-            jsonObject = new JSONObject(serialized);
-            fixedObject = GnipActivityFixer.fix(jsonObject);
-        }catch(Exception e){
-            LOGGER.error("Exception deserializing string: " + e);
-        }
-
-        Activity activity = new Activity();
-        try {
-            activity = jsonMapper.readValue(fixedObject.toString(), Activity.class);
-            Map<String, Object> extension = ActivityUtil.ensureExtensions(activity);
-            extension.put("likes", fixedObject.getJSONObject("object").getJSONObject("plusoners").get("totalItems"));
-            extension.put("rebroadcast", fixedObject.getJSONObject("object").getJSONObject("resharers").get("totalItems"));
-        } catch( Exception e ) {
-            LOGGER.error(jsonObject.toString());
-            LOGGER.error(fixedObject.toString());
-            e.printStackTrace();
-        }
-        return activity;
-    }
-
-    @Override
-    public List<Activity> deserializeAll(List<String> serializedList) {
-        //TODO Support
-        throw new NotImplementedException("Not currently supported by this deserializer");
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/java/com/gplus/api/GPlusEDCAsActivityTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/java/com/gplus/api/GPlusEDCAsActivityTest.java b/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/java/com/gplus/api/GPlusEDCAsActivityTest.java
deleted file mode 100644
index fc0e020..0000000
--- a/trunk/streams-contrib/streams-provider-gnip/gnip-edc-googleplus/src/test/java/com/gplus/api/GPlusEDCAsActivityTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.gplus.api;
-
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-import org.apache.streams.pojo.json.Activity;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-/**
- * Created with IntelliJ IDEA.
- * User: mdelaet
- * Date: 8/28/13
- * Time: 2:53 PM
- * To change this template use File | Settings | File Templates.
- */
-public class GPlusEDCAsActivityTest {
-    private final static Logger LOGGER = LoggerFactory.getLogger(GPlusEDCAsActivityTest.class);
-
-    private ObjectMapper jsonMapper;
-    XmlMapper xmlMapper;
-    private GPlusActivitySerializer gplusSerializer;
-
-    public GPlusEDCAsActivityTest() {
-        gplusSerializer = new GPlusActivitySerializer();
-        jsonMapper = new ObjectMapper();
-        xmlMapper = new XmlMapper();
-    }
-
-    @Test
-    public void Tests()   throws Exception
-    {
-        InputStream is = GPlusEDCAsActivityTest.class.getResourceAsStream("/GPlusEDCFixed.json");
-        if(is == null) System.out.println("null");
-        InputStreamReader isr = new InputStreamReader(is);
-        BufferedReader br = new BufferedReader(isr);
-        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        xmlMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-        jsonMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, Boolean.FALSE);
-        jsonMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, Boolean.TRUE);
-        jsonMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, Boolean.TRUE);
-
-        try {
-            while (br.ready()) {
-                String line = br.readLine();
-
-                Activity activity = null;
-                try {
-                    activity = gplusSerializer.deserialize(line);
-                } catch( Exception e ) {
-                    LOGGER.error(line);
-                    e.printStackTrace();
-                    Assert.fail("Exception on gplus Serializer.deserialize(jsonString) : " + e);
-                }
-
-                try {
-                    String activityString = gplusSerializer.serialize(activity);
-                    LOGGER.debug(activityString);
-                } catch (Exception e ){
-                    LOGGER.error(activity.toString());
-                    e.printStackTrace();
-                    Assert.fail("Exception on gplus Serializer.serialize(activity) : " + e);
-                }
-
-            }
-        } catch( Exception e ) {
-            System.out.println("Exception: " + e);
-            LOGGER.error(e.getMessage());
-            Assert.fail("");
-        }
-    }
-
-}


[52/71] [abbrv] git commit: merging ryan and steve latest

Posted by sb...@apache.org.
merging ryan and steve latest

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1574660 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/ab103c96
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/ab103c96
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/ab103c96

Branch: refs/heads/master
Commit: ab103c969b33410a1c1fdf3534dce6b84d302a6c
Parents: 63a85a8
Author: sblackmon <sb...@unknown>
Authored: Wed Mar 5 21:06:50 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Wed Mar 5 21:06:50 2014 +0000

----------------------------------------------------------------------
 pom.xml                                         |   4 -
 streams-contrib/pom.xml                         |   3 +-
 streams-contrib/streams-components-test/pom.xml |  46 +++
 .../component/ExpectedDatumsPersistWriter.java  |  54 ++++
 .../test/component/FileReaderProvider.java      |  98 +++++++
 .../test/component/StreamsDatumConverter.java   |  13 +
 .../component/StringToDocumentConverter.java    |  15 +
 .../tests/TestCompoentsLocalStream.java         |  23 ++
 .../tests/TestExpectedDatumsPersitWriter.java   |  38 +++
 .../component/tests/TestFileReaderProvider.java |  39 +++
 .../src/test/resources/TestFile.txt             |   4 +
 .../streams-components-test.iml                 |  57 ++++
 .../streams/console/ConsolePersistWriter.java   |   1 +
 .../streams-persist-elasticsearch/pom.xml       |   1 +
 .../ElasticsearchPersistReader.java             |  75 ++---
 .../ElasticsearchPersistReaderTask.java         |  36 ++-
 .../ElasticsearchPersistWriter.java             |   8 +-
 .../ElasticsearchReaderConfiguration.json       |  18 ++
 streams-contrib/streams-persist-hdfs/pom.xml    |   2 +-
 .../streams/hdfs/HdfsReaderConfiguration.json   |  14 +
 .../org/apache/streams/core/StreamsDatum.java   |  46 ++-
 .../core/builders/LocalStreamBuilder.java       |   4 +-
 .../streams/core/tasks/BaseStreamsTask.java     |  18 +-
 .../apache/streams/core/tasks/StreamsTask.java  |   2 +-
 .../core/builders/LocalStreamBuilderTest.java   | 161 +++++++++++
 .../core/builders/ToyLocalBuilderExample.java   |  28 ++
 .../streams/core/tasks/BasicTasksTest.java      | 285 +++++++++++++++++++
 .../test/processors/DoNothingProcessor.java     |  32 +++
 .../PassthroughDatumCounterProcessor.java       |  49 ++++
 .../test/providers/NumericMessageProvider.java  | 104 +++++++
 .../core/test/writer/DatumCounterWriter.java    |  31 ++
 .../core/test/writer/DoNothingWriter.java       |  24 ++
 .../core/test/writer/SystemOutWriter.java       |  24 ++
 streams-pojo/pom.xml                            |   5 -
 34 files changed, 1263 insertions(+), 99 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 77d5371..42d067d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -155,10 +155,6 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-        </dependency>
-        <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/pom.xml b/streams-contrib/pom.xml
index c24a33b..0cd5db7 100644
--- a/streams-contrib/pom.xml
+++ b/streams-contrib/pom.xml
@@ -47,8 +47,9 @@
         <module>streams-provider-moreover</module>
         <module>streams-provider-twitter</module>
         <!--<module>streams-provider-sysomos</module>-->
-        <module>streams-provider-rss</module>
+        <!--<module>streams-provider-rss</module>-->
         <!--<module>streams-proxy-semantria</module>-->
+        <module>streams-components-test</module>
     </modules>
 
     <dependencyManagement>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/pom.xml b/streams-contrib/streams-components-test/pom.xml
new file mode 100644
index 0000000..88973ba
--- /dev/null
+++ b/streams-contrib/streams-components-test/pom.xml
@@ -0,0 +1,46 @@
+<?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>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streams-components-test</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.streams</groupId>
+            <artifactId>streams-core</artifactId>
+            <version>0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+
+
+        <build>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>2.4</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>test-jar</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/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/ExpectedDatumsPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/ExpectedDatumsPersistWriter.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/ExpectedDatumsPersistWriter.java
new file mode 100644
index 0000000..675edd7
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/ExpectedDatumsPersistWriter.java
@@ -0,0 +1,54 @@
+package org.apache.streams.test.component;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Scanner;
+
+/**
+ * Created by rebanks on 2/27/14.
+ */
+public class ExpectedDatumsPersistWriter implements StreamsPersistWriter{
+
+    private StreamsDatumConverter converter;
+    private String fileName;
+    private List<StreamsDatum> expectedDatums;
+    private int counted = 0;
+    private int expectedSize = 0;
+
+    public ExpectedDatumsPersistWriter(StreamsDatumConverter converter, String filePathInResources) {
+        this.converter = converter;
+        this.fileName = filePathInResources;
+    }
+
+
+
+    @Override
+    public void write(StreamsDatum entry) {
+        int index = this.expectedDatums.indexOf(entry);
+        assertNotEquals("Datum not expected. "+entry.toString(), -1, index);
+        this.expectedDatums.remove(index);
+        ++this.counted;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        Scanner scanner = new Scanner(ExpectedDatumsPersistWriter.class.getResourceAsStream(this.fileName));
+        this.expectedDatums = new LinkedList<StreamsDatum>();
+        while(scanner.hasNextLine()) {
+            this.expectedDatums.add(this.converter.convert(scanner.nextLine()));
+        }
+        this.expectedSize = this.expectedDatums.size();
+    }
+
+    @Override
+    public void cleanUp() {
+        assertEquals("Did not received the expected number of StreamsDatums", this.expectedSize, this.counted);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/FileReaderProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/FileReaderProvider.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/FileReaderProvider.java
new file mode 100644
index 0000000..a7c98c9
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/FileReaderProvider.java
@@ -0,0 +1,98 @@
+package org.apache.streams.test.component;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.math.BigInteger;
+import java.sql.ResultSet;
+import java.util.Iterator;
+import java.util.Queue;
+import java.util.Scanner;
+
+/**
+ * FOR TESTING PURPOSES ONLY.
+ *
+ * The StreamProvider reads from a File or InputStream.  Each line of the file will be emitted as the document of a
+ * streams datum.
+ *
+ */
+public class FileReaderProvider implements StreamsProvider {
+
+    private String fileName;
+    private InputStream inStream;
+    private Scanner scanner;
+    private StreamsDatumConverter converter;
+
+    public FileReaderProvider(String filePathInResources, StreamsDatumConverter converter) {
+        this.fileName = filePathInResources;
+        this.converter = converter;
+    }
+
+    @Override
+    public void startStream() {
+
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+        return new ResultSet();
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        this.scanner = new Scanner(FileReaderProvider.class.getResourceAsStream(this.fileName));
+    }
+
+    @Override
+    public void cleanUp() {
+        this.scanner.close();
+    }
+
+    private class ResultSet extends StreamsResultSet {
+
+        public ResultSet() {
+            super(null);
+        }
+
+
+        @Override
+        public Iterator<StreamsDatum> iterator() {
+            return new FileProviderIterator();
+        }
+
+        private class FileProviderIterator implements Iterator<StreamsDatum> {
+
+
+
+            @Override
+            public boolean hasNext() {
+                return scanner.hasNextLine();
+            }
+
+            @Override
+            public StreamsDatum next() {
+                return converter.convert(scanner.nextLine());
+            }
+
+            @Override
+            public void remove() {
+
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StreamsDatumConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StreamsDatumConverter.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StreamsDatumConverter.java
new file mode 100644
index 0000000..d6ec2f4
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StreamsDatumConverter.java
@@ -0,0 +1,13 @@
+package org.apache.streams.test.component;
+
+import org.apache.streams.core.StreamsDatum;
+
+import java.io.Serializable;
+
+/**
+ * Created by rebanks on 2/27/14.
+ */
+public interface StreamsDatumConverter extends Serializable {
+
+    public StreamsDatum convert(String s);
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StringToDocumentConverter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StringToDocumentConverter.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StringToDocumentConverter.java
new file mode 100644
index 0000000..d97de91
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/StringToDocumentConverter.java
@@ -0,0 +1,15 @@
+package org.apache.streams.test.component;
+
+import org.apache.streams.core.StreamsDatum;
+
+/**
+ * Created by rebanks on 2/28/14.
+ */
+public class StringToDocumentConverter implements StreamsDatumConverter {
+
+    @Override
+    public StreamsDatum convert(String s) {
+        return new StreamsDatum(s);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestCompoentsLocalStream.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestCompoentsLocalStream.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestCompoentsLocalStream.java
new file mode 100644
index 0000000..23a804c
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestCompoentsLocalStream.java
@@ -0,0 +1,23 @@
+package org.apache.streams.test.component.tests;
+
+import org.apache.streams.core.builders.LocalStreamBuilder;
+import org.apache.streams.test.component.ExpectedDatumsPersistWriter;
+import org.apache.streams.test.component.FileReaderProvider;
+import org.apache.streams.test.component.StringToDocumentConverter;
+import org.junit.Test;
+
+/**
+ * Created by rebanks on 2/28/14.
+ */
+public class TestCompoentsLocalStream {
+
+    @Test
+    public void testLocalStreamWithComponent() {
+        LocalStreamBuilder builder = new LocalStreamBuilder();
+        builder.newReadCurrentStream("provider", new FileReaderProvider("/TestFile.txt",
+                                                                        new StringToDocumentConverter()));
+        builder.addStreamsPersistWriter("writer", new ExpectedDatumsPersistWriter(new StringToDocumentConverter(),
+                "/TestFile.txt"), 1, "provider")
+        .start();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestExpectedDatumsPersitWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestExpectedDatumsPersitWriter.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestExpectedDatumsPersitWriter.java
new file mode 100644
index 0000000..d12b250
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestExpectedDatumsPersitWriter.java
@@ -0,0 +1,38 @@
+package org.apache.streams.test.component.tests;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.test.component.ExpectedDatumsPersistWriter;
+import org.apache.streams.test.component.StringToDocumentConverter;
+import org.junit.Ignore;
+import org.junit.Test;
+
+/**
+ * Created by rebanks on 2/28/14.
+ */
+public class TestExpectedDatumsPersitWriter {
+
+    private static final StreamsDatum[] INPUT_DATUMS = new StreamsDatum[] {
+            new StreamsDatum("Document1"),
+            new StreamsDatum("Document2"),
+            new StreamsDatum("Document3"),
+            new StreamsDatum("Document4")
+//            Uncomment to prove failures occur, or comment out a datum above
+//            ,new StreamsDatum("Document5")
+    };
+
+    @Test
+    public void testExpectedDatumsPersistWriterFileName() {
+        testDatums(new ExpectedDatumsPersistWriter(new StringToDocumentConverter(), "/TestFile.txt"));
+    }
+
+
+
+    private void testDatums(ExpectedDatumsPersistWriter writer) {
+        writer.prepare(null);
+        for(StreamsDatum datum : INPUT_DATUMS) {
+            writer.write(datum);
+        }
+        writer.cleanUp();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestFileReaderProvider.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestFileReaderProvider.java b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestFileReaderProvider.java
new file mode 100644
index 0000000..c562c20
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/java/org/apache/streams/test/component/tests/TestFileReaderProvider.java
@@ -0,0 +1,39 @@
+package org.apache.streams.test.component.tests;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsResultSet;
+import org.apache.streams.test.component.FileReaderProvider;
+import org.apache.streams.test.component.StringToDocumentConverter;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import java.io.InputStream;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by rebanks on 2/28/14.
+ */
+public class TestFileReaderProvider {
+
+
+    @Test
+    public void testFileReaderProviderFileName() {
+        String fileName = "/TestFile.txt";
+        FileReaderProvider provider = new FileReaderProvider(fileName, new StringToDocumentConverter());
+        provider.prepare(null);
+        StreamsResultSet resultSet = provider.readCurrent();
+        int count = 0;
+        for(StreamsDatum datum : resultSet) {
+            ++count;
+        }
+        assertEquals(4, count);
+        provider.cleanUp();
+    }
+
+
+
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/src/test/resources/TestFile.txt
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/src/test/resources/TestFile.txt b/streams-contrib/streams-components-test/src/test/resources/TestFile.txt
new file mode 100644
index 0000000..9384ee5
--- /dev/null
+++ b/streams-contrib/streams-components-test/src/test/resources/TestFile.txt
@@ -0,0 +1,4 @@
+Document1
+Document2
+Document3
+Document4
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
new file mode 100644
index 0000000..0fcef34
--- /dev/null
+++ b/streams-contrib/streams-components-test/streams-components-test.iml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="streams-core (3)" />
+    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
+    <orderEntry type="module" module-name="streams-util (3)" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
+    <orderEntry type="module" module-name="streams-pojo (3)" />
+    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
+    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
+    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
+    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
+    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
+  </component>
+  <component name="POM File Configuration" pomFile="" />
+</module>
+

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
index b86beb9..b76cc0b 100644
--- a/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
+++ b/streams-contrib/streams-persist-console/src/main/java/org/apache/streams/console/ConsolePersistWriter.java
@@ -44,6 +44,7 @@ public class ConsolePersistWriter implements StreamsPersistWriter {
             String text = mapper.writeValueAsString(entry);
 
             System.out.println(text);
+//            LOGGER.info(text);
 
         } catch (JsonProcessingException e) {
             LOGGER.warn("save: {}", e);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/pom.xml b/streams-contrib/streams-persist-elasticsearch/pom.xml
index b487e58..a7a4979 100644
--- a/streams-contrib/streams-persist-elasticsearch/pom.xml
+++ b/streams-contrib/streams-persist-elasticsearch/pom.xml
@@ -74,6 +74,7 @@
                     <generateBuilders>true</generateBuilders>
                     <sourcePaths>
                         <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json</sourcePath>
+                        <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchReaderConfiguration.json</sourcePath>
                         <sourcePath>src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchWriterConfiguration.json</sourcePath>
                     </sourcePaths>
                     <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
index 2129eca..8ffcbd5 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
@@ -3,7 +3,9 @@ package org.apache.streams.elasticsearch;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.base.Objects;
+import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Queues;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
@@ -37,17 +39,19 @@ import java.util.concurrent.*;
 
 public class ElasticsearchPersistReader implements StreamsPersistReader, Iterable<SearchHit>, Iterator<SearchHit>
 {
+    public final static String STREAMS_ID = "ElasticsearchPersistReader";
+
     private final static Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistReader.class);
 
-    protected volatile Queue<StreamsDatum> persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+    protected volatile Queue<StreamsDatum> persistQueue;
 
     private static final int SCROLL_POSITION_NOT_INITIALIZED = -3;
     private static final Integer DEFAULT_BATCH_SIZE = 500;
     private static final String DEFAULT_SCROLL_TIMEOUT = "5m";
 
     private ElasticsearchClientManager elasticsearchClientManager;
-    private String[] indexes;
-    private String[] types;
+    private List<String> indexes = Lists.newArrayList();
+    private List<String> types = Lists.newArrayList();
     private String[] withfields;
     private String[] withoutfields;
     private DateTime startDate;
@@ -62,6 +66,8 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
 
     private ElasticsearchConfiguration config;
 
+    private ExecutorService executor;
+
     private QueryBuilder queryBuilder;
     private FilterBuilder filterBuilder;
 
@@ -97,42 +103,29 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
         Config config = StreamsConfigurator.config.getConfig("elasticsearch");
         this.config = ElasticsearchConfigurator.detectConfiguration(config);
     }
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-    }
-
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration, String[] indexes) {
+    public ElasticsearchPersistReader(ElasticsearchReaderConfiguration elasticsearchConfiguration) {
         this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-        this.indexes = indexes;
-    }
-
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration, String[] indexes, String[] types) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-        this.indexes = indexes;
-        this.types = types;
-    }
-
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration, String[] indexes, String[] types, String[] withfields, String[] withoutfields) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-        this.indexes = indexes;
-        this.types = types;
-        this.withfields = withfields;
-        this.withoutfields = withoutfields;
+        indexes.add(elasticsearchConfiguration.getIndex());
+        types.add(elasticsearchConfiguration.getType());
     }
 
     @Override
     public void startStream() {
-
+        LOGGER.debug("startStream");
+        executor = Executors.newSingleThreadExecutor();
+        executor.submit(new ElasticsearchPersistReaderTask(this));
     }
 
     @Override
     public void prepare(Object o) {
 
+        persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+
         // If we haven't already set up the search, then set up the search.
         if(search == null)
         {
             search = elasticsearchClientManager.getClient()
-                    .prepareSearch(indexes)
+                    .prepareSearch(indexes.toArray(new String[0]))
                     .setSearchType(SearchType.SCAN)
                     .setSize(Objects.firstNonNull(batchSize, DEFAULT_BATCH_SIZE).intValue())
                     .setScroll(Objects.firstNonNull(scrollTimeout, DEFAULT_SCROLL_TIMEOUT));
@@ -141,8 +134,8 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
                 search.setQuery(this.queryBuilder);
 
             // If the types are null, then don't specify a type
-            if(this.types != null && this.types.length > 0)
-                search = search.setTypes(types);
+            if(this.types != null && this.types.size() > 0)
+                search = search.setTypes(types.toArray(new String[0]));
 
             Integer clauses = 0;
             if(this.withfields != null || this.withoutfields != null) {
@@ -295,26 +288,17 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
     @Override
     public StreamsResultSet readCurrent() {
 
-        Queue<StreamsDatum> currentQueue = new LinkedBlockingQueue<StreamsDatum>();
-        while( hasNext()) {
-            SearchHit hit = next();
-            ObjectNode jsonObject = null;
-            try {
-                jsonObject = mapper.readValue(hit.getSourceAsString(), ObjectNode.class);
-            } catch (IOException e) {
-                e.printStackTrace();
-                break;
-            }
-            StreamsDatum item = new StreamsDatum(jsonObject);
-            item.getMetadata().put("id", hit.getId());
-            item.getMetadata().put("index", hit.getIndex());
-            item.getMetadata().put("type", hit.getType());
-            currentQueue.add(item);
-        }
+        LOGGER.debug("readCurrent: {}", persistQueue.size());
+
+        Collection<StreamsDatum> currentIterator = Lists.newArrayList();
+        Iterators.addAll(currentIterator, persistQueue.iterator());
+
+        StreamsResultSet current = new StreamsResultSet(Queues.newConcurrentLinkedQueue(currentIterator));
 
-        cleanUp();
+        persistQueue.clear();
+
+        return current;
 
-        return (StreamsResultSet)currentQueue;
     }
 
     public StreamsResultSet readAll() {
@@ -353,6 +337,7 @@ public class ElasticsearchPersistReader implements StreamsPersistReader, Iterabl
     public void cleanUp() {
         LOGGER.info("PersistReader done");
     }
+
 }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
index 3198951..d3faa02 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
@@ -25,27 +25,25 @@ public class ElasticsearchPersistReaderTask implements Runnable {
     @Override
     public void run() {
 
-        while(true) {
-            StreamsDatum item;
-            while( reader.hasNext()) {
-                SearchHit hit = reader.next();
-                ObjectNode jsonObject = null;
-                try {
-                    jsonObject = mapper.readValue(hit.getSourceAsString(), ObjectNode.class);
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    break;
-                }
-                item = new StreamsDatum(jsonObject);
-                item.getMetadata().put("id", hit.getId());
-                item.getMetadata().put("index", hit.getIndex());
-                item.getMetadata().put("type", hit.getType());
-                reader.persistQueue.offer(item);
-            }
+        StreamsDatum item;
+        while( reader.hasNext()) {
+            SearchHit hit = reader.next();
+            ObjectNode jsonObject = null;
             try {
-                Thread.sleep(new Random().nextInt(100));
-            } catch (InterruptedException e) {}
+                jsonObject = mapper.readValue(hit.getSourceAsString(), ObjectNode.class);
+            } catch (IOException e) {
+                e.printStackTrace();
+                break;
+            }
+            item = new StreamsDatum(jsonObject);
+            item.getMetadata().put("id", hit.getId());
+            item.getMetadata().put("index", hit.getIndex());
+            item.getMetadata().put("type", hit.getType());
+            reader.persistQueue.offer(item);
         }
+        try {
+            Thread.sleep(new Random().nextInt(100));
+        } catch (InterruptedException e) {}
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
index e4302dd..c4fd9f0 100644
--- a/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
@@ -10,6 +10,7 @@ import org.apache.streams.config.StreamsConfigurator;
 import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.core.StreamsPersistWriter;
 import org.apache.streams.core.tasks.StreamsPersistWriterTask;
+import org.apache.streams.pojo.json.Activity;
 import org.elasticsearch.action.ActionListener;
 import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
 import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
@@ -123,13 +124,14 @@ public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushab
 
         String json;
         try {
-
+            String id = streamsDatum.getId();
             if( streamsDatum.getDocument() instanceof String )
                 json = streamsDatum.getDocument().toString();
-            else
+            else {
                 json = mapper.writeValueAsString(streamsDatum.getDocument());
+            }
 
-            add(config.getIndex(), config.getType(), null, json);
+            add(config.getIndex(), config.getType(), id, json);
 
         } catch (JsonProcessingException e) {
             LOGGER.warn("{} {}", e.getLocation(), e.getMessage());

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchReaderConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchReaderConfiguration.json b/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchReaderConfiguration.json
new file mode 100644
index 0000000..698da1a
--- /dev/null
+++ b/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchReaderConfiguration.json
@@ -0,0 +1,18 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "org.apache.streams.elasticsearch.ElasticsearchReaderConfiguration",
+    "extends": {"$ref":"ElasticsearchConfiguration.json"},
+    "javaInterfaces": ["java.io.Serializable"],
+    "properties": {
+        "index": {
+            "type": "string",
+            "description": "Index to write to"
+        },
+        "type": {
+            "type": "string",
+            "description": "Type to write as"
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/pom.xml b/streams-contrib/streams-persist-hdfs/pom.xml
index 1031205..40e73a5 100644
--- a/streams-contrib/streams-persist-hdfs/pom.xml
+++ b/streams-contrib/streams-persist-hdfs/pom.xml
@@ -101,4 +101,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
\ No newline at end of file
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsReaderConfiguration.json
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsReaderConfiguration.json b/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsReaderConfiguration.json
new file mode 100644
index 0000000..2ae8367
--- /dev/null
+++ b/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsReaderConfiguration.json
@@ -0,0 +1,14 @@
+{
+    "type": "object",
+    "$schema": "http://json-schema.org/draft-03/schema",
+    "id": "#",
+    "javaType" : "org.apache.streams.hdfs.HdfsReaderConfiguration",
+    "extends": {"$ref":"HdfsConfiguration.json"},
+    "javaInterfaces": ["java.io.Serializable"],
+    "properties": {
+        "readerPath": {
+            "type": "string",
+            "description": "Path below root path"
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java b/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
index f88275b..7e7e553 100644
--- a/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
+++ b/streams-core/src/main/java/org/apache/streams/core/StreamsDatum.java
@@ -18,6 +18,7 @@
 
 package org.apache.streams.core;
 
+import org.apache.streams.pojo.json.Activity;
 import org.joda.time.DateTime;
 
 import java.io.Serializable;
@@ -31,26 +32,36 @@ import java.util.Map;
 public class StreamsDatum implements Serializable {
 
     public StreamsDatum(Object document) {
-        this.document = document;
-        this.metadata = new HashMap<String, Object>();
+        this(document, null, null, null);
     }
 
-    public StreamsDatum(Object document, BigInteger sequenceid) {
+    public StreamsDatum(Object document, String id) {
+        this(document, id, null, null);
+    }
 
-        this.document = document;
-        this.sequenceid = sequenceid;
-        this.metadata = new HashMap<String, Object>();
+    public StreamsDatum(Object document, BigInteger sequenceid) {
+        this(document, null, null, sequenceid);
     }
 
     public StreamsDatum(Object document, DateTime timestamp) {
-
-        this.document = document;
-        this.timestamp = timestamp;
-        this.metadata = new HashMap<String, Object>();
+        this(document, null, timestamp, null);
     }
 
     public StreamsDatum(Object document, DateTime timestamp, BigInteger sequenceid) {
+        this(document, null, timestamp, sequenceid);
+    }
+
+    public StreamsDatum(Object document, String id, DateTime timestamp) {
+        this(document, id, timestamp, null);
+    }
+
+    public StreamsDatum(Object document, String id, BigInteger sequenceid) {
+        this(document, id, null, sequenceid);
+    }
+
+    public StreamsDatum(Object document, String id, DateTime timestamp, BigInteger sequenceid) {
         this.document = document;
+        this.id = id;
         this.timestamp = timestamp;
         this.sequenceid = sequenceid;
         this.metadata = new HashMap<String, Object>();
@@ -64,6 +75,8 @@ public class StreamsDatum implements Serializable {
 
     public Object document;
 
+    private String id;
+
     public DateTime getTimestamp() {
         return timestamp;
     }
@@ -96,6 +109,14 @@ public class StreamsDatum implements Serializable {
         this.document = document;
     }
 
+
+    public String getId(){
+        if(this.id == null && this.document instanceof Activity) {
+            return ((Activity)this.document).getId();
+        }
+        return id;
+    }
+
     @Override
     public boolean equals(Object o) {
         if(o instanceof StreamsDatum) {
@@ -112,4 +133,9 @@ public class StreamsDatum implements Serializable {
             return false;
         }
     }
+
+    @Override
+    public String toString() {
+        return "Document="+this.document+"\ttimestamp="+this.timestamp+"\tsequence="+this.sequenceid;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
index 0598dfb..7744be7 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -147,12 +147,12 @@ public class LocalStreamBuilder implements StreamBuilder{
             }
 
             while(isRunning) {
-                //isRunning = false;
+                isRunning = false;
                 for(StreamsProviderTask task : provTasks.values()) {
                     isRunning = isRunning || task.isRunning();
                 }
                 if(isRunning) {
-                    Thread.sleep(10000);
+                    Thread.sleep(100000);
                 }
             }
             this.executor.shutdown();

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
index 354c70b..19ef977 100644
--- a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
@@ -112,10 +112,8 @@ public abstract class BaseStreamsTask implements StreamsTask {
      */
     protected StreamsDatum cloneStreamsDatum(StreamsDatum datum) {
         try {
-            if(datum.document instanceof Serializable) {
-                return (StreamsDatum) SerializationUtil.cloneBySerialization(datum);
-            }
-            else if(datum.document instanceof ObjectNode) {
+
+            if(datum.document instanceof ObjectNode) {
                 return new StreamsDatum(((ObjectNode) datum.document).deepCopy(), datum.timestamp, datum.sequenceid);
             }
             else if(datum.document instanceof Activity) {
@@ -124,10 +122,14 @@ public abstract class BaseStreamsTask implements StreamsTask {
                                         datum.timestamp,
                                         datum.sequenceid);
             }
-            else if(this.mapper.canSerialize(datum.document.getClass())){
-                return new StreamsDatum(this.mapper.readValue(this.mapper.writeValueAsString(datum.document), datum.document.getClass()),
-                                        datum.timestamp,
-                                        datum.sequenceid);
+//            else if(this.mapper.canSerialize(datum.document.getClass())){
+//                return new StreamsDatum(this.mapper.readValue(this.mapper.writeValueAsString(datum.document), datum.document.getClass()),
+//                                        datum.timestamp,
+//                                        datum.sequenceid);
+//            }
+
+            else if(datum.document instanceof Serializable) {
+                return (StreamsDatum) SerializationUtil.cloneBySerialization(datum);
             }
         } catch (Exception e) {
             LOGGER.error("Exception while trying to clone/copy StreamsDatum : {}", e);

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
index 6121d83..a6cfbb9 100644
--- a/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/StreamsTask.java
@@ -12,7 +12,7 @@ import java.util.Queue;
  */
 public interface StreamsTask extends Runnable{
 
-    public static final long DEFAULT_SLEEP_TIME_MS = 500;
+    public static final long DEFAULT_SLEEP_TIME_MS = 5000;
 
     /**
      * Informs the task to stop. Tasks may or may not try to empty its inbound queue before halting.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java b/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
new file mode 100644
index 0000000..cc10938
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/builders/LocalStreamBuilderTest.java
@@ -0,0 +1,161 @@
+package org.apache.streams.core.builders;
+
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+import org.apache.streams.core.test.processors.PassthroughDatumCounterProcessor;
+import org.apache.streams.core.test.providers.NumericMessageProvider;
+import org.apache.streams.core.test.writer.DatumCounterWriter;
+import org.apache.streams.core.test.writer.SystemOutWriter;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.*;
+import java.util.HashSet;
+import java.util.Scanner;
+
+/**
+ * Basic Tests for the LocalStreamBuilder.
+ *
+ * Test are performed by redirecting system out and counting the number of lines that the SystemOutWriter prints
+ * to System.out.  The SystemOutWriter also prints one line when cleanUp() is called, so this is why it tests for
+ * the numDatums +1.
+ *
+ *
+ */
+public class LocalStreamBuilderTest {
+
+    ByteArrayOutputStream out;
+
+    @Before
+    public void setSystemOut() {
+        out = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(out));
+    }
+
+    @Test
+    public void testStreamIdValidations() {
+        StreamBuilder builder = new LocalStreamBuilder();
+        builder.newReadCurrentStream("id", new NumericMessageProvider(1));
+        Exception exp = null;
+        try {
+            builder.newReadCurrentStream("id", new NumericMessageProvider(1));
+        } catch (RuntimeException e) {
+            exp = e;
+        }
+        assertNotNull(exp);
+        exp = null;
+        builder.addStreamsProcessor("1", new PassthroughDatumCounterProcessor(), 1, "id");
+        try {
+            builder.addStreamsProcessor("2", new PassthroughDatumCounterProcessor(), 1, "id", "id2");
+        } catch (RuntimeException e) {
+            exp = e;
+        }
+        assertNotNull(exp);
+    }
+
+    @Test
+    public void testBasicLinearStream1()  {
+        int numDatums = 1;
+        StreamBuilder builder = new LocalStreamBuilder();
+        PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
+        SystemOutWriter writer = new SystemOutWriter();
+        builder.newReadCurrentStream("sp1", new NumericMessageProvider(numDatums))
+                .addStreamsProcessor("proc1", processor, 1, "sp1")
+                .addStreamsPersistWriter("writer1", writer, 1, "proc1");
+        builder.start();
+        int count = 0;
+        Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray()));
+        while(scanner.hasNextLine()) {
+            ++count;
+            scanner.nextLine();
+        }
+        assertEquals(numDatums+1, count);
+    }
+
+    @Test
+    public void testBasicLinearStream2()  {
+        int numDatums = 1000;
+        StreamBuilder builder = new LocalStreamBuilder();
+        PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
+        SystemOutWriter writer = new SystemOutWriter();
+        builder.newReadCurrentStream("sp1", new NumericMessageProvider(numDatums))
+                .addStreamsProcessor("proc1", processor, 1, "sp1")
+                .addStreamsPersistWriter("writer1", writer, 1, "proc1");
+        builder.start();
+        int count = 0;
+        Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray()));
+        while(scanner.hasNextLine()) {
+            ++count;
+            scanner.nextLine();
+        }
+        assertEquals(numDatums+1, count);
+    }
+
+    @Test
+    public void testParallelLinearStream1() {
+        int numDatums = 10000;
+        int parallelHint = 40;
+        PassthroughDatumCounterProcessor.sawData = new HashSet<Integer>();
+        PassthroughDatumCounterProcessor.claimedNumber = new HashSet<Integer>();
+        StreamBuilder builder = new LocalStreamBuilder();
+        PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
+        SystemOutWriter writer = new SystemOutWriter();
+        builder.newReadCurrentStream("sp1", new NumericMessageProvider(numDatums))
+                .addStreamsProcessor("proc1", processor, parallelHint, "sp1")
+                .addStreamsPersistWriter("writer1", writer, 1, "proc1");
+        builder.start();
+        int count = 0;
+        Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray()));
+        while(scanner.hasNextLine()) {
+            ++count;
+            scanner.nextLine();
+        }
+        assertEquals(numDatums+1, count); //+1 is to make sure cleanup is called on the writer
+        assertEquals(parallelHint, PassthroughDatumCounterProcessor.claimedNumber.size()); //test 40 were initialized
+        assertTrue(PassthroughDatumCounterProcessor.sawData.size() > 1 && PassthroughDatumCounterProcessor.sawData.size() <= parallelHint); //test more than one processor got data
+    }
+
+    @Test
+    public void testBasicMergeStream() {
+        int numDatums1 = 1;
+        int numDatums2 = 1000;
+        PassthroughDatumCounterProcessor processor1 = new PassthroughDatumCounterProcessor();
+        PassthroughDatumCounterProcessor processor2 = new PassthroughDatumCounterProcessor();
+        SystemOutWriter writer = new SystemOutWriter();
+        StreamBuilder builder = new LocalStreamBuilder();
+        builder.newReadCurrentStream("sp1", new NumericMessageProvider(numDatums1))
+                .newReadCurrentStream("sp2", new NumericMessageProvider(numDatums2))
+                .addStreamsProcessor("proc1", processor1, 1, "sp1")
+                .addStreamsProcessor("proc2", processor2, 1, "sp2")
+                .addStreamsPersistWriter("writer1", writer, 1, "proc1", "proc2");
+        builder.start();
+        int count = 0;
+        Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray()));
+        while(scanner.hasNextLine()) {
+            ++count;
+            scanner.nextLine();
+        }
+        assertEquals(numDatums1+numDatums2+1, count);
+    }
+
+    @Test
+    public void testBasicBranch() {
+        int numDatums = 1000;
+        StreamBuilder builder = new LocalStreamBuilder();
+        builder.newReadCurrentStream("prov1", new NumericMessageProvider(numDatums))
+                .addStreamsProcessor("proc1", new PassthroughDatumCounterProcessor(), 1, "prov1")
+                .addStreamsProcessor("proc2", new PassthroughDatumCounterProcessor(), 1, "prov1")
+                .addStreamsPersistWriter("w1", new SystemOutWriter(), 1, "proc1", "proc2");
+        builder.start();
+        int count = 0;
+        Scanner scanner = new Scanner(new ByteArrayInputStream(out.toByteArray()));
+        while(scanner.hasNextLine()) {
+            ++count;
+            scanner.nextLine();
+        }
+        assertEquals((numDatums*2)+1, count);
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/builders/ToyLocalBuilderExample.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/builders/ToyLocalBuilderExample.java b/streams-core/src/test/java/org/apache/streams/core/builders/ToyLocalBuilderExample.java
new file mode 100644
index 0000000..be92c89
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/builders/ToyLocalBuilderExample.java
@@ -0,0 +1,28 @@
+package org.apache.streams.core.builders;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.test.processors.DoNothingProcessor;
+import org.apache.streams.core.test.providers.NumericMessageProvider;
+import org.apache.streams.core.test.writer.DoNothingWriter;
+import org.apache.streams.core.test.writer.SystemOutWriter;
+
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ * Created by rebanks on 2/20/14.
+ */
+public class ToyLocalBuilderExample {
+
+    /**
+     * A simple example of how to run a stream in local mode.
+     * @param args
+     */
+    public static void main(String[] args) {
+        StreamBuilder builder = new LocalStreamBuilder(new LinkedBlockingQueue<StreamsDatum>());
+        builder.newReadCurrentStream("prov", new NumericMessageProvider(1000000))
+                .addStreamsProcessor("proc", new DoNothingProcessor(), 100, "prov")
+                .addStreamsPersistWriter("writer", new DoNothingWriter(), 3, "proc");
+        builder.start();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/tasks/BasicTasksTest.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/tasks/BasicTasksTest.java b/streams-core/src/test/java/org/apache/streams/core/tasks/BasicTasksTest.java
new file mode 100644
index 0000000..ef81186
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/tasks/BasicTasksTest.java
@@ -0,0 +1,285 @@
+package org.apache.streams.core.tasks;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.test.processors.PassthroughDatumCounterProcessor;
+import org.apache.streams.core.test.providers.NumericMessageProvider;
+import static org.junit.Assert.*;
+
+import org.apache.streams.core.test.writer.DatumCounterWriter;
+import org.junit.Test;
+
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Created by rebanks on 2/18/14.
+ */
+public class BasicTasksTest {
+
+
+
+    @Test
+    public void testProviderTask() {
+        int numMessages = 100;
+        NumericMessageProvider provider = new NumericMessageProvider(numMessages);
+        StreamsProviderTask task = new StreamsProviderTask(provider, false);
+        Queue<StreamsDatum> outQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        task.addOutputQueue(outQueue);
+        Queue<StreamsDatum> inQueue = createInputQueue(numMessages);
+        Exception exp = null;
+        try {
+            task.addInputQueue(inQueue);
+        } catch (UnsupportedOperationException uoe) {
+            exp = uoe;
+        }
+        assertNotNull(exp);
+        ExecutorService service = Executors.newFixedThreadPool(1);
+        service.submit(task);
+        int attempts = 0;
+        while(outQueue.size() != numMessages) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                //Ignore
+            }
+            ++attempts;
+            if(attempts == 10) {
+                fail("Provider task failed to output "+numMessages+" in a timely fashion.");
+            }
+        }
+        service.shutdown();
+        try {
+            if(!service.awaitTermination(5, TimeUnit.SECONDS)){
+                service.shutdownNow();
+                fail("Service did not terminate.");
+            }
+            assertTrue("Task should have completed running in aloted time.", service.isTerminated());
+        } catch (InterruptedException e) {
+            fail("Test Interupted.");
+        };
+    }
+
+    @Test
+    public void testProcessorTask() {
+        int numMessages = 100;
+        PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
+        StreamsProcessorTask task = new StreamsProcessorTask(processor);
+        Queue<StreamsDatum> outQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        Queue<StreamsDatum> inQueue = createInputQueue(numMessages);
+        task.addOutputQueue(outQueue);
+        task.addInputQueue(inQueue);
+        assertEquals(numMessages, task.getInputQueues().get(0).size());
+        ExecutorService service = Executors.newFixedThreadPool(1);
+        service.submit(task);
+        int attempts = 0;
+        while(inQueue.size() != 0 && outQueue.size() != numMessages) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                //Ignore
+            }
+            ++attempts;
+            if(attempts == 10) {
+                fail("Processor task failed to output "+numMessages+" in a timely fashion.");
+            }
+        }
+        task.stopTask();
+        assertEquals(numMessages, processor.getMessageCount());
+        service.shutdown();
+        try {
+            if(!service.awaitTermination(5, TimeUnit.SECONDS)){
+                service.shutdownNow();
+                fail("Service did not terminate.");
+            }
+            assertTrue("Task should have completed running in aloted time.", service.isTerminated());
+        } catch (InterruptedException e) {
+            fail("Test Interupted.");
+        }
+    }
+
+    @Test
+    public void testWriterTask() {
+        int numMessages = 100;
+        DatumCounterWriter writer = new DatumCounterWriter();
+        StreamsPersistWriterTask task = new StreamsPersistWriterTask(writer);
+        Queue<StreamsDatum> outQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        Queue<StreamsDatum> inQueue = createInputQueue(numMessages);
+
+        Exception exp = null;
+        try {
+            task.addOutputQueue(outQueue);
+        } catch (UnsupportedOperationException uoe) {
+            exp = uoe;
+        }
+        assertNotNull(exp);
+        task.addInputQueue(inQueue);
+        assertEquals(numMessages, task.getInputQueues().get(0).size());
+        ExecutorService service = Executors.newFixedThreadPool(1);
+        service.submit(task);
+        int attempts = 0;
+        while(inQueue.size() != 0 ) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                //Ignore
+            }
+            ++attempts;
+            if(attempts == 10) {
+                fail("Processor task failed to output "+numMessages+" in a timely fashion.");
+            }
+        }
+        task.stopTask();
+        assertEquals(numMessages, writer.getDatumsCounted());
+        service.shutdown();
+        try {
+            if(!service.awaitTermination(5, TimeUnit.SECONDS)){
+                service.shutdownNow();
+                fail("Service did not terminate.");
+            }
+            assertTrue("Task should have completed running in aloted time.", service.isTerminated());
+        } catch (InterruptedException e) {
+            fail("Test Interupted.");
+        }
+    }
+
+    @Test
+    public void testMergeTask() {
+        int numMessages = 100;
+        int incoming = 5;
+        StreamsMergeTask task = new StreamsMergeTask();
+        Queue<StreamsDatum> outQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        task.addOutputQueue(outQueue);
+        for(int i=0; i < incoming; ++i) {
+            task.addInputQueue(createInputQueue(numMessages));
+        }
+        ExecutorService service = Executors.newFixedThreadPool(1);
+        service.submit(task);
+        int attempts = 0;
+        while(outQueue.size() != incoming * numMessages ) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                //Ignore
+            }
+            ++attempts;
+            if(attempts == 10) {
+                assertEquals("Processor task failed to output " + (numMessages * incoming) + " in a timely fashion.", (numMessages * incoming), outQueue.size());
+            }
+        }
+        task.stopTask();
+        service.shutdown();
+        try {
+            if(!service.awaitTermination(5, TimeUnit.SECONDS)){
+                service.shutdownNow();
+                fail("Service did not terminate.");
+            }
+            assertTrue("Task should have completed running in aloted time.", service.isTerminated());
+        } catch (InterruptedException e) {
+            fail("Test Interupted.");
+        }
+    }
+
+    @Test
+    public void testBranching() {
+        int numMessages = 100;
+        PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
+        StreamsProcessorTask task = new StreamsProcessorTask(processor);
+        Queue<StreamsDatum> outQueue1 = new ConcurrentLinkedQueue<StreamsDatum>();
+        Queue<StreamsDatum> outQueue2 = new ConcurrentLinkedQueue<StreamsDatum>();
+        Queue<StreamsDatum> inQueue = createInputQueue(numMessages);
+        task.addOutputQueue(outQueue1);
+        task.addOutputQueue(outQueue2);
+        task.addInputQueue(inQueue);
+        assertEquals(numMessages, task.getInputQueues().get(0).size());
+        ExecutorService service = Executors.newFixedThreadPool(1);
+        service.submit(task);
+        int attempts = 0;
+        while(inQueue.size() != 0 ) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                //Ignore
+            }
+            ++attempts;
+            if(attempts == 10) {
+                assertEquals("Processor task failed to output "+(numMessages)+" in a timely fashion.", 0, inQueue.size());
+            }
+        }
+        task.stopTask();
+
+        service.shutdown();
+        try {
+            if(!service.awaitTermination(5, TimeUnit.SECONDS)){
+                service.shutdownNow();
+                fail("Service did not terminate.");
+            }
+            assertTrue("Task should have completed running in aloted time.", service.isTerminated());
+        } catch (InterruptedException e) {
+            fail("Test Interupted.");
+        }
+        assertEquals(numMessages, processor.getMessageCount());
+        assertEquals(numMessages, outQueue1.size());
+        assertEquals(numMessages, outQueue2.size());
+    }
+
+    @Test
+    public void testBranchingSerialization() {
+        int numMessages = 1;
+        PassthroughDatumCounterProcessor processor = new PassthroughDatumCounterProcessor();
+        StreamsProcessorTask task = new StreamsProcessorTask(processor);
+        Queue<StreamsDatum> outQueue1 = new ConcurrentLinkedQueue<StreamsDatum>();
+        Queue<StreamsDatum> outQueue2 = new ConcurrentLinkedQueue<StreamsDatum>();
+        Queue<StreamsDatum> inQueue = createInputQueue(numMessages);
+        task.addOutputQueue(outQueue1);
+        task.addOutputQueue(outQueue2);
+        task.addInputQueue(inQueue);
+        ExecutorService service = Executors.newFixedThreadPool(1);
+        service.submit(task);
+        int attempts = 0;
+        while(inQueue.size() != 0 ) {
+            try {
+                Thread.sleep(500);
+            } catch (InterruptedException e) {
+                //Ignore
+            }
+            ++attempts;
+            if(attempts == 10) {
+                assertEquals("Processor task failed to output "+(numMessages)+" in a timely fashion.", 0, inQueue.size());
+            }
+        }
+        task.stopTask();
+
+        service.shutdown();
+        try {
+            if(!service.awaitTermination(5, TimeUnit.SECONDS)){
+                service.shutdownNow();
+                fail("Service did not terminate.");
+            }
+            assertTrue("Task should have completed running in aloted time.", service.isTerminated());
+        } catch (InterruptedException e) {
+            fail("Test Interupted.");
+        }
+        assertEquals(numMessages, processor.getMessageCount());
+        assertEquals(numMessages, outQueue1.size());
+        assertEquals(numMessages, outQueue2.size());
+        StreamsDatum datum1 = outQueue1.poll();
+        StreamsDatum datum2 = outQueue2.poll();
+        assertNotNull(datum1);
+        assertEquals(datum1, datum2);
+        datum1.setDocument("a");
+        assertNotEquals(datum1, datum2);
+    }
+
+    private Queue<StreamsDatum> createInputQueue(int numDatums) {
+        Queue<StreamsDatum> queue = new ConcurrentLinkedQueue<StreamsDatum>();
+        for(int i=0; i < numDatums; ++i) {
+            queue.add(new StreamsDatum(i));
+        }
+        return queue;
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/test/processors/DoNothingProcessor.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/test/processors/DoNothingProcessor.java b/streams-core/src/test/java/org/apache/streams/core/test/processors/DoNothingProcessor.java
new file mode 100644
index 0000000..25c717b
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/test/processors/DoNothingProcessor.java
@@ -0,0 +1,32 @@
+package org.apache.streams.core.test.processors;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Created by rebanks on 2/20/14.
+ */
+public class DoNothingProcessor implements StreamsProcessor {
+
+    List<StreamsDatum> result;
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+        this.result = new LinkedList<StreamsDatum>();
+        result.add(entry);
+        return result;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+        System.out.println("Processor clean up!");
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/test/processors/PassthroughDatumCounterProcessor.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/test/processors/PassthroughDatumCounterProcessor.java b/streams-core/src/test/java/org/apache/streams/core/test/processors/PassthroughDatumCounterProcessor.java
new file mode 100644
index 0000000..1010370
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/test/processors/PassthroughDatumCounterProcessor.java
@@ -0,0 +1,49 @@
+package org.apache.streams.core.test.processors;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProcessor;
+
+import java.util.*;
+
+/**
+ * Created by rebanks on 2/18/14.
+ */
+public class PassthroughDatumCounterProcessor implements StreamsProcessor {
+
+    public static Set<Integer> claimedNumber = new HashSet<Integer>();
+    public static final Random rand = new Random();
+    public static Set<Integer> sawData = new HashSet<Integer>();
+
+    private int count = 0;
+    private int id;
+
+    @Override
+    public List<StreamsDatum> process(StreamsDatum entry) {
+        ++this.count;
+        List<StreamsDatum> result = new LinkedList<StreamsDatum>();
+        result.add(entry);
+        synchronized (sawData) {
+            sawData.add(this.id);
+        }
+        return result;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        synchronized (claimedNumber) {
+            this.id = rand.nextInt();
+            while(!claimedNumber.add(this.id)) {
+                this.id = rand.nextInt();
+            }
+        }
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+
+    public int getMessageCount() {
+        return this.count;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/test/providers/NumericMessageProvider.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/test/providers/NumericMessageProvider.java b/streams-core/src/test/java/org/apache/streams/core/test/providers/NumericMessageProvider.java
new file mode 100644
index 0000000..01b9a25
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/test/providers/NumericMessageProvider.java
@@ -0,0 +1,104 @@
+package org.apache.streams.core.test.providers;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+
+import java.math.BigInteger;
+import java.util.Iterator;
+import java.util.Queue;
+import java.util.Scanner;
+import java.util.concurrent.ConcurrentLinkedQueue;
+
+/**
+ * Test StreamsProvider that sends out StreamsDatums numbered from 0 to numMessages.
+ */
+public class NumericMessageProvider implements StreamsProvider {
+
+    private int numMessages;
+
+    public NumericMessageProvider(int numMessages) {
+        this.numMessages = numMessages;
+    }
+
+    @Override
+    public void startStream() {
+        // no op
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+        return new ResultSet();
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return new ResultSet();
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return new ResultSet();
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+
+
+    private class ResultSet extends StreamsResultSet {
+
+        private ResultSet() {
+            super(new ConcurrentLinkedQueue<StreamsDatum>());
+        }
+
+//        @Override
+//        public long getStartTime() {
+//            return 0;
+//        }
+//
+//        @Override
+//        public long getEndTime() {
+//            return 0;
+//        }
+//
+//        @Override
+//        public String getSourceId() {
+//            return null;
+//        }
+//
+//        @Override
+//        public BigInteger getMaxSequence() {
+//            return null;
+//        }
+
+        @Override
+        public Iterator<StreamsDatum> iterator() {
+            return new Iterator<StreamsDatum>() {
+                private int i = 0;
+
+                @Override
+                public boolean hasNext() {
+                    return i < numMessages;
+                }
+
+                @Override
+                public StreamsDatum next() {
+                    return new StreamsDatum(i++);
+                }
+
+                @Override
+                public void remove() {
+
+                }
+            };
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/test/writer/DatumCounterWriter.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/test/writer/DatumCounterWriter.java b/streams-core/src/test/java/org/apache/streams/core/test/writer/DatumCounterWriter.java
new file mode 100644
index 0000000..d44d24c
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/test/writer/DatumCounterWriter.java
@@ -0,0 +1,31 @@
+package org.apache.streams.core.test.writer;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+
+/**
+ * Created by rebanks on 2/18/14.
+ */
+public class DatumCounterWriter implements StreamsPersistWriter{
+
+    private int counter = 0;
+
+    @Override
+    public void write(StreamsDatum entry) {
+        ++this.counter;
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+        System.out.println("clean up called");
+    }
+
+    public int getDatumsCounted() {
+        return this.counter;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/test/writer/DoNothingWriter.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/test/writer/DoNothingWriter.java b/streams-core/src/test/java/org/apache/streams/core/test/writer/DoNothingWriter.java
new file mode 100644
index 0000000..a52347e
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/test/writer/DoNothingWriter.java
@@ -0,0 +1,24 @@
+package org.apache.streams.core.test.writer;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+
+/**
+ * Created by rebanks on 2/20/14.
+ */
+public class DoNothingWriter implements StreamsPersistWriter {
+    @Override
+    public void write(StreamsDatum entry) {
+
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+        System.out.println("Writer Clean Up!");
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-core/src/test/java/org/apache/streams/core/test/writer/SystemOutWriter.java
----------------------------------------------------------------------
diff --git a/streams-core/src/test/java/org/apache/streams/core/test/writer/SystemOutWriter.java b/streams-core/src/test/java/org/apache/streams/core/test/writer/SystemOutWriter.java
new file mode 100644
index 0000000..1856e34
--- /dev/null
+++ b/streams-core/src/test/java/org/apache/streams/core/test/writer/SystemOutWriter.java
@@ -0,0 +1,24 @@
+package org.apache.streams.core.test.writer;
+
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistWriter;
+
+/**
+ * Created by rebanks on 2/20/14.
+ */
+public class SystemOutWriter implements StreamsPersistWriter {
+    @Override
+    public void write(StreamsDatum entry) {
+        System.out.println(entry.document);
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+
+    }
+
+    @Override
+    public void cleanUp() {
+        System.out.println("Clean up called writer!");
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/ab103c96/streams-pojo/pom.xml
----------------------------------------------------------------------
diff --git a/streams-pojo/pom.xml b/streams-pojo/pom.xml
index 72f8418..082e481 100644
--- a/streams-pojo/pom.xml
+++ b/streams-pojo/pom.xml
@@ -61,11 +61,6 @@
         </dependency>
 
         <dependency>
-            <groupId>com.fasterxml</groupId>
-            <artifactId>aalto-xml</artifactId>
-        </dependency>
-
-        <dependency>
             <groupId>joda-time</groupId>
             <artifactId>joda-time</artifactId>
         </dependency>


[30/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-facebook/src/test/resources/org/apache/streams/data/Facebook.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-facebook/src/test/resources/org/apache/streams/data/Facebook.json b/trunk/streams-contrib/streams-provider-facebook/src/test/resources/org/apache/streams/data/Facebook.json
deleted file mode 100644
index 3b13611..0000000
--- a/trunk/streams-contrib/streams-provider-facebook/src/test/resources/org/apache/streams/data/Facebook.json
+++ /dev/null
@@ -1,251 +0,0 @@
-[{"note":{"from":{"name":"Lauren Kay Bruce","id":"1795508919"},"application":{"name":"Facebook for iPhone","namespace":"fbiphone","id":"6628568379"},"id":"1795508919_4602522719840","created_time":"2013-08-27T23:36:39+0000","type":"status","updated_time":"2013-08-28T00:40:42+0000","privacy":{"value":""},"message":"Can Axe please make a deodorant for her, now."}},
-{"comment":{"like_count":0,"user_likes":false,"can_remove":false,"from":{"name":"Emmanuel Fernandez Garnica","id":"100000114951549"},"id":"603849322999439_5966940","created_time":"2013-08-28T00:48:32+0000","message":"Que linea para delgada jaja"}},
-{"note":{"from":{"name":"Tevri Bagus P","id":"100002109812180"},"application":{"name":"Facebook for Every Phone","id":"139682082719810"},"id":"100002109812180_519296974817292","created_time":"2013-08-28T00:29:32+0000","type":"status","updated_time":"2013-08-28T00:29:32+0000","privacy":{"value":""},"message":"Yang ax btuh cnta mu seperti cnta ax yg besar buat kamu,\nyang ax syang mu seperti rsa syang ax buat kamu yg tulus,,\nax ga btuh yg lain selain itu doank,,"}},
-{"note":{"comments":{"data":[{"like_count":7,"user_likes":false,"can_remove":false,"from":{"name":"Patrik PipoPupy Tre?o","id":"100000141145825"},"id":"578610008862349_92416511","created_time":"2013-08-28T00:07:12+0000","message":"Uz ma zacinate jebat ...."},{"like_count":1,"user_likes":false,"can_remove":false,"from":{"name":"Duc Anh Le","id":"100004707488552"},"id":"578610008862349_92416523","created_time":"2013-08-28T00:11:33+0000","message":"J� bych toho Balea u? pustil k vod? ..."},{"like_count":0,"user_likes":false,"can_remove":false,"from":{"name":"Luko Eles","id":"100004483267342"},"id":"578610008862349_92416559","created_time":"2013-08-28T00:26:02+0000","message":"T�to spr�va je 2 dni star� :D :D"},{"like_count":0,"user_likes":false,"can_remove":false,"from":{"name":"David Doktor","id":"100000140869004"},"id":"578610008862349_92416547","created_time":"2013-08-28T00:21:38+0000","message":"Kde berete tyhle zpr�vy?"},{"like_count":0,"user_likes":false,"can_remove":fa
 lse,"from":{"name":"Ondra's Berryss�n","id":"100004401523860"},"id":"578610008862349_92416556","created_time":"2013-08-28T00:25:05+0000","message":"Kone?n? snad!! :)"}],"paging":{"cursors":{"after":"MQ==","before":"NQ=="}}},"from":{"name":"Real-madrid.cz (Official)","category":"Website","id":"165574650165889"},"id":"165574650165889_578610008862349","created_time":"2013-08-28T00:05:51+0000","type":"status","updated_time":"2013-08-28T00:28:55+0000","privacy":{"value":""},"message":"Nejnov?j?� zpr�vy (Sky Sports Italia): Bale p?ijde za 87 milion? eur, Ronaldo z?stane nejdra??� v historii. Uvid�me, uvid�me. Bylo u? t� s�gy dost.","likes":{"data":[{"name":"Luciferus Milanovi?","id":"1423483222"},{"name":"Miroslav ?mok","id":"100000821972410"},{"name":"Denis Pichler","id":"100000222507112"},{"name":"Radek Han�k","id":"1231293572"},{"name":"Lukas Filcik","id":"100003190828171"},{"name":"Radek Tr??a Truhl�?","id":"100000263879140"},{"name":"F�fa Michi","id":"1000019429
 13726"},{"name":"Radim Macoszek","id":"100000411026577"},{"name":"Jan Han�sek","id":"100000467022164"},{"name":"Luk�?ek Pa?il","id":"1304584616"},{"name":"Maros Hric","id":"1794470539"},{"name":"Stanley Uli?ka-Ronaldo Hrica","id":"1180391866"},{"name":"Tom�? Svoboda","id":"1652694973"},{"name":"Dusan Gbelec","id":"100001729069935"},{"name":"Veronica Hrozov�","id":"100000021889547"},{"name":"Jakub Gelnar","id":"100000634354601"},{"name":"Milan Luk�?","id":"100000894167126"},{"name":"Hanina Vr�nov�","id":"100003307243536"},{"name":"Tom�? M�?o Medve?","id":"100000007192762"}],"paging":{"cursors":{"after":"MTAwMDAwMDA3MTkyNzYy","before":"MTQyMzQ4MzIyMg=="}}}}},
-{"comment":{"like_count":7,"user_likes":false,"can_remove":false,"from":{"name":"Patrik PipoPupy Tre?o","id":"100000141145825"},"id":"578610008862349_92416511","created_time":"2013-08-28T00:07:12+0000","message":"Uz ma zacinate jebat ...."}},
-{"comment":{"like_count":1,"user_likes":false,"can_remove":false,"from":{"name":"Duc Anh Le","id":"100004707488552"},"id":"578610008862349_92416523","created_time":"2013-08-28T00:11:33+0000","message":"J� bych toho Balea u? pustil k vod? ..."}},
-{"comment":{"like_count":0,"user_likes":false,"can_remove":false,"from":{"name":"Luko Eles","id":"100004483267342"},"id":"578610008862349_92416559","created_time":"2013-08-28T00:26:02+0000","message":"T�to spr�va je 2 dni star� :D :D"}},
-{"comment":{"like_count":0,"user_likes":false,"can_remove":false,"from":{"name":"David Doktor","id":"100000140869004"},"id":"578610008862349_92416547","created_time":"2013-08-28T00:21:38+0000","message":"Kde berete tyhle zpr�vy?"}},
-{"comment":{"like_count":0,"user_likes":false,"can_remove":false,"from":{"name":"Ondra's Berryss�n","id":"100004401523860"},"id":"578610008862349_92416556","created_time":"2013-08-28T00:25:05+0000","message":"Kone?n? snad!! :)"}},
-{"photo":{"name":"Timeline Photos","story":"Marco Aur�lio Aur�lio shared FanatiCorinthians's photo.","from":{"name":"Marco Aur�lio Aur�lio","id":"100000629625325"},"application":{"name":"Links","id":"2309869772"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif","story_tags":{"0":[{"name":"Marco Aur�lio Aur�lio","id":"100000629625325","type":"user","length":21,"offset":0}],"29":[{"name":"FanatiCorinthians","id":"178543808920097","type":"page","length":17,"offset":29}]},"id":"100000629625325_628414700522845","created_time":"2013-08-28T00:47:52+0000","type":"photo","caption":"Recomendo: V�rus Corinthiano\r\nRecomendo: � o Time Do Povo, � o Coring�o\r\nRecomendo: CorinthiAMO","updated_time":"2013-08-28T00:47:52+0000","privacy":{"value":""},"link":"http://www.facebook.com/photo.php?fbid=468742883233520&set=a.178546862253125.39468.178543808920097&type=1","object_id":"468742883233520","message":"bic de ponta grossa , kkkkkkkkkkk","properties":[{"href
 ":"http://www.facebook.com/FanatiCorinthiansOficial?ref=stream","name":"By","text":"FanatiCorinthians"}],"picture":"http://photos-f.ak.fbcdn.net/hphotos-ak-ash3/1236687_468742883233520_1910998772_s.jpg"}},
-{"note":{"from":{"name":"Wellington Flores","id":"100004401480520"},"application":{"name":"Facebook for Android","namespace":"fbandroid","id":"350685531728"},"id":"100004401480520_222258177930897","created_time":"2013-08-28T00:47:39+0000","type":"status","updated_time":"2013-08-28T00:47:39+0000","privacy":{"value":""},"message":"Em Pensaar ..!!     Quee por apenas um diaa .  !    Iria ser assim  pra senpre.. .. !  \nSomoss convidados...!!  Aa entrar eem uma viidaa .. !!  Ee ninguem entraa  de bic�o ...!!"}},
-{"video":{"name":"Best inspirational love quotes","from":{"name":"Sajjad Khan","id":"100000877841588"},"application":{"name":"Share_bookmarklet","id":"5085647995"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yj/r/v2OnaTyTQZE.gif","id":"100000877841588_590446897661233","created_time":"2013-08-28T00:47:24+0000","type":"video","caption":"www.youtube.com","updated_time":"2013-08-28T00:47:24+0000","privacy":{"value":""},"description":"Best quotes and saying about love embed in beautiful roses photos, inspiration love quotes and pictures, best quotes about love, cute love quotes. Visit: htt...","link":"http://www.youtube.com/watch?v=e3VPZepU6V0&sns=fb","source":"http://www.youtube.com/v/e3VPZepU6V0?version=3&autohide=1&autoplay=1","message":"its for you bic\r\n","picture":"http://external.ak.fbcdn.net/safe_image.php?d=AQDFvLV-yo-lT-CO&w=130&h=130&url=http%3A%2F%2Fi1.ytimg.com%2Fvi%2Fe3VPZepU6V0%2Fhqdefault.jpg%3Ffeature%3Dog"}},
-{"note":{"from":{"name":"Um Dia de F�ria","category":"Community","id":"201691339996455"},"id":"201691339996455_210984119067177","created_time":"2013-08-28T00:46:35+0000","type":"status","updated_time":"2013-08-28T00:46:35+0000","privacy":{"value":""},"message":"Um dia de F�ria 17 - A Magrela da Oric� e a Bala Perdida\n-------------------------------------------------------------------\n\nEra o s�bado do desfile das campe�s do Carnaval de 1994, ainda tinha uma ressaca do Carnaval para curtir no Largo do Bic�o. Meu amigo Junior MCGyver havia me chamado para ir a Br�s de Pina para ficar com umas meninas e eu fui, claro. Mas chegando l� s� tinha uma e ele n�o quis compartilhar, com a promessa de que o que era meu estava guardado. Mais de uma hora depois e j� cansado de espera-lo a dar uns pegas na madame, voltamos para a Vila da Penha, onde nos encontramos com os demais delinquentes da �poca: Gustavo, Alisson, Luciano, Galdino e por a� vai.\nAo chegarmos na fes
 ta, ele me apresentou a famosa Magrela da Oric� que eu nem preciso citar o nome. Quando eu me deparei com situa��o, confesso que me senti, no m�nimo, surpreso, pois nunca havia conhecido na vida uma menina t�o magra quanto aquela. Ela j� tratou de se apresentar e passou a me chamar de fofo e mostrou total interesse em mim e passou a me perseguir durante toda a festa. Estava me sentindo a verdadeira v�tima de um psicopata Serial Killer. Quanto mais eu despistava, mais ela me encontrava. O grande problema � que na adolesc�ncia, quanto mais o tempo passa mais voc� bebe e quanto mais voc� bebe mais gostosa voc� come�a a achar as mulheres, qualquer uma delas. \nN�o sei hoje, mas nos anos 90 era muito comum ter carros cheio de batidas no caput, e voc� pagava uma miserinha por uma garrafa e enchia a cara a noite inteira, sendo que voc� nunca bebia sozinho, pois os amigos sempre aparecia com um copinho descart�vel para ser arregrado.\nE ao bater das doze ba
 daladas noturnas, a carruagem virou ab�bora e as minhas resist�ncias viraram p�. A Magrela pegou na minha m�o e disse: � agora!!!! Me aproximei e mais uma vez consegui resistir aos seus poderes hipn�ticos,,, s� n�o sabia at� quando. Passava desfilando com ela e todos me homenageavam pela coragem e bravura e ela come�ou a ficar impaciente e disse que se eu n�o queria, bastava falar,,,, mas fui um fraco e ao mesmo tempo um cavalheiro, pois n�o poderia deixar a menina magoada. Ent�o bolei um plano mirabolante. O Alan e a sua irm� estavam indo embora, ent�o falei pra ela que far�amos companhia para os dois e depois selar�amos o esperado beijo da noite. Era o local perfeito pra n�o ser flagrado por toda sociedade Viladapenhana ou ent�o o momento mais prop�cio para sair correndo.\nFoi quando rolou um tumulto violento e uma correria danada,,, todos desembestados e eu sem saber o que estava acontecendo,,, ouvi tiros, gritos e a sensa��o mais louca
  que eu j� senti na minha vida, tentei correr mais levei uma porrada na nuca, ouvi som de trinca-ferro e os olhos come�aram a triplicar as imagens. O som ficou mais lento, como se reduzisse a rota��o do disco de vinil. Olhava para os lados e via pessoas ainda correndo. Tentei dar o pr�ximo passo, mas n�o tinha mais for�a nas pernas. Senti o ch�o chegando muito vagarosamente, coloquei meus bra�os para amortecer a queda e ao tocar o asfalto, como num passe de m�gica, tudo voltou ao normal. Eu ainda tentei rastejar para fugir do tiroteio, mas um transeunte me segurou e me informou aquilo que eu n�o queria pensar: Eu havia levado um tiro e sangrava muito. Fui virado pra cima e vi as pessoas se amontoarem em cima de mim. Rasgaram minha blusa para arejar, tiraram meus t�nis para arejar, e por sinal at� hoje eu n�o os vi de volta, um Nike novinho, do Alisson... \nO boato dos baleados se espalhou e os carniceiros dos meus amigos vieram correndo pra ver quem era o
  bandido alvejado e se deparam comigo deitado sobre um mar de sangue. Todos se apavoraram e o Alisson, no seu melhor estilo capoeira, furou o cord�o de isolamento e veio ficar comigo. Eu estava com um medo fodido de morrer, olhava pro lado e via o sangue escorrer pela rua abaixo. A �nica viatura de pol�cia que havia no local,  levou um baleado na garganta e um gr�vida alvejada de rasp�o na barriga. E eu fiquei l�, esperando a minha hora chegar. Foi quando um santo taxista se ofereceu pra me levar ao hospital. Ao tentar levantar, eu nunca poderia imaginar que a minha cabe�a pesava tanto, acho que a bala rompeu alguns ligamentos de sustenta��o dos m�sculos do pesco�o. \nEntrei no carro com muito sacrif�cio e sentia vertigens incontrol�veis, iria desfalecer ou mesmo falecer a qualquer momento, o problema � que a luz branca n�o veio, ent�o pensei: Fudeu, vou pro inferno. O Alisson tentava me animar, me fazia cantar Legi�o Urbana: Que Legi�o Urbana �
  o caralho,,, estou morrendo cara, voc� n�o est� vendo???.... E os olhos temiam em fechar. O hospital Get�lio Vargas nunca foi t�o longe,,, levamos uma eternidade para chegar,,,, essa era a sensa��o. Ao chegar no hospital, n�o tinha leito, me deitaram numa maca met�lica fria, sem camisa e com hipotermia, por causa da perda de sangue. Fui operado ali mesmo, extra�ram a bala, embalaram numa gaze e me deram. Me senti uma mam�e no parto ao ter seu filho nos bra�os. Olhei pra bala e disse: Filha da Puta,,, quase me matou.\nE pra fechar a noite com chave de ouro, o Alisson me pergunta: \n- E a magra, pegou?\n- N�o, escapei,,,, ufa... santa bala perdida!!!!"}},
-{"note":{"from":{"name":"Dakoda Mandujano","id":"100002494114668"},"application":{"name":"Mobile","id":"2915120374"},"id":"100002494114668_501954526564347","created_time":"2013-08-28T00:45:48+0000","type":"status","updated_time":"2013-08-28T00:47:43+0000","privacy":{"value":""},"message":"i need my Bic sucked right now lol"}},
-{"note":{"from":{"name":"Gi?t M?c M�a H�","id":"100006547540821"},"id":"100006547540821_1389297757965129","created_time":"2013-08-28T00:41:31+0000","type":"status","updated_time":"2013-08-28T00:41:31+0000","privacy":{"value":""},"message":"Ch?c ch?n h?n anh to�n m?c t�m \nB� kh�ng tin ch?m th? v�i l?n \nM?t l� ???c th?y cho m??i ?i?m \nHai l� tim b� b? ... b�ng khu�ng\nAnh l�m th? to�n b?ng vi?t bic \nL�m quen ch?a bi?t vi?t b?ng g� \nS?c nh? ng�y x?a c�n l? m?c \nS�n tr??ng t�m ??m m?t c�y si\n\nB�i h�t n�o \"s?i th??ng s?i nh?\" \nC�n th? anh \"gi?t nh? gi?t th??ng\" \nM?t h�m anh bi?n th�nh quy?n v? \nT�nh nguy?n y�u gi?t m?c t�m ?ang bu?n"}},
-{"note":{"from":{"name":"Trang T�mat?","id":"100002216264738"},"application":{"name":"Facebook for iPhone","namespace":"fbiphone","id":"6628568379"},"id":"100002216264738_499056076844930","created_time":"2013-08-28T00:40:48+0000","type":"status","updated_time":"2013-08-28T00:40:48+0000","privacy":{"value":""},"message":"Tinh m? s??ng ?i t?p e r� bic\n...c�i c?m gi�c t?p xong ng ??t h?t m? h�i r�i lao xe vun v�t => m�t r??i iii\n=> th?t l� th�ch >:'D<"}},
-{"note":{"from":{"name":"Richly Awthentic","id":"100001409130885"},"id":"100001409130885_589039464486353","created_time":"2013-08-28T00:34:26+0000","type":"status","updated_time":"2013-08-28T00:34:26+0000","privacy":{"value":""},"message":"fire in the HOLE!..*stirkes BIC*"}},
-{"note":{"from":{"name":"Black Friday Cyber Monday on Sale","category":"Product/service","id":"1376926415869828"},"id":"1376926415869828_1382427048653098","created_time":"2013-08-28T00:34:10+0000","type":"status","updated_time":"2013-08-28T00:34:10+0000","privacy":{"value":""},"message":"BIC Sport Adjustable Stand Up Paddle Blade\n\nCHECK TO FIND LOW PRICE >> http://tinyurl.com/gbkj4qsx/B009VYHJRI\n\nBIC Sport Adjustable Stand Up Paddle Blade The four Most Well-known Jugglers At any time - Find out From Them, YOU Could Be Subsequent! Have you at any time dreamed of remaining the future legend in juggling? I have. So I wrote this manual on the four most famed jugglers, and their insider secrets to turning out to be the legends they had been. Understand from all those insider secrets, and you can be the following legend in juggling! BIC Sport Adjustable Stand Up Paddle Blade.  The Journey Privilege of Motorized Paragliding Paragliding experts already have the liberty to fly like birds
  on their have at their own prices and travel as much as they can. They appreciate the privilege of touring or crossing nations. BIC Sport Adjustable Stand Up Paddle Blade.  Lacrosse Drills - Shooting Drills From Cornell Lacrosse These are great lacrosse drills for increasing the capturing skills of your lacrosse players. Lacrosse coaches can make their teams much more powerful at scoring additional plans with these easy drills. These drills came in an job interview with Coach Tambroni from Cornell Lacrosse."}},
-{"note":{"from":{"name":"Cyber Monday Black Friday Online","category":"Product/service","id":"565321923532890"},"id":"565321923532890_568015023263580","created_time":"2013-08-28T00:33:37+0000","type":"status","updated_time":"2013-08-28T00:33:37+0000","privacy":{"value":""},"message":"BIC Beach Kayak Paddle (1 Piece)\n\nCONTINUE TO SEE LOW PRICE >> http://tinyurl.com/rerqq91g/B004XFVOWG\n\nBIC Beach Kayak Paddle (1 Piece) Yukon one thousand - The Longest Canoe and Kayak Race The Yukon a thousand is the longest canoe and kayak race in the earth. Racers contend with seven to eight days of steady paddling with only a few hrs of rest each individual night time. BIC Beach Kayak Paddle (1 Piece).  Athletics - Bringing Americans With each other Sports have touched and have achieved out to each and every side of American existence. Due to the greater availability of medium made use of to observe and share these activities, (Tv set and the Internet), sporting activities encounters and reminis
 cences have been shared a lot more and with hundreds of thousands of Americans in 1 variety or another. We have found dramatic wins, losses, championships, terrific plays, and not so terrific performs. People adore sports activities and the athletics that perform them and really like to share and communicate about these good moments. BIC Beach Kayak Paddle (1 Piece).  The Decline of Cannabis Details Hashish has been the most morally grey topic place for a long time and the information and facts you acquire on the subject can be really far from the reality. Certainly in most nations spherical the planet Hashish is Unlawful, however individuals are even now working with it so there really should be a bank of details about it."}},
-{"note":{"from":{"name":"Gabriel Paul Pierce-Lackey","id":"100003952643883"},"id":"100003952643883_293782680763484","created_time":"2013-08-28T00:30:39+0000","type":"status","updated_time":"2013-08-28T00:38:29+0000","privacy":{"value":""},"message":"If you snag lighters, I hate you"}},
-{"note":{"from":{"name":"Udin Zeoss","id":"100004916228419"},"application":{"name":"Mobile","id":"2915120374"},"id":"100004916228419_193897570784116","created_time":"2013-08-28T00:30:09+0000","type":"status","updated_time":"2013-08-28T00:30:09+0000","privacy":{"value":""},"place":{"name":"PaBriK paNg UjuNg Na ?? BiC-PurwakarTa","location":{"city":"Cikampek","latitude":-6.440615,"zip":"","country":"Indonesia","street":"","longitude":107.4492325},"id":"469609653049663"},"message":"Santai dl sblm gwe"}},
-{"note":{"from":{"name":"Andrel Barbour Doing Her","id":"100000828229524"},"application":{"name":"Mobile","id":"2915120374"},"id":"100000828229524_567828116588124","created_time":"2013-08-28T00:29:53+0000","type":"status","updated_time":"2013-08-28T00:48:36+0000","privacy":{"value":""},"message":"ALL GLORY....I DNT CARE...OR GIVE A FLYIN FLOCK WHAT NOBODY ELSE DO OR SAY AS LONG MY GLORY NAME ANIT IN IT....1 BIRD DNT KILL A STONE...AND I THAT BIC BIRD AND GOING OR WORRYIN ABOUT NOTHING N MY LIL BRO..EVERETTE..BKA...DANK VOICE...SAY IT AGAIN...I ANIT WORRYIN ABOUT NOTHING....OW OW OW OW OW OW...JUST BRING THE SMOKES I GOT THE WRAP...BRING THE ALCOHOL...I GOT THE CUPS...BRING THE BARBQUE I GOT THE PLATES...FOLKS...SPOONS AND NAPKINS...CANT GET NO MATTER THEN THAT....LMAO..."}},
-{"note":{"from":{"name":"Blackie Ibrahim","id":"100001611878761"},"application":{"name":"Mobile","id":"2915120374"},"id":"100001611878761_569548039775587","created_time":"2013-08-28T00:29:26+0000","type":"status","updated_time":"2013-08-28T00:29:26+0000","privacy":{"value":""},"message":"THIS ARE DAYZ 2  BE REMEMBRED!!!!\n\n  I miss d days when we went to\nschool, lined up & D headmistress &\nteachers inspect our nails & uniform\n& den we match to our classrooms.\n? D days of Natco Biscuit, Iced\nColored water tied in nylon we called\nit \"kulaid\"\n? D days of pehpeh mint\n? D days of WAN POT,correction corner(paddy nor piss dae!)\n? Hay, i remember those days when\none block coin na money,when\ngroundnut was 50 leone.&\nsweet was 2,3,4 for 50 Leone\n? days of messing game,forl shit(police,find me d thief), police and thief\n? D days of mummy & daddy play\n? days when we use to build houses\nwith sand, play borlorgie game, \nskipping, street ball stop! U don remember!\n?those days 
 wen we used to fly kite\non streets, wen boys used to use d\nMilk cups to make cars & their\ndaddy's hanger as d steering\n?those days when rubber band(fark) was\nstock exchange\n?days when mortal kombat,street fighter,snake and the monkey shadow,power rangers, spider man were our\nfavourite movies\n? D days of Pepsi soft drinks & milo and maltina advert on black and white tv\n? when we say ''ar stiff,nor stiff o. Wan cup wata! '' and slapping our colleagues saying 'fresh leg o'\n? Those days when bic pen\nwas d best\nD days wen we used to drink water\nfrom d tap even suck out d water if its\nnot coming out\n? D days when SLBS will show\nrainbow color for 30 mins then\nnational anthem before they resume\nprogram @ 4pm\n? D days wen silectto were d best footwares\n?Days wen we all sing ''neneh binta dae sell chi gum, chocolate,die mint,sweet!\nI'm really\nproud to have experienced\nall this. If u r nt smiling it means u\nwere nt born in my generation.\nAdd yours and pass the fun arou
 nd, hey heee haahaaaaaa opopinaaaazzzzz"}},
-{"note":{"from":{"name":"William George","id":"100003820913189"},"application":{"name":"Facebook for Android","namespace":"fbandroid","id":"350685531728"},"id":"100003820913189_320249768112384","created_time":"2013-08-28T00:29:14+0000","type":"status","updated_time":"2013-08-28T00:29:14+0000","privacy":{"value":""},"message":"Felling bad today have no meds for my diabetes because I am broke I need some help I have some u of l tee shirts and hats u of k all so all brand new will sell cheap all so bic  lighters if anyone can help me out hmu on fb any help would be great I feel like I am desperate so ty"}},
-{"photo":{"from":{"name":"Thami de Oliveira","id":"100003470164026"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif","id":"100003470164026_390972087695127","created_time":"2013-08-28T00:29:07+0000","type":"photo","updated_time":"2013-08-28T00:44:13+0000","privacy":{"value":""},"link":"http://www.facebook.com/photo.php?fbid=390971777695158&set=pcb.390972087695127&type=1&relevant_count=2","object_id":"390971777695158","message":"MENINAS QUE TIVEREM INTERESSE NESSE VESTIDO TEM NA COR BRANCO,PRETO,AMARELO,AZUL BIC,ROSA PINK E AZUL PISCINA , COMENTA COM A COR QUE FOR QUERER PRA EU PODER FAZER A ENCOMENDA, S� VOU TRAZER DE QUEM COMENTAR !!!","picture":"http://photos-a.xx.fbcdn.net/hphotos-ash3/1234956_390971777695158_1843537076_t.jpg"}},
-{"note":{"from":{"name":"Black Friday Cyber Monday on Sale","category":"Product/service","id":"1376926415869828"},"id":"1376926415869828_1382424758653327","created_time":"2013-08-28T00:28:52+0000","type":"status","updated_time":"2013-08-28T00:28:52+0000","privacy":{"value":""},"message":"BIC Sport ACE-TEC Stand-Up Paddleboard\n\nCONTINUE FOR SPECIAL PRICE >> http://tinyurl.com/gbkj4qsx/B005SH9TNO\n\nBIC Sport ACE-TEC Stand-Up Paddleboard Types of Geocaching Caches The satisfaction achieved when enjoying geocaching usually lies on the discovery of what a cache incorporates. This serves as the reward for all the terrain that a cacher has successfully conquered. Caches come in different varieties and usually include a logbook (for greater caches) or log paper (for more compact caches). BIC Sport ACE-TEC Stand-Up Paddleboard.  Leisure at Relatives Reunions Looking for a risk-free outside game that can be performed by folks of all ages and qualities? Then search no further than cornhole.
  Cornhole is a addictive activity that is easy to master and a ton of enjoyable to play. BIC Sport ACE-TEC Stand-Up Paddleboard.  How to Prevent Soaked Ft When Going for walks in the Uk Most of my hiking and strolling usually takes position in the British isles. Locations to stroll this kind of as the Lake District, Scotland and Snowdonia are my favourite spots. These locations are wonderful."}},
-{"note":{"from":{"name":"Fahri  Kuliev","id":"100003757786565"},"id":"100003757786565_336091023192821","created_time":"2013-08-28T00:27:43+0000","type":"status","updated_time":"2013-08-28T00:27:43+0000","privacy":{"value":""},"message":"F?XR? M�SL�M\nBANKS CHA?RMAN\nMini chronologial novel\nBirinci hiss?\n V  \n H?s?n Qas?movi�in yan?nda,  m?n, t?k deyildim. T?fti? ?�b?sinin r?isi d? var idi. H?l? o,  t?fti? ?�b?sinin r?isini dinl?yirdi. T?fti? ?�b?sinin r?isi tutatl? s�but v? d?lill?rl?, sanki �z dedikl?rini �z� d? t?sdiq edirdi. \n O, �z�n� H?s?n Qas?movi�? tutaraq, - bu yolda? birinci yoxlama i?ind? i?tirak edir, akt mateiallar?n? oxudum, birinci d?f? ���n yoxlama materiallar? pis deyil. Ancaq veril?n m?lumata ?sas?n, qeyd edim ki, bu yolda? yerl?rd? tamam ba?qa i?l?rl? m???ul olur. Bu, h?m onun t?fti?�i ad?na, h?m d? i?l?diyi t??kilat?n ad?na l?k? g?tir? bil?r. O, yoxlama d�vr�nd?, ?eir yazmaqla m???ul olub, yerli radio verli?l?rind? g�n
 a??r? �?x??lar edib, rayon q?zetind? ?eirl?r d?rc etdirib. Fikirl??in ki, bu i?l?r bel? davam ed?rs?, onda t?fti? i?i hans? m�sib?tl?rl? �zl??? bil?r, h?m keyfiyy?t c?h?td?n, h?m d? yoxlan?lan t??kilata  qar??  t?l?bd?n v? s. s�hb?t gedir. Ax?, bu bizim i?imizl? daban-dabana zidd bir m?s?l?dir. Sonra yerl?rd?n biz? eham ed?c?kl?r ki, siz bura t?fti?�i g�nd?rmisiniz, yoxsa, jurnalist, yaz?�?, ?air.\n M?n bunlar?n hardan qaynaqland???n? bilirdim v? �z-�z�m? fikirl??irdim ki, i?? girdiyim g�n�n s?h?ri t?fti? ?�b?sinin r?isi,  t??kilat?n, b�t�n rayonlara ged?c?k  m?ktublar?n?, m?n d? daxil olmaqla bir ne�? n?f?rd?n xahi? etdi ki, ba? po�t idar?sin? apar?b t?hvil ver?k. Bu m?s?l?y? m?n etiraz ed?r?k, - t??kilat?n ma??n? yoxdu, n?di, -demi?dim  v? m�?yy?n bir m?saf?y?, �z� d? ??h?rin m?rk?zind?,  ??ll?nib y�k aparma?? �z�m? s????d?rmam??d?m. V? m?n �z pay?ma d�??n m?ktublar?  taksi tutaraq po�ta aparm??d?m, bu da ?�b?d?  m?nd?n gizli s
 �z-s�hb?t? s?b?b olmu?du. �st?lik d? b�t�n bunlar m?nim yek?xanal???m kimi d?y?rl?ndirilmi?di. O, dan??d?qca h?min ?hvalat yad?ma d�?d� v? �zl�y�md? fikirl??dim ki, r?isin ?lin? gir?v? d�?�b,  hay?f?n? bu yolla v? bird?n �?xmaq ist?yir. G�zl?rim onun �z�nd?, qulaqlar?m is? onun gileyind? olmas?na baxmayaraq, sakit oturmu?dum, ��nki h?r ?ey H?s?n Qas?movi�in ver?c?yi q?rardan as?l? oldu?unu, art?q, g�t�r-qoy etmi?dim. Ancaq b�t�n bunlara baxmayaraq, i�imd? bir rahatl?q da var idi v? bu rahatl?q t?k m?nim i�imd?kil?rl? ba?l? deyildi, h?m d? t?fti? ?�b?sinin r?isinin H?s?n Qas?movi�l? olan m?nfi m�nasib?tl?ri il? ba?l? bir m?s?l? idi.\n H?s?n Qas?movi� d?  ona diqq?tl? qulaq asmas?na baxmayaraq, sanki onun ?ikay?t xarakterli gileyin? yox, ?a? atl? da?d?mirin na??l?na? qulaq as?rd?.  T?fti? r?isi art?q hiss etdi ki, dan??ma?a bir ?ey qalmad?, oturdu?u stulda yayxand? v? a??r bir y�k�n alt?ndan azad olmu? kimi, d?rind?n bir n?
 f?s ald?. O, sif?tind? bir ovuc qom olmu?, k�lg? r?ngind? t?b?ss�m� il?  adamda ikrah hissi do?ururdu. O, el? adam? bo?an bu ikrah hissi il? d? arxay?n-arxay?n H?s?n Qas?movi�in �z�n? bax?b qalm??d?. Qalm??d? ki, H?s?n Qas?movi� bu m?s?l?y? nec? yana?acaq. Bird?n-bir?, m?n?  el? g?ldi ki, bu adam canl? deyil, yapon d?zgahlar?nda istehsal olunmu? robotdu v? d�ym? il? avtomatla?d?r?lm?? formada  idar? olunur, laz?m olanda dan???r, laz?m olmayanda susur.\n H?s?n Qas?movi� is? yax?? i? g�rm?di, ona qulaq asandan sonra, onun getm?yin? i?ar? etdi. G�r�n�r o, m?ni r?isin yan?nda ya pis v?ziyy?td? qoymaq ist?mirdi, ya da  fikirl??di ki, m?n d? insanam, bu m?s?l?y? m?nim d? �z yana?mam ola bil?r v? onda t?fti? ?�b?sinin r?isi pis v?ziyy?td? qala bil?r. B?lk? d? o, m?niml? t?kb?t?k dan??maq da, m?ni g?l?c?k i?l?r ���n t?dqiq etm?k ist?yirdi, fikirl??dim. Bu o q?d?r d? �ox �?km?di, H?s?n Qas?movi� sa? �iyini �std? m?n? t?r?f d�nd�: - a ki?i, m?
 n g?lmi??m rayona? rabo�i? paltarda, s?n is? kostyumda otrmusan, bo?az?nda da qalstuk, o q?z da b�yr�nd?n bel? ke�ir, el? ke�ir, sa�lar? da s?nin �iynind? g?z?-g?z?.  S?n d? feyziyab olub, s�z qo?ursan, ?eir yaz?rsan, n? bilim daha n?l?rl? m???ul olursan. Birinci n�vb?d?, o q?z ba? m�hasibdi v? s?n d? onun s?n?dl?rini yoxlay?rsan, bu formada s?n hans? n�qsanlar? �z? �?xarda bil?rs?n. O q?z s?ni bax??lar?yla aldada-aldada ciddi n�qsanlar?, m?nims?m?l?ri d? s?nd?n yay?nd?ra bil?r. Bu, bu rayonda olmasa da, ba?qa bir rayondak? olacaqd?r. M?n s?ni i? g�rm?y? g�nd?rmi??m, s?n d? l?,..l?,..lo,..lo...i?l?rl? m???ulsan.  Bu, b?s el?mir kimi, q?zet bel? getdi, radio bel? getdi. G�rd�n ki, s?h?rd?n t?fti? ?�b?sinin r?isi durub-dayanmadan �y�d�b t�k�r, m?n burda s?n? g�z??t? ged?c?m, ondan i? t?l?b ed?mm?y?c?m, ona g�z??t? gets?m, s?nin ?m?k kitab�an korlanacaq.\n M?n, verilic?k cavablar?m?, i�imd? yava?-yava? g�t�r-qoy edirdim. V? bu
  cavablar? g�t�r-qoy etdiyim? g�r? d? bir q?d?r arxay?nla?m??d?m v? g�zl?yirdim ki, H?s?n Qas?movi� s�z�n� deyib qurtars?n, m?n d? �z d?lil-s�butlar?mla onu inand?r?m ki, - H?s?n Qas?movi�, ax? el? deyil, bu i? m?nim ?sas i?im? mane�ilik etmir, ?ksin?, bu i? d?, o i? d? bir-brini tamamlay?r.\n O, art?q, sar???n v? cod sif?tind? gizl?tdiyi g�y v? z?himli g�zl?rini m?n? zill?mi?di v? m?nim n? dey?c?yimi s?brsizlikl? g�zl?yirdi.\n M?n, ani olaraq �z�m� y????d?rd?m v? n?d?n ba?layaca??m? g�t�r-qoy etm?y? �al??d?m, ��nki qar??mda ya?l? bir insan?n oldu?unu d�?�nd�m. V? bir q?d?r ehtiyatla, inand?r?c? ??kild? onun �z�n? baxd?m, - H?s?n Qas?movi�, -dedim,-yaz?-pozu he� vaxt d?qiq sah?l?r? mane�ilik t�r?tmir, ?ksin?, bir-birin? b?lk? d? dayaq durur, ��nki burda m?n?viyyat �l��l?ri d?, h?yat �l��l?ri d? bir-birini tamamlay?r v? m�hk?m bir ba?lant? yarad?r. Ist?r d�nyada v? ist?rs? d? yax?n ??rq ?d?biyyat?nda 
 taa q?dimd?n yaz?-pozu adamlar? h?mi?? d?qiq v? ciddi i?l?rl? m???ul olmas?na baxmayaraq, ?eirl? d?, yaz?�?l?qla da, b?st?karl?qla da, r?ssaml?qla da, n?qqa?l?qla da v? s. m???ul olublar. B�y�k T�rk imperiyas?n?n ?ah? Sultan Suleyman h?m d? d�vr�n�n yax?? ?airl?rind?n olmu?du. Az?rbaycan imperiyas?n?n yarad?c?s? ?ah ?smay?l X?tai s?rk?rd? v? ?ah olmas?ndan as?l? olmayaraq �z ?airliyi il? Az?rbaycan ?d?biyyat?n?n apar?c?lar?ndan biriydi. Bununla yana??, m?n b�t�n bunlar? sadalamaq da �z�m? haqq qazand?rmaq ist?mir?m. M?s?l? bundad?r ki, m?n b�t�n bu yaz?-pozu m?s?l?si il? i?d?n sonra m???ul oluram. M?n, dan???b qurtard???m? hiss etm?dim, birc? onu hiss etdim ki, bu sar???n ki?inin �z�nd? n?s?, m?n? qar?? bir xo? ?hval-ruiyy?  ?m?l? g?lmi?di. V? m?n bunu, �zl�y�md? raz?l?q hissi kimi, �z�m�n d? q?l?b?m kimi hiss etdim. Bu da??n?q hissl?rimin alt?nda o, he� n? dem?d?n getm?yim? i?ar? etdi. �z�md?n raz? qalsam da i�imd? bir narahatl?q 
 hissi d? yox deyildi v? bu hissl?rl? d? otaqdan �?xd?m.  \n  Sanki �z�m? arxay?n idim, ancaq bu arxay?n�?l???n f?rqini saf-��r�k ed? bilmirdim. Birc? onu bildim ki, t?fti? ?�b?sind? stulumda oturmu?am. T?fti? ?�b?sinin r?isi d? t?fti?�il?rl? hans?sa, m�r?kk?b bir sual?n h?llini ayd?nla?d?r?r. M?n? �atan o oldu ki, s�hb?t, m�hasibat hesablar?ndan birinin hans? hesabla m�xabirl??m?sind?n gedir.  Bel? ba?a d�?d�m ki, hesab?n debetini d�zg�n t?yin  etmi?dil?r, ancaq onun hans? hesab?n kreditin? m�xabirl??m?si m�bahis?li qalm??d?. Donmu? bax??lardan hiss etdim ki, t?fti? ?�b?sinin r?isinin �z� d? bunu d�z-?m?lli bilmir. M?n, �zl�y�md? g�t�r-qoy etm?y? �al??d?m, ancaq m?n d? bu m?s?l?l?rin d?rkind?n �ox uzaqda idim. \n\n VI\n\n Art?q Xank?ndind? idik. �� n?f?r idik. M?n, kadrlar ?�b?sinin i?�isi Namik v? h�quq?�nas ?lqar. Namik t?bi?t?n it oynadan idi. Ilqar?n �z� kimi d? t?bi?ti var idi, haynan hay kimiydi, y
 aynan yay kimiydi, yay?n? �?kib oxunu gizl?dirdi. Kimliyini bilm?y?n bir adam idi. Gah ?sirdi, gah k�s�rd�, gah da as?b k?sirdi, h?mi?? d? adam? aldatma?a �al???rd?. O, m?niml? bir az xo? r?ftar ed?n kimi, h?r ?eyi unudurdum v? onunla da tez raz?la??rd?m, bu da m?n? baha ba?a g?lirdi. Sonra hiss edirdim ki, d�?m?ni hardasa axtarmaqla deyil, d�?m?n el? �z i�imizd?ymi?. Qan qrupu �ox k�p?ko?lu n?sn?ymi?.  Bu t�rkl�k d? bizim ba??m?za b?la olub. Boz qurdu �z�m�z? bayraq etmi?ik, ulam-ulam ulay?r?q, ulaya-ulaya da vaxt apar?r?q, bu vaxt ?rzind? d? hay ba??m?z? k?sib qoyur dizimizin �st�n?.  Arxada qal?b gecik?nl?rmiz is? salidorla yum?altd??? �?km?l?rini s�r�y?-s�r�y?  v? soyuqqanl?, soyuqqanl? yanda, y�r?d? can?n? gir?l?yir.\n Hay olmas?na baxmayaraq Razmik m?nim ���n yax?? adam t?siri ba???lay?rd?. Bu, b?lk? d? m?n? el? g?lirdi. ��nki o, m?nim ���n yax?? adam, haylar ���n pis adama ��vrilmi?di. Fikirl??irdim ki,
  b?lk? qan damar? bizd?ndi. B�t�n bunlar da ehtimal xarakteri da??y?rd?. O, m?n? yalman?b �z�n�nk�l?ri sat?rd?, bu is? m?nd? ba?qa bir t?sir yarad?rd?. Fikirl??dim ki, �z�n�nk�n� satan adam, sabah m?nim �z�m� d? pis v?ziyy?td? qoya bil?r v? ?�k�r edirdim ki, h?l?  onun yan?nda bir q?bah?tim yoxdur. Ikimiz bir otaqda oturmu?duq, onun �z�n? baxd?m, y?ni baxd?m ki, o, el? bel? i?�i deyil, h?r halda bizim ba? idar?mizin ?tat vahidi kimi, m?sul bir v?zif? da??y?r. V? ona g�r?, birinci d?f? oldu?um bu Xank?ndind?ki  t??kilat?n idar? sistemin? aid m?s?l?l?rl? yax?ndan tan?? olma??m ���n onun yard?m?na ehtiyac?m var idi.  O, el? bil m?nim i�imd?n ke�?nl?ri d?rk etmi?di v? ?lind?ki s?n?di stolun �st�n? qoyub, s�z? ba?lad?:\n O, - eli man siza bir ne�a pakt veracam, siz da eli ona uy?un i? gorun ha. Birincisi, siz eli soru?a bilars?n?z ki, ?u?a ?�bas?nda i?layan i?�ilar?n mukafat?n? niy? kas?blar ha. Eli siza qaranl?q qalmas?n deya
  izah edim ha. ?u?a rayonu hesabat? be? g�n gecikdirib ha, ona g�ra da m�kafatlar?n? kas?blar ha, ancaq Qadrut ?�b?si hesabat? on be? g�n gecikdirb ha, ancaq bunlar �z adamlar?d? deya tarixda duzali? ediblar v? hesabat vaxt?nda verilmi? kimi qeydiyyata al?n?b v? saxta yolla da onlara mukafat veriblar ha.\n M?n, bunlar? bilirdim ancaq d?rinl??dirm?k ���n onun �z�n? baxd?m:\n - bunlar? onlara nec? izah edim ki, s?nin informasiyan oldu?unu bilm?sinl?r, -dedim\n Razmik , - eli, siz ba? m�hasibi �a??r?n v? ondan soru?un ha, o da izah edacak ki, el?di, bel?di. Onda siz h?r iki ?�ban?n hesabat?n? tahlil edin ha, onda g�racaks?n?z k?, ?u?an?n gecikma tarixi oldu?u kimi qal?b ha, ancaq Qadrutun hesabat?nda isa lap ammal?-ba?l? duzal?? ediblar ha, v? vaxt?nda qabul edilmi? kimi d? sanadla?d?r?blar ha, rubluk mukafatlar?n? da veriblar ha. Biliram ki, boyunlar?na almayacaqlar ha, ondan sonra Qadruta bir teleqram vurar?q ha, onlar da hesabat?n giri?-�?x?? tarixini
  tasd?q edacaklar ha. Onda s?n bunlar? onlar?n g�zlar?na soxarsan v? ?u?an?n rubluk mukafat?n? da verdiracaksan, ya da Qadrutun mukafat?n? tutduracaqsan ha.\n Razmikin faktlarla dediyi, yoxlaman?n gedi?at?na k�m?yi olsa da, ?lqar?n aldad?c? h?r?k?tl?ri m?ni qane etmirdi. Guya  o, bu i?d? �z�n� d�zg�n,  h�quq?unas  t?siri ba???layan kimi g�st?rs? d?, doxsan d?r?c? bucaq alt?nda o t?r?f, bu t?r?f?  ?yil?r?k faktlar?n d�zg�nl�y�n�n s?n?dl??dirlm?sind? m?n? mane�ilik etm?y? �al???rd?. Bu is? ondan ir?li g?lirdi ki, o, m?nim, Razmikin diqt?sind?n faydaland???m? bilirdi.\n M?n, Razmikin dedikl?rini v? �z�m�n a?kar etdiyim n�qsanlar? t?sdiql?m?k ���n t??kilat?n ba? m�hasibini yan?ma �a??rtd?rd?m. Tipik hay qad?n? idi. Y?ni, sif?tind?n, duru?undan, boy-buxunundan, ir?li �?xm?? qarn?ndan tutmu? �z�n�n q?pq?rm?z? r?ngin? v? i�inin x?lt?na kimi hay qad?n? oldu?u anla??l?rd?. \n Ba? m�hasib bu y�nd?msiz b?d?niyl? art?q qar??mda idi
 . �ox da yax?? dan??a bilm?diyi t�rk l?hc?sind?: - e?idiram sizi, -dey?r?k, ?ll?rini qarn?n?n �st�nd? c�tl?yib m?ni s�zd�.\n M?n, bir xeyli qar??mdak? ka??z-ku?uzu o �z, bu �z�n? �evir?r?k, n?d?n ba?layaca??m? g�t�r-qoy etdim:\n M?n, - dey? bil?rsinizmi, ?u?a ?�b?sinin r�bl�k mukafat?n?  n? s?b?bd?n k?smisinz?\n Ba? m�hasib dili-doda?? ?s?-?s?, -onlar at�otu gecikdirmi?dil?r, ona g�r?.\n -Ne�? g�n gecikdirmi?dil?r? \n - Be? g�n.\n  - Hadrut ?�b?si d? hesabat? gecikdirib, �z� d? on be? g�n, b?s nec? olur ki, onlar?n pul mukafatlar? �d?nilib, k?silm?yib?\n - Yox, gecikm?yib ha, kim bunlar? deyib siza, -dey?r?k, sa??mda oturmu? Razmik? t?r?f �t?ri d? olsa q?yqac? n?z?r yetirdi.\n M?n, onun Razmik? t?r?f  k?s? bax??larla d�nm?sind?n  bel? ba?a d�?d�m ki, o,? Razmik? i?ar? etdi ki, adam ki?i olar, s?n �z haylar?n? bir t�rk? satm?san v? s?n biqeyr?ts?n, el? olmasayd?n �ox vaxt s?ni t�rk? ox?atmazd?lar? fikirl??dim v? on
 un �z�nd?ki yalan?n q?zart?lar?n? saf-��r�k ed?-ed?: -onda buyurun h?r iki ?�b?nin hesabatlar?n? g?tirin m?n?, -dedim.  \n O, sif?ti q?zarm?? halda  otaqdan �?xd?, el? sif?tinin p�rtm�?� getm?mi? d? hesabatlar ?lind? geri qay?td?.  M?n �z�m� o yer? qoymadan, ?vv?l �t?ri d? olsa, ?u?a ?�b?sinin hesabat?n? o �z-b� �z�n? �evir?r?k gecikm? tarixinin oldu?u kimi qald??? v? ?l d?ym?d?n  t?sdiql?ndiyini m�?yy?n etdim. Hadrut ?�b?sinin hesabat?n?n tarixinin ba??na it oyunu a�m??d?lar. El? bil yek? bir v?l il? x?rmanda var-g?l etmi?dil?r, hesabat?n tarixi q?rm?z? q?l?ml? kobud formada pozulmu? v? �st�nd?n laz?m olan tarix yaz?lm??d?. \n M?n �z�m� ona t?r?f tutaraq: - b?s buna n? deyirsiniz? B?s bu d�z?li? deyil, n?di? �z�n�z d? bu doyda t??kilat?n ba? m�hasibisiniz. M�hasibatl?qda is? bel? d�z?li?l?r etibars?z hesab edilir. Nadir hallarda edil?n d�z?li?l?r d? m�hasibatl???n t?l?b etdiyi qanunauy?un �?r�iv?d? apar?l
 an d�z?li?l?r hesab edil? bil?r ki, o da, riyazi hesablamalar zaman? mexaniki v? nadir s?hvl?rin d�z?li?in? aiddir. Y?ni, nadir bir s?hv r?q?min �st�nd?n q?rm?z? q?l?ml? nazik x?tt �?km?kl?, onun k?nar?nda d�z?li? etdiyiniz dig?r r?q?mi yaz?rs?n?z v? bunun da s?b?bi ham? ���n b?lli olur. Ancaq b�t�n bunlar?n hesabatlar?n t?qdim olunma tarixl?rin? he� bir aidiyy?ti yodur. Siz is? hesabatda sanki kotanla yer ?kmisiniz.\n Xank?ndind? yerl???n t??kilat?n t?fti?�isi Razmikin ?l alt?ndan m?n? �t�rd�y� teleqram?n cavab?na t?krar?n bird? baxaraq:  -al?n bax?n v? yalan dan??may?n, bu da Hadrutdan ald???m?z teleqramd?, dey?r?k, ?limd?ki teleqram? ona uzatd?m.\n   Onun sif?tind?ki p�rt�k q?zart?lar h?ddini �oxdan a?m??d? v? art?q onun hay olmas?n? isbat etm?y? ehtiyac yox idi.\n Qula?? s?sd?ymi?, n?ydis?, t??kilat?n m�diri, ya?da v? g�rk?md? ba? m�hasibind?n geri qalmayan Qreta Nikolayevna  i�?ri girdi v? n? ba? verdiyini anlamaq ist?di. Onsuz da
  bu qad?n?n ?ovnist oldu?u m?n? �oxdan b?lliydi v? onu g�r?n kimi, yad?ma d?hlizd?ki ??r?f l�hv?si d�?d�. H?r halda ??r?f  l�vh?si ??r?fsiz v? insanlar? aldadan bir n?sn? kimi beynimd?n ke�s? d?, bu Xank?ndind? yerl???n ??r?f l�hv?sind? hay ?�b?l?rinin qabaqc?l hay i?�il?rind?n ba?qa, ?u?a ?�b?sind? i?l?y?n n? az?rbaycanl? v? n? d? rus mill?tind?n ibar?t bir n?f?rin d? olsa ??kili yox idi, ancaq orda da i?l?y?n haylar?n ??kili var idi. Bu n?sn?l?r x?rda  olsa da k�n�l buland?ran  n?sn?l?r idi. \n Hiss etdim ki, Qreta da h?rif deyil v? i�imd?n ke�?nl?ri ba?a d�?�r v? hiyl?g?r dilini i?? salmaq ist?yir, m?n buna imkan verm?d?n,  - Qreta Nikolayevna, nec? ola bil?r ki, ?u?a ?�b?sind? ancaq haylar yax?? i?l?mi? hesab edilir, az?rbaycanl?lar, ruslar yox, ?g?r yax?? i?l?y?n varsa, niy? bu ??r?f l�hv?sind? onlar da olmas?n?\n Qreta Nikolayevna bozarm?? ??kild?, -yox, yox, niy?ki var, m?n onlar? Bak?dak? ??r?f l�hv?si ���n g�nd?rmi??m.\n M?n o
 nun n? dediyini g�yd? tutaraq, - yax?? el?misiniz, siz g?r?k onlar?, el? bax bu Xank?ndind? yerl???n t??kilat?n ??r?f  l�hv?sind? d? yerl??dir?rdiniz, d�nya da??lmazd? ki.\n O, susma?? il? ?m?ll?rini �rt-basd?r etm?y? �al???rd?, ancaq gec idi. Eyni zamanda tez olma??n?n, yaxud gec olma??n?n onun ���n he� bir f?rqi yox idi. O, �z mill?t�i v? ?ovnist i?inin ustas? idi. Ancaq o da var idi ki, o, yax?? anlay?rd? ki, m?n onlar?n dabbaqda g�nl?rin? b?l?d idim v? yeri g?l?nd? sif?tl?rin? �?rpma?? bacarsam da,  onlar?n da yeri g?l?nd?, �zl?rin?  m?xsus y�k g�t�m?k qabiliyy?tl?ri var idi v? bu, bizi aldadaraq, ba??m?z?n alt?na yast?q qoymalar?yd?. El?,  Qreta da g�z�m�n �n�nd? bir anl??a y�kl� qat?r? xat?rlatd?  v? bu y�k�n alt?ndan xilas olma?a �al???rd?.\n H?l? onun iqtisad�?s? ?nessan? demir?m. Bir biqeyr?t az?rbaycanl?n?n pullar?n? Moskvan?n ?n bahal? mehmanxanalar?nda x?rcl?dib, kef �?k?-�?k?, az?rbaycanl?lar?n ?lehin? dan??ma?
 ?ndan da qalm?rd?. Dan???rd?, ��r?ymizi yeyb, suymuzu i�?-i�?, dan???rd?, o papa?? ?lind? qalm???n pullar?n? g�y? sovura-sovura...\n Hirs m?ni alt-�st etmi?di, ��nki ���m�zd?n biri, it oynadan idi, o biri d? bunlara i?l?y?n idi, ?traf?mda da haylar. M?nim d? bunlarla bel?, t?limata uy?un r?ftar?m?n qar??s?nda h?r n?sn? ola bil?rdi. Onu da hiss edirdim ki, onlar m?ni milli m?s?l?y? y�nn?ndirm?kl? q?z??d?rmaq v? n?y?s? nail olmaq ist?yirdil?r. Ancaq Xank?ndi t??kilat?n?n m�diri Qreta  �z hay dilind? n? x?rdalad?sa, ?nessa otaqdan �?x?b getdi. Bu minvalla, Qreta xahi? etm?k ist?yirdi ki, n�qsanlar? akt material?nda g�st?rm?yim. Salm??d? hay bicliyin?, ��nki H?s?n Qas?movi�d?n qorxmasa da, �?kinirdi.\n M?n art?q bu n�qsanlar? oldu?u kimi akt material?nda s?ralam??d?m.  \n\n VII\n M�zakir? H?s?n Qas?movi�in yan?nda idi. Idar? heyy?tinin m�avinl?ri, ?�b? r?isl?ri v? Qreta ba?da olmaqla,  Xank?ndind?n g?lmi? n�may?nd?l?r d? kollegiya 
 stolinun ?traf?nda �z yerl?rini tutmu?dular. Xank?ndind?n g?lmi? n�may?nd?l?rin i?tirak?ndan bilm?k olurdu ki, bu m�zakir? onlara g�r?di, ancaq m�avinl?rin v? ?�b? r?isl?rinin i?tirak? onu ?sasland?r?rd? ki, bu m�zakir? t?kc? yoxlama material?na g�r? deyildi, h?m d? Xank?ndind? f?aliyy?t g�st?r?n t??kilat?n b�t�vl�kd? i? f?aliyy?tin? y�n?ldilmi? bir m�zakir? idi. Buna baxmayaraq, ilk ?vv?l Moskvadan daxil olmu?  ?ikay?t ?riz?si ?sas?nda apar?lm?? yoxlama i?inin n?tic?l?ri dinl?nildi v? bu y�nd? ba?qa ?�b?l?rl? ba?l? dig?r n�qsanlar?n s?ralanma?? da, ona qar?? iradlar?n bildirilm?si d? m�zakir? obyektin? �evrilmi?di. M�zakir?y? geni? formada ba?lan?lmas?nna baxmayaraq, haya yax?n, ona yalmanmaq ist?y?n ?�b? r?isl?ri n�qsan?n birini q?sqana-q?sqana deyirdis?, dig?rinin �st�nd?n ke�m?y? �al???rd? v? yaxud da s?ralad?qlar? n�qsanlar? yenid?n yum?altma?a �al???rd?lar. Bir s�zl? m�dafi? m�vqeyind?n �?x?? edirdil?r.\n M?n h?l?
  �?x?? etm?mi?dim. �?x?? ed?nl?rin ?sil simalar?n? m�?yy?n etm?k ���n, g�z�m onlar da, fikirim is? �z�md? idi. G�z g�r?-g�r? h?r n?sn? �rt-basd?r edilm?y? y�n?lmi?di. G�z g�r?-g�r? bu boyda n�qsanlara yol verilmi?, bu boyda milli ?ovinist �ns�rl?rin t�?yan etdiyi t??kilat?n f?aliyy?ti, he� n? olmam?? kimi d?y?rl?ndirilm?y? y�n?lmi?di. Bax, onda milli m?s?l? bizim ���n xo?a g?lm?y?n hal kimi qar??lana bil?rdi. Ancaq milli m?s?l?ni az?ri t�rkl?rinin �z�n? g�zg�r?si qabardan v? Respublika t??kilat?n?n tabeliyind? olan Xank?ndind? yerl???n bu t??kilat?n ?ovnist v? mill?t�i i?�il?rinin ba? idar?d? �ox sayda t?r?darlar? da �ox sayda tap?l?rd?. Bu da guya biz? tarix?n verilmi? b???riliyimiz v? insanl???m?zdan ir?li g?lirdi. V? n?y? g�r? bu b???rilik, bu insanl?q t?kc? m?n? aid olmal?yd?, bu torpaqda ya?ayan ba?qa birisin? yox.  Bax bunu fikirl???n d? adam ancaq �z i�ind? dan??a bilirdi, �z i�ind? d�?�n? b
 ilirdi, onu da qorxa-qorxa, gizl?y?-gizl?y?, y?ni onda yerin qulaqlar? insan qulaqlar?ndan daha ??kl?nmi? g�r�n�rd�, onda onlar ���n yox, yaln?z  m?nl?r v? bizl?r ���n yasaq olan milli m?s?l? h?r add?mda bizim ���n t?hl�k? obyekti idi. V? tarix?n biz? qar?? y�n?lmi? bu qeyri insani h?r?k?tl?r, t?kc? biz? qar?? qanunil??irdi. Bir anl?q  Bak? v? Xank?ndi aras?ndak?  sovet imperiyas?n?n ?ovinist siyas?ti  m?ni rahat buraxmad???ndan, �z�md?n as?l? olmayaraq aya?a qald?rd? v? s�z�m oldu?unu bildirm?k ���n H?s?n Qas?movi�in �z�n? baxd?m.\n O, - h?, e?idir?m sizi, -dey?r?k, m?n? i?ar? etdi.\n- H?s?n Qas?movi�, -dedim, -burda �?x?? ed?n yolda?lar Xank?ndind? ba? \nvermi? olaylara s?thi yana?d?lar v?  onu m�dafiy? m�vqeyind? durdular. Bu da ondan ir?li g?lir ki, onlar?n Xank?ndin? gedi?l?ri v? ?m?lli-ba?l? qar??lanmalar?, onlar? m?cbur edir ki, bel? bir ciddi m?s?l?nin m�zakir?sin? bu y�nd? d?, qeyri leqal yana?s?nlar. ?slind? Xan
 k?ndind? yerli hay ?halisi il?, yerli v? k�kl� Az?rbaycan ?halisind?n ibar?t i?�il?rin aras?nda �ox b�y�k f?rqli yana?ma m�vcuddu. Bu da Xank?ndind? yerl???n bizim t??kilat?n hay mill?tind?n olan r?hb?rinin apard??? qeyri sa?lam v? milli siyas?tin n?tic?l?ridi. Burda akt material?nda qeyd edilmi? n�qsanlarla, aidiyy?ti ?�b?l?r tan?? olmas?na baxmayaraq, h?min n�qsanlar?n �st�nd?n s�kutla ke�dil?r. Qeyd etm?k laz?md?r ki, b�t�n bunlar ondan x?b?r verir ki, ?�b? r?isl?ri Qreta Nikolayevnan?n qar??s?nda sanki g�zl?ri k�lg?lidi, yaxud da ondan �?kinirl?r. Q?bul olunmu?, Az?rbaycan ssr-nin konstutisiyas?na ?sas?n Az?rbaycan dili �mumxalq dili olmas?na baxmayaraq, Xank?ndind? respublika t??kilat?n?n ist?r �z�nd? v? ist?rs? d? tabe�iliyind? olan t?kilatlar?n �nvan g�st?ricil?ri hay v? rus dill?rind? f?aliyy?t g�st?rir. Muxtar Respublikan?n tabeliyind? olan ?u?a ?�b?sin? ayr? se�gilik h�km s�r�r.  Az?rbaycan ?halisin?n s?x ya?a
 d??? dig?r rayonlar da bir n?f?r d? olsun  az?rbaycanl? kadr  bizim sistem? i?? g�t�r�lm�r. M?n respublikam?za aid Xank?ndi t??kilat?n? bizim t??kilatdan t?crid olmu? formada g�r�r?m. V? b�t�n bunlar?, bayaq �?x?? ed?n ??xsl?r g�r?-g�r?,  hans? x�susiyy?tin? g�r? bu xan?m?n i? f?aliyy?ti q?na?tb?x? hesab edil?r?k,  d?y?rl?ndirilm?lidi?  Ona g�r? d? bu i?? ciddi yana??lmas?n? xahi? edir?m.\n H?s?n Qas?movi� diqq?tl? m?n? qulaq asd? v? ?s?bil??mi? halda yerind?n dik qalxd?:\n- M?n, h?l? bir ne�? il bundan ?vv?l Xank?ndind?  olanda demi?dim\nki, Qreta Nikolayevna bel? i?l?m?k olmaz, bu ?ovnistliyinizd?n, bu mill?t�iliyinizd?n ?l �?kin. M?nim m�avinl?rim v? ?�b? r?isl?rim d? yoxlama materiallar? il? tan?? olmalar?na v? ba? ver?n n�qsanlar?n m�vcudlu?unu g�r?-g�r?, bu ciddi m?s?l?nin m�zakir?sind?n yan ke�m?y? �al???rlar. G�r�n�r Qreta xan?m onlar?n �z�n? h?mi?? yax?? bax?b, onlar da h?r n?sn?nin �st�n� malalay?b, �r
 t�b ke�m?k fikirind?dil?r. ?O, m?n? i?ar? ed?r?k?, - m?n yolda??n fikir v? t?klifl?riyl? tamam ??rik?m v? Qreta Nikolayevnaya ciddi t�hm?t elan edilsin, �� ay vaxt verilm?kl?, t?fti? ?�b?sin? h?val? edilsin ki, bu verilmi? vaxt m�dd?tind? d�n�? yarad?lmazsa, Qreta Nikolayevan?n v? aidiyy?ti i?�il?rin i?d? qal?b, qalmamas? m?s?l?si m�?yy?n edilsin.\n Az da olsa, H?s?n Qas?movi�in bu �?x???ndan v? Qreta Nikolayevnaya veril?n ??idd?tli t�hm?td?n?  bir q?d?r rahatlansam da,he� bu da m?ni qane etmirdi. Ancaq hiss etdim ki, c�zi d? olsa,  bu ya?ad???m torpa?a, bu v?t?n? balaca bir i? g�r? bilmi?dim. ��nki d�nyan?n imperiya vaxt? ?limd?n bundan ba?qa bir n?sn? g?lm?diyini yax?? bilirdim. V? bu bax?mdan i�imd?n a??r bir y�k g�t�r�lm�?d� v? sar???n z?minin tax?l d?rzisi q?d?r y�ng�ll??mi?dim.\n Qreta Nikolayevna tipik haya b?nz?r x?lt? i�ind?, suyu s�z�lm�? formada, t?k-t?nha k��?l?rin biriyl? add?mlay?rd?, g�t�rd�y�
 �� y�n, hay mill?tind?n olan ?�b? r?isl?rind?n birinin evin? t?r?f  ald??? y�n idi. Fikirl??dim ki, bu da bir hiyl?di, hay mill?tind?n olan ?�b? r?isi �nc?d?n gedib v? bilir ki, Qreta onun evind? �ox oldu?undan evi yax??  tan?y?r v? �z� g?lib �?xacaq. �l�� c?zas?n? ?hat? ed?n ?mr? birinci d?rk?nar? m?n qoydu?umdan  �z�m� rahat hiss edirdim.  \n\n VIII\n\n T?fti? ?�b?sinin r?isini haylar ?baqaja? qoymu?dular. Guya  �z�n� apara bilmir, ?alka?d?? v? s. v? i.\n El? bu s?b?bd?n d? t?fti? ?�b?sin? t?z? r?is g?lmi?di, q?r?m?ndan bacar?ql? adama ox?ay?rd?. C�nki h?r i?in yerini-yata??n? bilirdi v? burda alver etm?k, bazarl?q yapmaq, r�?v?t d? yox deyilddi. H?tda pamb?qla ba? k?sm?k d? yox deyildi.\n Yuxar?larda  q?bul edilmi? q?rarlar?n n?tic?sind? pul d�vriyy?si yax??la?m??d?, t?kc? qal?rd? ki, onun �hd?sind?n ?layiqinc?? g?l?s?n, o da bu t?z? r?isin ?lind? ?semi�ka? �?tdamaq kimi bir n?sn?ydi.\n M?n aran rayonlar?n?n birind? ezamiyy?d? i
 dim. ?�b?d?,  Bak?dan kadrlar ?�b?sind?n z?ng edib m?ni axtard?qlar?n? bildirdil?r.    �mumiyy?tl?, ke�mi? ittifaq?n telefon ??b?k?si, ?sas?n sifari?li xarakter da??y?rd?. Avtomat telefon stansiyas? vasit?siyl? kadrlar ?�b?sin? z?ng etdim, salam-k?lamdan sonra, sabah tezd?n v?  t?cili Bak?da olma??m t?l?b edilirdi. S?h?r tezd?n, y?ni i? ba?layan vaxt? �z�m� kadrlar ?�b?sinin ota??na sald?m: - n? m?s?l?di, - dey?, narahat formada maraqland?m.\n- Biz d? bilmirik, sizi H?s?n Qas?movi� ota??nda g�zl?yir, -dey? kadrlar\n?�b?sinin r?isi bildirdi.\n S?drin yan?nda m?nd?n ba?qa t?fti? ?�b?sinin t?z? r?isi d? var idi. O, s?drin qar??s?nda �z�n? m?xsus g�rk?md? sakit v? dinm?z oturmu?du. M?n d? s?drin t?klifin? r??m?n stullar?n birind? ?yl??ib, n? s?b?b? �a??r?lma??m?n n?tic?sini g�zl?dim. Ancaq narahatl??a d?ym?diyini hiss etmi?dim v? bilirdim ki, h?r halda yax?? i? ���n �a??r?lm??d?m. El? olmas?n?, ondan hiss etdim ki, s?dr ?vv?l m?nim �z�m? v
 ? sonra da t?z? r?isin �z�n? xo? ehyamla baxd? v? t?fti? ?�b?sinin r?isin? yenid?n d�n?r?k s�z? ba?lad?:\n- Bu yolda?? y?qin ki, tan?y?rsan, i?l?diyi m�dd?td? �z�n� bacar?q?, \nt?cr�b?li v? savadl? bir kadr kimi g�st?rib, ?lav?d?, qeyd edim ki, sovet ittifaq? kommunist partiyas?n?n �zv�d�.\n Fikirl??dim ki, ax?, s?drin hesabat?n?n m?n? n? aidiyy?ti, ancaq fikirim-zikirim ondayd?. O, aram-aram, fasil? verm?d?n dan???rd?:\n- H?, m?n, onun kimliyi bar?d? ?trafl? m?lumat alm??am, v? g�r�r?m ki, \nl?yaq?tli v? bacar?ql? kadrd?r.\n Bu yerd? m?nim yad?ma d�?d� ki, t?fti? ?�b?sinin t?z? r?isini yax?ndan tan?y?ram, h?tda k�hn? r?isimin i?tirak? il? onunla nahar da etmi?ik. Eyni zamanda k�hn? r?isim t?r?find?n  bu adam?n yazd???, hans?sa, bir ?lyazmas?n?n eyb?c?r d�z?li?l?ri d?, bu d�z?li?l?rd?n �t�r� bir ne�? d?f?, onun yan?na g?lm?si d? yad?ma d�?d�.\n Bu fikirl?rin duman?nda aran? da?a, da?? arana da??d???m anda, H?s?n Qas?movi� y
 �ks?k v? r?hb?r tonunda m?n? t?r?f d�n?r?k, nitqini davam etdirdi:\n- M?n, t?fti? ?�b?sinin t?z? r?isi il? s?n g?lm?mi?d?n ?vv?l, s?nin bar?nd? \nbir xeyli fikir m�badil?si emi?ik v? bu t?klif d? m?nim ??xsi t?klifim olub. Q?raq bucaqdan t?klifl?r �ox idi, m?n is? bir t?klifin �z?rind? dayanas? oldum v? t?fti?in t?z? r?isi il? d? bu bar?d? raz?l??a g?l?si olduq. Bu t?klifin �z?rind? dayanma??m is? el? bel? deyil, bir s?ra i?l?rd? s?ni s?naqdan ke�irmi??m v? his etmi??m ki, t?miz adams?n?z, sistemin t?snifini he� kim? vermirsiniz v? sistemin m�dafi?sinin �hd?sind?n layiqinc? g?l? bilirsiniz, tamahs?z adams?n?z, insanlara qar?? davran???n?z m�sb?tdi, ��nki biz ?hali il? i?l?yirik, onlara qar?? qay?? bizim ?sas silah?m?z olmal?d?r.    B�t�n bunlar? n?z?r? al?b, sizi t?fti? ?�b?sinin r?isin? m�avin t?yin etm?k ist?yir?m, t?klifin n?dir.\n M?nim bu m?s?l?d? t?r?dd�t etm?yim, yaxud etm?m?yim n? ver?rdi ki, ax?, fikirl??dim v?, -m?sl?h?t sizindir, -dey
 ?r?k, yeni g?lmi? r?isin �z�n? baxd?m.\n O, daxili telefonu g�t�r�b kadrlar ?�b?sinin r?isin?, - Niyazovun ??xsi i?ini g?tirin, g?lin yan?ma, -dey?r?k telfonun d?st?yini g�t�rd�y� yer? d? qoydu.\n Kadrlar ?�b?sinin r?isi, ucaboylu, sar???n, sar???n da b??lar? olan orta ya?l? ki?i ?lind? d? m?nim ??xsi i?im i�?ri girdi v? h?min s?n?dl?ri s?drin stolunun �st�n? qoydu. \nS?dr m?nim ??xsi i?imi diqq?tl? v?r?ql?yib, kadrlar ?�b?sinin r?isin? i?ar?yl?, m?ni g�st?r?rk, -bu g�nd?n etibar?n bu yolda?? t?fti? ?�b?sin? r?is m�avini t?yin edir?m v? ?mrl??dirib t?sdiq ���n t?qdim edin, -dedi.\n Sovet t?hl�k?sizlik sisteminin k??fiyyat�?lar?na ox?ayan bu sar???n ki?i, - ba? �st? H?s?n Qas?movi�, -deyib, otaqdan �?xd?.\n M?n? g�st?rdiyi etimada g�r? H?s?n Qas?movi�? t???kk�r�m� bildirib, otaqdan �?xd?m v? t?fti? ?�b?sin? qay?d?b, stulumda ?yl??dim. I? yolda?lar?m bir az ?�bh?li-?�bh?li m?n? baxd?lar, m?n is? he� bir n?sn? 
 olmam?? kimi, t?fti?i i?inin apar?lmas?na aid t?limat qaydalar?n? v?r?ql?yib oxusam da, fikirim ayr? yerd? idi. Bir az ke�m?di ki, t?fti? ?�b?sinin t?z? t?yin edilmi? r?isi d? ota?a daxil oldu, c?ld v? ??stli ad?mlarla ir?lil?yib �z yerind? oturdu. Bel? fikirl??m?k olard? ki, v?zif? adamlar?n?n ham?s?nda bu x?st?lik ?n?n?vi xarakter da??y?rd?. B?z?n �zl?rini ?trafdan t?crid olmu? kimi v? yaxud t?k?bb�rl� g�st?r?n, �z�n? s??mayan, h?tda bel? al�aq da?lar? yaratm?? kimi, t?sir ba???layan r?isl?r? d? rast g?lm?k olard?. Hiss etm?k yerin? d�?�rd� ki, bu t?z? g?lmi? r?isin d? iddialar? balaca deyildi, �z�nd?n b�y�k idi. Bunu onun davran???na ?sas?n d? m�?yy?n etm?k olard?.\n T?z? r?is, ani bir s�kutdan sonra �z�n� t?fti? ?�b?sinin t?fti?�il?rin? tutub,\n - bilirsiniz, s?drimiz H?s?n Qas?movi� m?ni yan?na �a??rm??d?, bir xeyli s�hb?t etdik v?  m�avin m?s?l?sind? h?r ikimizin fikirl?rimiz v? t?kilifl?rimiz �st-�st? d�?d�, art?
 q bu g�nd?n etibar?n yolda? Niyazov  m?nim m�avinimdir, t?limat qaydalar?na aid n? sual?n?z olsa onunla h?ll ed? bil?rsiniz, i? bar?d? m?s?l?l?ri m?niml? b�l�?d�r?c?ksiniz.\n Ir?li �?kilm?yim? g�r? i�imd? sevinc v? q�rur hissi ke�irs?m d?, h?lli m?nmlik olan m?s?l?l?rin h?ll edilm?sind? m�st?qil olmama??m?n a?r?lar?n? indid?n anlay?rd?m.   Onu da yax?? anlay?rd?m ki, bu ir?li �?kilm?yim d? r?mzi xarakter da??y?rd?. ��nki ist?r s?dr v? ist?rs? d? ?�b? r?isi yax?? bilirdi ki, kimi hans? v?zif?y? t?yin etm?k  g?r?klidir. Demaqoq olmas?n, ortada olan? orda-burda dan??mas?n, tamahkir olmas?n, ortadak? g?lirl?rd? g�z� olmas?n, dindir?nd? dinsin, dindirm?y?nd? d? lal-dinm?z yerind? otursun. Dem?li m?nim robotdu?um daha m?sl?h?tliymi? ki, m?ni d? ona m�avin t?yin etmi?dil?r. ?g?r ke�mi? r?isin yerin? ?bacar?ql?? v? ?qurd kimi? da??d?c? bir adam g?tirmi?dil?rs?, onda ona m�avin el? adam olmal?yd? ki, onun i?in? burnunu soxmas?n, tikans?z olsun, onun ci
 ddi �at??mamazl?qlar? olsa da bel?, g�z�n� yumsun. Yoxsa ke�mi? m�avin, M�rs?l kimi, burnunu tez-tez, n?in ki, r?isin i?-g�c�n? soxurdu, h?tda ne�? i? yolda??n? orqan i?�il?rinin ?li il? l?k?l?yib s?radan  �?xartm??d?.  N?di-n?di, yoxlama zaman? t?fti?�i, filan s?n?dd? bu n�qsan? g�r? bil?rdi v? yaxud g�rm?y? d? bil?rdi v? h?r n?sn?y? ehtimal g�z�yl? baxan t?fti? ?�b?sinin r?is m�avini M�rs?l, bu minvalla �oxlar?n?n dal?ndan d?ydirmi?di, �z� d? h?r?nin belind? bir iz buraxa-buraxa. Bax onda m?nim yad?ma bank S�hb?tin qarda?? Abdulla m�?llim d�?m�?d�. Ehtimal n?z?riyy?si m�?llimi. O, adi misallarla bu f?nnin maraql? t?r?fl?rinin d? ehtimal oldu?unu izah ed?-ed?, bizi ehtimallara k�kl?y?rdi. Ancaq Abdulla m�?llimin ehtimal?ndan  f?rqli olaraq M�rs?lin ehtimal? qorxu hissind?n yaranm??  ehtimallardan biriydi, y?ni ?g?r orqan i?�il?rind?n biri onun �st�n? q??q?rsayd? ki, bu s?n?d d? bu n�qsan? g�rm?k olard?, ya 
 yox, o da a??na-qaras?na fikir verm?d?n dey?c?kdi ki, ?b?li yolda? hakim g�rm?kd? olar, g�rm?m?k d??. Bu da o s?n?dl?ri ara?d?ran v? M�rs?ll? birg? f?aliyy?t g�st?r?n i?�il?r? baha ba?a g?l?c?kdi. Bax, yolda?l?qda M�rs?l, yolda?l??? yox, �z�n�n can qorxusunu m�dafi? ed?c?kdi. V? onun bu can qorxusu is? onlara baha ba?a g?l?c?kdi, ?m?k kitab�alr? korlanacaqd?, i? yerl?rini itir?c?kdi, t?z? i? yerl?rin? g�t�r�lm?y?c?kdi v? s.\n Fikir m?ni aranl?-da?l? g�t�rd�y�nd?n i? yolda?lar?m?n nahar fasil?sin? getm?l?rini v? nahar fasil?sinin olma??n? bel? unutmu?dum.  Hiss etdiyim o olmu?du ki, otaqda r?isl? m?n ba?a-ba?a qalm??d?m. B?lk? d?  r?is dem?s?ydi ki, nahar fasil?sin? niy? getm?mis?n, el? ?limd? olan bu t?limat b�t�n g�n�m� b�sb�t�n ?limd?n alacaqd?. O, f�rs?td?n istifad? edib, m?niml? i?in gedi?at?n?, rayon ?�b?l?rinin hans? yax??, hans? pis i?l?m?sini v? s. ayd?nla?d?rmaq ist?di.\n O, divardak? mar?urut x?rit?sin? yax?nla?d?, sa
 ? ?lind?ki �ubu?u x?rit?nin �st�nd? g?zdirdi. Bir-iki ya?l? zonan? m?n? g�st?rdi v? soru?du: -bu zonalar nec?dir, olmusanm? bu zonalarda, -dedi.\n Onun n? dem?k ist?diyini alm??d?m, el? ona g�r? d?, -yox, -dedim.\n O, ?lind?ki �ubu?u x?rit?d? g?zdir?-g?zdir?, - e?itmi??m ki, bu zonalar yax?? pul ver?n zonalard?. S?ni g�nd?r?c?m bu zonalara, ��d?n birin?.\n M?n o yax?? zonalar? ba?a d�?s?m d? he� birind? olmam??d?m v? el? bu s?b?bd?n d? bu ��d?n biri m?s?l?si m?ni ya bil?r?kd?n, ya da bilm?y?r?kd?n almad? v? soru?dum, - r?is bu ��d?n birini ba?a d�?m?dim, bu n? dey?n n?sn?dir?\n O, bic-bic g�l�ms?di v? k��?y? baxan p?nc?r?y? t?r?f ba??n? qovzaya-qovzaya, - s?n indiy? kimi i?l?yirs?n, bilmirs?n ��d?n biri n?di? Y?ni s?ni ?n yax?? zonalara g�nd?r?c?m, ald???n r�?v?tin ikisi s?nin olacaq, biri is? m?nim.\n M?n fikirl??m?d?n k?s? cavab verdim, - r?is m?ni ??n pis? rayonlara g�nd?r, - dedim, ��nki ??n pis? rayonlar, kas?b, y?ni g?liri 
 a?a?? olan v? bunun m�qabilind? d? pul verm?y? imkanlar? olmayan rayonlar idi.\n O,  bic-bic �z�m? baxaraq, -m?nim ���n f?rqi yodu, m?n s?nin ���n deyirdim. Fikirl??dim ki, s?nin d? ail?n, u?a??n var, -dedi.\n M?n k?s? cavab verdim, - a?r?maz ba??m? niy? a?r?d?m ki, -dey?, fikirimi q?til??dirdim v? unutmu? oldu?um nahar fasil?sin? yolland?m.\n El? h?min g�nd?n d? m?nim taleyim? bir a??rl?q d�?d�, ancaq m?n buna pe?man deyildim. T?kc? pe?man�?l?q ondan ibar?t idi ki, r?is art?q m?ni incitm?y? ba?lam??d?. Bu incitm?yin s?b?bl?ri m�xt?lifdi, adam-adam? ist?m?s? hans? yolla ist?s? bezdir? bil?r, can?n? bo?az?na y??a bil?r. O, art?q bu minvalla da ba?lam??d? m?ni tez-tez, dabanbasd? ezamiyy?l?r? g�nd?rm?y?, aran v? da? rayonlar?na m�vs�md?n as?l? olaraq, qrafik tutulmas?na baxmayaraq, q???n q?? vaxt? da? rayonlar?na, istinin isti vaxt? is? aran rayonlar?na g�nd?rm?y?. O q?d?r tez-tez g�nd?rirdi ki, bir g�n qap?n? d�y?nd? b�y�k q?z?m qap?n?n g
 �zl�y�nd?n bax?b anas?na demi?di ki,? hans?sa ?mi? var qap?n?n �n�nd?, anas? da qap?n? a�?b, -q?z?m ?mi deyil, atand?, -demi?di.\n O q?d?r bezmi?dim, �al???rd?m ki, i? yerimi d?yi?im, r?isim bu i?d? d? m?n? mane�ilik edirdi. Bunlar? t?fti? ?�b?sin? daxil olan telefon z?ngl?rind?n hiss edirdim, ��nki otaqda ??h?r telefonu bir d?n? idi o da r?isin stolunun �st�nd? idi. B�t�n bunlar? telefon z?ngl?rin? ?ifahi v? m?xvi veril?n m?lumatlardan hiss edirdim. Eyni zamanda bunu m?n, t?z? i? yerl?rind? ilk ?vv?l, m?ni iki ?lli qar??lay?b, n�vb?ti  g�n is?? m�mk�n olmad?? v? yaxud ?siz? aid bizd? i? olmad????n? bildirirdil?r. Ayd?n olurdu ki, r?is m?ni ?m?lli-ba?l? m?nfi xarakteristikas? il? h?r n?sn?d?n uzaqla?d?r?rm??. \n\n IX\n\nYen? d?, aran b�lg?l?rind?n birind? ezamiyy?td? idim. Bak?dan z?ng etmi?dil?r. Yen? H?s?n Qas?movi�in m?ni axtard???n? x?b?rdar etdil?r. Ad?ti �zr?, ezamiyy?d?n qay?td???m g�n�n s?h?ri i?? �?xd?m. \nBirba?a s?drin yan
 ?na getdim. H?s?n Qas?movi� �z�n� m?n? tutaraq: - bilirsiniz,? t??kilatlarla i?l?y?n ?�b??nin r?isini i?d?n azad etdim, i?l?y?n deyildi. ?�b?nin i?i getmirdi, m�asir texnoloji prosesl?rl? ayaqla?a bilmirdi. Nazirlik v? ba? idar?l?rl?, el?c? d? yerl?rd? aidiyy?ti struktur b�lm?l?ri il? apar?lan i?l?r yar?tmazd?. ?limizd? r?hb?r tuta bildiyimiz bir �ox s?n?dl?r olmas?na baxmayaraq, yararlana bilm?dil?r v? bu imkanlardan istifad? ed? bilm?dil?r. Halbu ki, Az?rbaycan m?rk?zi komit?sinin,  bizim t??kilat?n inki?af?na y�n?ldilmi?, b�ronun q?rar? var. Ssri nazirl?r sovetinin, Az?rbaycan nazirl?r sovetinin, ssri d�vl?t bank?n?n, el?c? d? bizim Moskvadak? ba? idar?mizl? ssrinin b�t�n nazirlikl?ri v? ba? idar?l?ri il? birg? g�st?ri?l?ri m�vcuddur, �ox t??ss�f ki, ad? �?kil?n ?�b? yerind? say?r v? bu m?s?l?l?rin h?llini t??kil ed? bilmirl?r. Bizim m?qs?dimiz ?hali aras?nda  m?d?ni xidm?t sferas?n? genil?ndirm?k, y�ks?k s?viyy?d? xidm?t i?i yaratmaqd?r.
  M?n ne�? g�nd�r ki, bu bar?d? g�t�r-qoy etmi??m. D�zd�, bir ne�? n?f?r �st�m? minn?t�i sald?lar, yuxar?lardan z?ng etdirdil?r, o ?�b? onlar?n yeri deyil, o ?�b?d?, g?r?k ?lini �?rmalay?b, ?m?lli-ba?l? i?l?y?s?n. Odur ki, o ?�b?nin aya?a qald?r?lmas?n? s?nin i? qabiliyy?tinl?, bacar???nla v? savad?nla ba?l? oldu?unu fikirl??dim. H?r  hans? bir �?tinliyin  olsa, o m?s?l?l?rin h?llind? siz? k�m?k  edil?c?kdir. ??xs?n m?n �z�m o ?�b?nin i?ini n?zar?t? g�t�rm�??m, h?r hans? nazirlik v? yaxud yuxar? dair?d?n mane�ilik olarsa, m?ni m?lumatland?rarsan v? vaxt?nda onlar?n qar??s?n? alar?q. Odur ki, s?n?dl?rini haz?rla Moskvaya getm?lis?n, ��nki ?�b? r?isl?ri Moskvan?n ?tat vahidl?ridi. ?�b? r?isl?rinin i?? g�t�r�lm?si onlar?n q?bul etdiyi q?rara ?sas?n h?yata ke�irilir. M?s?l? art?q onlarla raz?la?d?r?l?b v? s?nin h?min ?�b?y? r?is t?yin edilm?yini  m?sl?h?t g�rm�??m. \n -H?s?n Qas?movi? h?r halda o ?�b?d? insititutdan 
 t?yinatla g?lmi? bacar?ql?, savadl? v? perspektivli g?nc kadrlar da olmal?d? ax?, -dedim.\n - El? onlar?n i?i m?ni qane ets?ydi s?h?rd?n s?ninl? bir quranl?q dan???q aparmazd?m. S?h?r getm?lis?n. Yax?nla? kadrlar ?�b?sin?, hans? s?n?d laz?msa,  haz?r el? v? Bak?-Moskva  reysin?, s?h?r u�u?u ���n indid?n bilet al. Ssri �zr? ba? idar?nin s?dri x?st?dir, i?? h?l?lik �?xm?r, s?ni birinci m�avin q?bul ed?c?k, �z�n� savads?z g�st?rm?, s?n? veril?n suallar i?imizin sah?l?rin? aid olacaq, t?l?sm?, ?vv?lc?d?n fikirl??, sonra cavabland?r.  \n T???kk�r edib otaqdan �?xd?m. Kadrlar ?�b?sin? yax?nla?d?m, qap?n? a�?rd?m ki, ke�mi? ittifaq?n t?hl�k?sizilik sisteminin polkovnikin? ox?ayan kadrlar �zr? r?is m?niml? qar??la?d? v? kobud sur?td?, -s?n d�n?nd?n burda olmal?yd?n, niy? gecikmisiniz, - dey? m?ni m?z?mm?tl?di.\n I?? ke�m?dimmi, �z-�z�m? gleyl?n?r?k, -ax?, siz m?n? d�n?n x?b?r etmisiniz, m?n d? d�n?n qay?td?m v? bu g�nd? i?d? oldum, h?m d
 ? el? ezamiyy? m�d?ti d? d�n?n qurtard?. El? s?drin yan?ndan �?x?ram, bilm?liydim ki, s?dr m?ni niy? axtar?b, bel? ba?a d�?m�?d�m ki, m?s?l? yoxlamayla, n? is? bir �at??mayan bir n?sn?yl? ba?l?d?. Ayd?n oldu ki, o, m?ni ba?qa bir m?s?l? il? yan?na �a??r?bd?.\n O, - yax??-yax??, ke� otur, g?lir?m, - dey?r?k, otaqdan �?xd?.\n Ota?a daxil oldum v? onun m�avini zarafat�?l oldu?undan bir az m?z? q?ld?q. M�avin Moskvada oldu?undan, bizim ordak? ba? idar?mizd? tan??? bir xan?mla s?rg�z??tl?rind?n dan??d?  v? salam?n? ona �ad?rma??m? xahi? etdi. M?n d? eyni ?hval-ruhiyy?d? onu arxay?n sald?m. Kadrlar?n ?�b? r?isi is? ?lind? apard??? qovluqla da geri qay?td?. M?n laz?m? s?n?dl?ri doldurdum. T?kc? partiya t??kilat?n?n xasiyy?nam?si qalm??d?. O da yaz?lm??d?, ?�b? r?isi doda??n?n alt?nda m?z?ldaya-m?z?ldya m?n? uzadaraq: - t?cili imzalat, g?tir m�h�r vuraq,- dedi.\n Otaqdan �?xd?m, partiya t??kilat katibinin ota??na daxil olan da, tan?d???m biriyl? hans?
 sa m?s?l?ni m�zakir? edirdil?r, m?ni g�r?n kimi, - i?in t?cilidi? - dey?, m?n? diqq?t k?sdi.\n- B?li, dedim, partiya t??kilat?n?n xasiyy?tnam?si yaz?l?b, ancaq \nimzalanmay?b, t?cili imzalanmal?d? v? m�h�r vurulmal?d?, s?h?r Moskvaya u�mal?yam, t?sdiq ���n.  \n O, - c?ld ol, c?ld ol, i?imiz �oxdu, -deyib, xasiyy?tnam?ni �z d?sti-x?ttil? imzalad?\n M?n otaqdan �?xd?m v? t?l?sik, yenid?n kadrlar ?�b?sin? yax?nla?d?m, s?n?d m�h�rl?ndi, indi yubanmadan  hava yollar?n?n bilet kassas?na t?l?sm?yim qal?rd?, h?l? bazara da d?ym?liydim. Laz?m? s?n?dl?r qoltu?umda, birba?a bilet kassas?na yolland?m, h?l? g�norta�st�n? xeyli zaman var idi. �st?lik bazara da vaxt qal?rd?, ?libo? at?la-at?la getm?yin d? l?zz?ti yox idi. Bilirdim ki, moskval?lar Az?rbaycan?n nar?n? v? konyak?n? �ox sevirl?r. \n Art?q bilet  kassas?nda idim v? xo?b?xtlikd?n adam az idi,  bilet d? var idi. Bilet ald?m v? s?n?dl?rin yan?na qoydum, fikirl??dim ki, ev? gets?m gec olacaq, yax??s? b
 udur birba?a bazara gedim. Taksil?r d? m?ni g�rm�?d�, biri d? g�z? d?ymirdi, yan?mda k�hn?-salxaq, nuh ?yyam?ndan qalma bir moskvi� dayand?, mindim v? s�r�c�d?n xahi? etdim ki, t?z? bazara s�rs�n v? be?-on d?qiq? d? m?ni g�zl?sin. Onsuz da bazardan nardan ba?qa bir n?sn? almal? deyildim. Ald???m be?-on kilo narla tez-t?l?sik ma??na qay?td?m. Qal?rd? konyak m?s?l?si, konyak alsayd?m, pul �?tinliyim olacaqd?, almasayd?m da,  nar h?diyy?l?rimi konyaks?z verm?yim �?tin olacaqd?. F�rs?td?n istifad? edib, ??rab zavodunun yan?nda f?aliyy?t g�st?r?n ?�b?nin m�dirin? z?ng etdim. H?r�?nd ki, onun m?nd?n xo?u g?lmirdi. ��nki i?d? buraxd??? n�qsanlara g�r? hay mill?tind?n v? apar?c? i?�il?rind?n birini i?d?n �?xartd?rmaq ist?yirdim, el? h?min ?�b?nin m�dirinin adam? oldu?una g�r?, yalvar-yaxardan sonra t�hm?tl? kifay?tl?nmi?dik.\n Z?ng ed?r?k, ?�b? m�dirini ad?yla �a??rd?m, telofonun o ba??ndan, -b?li, b?li e�idir?m, sizi, - dey?
 r?k, m?ni dinl?m?y? �al??d?, �z�m� t?qdim ed?r?k, - siz? i?im d�?�b, -dedim.\n Sakit-sakit, asta v? aramla, - e?idir?m, - dedi.\n -m?n? t?cili 20 ?�?? t?miz zavod m?hsulu olan konyak laz?md?r,- dedim.\n Telefonun o biri ba??ndan, -n? vaxta?\n -ax?am �st�n? kimi, ��nki s?h?r reysi il? Moskvaya u�mal?yam.\n -bir g�n ?vv?l dey?ydin, - dey?, m?z?ldand?.\n Ona  izah etm?y? �al??d?m, - m?n �z�m d? he� bilm?mi??m, ezamiyy?td? idim, d�n?n x?b?r edibl?r, bu g�n d? g?lib s?n?dl?ri yan-y�r? etmi??m, ma?azaya getm?y? vaxt olsa da, onlar?n konyaklar?na bel ba?laya bilmir?m, h?r-halda onlar sizin xidm?tinizd?dirl?r. Bilir?m ki, siz? keyfiyy?tli m?hsul ver?rl?r. Bizim Moskvadak? ba? idar?mizin bir ne�? i?�isin? h?diyy? etm?k ist?dim, -dey?, onu ba?a salma?a �al??d?m.\nBir saatdan sonra z?ng etm?yimi bidirdi. Bir saat �ox gec g?lib ke�di, ??rin qar??mas?na az qal?rd?. Bu, m?nd?n as?l? bir n?sn? deyildi, zaman dar?xd?r?c? idi.\nTelefon d?sd?yini g�
 t�r�b, bir d? z?ng etdim, katib?siydi, be? d?qiq?d?n sonra z?ng etm?yimi bildirdi. Be? d?qiq?d?n sonra yenid?n z?ng etdim, indi d? dedil?r ki, m�dir harasa �?x?b. Bir az h�vs?l?mi basd?m. Ba?qa n? etm?liydim ki, o q?d?r cibimd? pul olsayd?, m?n bel? har?n adamlara a??z a�ard?mm?, dey? �z-�z�m? var-g?l etdim. Yenid?n z?ng etm?kd?n ba?qa �ar?m qalm?rd?, telefonun d?sd?yini g�t�rd�m, k�n�ls�z-k�n�ls�z v? a??r-a??r n�mr?ni nec? y??m??d?msa, he� �z�md? hiss etm?mi?dim. Bu d?f? katib? m?ni �ox g�zl?tm?di, -indi qo?uram, dan???n,\n -dedi.\n Telefonun o biri ba??ndan m�dirin s?si g?ldi, - dediyin n?sn?l?r haz?rd?, hara g�nd?rim, -dedi.\n -i?d? g�zl?yir?m, bura g�nd?rs?n yax?? olar, el? buradan da ev? g�t�rr?m v? qavqarram, - dedim.\n Bu i? d? bel? d�z?ldiyind?n ba?qa bir i?im qalmam??d?, ax?amdan h?r n?sn?ni d�zd�m qo?dum v? s?brsizlikl? s?h?rin a�?lmas?n? g�zl?dim. Bilirdim ki, tezd?n bir q?d?r taksi �at??mamazl??? o
 lur, bir az ona g�r? narahat idim. \n S?h?r o ba?dan durmu?dum. �z�m� tara? etdim, b?n�v??yi k�yn?yimin yaxas?na ona uy?un qalstuk tapd?m, qaraya �alan kostumumu geyindim, ?limd?ki, �ox da iri olmayan y�k�ml? taksi dayanaca??na add?mlad?m. Taksi dayanaca??n?n da ad? var idi, ?ks?r vaxtlarda orda ara taksil?ri dayan?rd?, indi he� onlar da yox idi. G�zl?y?si oldum, ancaq hava liman?na gecikm?yim? g�r? dar?x?rd?m. Anca el? bil hiss edir?mmi? kimi, hardansa, k�hn? bir g�y volqa peyda oldu, qaz 24-l?r moda mins? d?, bu k�hn? qaz 21-l?r �z yerini h?l? bu t?z? ma??nlara verm?mi?di v? tank kimi, ora-bura ?�t�y�rd�. Ma??n yan?mda durma??yla, sor?u-suala tutmadan minm?yim bir oldu. ��nki �nvan? ?vv?l dem?kd?n �?kindim, fikirl??dim ki, bird?n uzaq yola getm?kd?n ehtiyat ed?r. S�r�c� o q?d?r d? pis adama ox?am?rd?, min?nd?n sonra ged?c?yim �nvan? bildirdim. \n Hava liman?na �atan kimi, tez qeydiyyat m?s?l?sini h?ll etdim, y�kl?rimin 
 d? baqajda yox, ?limd? aparaca??m? bildirdim v?  m�?yy?n s?b?b? g�r? ?limd? aparma??n icaz?sini d? ald?m. \n A??r y�kl? birlikd? s?rni?inl?r? qar??m??d?m, g�zl?m? zal?nda g�zl?m?yimiz uzun �?km?di, art?q daxili avtobusa minik ba?lam??d?. Bir t?h?r avtobusda �z yerimi tutdum v? Moskvaya y�n alas? u�a??n yan?nda idik. Biletim ikinci salona idi, ?vv?l ?limd?ki y�k� oturaca??n alt?nda, �?tinlikl? d? olsa yerl??dirdim. B?l?d�inin x?b?rdarl??? g?lm?d?n ehtiyat k?m?rini belim? vuraraq, yerimi m�hk?ml?ndirdim. ?slind? k?m?rin uclar?n? bir-birinin �st�n? qoymu?dum, �z�m� �idarlamaqdan z?hl?m gedirdi v? bel?lik?, sanki b?l?d�inin g�z�nd?n p?rd? asm??d?m.\n U�a??n m�h?rrikinin s?si g?ls? d?, h?l? yerd?ydik, bu, u�a??n s?maya qalxmam??dan ?vv?l yar?m saatl?q haz?rl?q v? nasas?zl???n?n saf-��r�k edilm?sin? ayr?lm?? zaman vaxt?yd?. Laz?m olan vaxt m�d?tind?n sonra, mavi r?ngd? pilot paltar? geyinmi? b?l?d�i peyda oldu, mar?urutu, �at
 as? zaman vaxt?n? elan etdi, ancaq k?m?rl?rin bel? b?rkidilm?sini d? unutmad?. U�aqdak? yerim xo?b?xtlikd?n, p?nc?r?nin yan?na d�?m�?d�, getdikc? yerd?n uzaqla??rd?q, s?man?n yuxar? qat? buludlarlanan ?h?t? edilmi?di. Art?q s?mayla buludlar?n aras?ndayd?q, buludlardan a?a?? he� n? g�r�nm�rd�. Sanki d?niz dal?alar? �st�nd? g?mimiz �z qanadlar?n? g?rib arxay?n v? y�ks?k s�r?tl? ir?lil?yirdi. Yan?mdak? oturacaqda oturan xarici adam t?siri ba???lad?, ?vv?l koreyal? kimi t?s?vv�r etdim, ancaq yapon oldu?u m?lum oldu. T?sad�f�, �z�ml? g�t�rd�y�m Yapon klassikl?rind?n Az?rbaycan dilin? t?rc�m? edilmi? ?eirl?r kitab? d�?d�. Tez d? �?xard?b ona g�st?rdim, Az?rbaycan dilini bilm?s? d?,  Yapon xalq?n?n klassik ?airl?rini kitabda verilmi?,  ??kill?rind?n tan?d? v? rus dilind? h?r biri haqq?nda maraql? m?lumat verdi. M?n yapon dilini bilm?s?m d? onun ?lind?ki yapon dilind? olan kitab m?ni maraqland?rd?,  ist?dim  m?nd? olan kitab? onun kita
 b?yla d?yi?m?k yolu il? ki�ik v? m?n?vi bir bazarl?q yapam. Yapon h?mkar?m buna raz? olmad? v? onda �z sad?l�hvl�y�m�z? ac???m tutdu v? yaponlar?n bu m�r?kk?b xarakterin? h?s?d apard?m. Ba??m?z s�hb?t? qar??d???ndan, b?l?d�inin, - k?m?rl?rinizi b?rkidin, be? d?qiq?dn sonra ?Domededova? hava liman?na enirik, -dem?si, m?ni yapon h?mkar?mla ?irin s�hb?td?n ay?rd?.\n Art?q u�a??m?z hava liman?nda yer? enmi?di, m?nim baqaj?m �z�md? oldu?una g�r? baqaj g�zl?m?y? vaxt itirm?y?c?kdim v? taksi dayanaca??na t?l?sdim. Cavan s�r�c�l?rd?n g�z�m su i�mirdi, ona g�r? d? ya?l? bir s�r�c�n�n taksisin? ?yl??dim, ged?c?yim �nvan? dedim. Yol boyu Moskvan?n pay?z f?slinin ?srar?ngiz g�z?lliyin? varm??d?m v? bu g�z?lliyin i�ind? bir u?aql???m gizl?nib qalm??d? sanki. Qal?n ?am a?aclar?n?n, �inar a?aclar?n?n aras?ndan uzanan yolda ?�t�y?n taksinin p?nc?r?sind?n g�c�m seyr etm?y? �at?rd? v? m?n d? bu f�rs?ti ?ld?n vermirdim. Bu an ya
 ?l? s�r�c�n�n sual? m?ni diksindirdi:\n -s?nok otkuda?\n - iz Baku.\n - oy, va?e Qeydar Aliyevi� koqo-nibud v?z?vaet sebya, oni svoim semyam pro??ayut.\n - a po�emu tak, - dey?, soru?dum,\n - oni boyitsa, potomu �to Qeydar Aliyevi� o�en stroq?y �elovek i o�en trebovatelnoy.\n M?n bu s�hb?td?n q�rur hissi ke�ir?r?k s�r�c�y?: - da, on o�en stroq?y i  velikolepniy �elovek, -dey?r?k, H. ?liyevin Az?rbaycan M?rk?zi Komit?sinin birinci katibi i?l?diyi m�dd?td? g�rd�y� i?l?rd?n dan??d?m.\n Me?? a?acla?n?n yarpaqlar? q?z?l? r?ng? �al?rd?, m?n bu �alarlar? u?aql???mda G?d?b?yin Q?xmalaxl? yayla??nda, ?vanovka k?ndinin �st yamaclar?ndak? me??l?rd?, Tovuzun Qarada?-B�y�k Q??laq istiqam?tind?ki me??l?rd? �ox ?ahidi olmu?dum. K?ndimizd?ki m?hl?mizin q?ra??ndak? k�knar a?aclar?n?n pay?z havas? is? h?mi?? m?niml?ydi. \n �atd???m �nvanda s�r�c�n�n haqq-hesab?n? ��r�d�b, sa?olla?d?m v? gec?ni pis ke�irm?dim, h?r n?sn? 
 �r?yimc? idi v? rahatland?m, ancaq bir narahatl???m var idi. Bu h?diyy?l?ri b�l�b, ayr?-ayr? torbalara qoymal?yd?m. Onda  indiki g�r�nm?y?n torba, �anta bollu?u yox idi, ancaq ka??z torbalardan istifad? ed? bil?rdim. Yax?? ki, orda i?l?y?n Valeri Yuryevi�i tan?y?rd?m v? narahat�?l??a bir ?sas olmad???n? fikirl??dim.\n S?h?r erk?n oyand?m, h?l? dan �z� yenic?  qara ilm?l?rini a?  ilm?l?rd?n saf-��r�k edib, aram-aram d?nl?yirdi. Havada ya??? iyisi yox idi, hiss olunurdu ki, pay?z g�n??i �z sar???n sa�aqlar?n? Moskvan?n k�knar me??l?rin? s?rgi ed?c?k. Bu ab-havan?n alt?nda qald???m evin eyvan?na �?xaraq, evin qar??s?ndak? park?n yarpaqlar? q?z?la �alan a?aclar?n?n ?trini, ?limd?ki siqaretl? birg? ciy?rl?rim? �?k?si oldum. Havan?n tez i??qlanmas?n? ist?yirdim, ancaq bu qara ilm?l?r, ilahi q�vv? t?r?find?n nec? toxunmu?dusa, el?c? d? qalm??d?, h?rd?n bir bir ilm? boyu a?ar?rd?. I�?ri ke�ib �ay-��r?k i?in? baxd?m, ?sas?n s?h?r yem?yimin 
 xobbisi bir tik? pendir, bir tik? d? ya? olmas?n? fikirl??ib, soyuducudan g�t�rd�m v? ruslar demi? ?zavtrak?m?? i?tahla yerin? yetirdim. Yem?kd?n sonra eyvana bir d? �?xd?m, bir siqaret yand?rd?m, art?q adamlar?n yava?-yava? evd?n �?x?b i??-g�c? ged?nl?rini seyr etm?y? ba?lad?m, art?q g?tirdiyim sovqatlar? g�t�r�b d�?m?yin vaxt? oldu?unu anlad?m. Qay?d?b, yenid?n nar v? konyak qutular?n? g�t�rd�m v? sakitc? evin dalan?na endim. Ev sahibl?ri h?l? ?irin yuxuda idi. Taksi dayanaca?? el? d? uzaq deyildi, hardasa, yuz, y�z ?lli metr olard?, ancaq ?limd?ki y�k d? y�ng�l deyildi, bu m?saf? ���n a??r oldu?unu hiss etdim. Ba?qa c�r yolu da yox idi. Burda taksi dayanaca??nda ad?t?n taksil?r durmurdu, bo? g?lib dayana bil?rdi v? ?g?r s?rni?in yoxsa, �t�b ke�m?liydi. O q?d?r d? vaxt ke�m?di g�zl?m?y?, durdu?um s?kiy? bir bo? taksi yan ald? v? tez-t?l?sik minib �nvan? bildirdim. M?saf? o q?d?r d? uzaq deyildi, bilirdim ki, 10-15 d?qiq?y? orda
 yam. \n M?n taksid?n d�??nd? art?q 20 d?qiq? olard? ki, i? ba?lam??d?. Daxili telefona ?l atd?m, Valeri Yuryevi�i soru?dum, el? telefonu g�t�r?n �z�ym�?, �z�m� t?qdim etdim, tan?d?. Ondan a?a?? d�?m?sini xahi? etdim, art?q o, yan?mda idi. V? m�?yy?n fikir m�badil?sind?n sonra m�?yy?n sayda ka??z torbalar g?tirdil?r, nar v? konyaklar? ayr?-ayr? torbalara yerl??dirib, s?kkizinci m?rt?b?y? qalxd?q v? h?min h?diyy?l?ri onun ota??na qoyduq.\n Birinci g�r�??c?yim adam t?yin oldu?um ?�b?nin k�rasiyas?n? h?yata ke�ir?n m�avinl?rd?n biri olmal?yd?. Odur ki, h?diyy? torbalar?ndan birini g�t�r�b onun ota??na yax?nla?d?m. Katib?y? kimliyimi t?qdim etdim, o da daxili telefonla ona x?b?r verdi v? i�?ri girm?yimi bildirdi. ?limd? ki, h?diyy? torbas? il? birg? i�?ri daxil oldum, baxd?m ki, torban? qoyma?a el? bir yan-y�r? yoxdu, he� otaqda mebeld?sti d? yox idi ki, bu torban? ora yerl??dirim. S?dr m�avini bunu g�zl?mirmi? kimi, m?n? baxa-bax
 a:\n -Bu n?di bel?, -dey? maraqland?.\n -bu, qafqazl?lara m?xsus h?diyy?di, -dedim.\n - apar?n q?zlara paylay?n,-dedi.\n -m?n art?q onlara vermi??m,-dey?r?k, ?limd? ki, dolu ka??z torban? bir t?h?r divar?n dibin? qoydum.\n -yax??, yax?? oturun, -dey? m?n? yer g�st?rdi.\n M?n oturdum, o, daxili d�ym?ni ??had?t barma?? il? basd?, saniy? ke�m?mi? katib? q?z i�?ri daxil oldu.\n O, y�ks?k tonla, - o torban? g�t�r�n yan?n?zda saxlay?n,- dey?r?k q?za i?ar? etdi.\n S?dr m�avini �evik v? c?ld adam idi. Hiss etm?k olurdu ki, bank sisteminin ?hali v? t??kilatlarla ba?l? hiss?sini d?rind?n bilir. H?l? xarici d�vl?tl?rd? olan texnoloji prosesl?rd?n s�hb?t getm?s? d?, daxili v? o d�vr ���n ssri ?razisi ���n yeni v? m�asir hesab edil?n primitiv texnoloji prosesl?rin h?yata ke�irilm?sind?n s�hb?t ged? bil?rdi. O, m?niml? Az?rbaycan Respublikas?n?n �mumi iqtisadiyyat?ndan s�hb?t apararaq, �mumi anlay??? ?ld? etm?y? �al??d?. M?nd? yaranan t??ss�ra
 tdan hiss etdim ki,   art?q onun raz?l???n? ?ld? etmi??m v? bu t?sdiq m?s?l?si birinci m�avinl?  g�r�??nd?n sonra �z h?llini tapacaqd?r. I�imd? top el?diyim bu hissl?rl?, onun, daxili telefonu g�t�r�b, ad? v? familyas? m?n? b?lli olan birinci m�avinl?, m?nd?n raz? halda dan??mas? �st-�st? d�?d�. Sonra o, onun yan?nda adam olub-olmamas?n? d?qiql??dirib, q?buluna g?lm?ymizi m�?yy?nl??dir?r?k, -getdik, -dey?, m?n? i?ar? etdi. \n Art?q s?drin birinci m�avinin yan?nda idik. Birinci m�avin �z �?kisin? uy?un uca boy, �ox da k�k olmayan, haz?rl?ql?, intellektual bir adam t?siri ba???lad? m?n?. El? bizi d? qar??lama??ndan hiss etdim ki, bu adamla, i? bar?sind? hans? istiqam?td? ist?s?n s�hb?t aparmaq olar. �z�m� daxil?n s?rb?st hiss etdim v? daxili narahatl???ma he� bir ?sas olmad???n? q?t etdim.\n O, s?liq?-s?hmanla v? qay??ke?likl? ba??n? qald?r?b, ?vv?lc? bizim respublikam?z?n �mumi iqtisadi v?ziyy?tiyl? maraqland?, H?s?n Qas?movi�i so
 ru?du v? onun yax?? bir s?dr olaraq, i?k�zarl???n? v?  f?aliyy?tini qiym?tl?ndirdi.\nHiss etdim ki, h?r n?sn?ni i?l? d? �l�m?k olmaz v? bu adam?n i?d?n-g�cd?n ?lav?, h?m d? �mumu b???ri keyfiyy?tl?ri d? az deyil.\n O, daxili v?ziyy?tl? yana?? avropan?n v? d�nyan?n ?n m�t?r?qqi iqtisadi yenilikl?ri �z?rind?  dayand?. Bir �ox �lk?l?rin iqtisadi r?q?ml?rind?n, texnoloji prosesl?rind?n misallar �?kdi. Ancaq onda bunlar nisbi inki?a g�st?ricil?riydi, bu g�st?ricil?rin alt?nda xaricd? hans? texnoloji prosesl?rin durdu?u n? onun ���n, n? d? m?nim ���n anla??lan deyildi. T?kc? biz onu bilirdi ki, ?g?r Amerikada texnoloji prosesin bu v? ya dig?r sah?si 80-90 faiz t??kil edirdi s? bu ssrid? 10-20 faz �evr?sind? ola bil?rdi v? bu m�qayis?l?r bu istiqam?td? �z �l��s�n� v? geriliyini m�?yy?n ed? bil?rdi.\n B�t�n bunlara baxmayaraq, m?n ona diqq?tl? qulaq as?rd?m, ��nki bunlar m?nim ���n maraql? v? �n?mli idi. Bu �n?mli fak
 torlar?n  arxas?nda m?nim yeni i? f?aliyy?tim dururdu  v? bu i?l?ri yeni �sulda h?yata ke�irm?k ���n  �?kil?n v? g�st?ril?n misallar?n t?cr�b?d? istifad? imkanlar? m�tl?q v? laz?ml? idi, fikirl??dim.  H?r halda birinci m�avinin m?niml?, o d�vr�n diliyl? des?k, apard??? s�hb?tl?r, ataca??m add?mlar?n b�n�vr?si ���n  inaml? bir t?kan hesab edil? bil?rdi.\n Onun raz?l???n? v? xeyir-duas?n? ald?dan sonra, m?nd? yaranm?? xo? ?hval-ruhiyy? il? yan?ndan �?xd?m, n?z?rd? tutulmu? idar? v? ?�b? r?isl?riyl? g�r�?d�m, s�hb?t etdim, laz?m? tap??r?qlar? ald?m v? laz?m? s?n?dl?r? d?rk?narlar? qoydurdum. Art?q yeni v?zif?y? t?yinat?m bar?d? ?mrim haz?r idi, birc? qal?rd?  geriy? d�n�b, h?v?sl? i?? ba?lama??m.\n I?in sonuna lap az qalm??d?, fikirl??dim ki, Valeri Yuryevi�l? g�r�?m?liy?m, o da xo?b?xtlikd?n ba?qa bir i?in dal?nca getm?mi?di, yenid?n s?kkizinci m?rt?b?y? qalxd?m. Valeri Yuryevi� balacaboy, i? t?cr�b?sin? malik v? qay??ke? b
 ir adam idi, h?m d? m?nim t?yin oldu?um ?�b?nin, ssri �zr? sah? r?isi idi. H?mya??d olard?q. Ota??nda t?k idi. Ota??na daxil olub sevincimi onunla b�l�?d�rd�m, bir xeyli s�hb?t etdik, i?in maraql? olaca??n? bildirdi. M?nim beynimd? art?q i?d?n ?s?r ?lam?t qalmam??d?, birc? o qalm??d? ki, i?in sonu n? vaxt g?lib �atacaq v? bu sevinci, Valeri il? Moskvan?n M.Qorki k��?sind? yerl???n Bak? restoran?nda bir daha ??r?blana-??rablana b�l�?d�r?�?yik. Bel? anlarda, t?rs kimi  be?-on d?qiq?nin g?lib getm?si d? adama ���n dar?xd?r?c? olurmu?. Yax?? ki, s�hb?t maraql? al?nd? v? vaxt g?lib ke�di, s�hb?tin arxas?n? Bak? restoran?nda davam etdirm?yi q?rara ald?m. Onun m?nim niyy?timd?n x?b?ri yox idi. O, ona g?tirdiyim h?diyy?ni g�t�rm?k ist?y?nd?, bildirdim ki, onlar? mebel d?stinin g�z�nd? yerl??dirsin v? m?niml? getm?sini xahi? etdim. O, ?vv?l t?r?dd�t ets? d? sonra m?niml? raz?la?m?? formada otaqdan birg? �?xd?q. Bak? restoran? el? d? uzaq de
 yildi, i? yerind?n  g?z?-g?z? gets?k uzaqba?? on d?q?q?y? orda ola bil?rdik. Ancaq buna baxmayaraq, taksi yaxalad?m v? tez d? mindik, t?xmin?n iki d?qiq?d?n sonra restoran?n yan?nda idik. Restoran?n qap?s?nda duran ??vetsar?  yerl?rin tutldu?unu v? g�zl?m?ymizi bildirdi, y?ni yax?n d?qiq?l?rd? stolun birinin bo?alaca??n? bildik. Restoran?n gir?c?yind? var-g?l etdik, zaman da zaman idi, laz?m olan anlarda ir?lil?m?k bilmir ki, bilmir. N?hy?t, ??vetsar??n g�st?ri?in? ?sas?n bo? olan stola yax?nla?d?q, ?trafda qonaqlar �ox idi, ?sas?n d? az?rbaycanl?lar idi. G�z g?zdirs?m d? tan?? adam g�z�m? d?ym?di. \n Sifari?l?rimiz, m�vafiq raz?la?madan sonra Bak? m?tb?xin? aid kabablar v? ba?qa t?amlar oldu. Sa?l?qlar qar??l?ql? olsa da,  m?nim yeni v?zif? t?yinat?m ���n Valeri ?hat?li v? geni? nitq  etdi. Onun nitqind? ki, s?mimiyy?tin qanadlar? �iynimd?n as?la qalm??d?, ��nki sabahlar? i?in ir?lil?yi?i il? ba?l? hesabatlar? onun ?�b?sin? t?qdim ed?ciyimi bilirdim. Odu
 r ki, k�n�ls�z d? olsa, �z d?rin minn?tdarl???m? bildirdim. Art?q durma??n vaxt?yd?, vaxt gec?ni ?ymi?di, restoranda t?k?m-seyr?k adam qalm??d?, onlar da hallanan adamlara ox?ay?rd?. Stola xidm?t ed?n qulluq�u, restoran?n ba?lan?lmas?na be? d?qiq? qald???n? bildirdi. Stolun haqq-heab?n? yekunla?d?r?b restorandan �?xd?q, t?k?m-seyr?k taksil?r g�z? d?yirdi, el? bil t?l?sidiymizi bilirdi, biri saxlad?. �yr?ndim ki, Valeri d? m?n getdiyim istiqam?td? ya?ay?r. M?n Dimitrovski ?ossesinin ax?rna �atmam?? d�?m?li idim, o is? ax?r?nda.  N?zak?t xatirin? onu evin? kimi �t�r?si oldum v? h?min taksiyl? d?, yenid?n �z qald???m �nvana g?ldim.\n Qald???m �nvan yad deyildi, n? d? kiray? deyildi, uzun m�dd?t Moskvan?n sakini olmu? b�y�k qarda??m?m eviydi. Qarda??m da m?ni g�zl?diyind?n h?l? yatmam??d?. Yeni v?zif?mi   bir d? ??rablan?b t?krarlad?q. T?brik v? sa?l?qlardan sanra yetmi?inci ill?rd? burda bir pay?z vaxt? istirah?t ed?rk?n yazd???m ?eir yad?ma d�?d
 �. Ba?lad?m onu q?r?q-q?r?q yad?ma salma?a v? �z i�imd? p?�?ldama?a:\n Moskva...\n Bo? otaq...\n T?k?m, t?nhayam,\n Rusiyan?n bom-boz pay?z? kimi,\n Radio dal?as?nda ?Bak?? g?zm?kd?n\n Dar?xd?, titr?di q?lbimin simi.\n\n Moskva...\n Bo? otaq...\n Dinir ?T�rkiy??,\n Nazimin ?eiri, ??rqisi bu da,\n N? yaman uyudum bura harad?r,\n A? sa�l? Qorqudu g?tirdi yada.\n\n Moskva...\n Bo? otaq...\n �r?yimd? d?,\n Tar?ma �?kilmi? t?qvim ill?ri.\n Eh, bax, bu ?eir d? s?n? �atmad?,\n Soldu misralar?, soldu g�ll?ri.\n\n Iqlim d?yi?s? d? t?bi?timd?,\n Dilimi, s�z�m� yen? bilmir?m.\n Dem? ?eirliyim bura kimiymi?,\n Qagqazdan aral? din? bilmir?m.\n \n 1976-c? ild? Moskvada, bax, el? bu evd? yazd???m bu ?eirin yad?mda s?ralanm?? bu b?ndl?rini bir t?h?r v? bir daha,  dilim topuq vura-vura qarda??m ���n d? oxudum.  Gec?ni sevinc?k ke�irdik. Dan �z�n? az qalm??d?. Fikirl??dim ki, g�z�m�n hovurnu al?m, u�aq aya??na gecikm?yim, h?m d? bilet  m?s?l?si d? var idi
 . Oydu ki, yalandan da olsa divana uzand?m, ??rab?n meyxo?lu?undan yuxuya gets?m d?, stol�st� saat?n z?ngin? oyand?m. Saat  on r?q?minin d?qiq?l?rini yenic? add?mlama?a ba?lam??d?, h?l? ki, on be?inci add?m?ndayd?. �z�m� vanna ota??na sald?m, �z�m?, g�z�m? isti-soyuq qar???q su vurdum, d?smallan?b, vanna ota??ndan �?xd?m.  Qarda??m? oyatma?a ?lim g?lm?s? d?, m?cburuydum oyatma?a, ��nki qap?n?n a�?lmas? v? ba?lan?lmas? var?yd?. O, bunu hiss etmi? kimi, getm?yimi soru?du, bir st?kan p�rr r?ngi �ay i�ib, bozarm?? hvada taksi dayanaca??na t?l?sdim v? bir taksiy? oturub hava liman?na y�n ald?m.\n Hava liman?n?n bilet kassas?nda n�vb? �ox idi, dayand?m, n?h?y?t ki, n�vb?m �atd?. Moskvadan Bak?ya u�an u�a??n n�vb?ti reysin? bilet ald?m. H?l? vaxta var idi. Yenid?n ax?amk? mar?urutu bir d? t?krar ed?si oldum. M.Qorki k��?siyl? �z� yuxar? yolland?m. Qar??mda yen? ?Bak??restoran?yd?. G�nd�z oldu?undan restoranda adam az idi. Bo? stol
 lar?n birin? yax?nla??b ( onsuz da stollar  bo? idi),\nOturdum v? menyunu g�zd?n ke�irm?y? ba?lad?m.  Az?rbaycan m?tb?xin? aid h?r n?sn? il? z?ngin idi  restoran. \n Ba??m? qald?rd?m ki, qar??mda bir adam durub, ancaq tan?mad?m. Ad?m? �?k?r?k, -salam, tan?mad?n m?ni?, -dey?r?k, m?ni s�zd�.\n -tan?? g?lirsiniz, ancaq xat?rlaya bilmir?m, ad?n?z da yad?mdan �?x?b, -dedim.\n -bir yax?? fikirl?? Asif ?f?ndiyevl? s?nd?n ba?qa kiml?r yax?nl?q edirdi.\n - h?, h?, -dedim,-yad?ma d�?d�, siz K�rd?mird?n idiniz, ad?n?z da Z?man?t, famiyan?z da B?kirov.  Siz Moskvaya aspiranturaya g?ldiniz, s?hv etmir?ms?, m�vzunuz da ?Heygel f?ls?f?sind? ??rq m�vzusu?  idi. �z� d? s?hv etmir?ms?, �. Hac?b?yov ad?na Bak? D�vl?t Konservatoriyas?n?n ?ahnaz adl? bir m�?llim?si var idi siz onunla birg? g?ldiniz. O vaxtlar deyirdiniz ki, sizi �� f?lak?t g�zl?yir, bax, indi g�r�r?m ki, he� bir f?lak?tiniz filan yoxdu. Y?qin ki, m�dafi?nizi d? etmisiniz.\n O, d?rind?n k�k
 s �t�rd�, g�l�ms�nd� v? soru?du, - de g�r�m yem?k sifari?i vermis?n, ya yox, s�hb?timizi rahat ed?k, -dedi.\n Stola qulluq ed?n a? xalatl? q?z, sanki bizi g�rm�rd�, b?lk? d? s�hb?t etdiyimizi g�r�b rahat buraxm??d? ki, yan?mdak? adam da otursun v? sonra biz? yax?nla?s?n. \n N?hay?t ki, stola qulluq ed?n a? xalatl? q?z biz? yax?nla?d?. Art?q m?n? ayd?n idi ki, m?nim bu k�hn? dostum da restorana indi daxil olub v? �mumi bir sifari? ver?si olduq. Ancaq u�aq aya??nda olsam da k�hn? dostun x?tirn? d?y? bilm?dim, G?nc? konyak?n? t?rifl?di v? s�hb?timizi d? G?nc? konyak? alt?nda ba?lad?q.\n O, �z�n� m?n? tutub, - h?, o dediyin f?lak?tin ikisi oldu da, qurtard? da. ���nc� f?lak?ti g�zl?yir?m, n?d?n ibar?t olaca??n? a�?qlaya bilm?y?c?y?m, g?r?k �z�rl� hesab ed?siniz, ancaq vaxt? g?l?nd? dey?r?m. O dediyin m�vzunu m�dafi? etmi??m, hal-haz?rda doktorluk dissertasiyas? �z?rind? �al???ram, ancaq d?y?s?n �m�r buna imkan
  verm?y?c?k. ?ahnaz da ?milli m�siqimizin f?ls?f?sind?n? m�dafi? etdi v? hal-haz?rda   Bak? D�vl?t Konservatoriyas?nda m�?llim i?l?yir. H?l? ki, Bak?ya gec-gec gedir?m. A. ?f?ndiyevi g�rm�rs?n ki, onun da taleyi d�z g?tirm?di.  Az?rbaycanda A. ?f?ndiyev �ox m�tail?li bir filosofdu, m?n f?ls?f?nin ?n d?rin qatlar?n? ondan �yr?nmi??m. El? Heygel f?ls?f?sind? ??rq m�vzusunu da o, m?nim a?l?ma salm??d?. Ancaq A. ?f?ndiyevin bir �at??mayan c?h?ti oldu ki, f?ls?f?ni sisteml??dir? bilm?di, bu da onun t?k?bb�r� il? ba?l? bir m?s?l? idi. M?n h?mi?? onunla s�hb?tl?rimd? bu m?s?l?l?ri ona xat?rlad?rd?m v? xahi? edirdim ki, b�t�n bu fikirl?ri bir m?craya g?tirsin, f?ls?f?ni yeni istiqam?td? �mumil??dirsin v? �mumi bir n?z?riyy? hal?na sals?n. O, m?niml? raz?la?m??d?, ancaq �z�n� toparlama?a vaxt? yox idi, ��nki h?mi?? g?ncl?r aras?nda ?oca??? m�q?dd?sl??dir?r?k, bu oca??n ?�l?sini h?r ?eyd?n �st�n tuturdu. O, f?ls?f?ni V?t?n sevgisind?, oc
 aq sevgisind?, b�y�k t�rkl�y�n yenilm?zliyind?, ad?t?t ?n?n?sind? g�r�rd� v? vaxt?n? bu g�r�?l?r? h?sr etdiyind?n b?zi m?s?l?l?r bitm?mi? qald?, buna heyifsl?nm?kd?n ba?qa �ar?miz yoxdu. \n M?n maraql? m�vzuya m�daxil? ed?r?k, - Asif ?f?ndiyevd? G�y Tanr? inanc? var idi, o, yerin d?, g�y�n d?, canl? v? cans?z?n da ilahi bir  q�vv? t?rfind?n yarad?ld???n?n izah etdiyinin sizinl? birg? ?ahidiyik. Bir t�rk olaraq saz?m?z? da b�t�n t�rk d�nyas?n?n bayra?? elan etmi?di, qalan al?tl?ri is? g?lm? hesab edirdi.Az?rbaycan D�vl?t Universitetind? ke�irdiyi b?dii-f?ls?fi gec?l?r?, saz-s�z ustas?, ?mran H?s?nov, ?kb?r C?f?rov, ?dal?t N?sibov ?Misrisi?yl?, ?C?ngi?siyl?, ?Dilq?mi?siyl?, ?Ruhani?siyl?, ?Q?hraman??s?yla, Az?rbaycan?n g�rk?mli xan?nd?l?rind?n Yaqub M?mm?dov, Can?li ?kb?rov ?M?nsuriyy??siyl?, ??anaz??yla, Kamil C?lilov q?boyundak? inc? ritml?riyl? qat?lard?. �mumiyy?tl? o, b�t�n f?ls?f?nin d�y�n n�qt?sini T�rk D�nyas?
  adl? b�y�k bir co?rafiyan?n m�siqisind?, bayat?s?nda, a??s?nda, ac?s?nda g�r?rdi. Ancaq m?n d? sizinl? raz?yam ki, o, f?ls?f?ni bu co?rafi ?razi �zr? sisteml??dir? bilm?di, bu da ssri kimi bir imperiyan?n ideologiyas? il? m�bariz?y? s?rf olunan zaman itgisiyl? ba?l?yd?. Tanr? ona m�st?qilliyimizd?n sonra laz?m? �m�r v? ya?am ���n m�vafiq t?minat vers?ydi, y?qin ki, o, f?ls?f?nin m�?yy?n sah?l?rini �mumil??dir? bil?c?kdi.\n S�hb?t? ba??m?z qar??d???ndan yem?kl?rin stola d�z�ld�y�nd?n x?b?rimiz yox idi. G�z�m  ya??la �alan ?�?? butulkada g?tirilmi? G?nc? konyak?na sata?anda Z?man?tin �z�n? baxd?m. O, m?ni hiss edirmi?  kimi, ?�?? butulkaya ?l atd?, ilk bad?l?ri t?sad�fi g�r�?m�z�n daimi olmas? ??r?fin? nu? etdik. N�vb?ti  bad?l?rin d? s?b?bkarlar? tap?ld?  v? nu? edib qalxd?q. Hesab? is? Z?man?t ver?si oldu. O, bunu onunla izah etdi ki, o m?nd?n b�y�kd� v? m?n Moskvada qona?am, o da ba?a d�?�l?n bir n?sn? idi
 . \n O, m?nim u�u? vaxt?ma az qald???n? hiss edib, m?ni �t�rm?yi, yola salma??  q?rara ald?, m?n buna raz? olmad?m. O, qara kiprikl?rinin v? qara b??lar?n?n alt?ndan b?rq vuran t?b?ss�ml� g�l�?l?riyl?, m?ni, el? restoran?n h?y?tind?n yola sald? v? x�dahifizl??ib ayr?ld?q.\n Bir ba?a hava liman?na g?ldim, u�u?un vaxt?na h?l? bir saat qalm??d?."}},
-{"photo":{"from":{"name":"Thami de Oliveira","id":"100003470164026"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yz/r/StEh3RhPvjk.gif","id":"100003470164026_390971624361840","created_time":"2013-08-28T00:26:45+0000","type":"photo","updated_time":"2013-08-28T00:30:15+0000","privacy":{"value":""},"link":"http://www.facebook.com/photo.php?fbid=390971007695235&set=pcb.390971624361840&type=1&relevant_count=3","object_id":"390971007695235","message":"MENINAS QUE TIVEREM INTERESSE NESSE VESTIDO TEM NA COR BRANCO, AMARELO, AZUL BIC, VERDE E PRETO, COMENTA COM A COR QUE FOR QUERER PRA EU PODER FAZER A ENCOMENDA, S� VOU TRAZER DE QUEM COMENTAR !!!","picture":"http://photos-h.ak.fbcdn.net/hphotos-ak-prn1/1236641_390971007695235_471308162_t.jpg"}},
-{"photo":{"name":"Timeline Photos","story":"Luis Carlos shared Minha V� Ta Maluca's photo.","from":{"name":"Luis Carlos","id":"100003127462424"},"application":{"name":"Photos","id":"2305272732"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/aS8ecmYRys0.gif","story_tags":{"0":[{"name":"Luis Carlos","id":"100003127462424","type":"user","length":11,"offset":0}],"19":[{"name":"Minha V� Ta Maluca","id":"282072935240952","type":"page","length":18,"offset":19}]},"id":"100003127462424_439260802854831","created_time":"2013-08-28T00:26:05+0000","type":"photo","caption":"Recomendo : Sem Sono\r\nRecomendo : Eu Amo Viajar","updated_time":"2013-08-28T00:26:05+0000","privacy":{"value":""},"link":"http://www.facebook.com/photo.php?fbid=468887093226201&set=a.445796168868627.1073741872.282072935240952&type=1","object_id":"468887093226201","message":". . . . ja, fui bic�o em varias, e ainda chegava comprimentando todo mundo . . . . ","properties":[{"href":"http://www.facebook.com/votamaluc
 a?ref=stream","name":"By","text":"Minha V� Ta Maluca"}],"picture":"http://photos-a.ak.fbcdn.net/hphotos-ak-ash3/1256526_468887093226201_1763899420_s.jpg"}},
-{"photo":{"is_hidden":true,"name":"Timeline Photos","story":"Giovanna Lopes shared 4:20's photo.","from":{"name":"Giovanna Lopes","id":"100003553147558"},"application":{"name":"Links","id":"2309869772"},"icon":"http://static.ak.fbcdn.net/rsrc.php/v2/yD/r/aS8ecmYRys0

<TRUNCATED>

[34/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
deleted file mode 100644
index 52e40cb..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReader.java
+++ /dev/null
@@ -1,329 +0,0 @@
-package org.apache.streams.elasticsearch;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.base.Objects;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistReader;
-import org.apache.streams.core.StreamsResultSet;
-import org.elasticsearch.action.search.SearchRequestBuilder;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.action.search.SearchType;
-import org.elasticsearch.index.query.FilterBuilder;
-import org.elasticsearch.index.query.FilterBuilders;
-import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.search.SearchHit;
-import org.elasticsearch.search.sort.SortBuilders;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.math.BigInteger;
-import java.util.*;
-import java.util.concurrent.*;
-
-/**************************************************************************************************************
- * Authors:
- * smashew
- * steveblackmon
- **************************************************************************************************************/
-
-public class ElasticsearchPersistReader implements StreamsPersistReader, Iterable<SearchHit>, Iterator<SearchHit>
-{
-    private final static Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistReader.class);
-
-    protected volatile Queue<StreamsDatum> persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-
-    private static final int SCROLL_POSITION_NOT_INITIALIZED = -3;
-    private static final Integer DEFAULT_BATCH_SIZE = 500;
-    private static final String DEFAULT_SCROLL_TIMEOUT = "5m";
-
-    private ElasticsearchClientManager elasticsearchClientManager;
-    private String[] indexes;
-    private String[] types;
-    private String[] withfields;
-    private String[] withoutfields;
-    private DateTime startDate;
-    private DateTime endDate;
-    private int limit = 1000*1000*1000; // we are going to set the default limit very high to 1bil
-    private boolean random = false;
-    private int threadPoolSize = 10;
-    private int batchSize = 100;
-    private String scrollTimeout = null;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private ElasticsearchConfiguration config;
-
-    private QueryBuilder queryBuilder;
-    private FilterBuilder filterBuilder;
-
-    // These are private to help us manage the scroll
-    private SearchRequestBuilder search;
-    private SearchResponse scrollResp;
-    private int scrollPositionInScroll = SCROLL_POSITION_NOT_INITIALIZED;
-    private SearchHit next = null;
-    private long totalHits = 0;
-    private long totalRead = 0;
-
-    public long getHitCount()                       { return this.search == null ? 0 : this.totalHits; }
-    public long getReadCount()                      { return this.totalRead; }
-    public double getReadPercent()                  { return (double)this.getReadCount() / (double)this.getHitCount(); }
-    public long getRemainingCount()                 { return this.totalRead - this.totalHits; }
-    public Iterator<SearchHit> iterator()           { return this; }
-    private boolean isCompleted()                   { return totalRead >= this.limit && hasRecords(); }
-    private boolean hasRecords()                    { return scrollPositionInScroll != -1 && (!(this.totalRead > this.limit)); }
-    public SearchHit next()                         { return this.next; }
-
-    public void setBatchSize(int batchSize) {
-        this.batchSize = batchSize;
-    }
-
-    public void setScrollTimeout(String scrollTimeout) {
-        this.scrollTimeout = scrollTimeout;
-    }
-
-    public void setQueryBuilder(QueryBuilder queryBuilder)      { this.queryBuilder = queryBuilder; }
-    public void setFilterBuilder(FilterBuilder filterBuilder)   { this.filterBuilder = filterBuilder; }
-
-    public ElasticsearchPersistReader() {
-        Config config = StreamsConfigurator.config.getConfig("elasticsearch");
-        this.config = ElasticsearchConfigurator.detectConfiguration(config);
-    }
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-    }
-
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration, String[] indexes) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-        this.indexes = indexes;
-    }
-
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration, String[] indexes, String[] types) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-        this.indexes = indexes;
-        this.types = types;
-    }
-
-    public ElasticsearchPersistReader(ElasticsearchConfiguration elasticsearchConfiguration, String[] indexes, String[] types, String[] withfields, String[] withoutfields) {
-        this.elasticsearchClientManager = new ElasticsearchClientManager(elasticsearchConfiguration);
-        this.indexes = indexes;
-        this.types = types;
-        this.withfields = withfields;
-        this.withoutfields = withoutfields;
-    }
-
-    @Override
-    public void prepare(Object o) {
-
-        // If we haven't already set up the search, then set up the search.
-        if(search == null)
-        {
-            search = elasticsearchClientManager.getClient()
-                    .prepareSearch(indexes)
-                    .setSearchType(SearchType.SCAN)
-                    .setSize(Objects.firstNonNull(batchSize, DEFAULT_BATCH_SIZE).intValue())
-                    .setScroll(Objects.firstNonNull(scrollTimeout, DEFAULT_SCROLL_TIMEOUT));
-
-            if(this.queryBuilder != null)
-                search.setQuery(this.queryBuilder);
-
-            // If the types are null, then don't specify a type
-            if(this.types != null && this.types.length > 0)
-                search = search.setTypes(types);
-
-            Integer clauses = 0;
-            if(this.withfields != null || this.withoutfields != null) {
-                if( this.withfields != null )
-                    clauses += this.withfields.length;
-                if( this.withoutfields != null )
-                    clauses += this.withoutfields.length;
-            }
-
-            List<FilterBuilder> filterList = buildFilterList();
-
-            FilterBuilder allFilters = andFilters(filterList);
-
-            if( clauses > 0 ) {
-                //    search.setPostFilter(allFilters);
-                search.setFilter(allFilters);
-            }
-
-            // TODO: Replace when all clusters are upgraded past 0.90.4 so we can implement a RANDOM scroll.
-            if(this.random)
-                search = search.addSort(SortBuilders.scriptSort("random()", "number"));
-        }
-
-        // We don't have a scroll, we need to create a scroll
-        if(scrollResp == null) {
-            scrollResp = search.execute().actionGet();
-            LOGGER.trace(search.toString());
-        }
-    }
-
-    @Override
-    public void cleanUp() {
-        LOGGER.info("PersistReader done");
-    }
-
-    public void setWithfields(String[] withfields) {
-        this.withfields = withfields;
-    }
-
-    public void setWithoutfields(String[] withoutfields) {
-        this.withoutfields = withoutfields;
-    }
-
-    public boolean hasNext()
-    {
-        calcNext();
-        return hasRecords();
-    }
-
-    public void calcNext()
-    {
-        try
-        {
-            // We have exhausted our scroll create another scroll.
-            if(scrollPositionInScroll == SCROLL_POSITION_NOT_INITIALIZED || scrollPositionInScroll >= scrollResp.getHits().getHits().length)
-            {
-                // reset the scroll position
-                scrollPositionInScroll = 0;
-
-                // get the next hits of the scroll
-                scrollResp = elasticsearchClientManager.getClient()
-                        .prepareSearchScroll(scrollResp.getScrollId())
-                        .setScroll(Objects.firstNonNull(scrollTimeout, DEFAULT_SCROLL_TIMEOUT))
-                        .execute()
-                        .actionGet();
-
-                this.totalHits = scrollResp.getHits().getTotalHits();
-            }
-
-            // If this scroll has 0 items then we set the scroll position to -1
-            // letting the iterator know that we are done.
-            if(scrollResp.getHits().getTotalHits() == 0 || scrollResp.getHits().getHits().length == 0)
-                scrollPositionInScroll = -1;
-            else
-            {
-                // get the next record
-                next = scrollResp.getHits().getAt(scrollPositionInScroll);
-
-                // Increment our counters
-                scrollPositionInScroll += 1;
-                totalRead += 1;
-            }
-        }
-        catch(Exception e)
-        {
-            e.printStackTrace();
-            LOGGER.error("Unexpected scrolling error: {}", e.getMessage());
-            scrollPositionInScroll = -1;
-            next = null;
-        }
-    }
-
-    public void remove() { }
-
-    // copied from elasticsearch
-    // if we need this again we should factor it out into a utility
-    private FilterBuilder andFilters(List<FilterBuilder> filters)
-    {
-        if(filters == null || filters.size() == 0)
-            return null;
-
-        FilterBuilder toReturn = filters.get(0);
-
-        for(int i = 1; i < filters.size(); i++)
-            toReturn = FilterBuilders.andFilter(toReturn, filters.get(i));
-
-        return toReturn;
-    }
-
-    private FilterBuilder orFilters(List<FilterBuilder> filters)
-    {
-        if(filters == null || filters.size() == 0)
-            return null;
-
-        FilterBuilder toReturn = filters.get(0);
-
-        for(int i = 1; i < filters.size(); i++)
-            toReturn = FilterBuilders.orFilter(toReturn, filters.get(i));
-
-        return toReturn;
-    }
-
-    private List<FilterBuilder> buildFilterList() {
-
-        ArrayList<FilterBuilder> filterList = Lists.newArrayList();
-
-        // If any withfields are specified, require that field be present
-        //    There must a value set also for the document to be processed
-        if(this.withfields != null && this.withfields.length > 0) {
-            ArrayList<FilterBuilder> withFilterList = Lists.newArrayList();
-            for( String withfield : this.withfields ) {
-                FilterBuilder withFilter = FilterBuilders.existsFilter(withfield);
-                withFilterList.add(withFilter);
-            }
-            //filterList.add(FilterBuilders.orFilter(orFilters(withFilterList)));
-            filterList.add(withFilterList.get(0));
-        }
-        // If any withoutfields are specified, require that field not be present
-        //    Document will be picked up even if present, if they do not have at least one value
-        // this is annoying as it majorly impacts runtime
-        // might be able to change behavior using null_field
-        if(this.withoutfields != null && this.withoutfields.length > 0) {
-            ArrayList<FilterBuilder> withoutFilterList = Lists.newArrayList();
-            for( String withoutfield : this.withoutfields ) {
-                FilterBuilder withoutFilter = FilterBuilders.missingFilter(withoutfield).existence(true).nullValue(false);
-                withoutFilterList.add(withoutFilter);
-            }
-            //filterList.add(FilterBuilders.orFilter(orFilters(withoutFilterList)));
-            filterList.add(withoutFilterList.get(0));
-        }
-
-        return filterList;
-    }
-
-    @Override
-    public StreamsResultSet readCurrent() {
-
-        Queue<StreamsDatum> currentQueue = new LinkedBlockingQueue<StreamsDatum>();
-        while( hasNext()) {
-            SearchHit hit = next();
-            ObjectNode jsonObject = null;
-            try {
-                jsonObject = mapper.readValue(hit.getSourceAsString(), ObjectNode.class);
-            } catch (IOException e) {
-                e.printStackTrace();
-                break;
-            }
-            StreamsDatum item = new StreamsDatum(jsonObject);
-            item.getMetadata().put("id", hit.getId());
-            item.getMetadata().put("index", hit.getIndex());
-            item.getMetadata().put("type", hit.getType());
-            currentQueue.add(item);
-        }
-        return (StreamsResultSet)currentQueue;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger sequence) {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime start, DateTime end) {
-        return null;
-    }
-
-}
-
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
deleted file mode 100644
index 3198951..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistReaderTask.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.apache.streams.elasticsearch;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import org.apache.streams.core.StreamsDatum;
-import org.elasticsearch.search.SearchHit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Random;
-
-public class ElasticsearchPersistReaderTask implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistReaderTask.class);
-
-    private ElasticsearchPersistReader reader;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    public ElasticsearchPersistReaderTask(ElasticsearchPersistReader reader) {
-        this.reader = reader;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            StreamsDatum item;
-            while( reader.hasNext()) {
-                SearchHit hit = reader.next();
-                ObjectNode jsonObject = null;
-                try {
-                    jsonObject = mapper.readValue(hit.getSourceAsString(), ObjectNode.class);
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    break;
-                }
-                item = new StreamsDatum(jsonObject);
-                item.getMetadata().put("id", hit.getId());
-                item.getMetadata().put("index", hit.getIndex());
-                item.getMetadata().put("type", hit.getType());
-                reader.persistQueue.offer(item);
-            }
-            try {
-                Thread.sleep(new Random().nextInt(100));
-            } catch (InterruptedException e) {}
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
deleted file mode 100644
index 67fa724..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/java/org/apache/streams/elasticsearch/ElasticsearchPersistWriter.java
+++ /dev/null
@@ -1,530 +0,0 @@
-package org.apache.streams.elasticsearch;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Objects;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistWriter;
-import org.apache.streams.core.tasks.StreamsPersistWriterTask;
-import org.elasticsearch.action.ActionListener;
-import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
-import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
-import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
-//import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
-import org.elasticsearch.action.admin.indices.settings.UpdateSettingsRequest;
-import org.elasticsearch.action.bulk.BulkItemResponse;
-import org.elasticsearch.action.bulk.BulkRequestBuilder;
-import org.elasticsearch.action.bulk.BulkResponse;
-import org.elasticsearch.action.index.IndexRequest;
-import org.elasticsearch.action.search.SearchRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequest;
-import org.elasticsearch.client.Client;
-import org.elasticsearch.common.settings.ImmutableSettings;
-import org.elasticsearch.index.query.IdsQueryBuilder;
-import org.elasticsearch.search.SearchHit;
-import org.elasticsearch.search.SearchHits;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.*;
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import java.util.*;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class ElasticsearchPersistWriter implements StreamsPersistWriter, Flushable, Closeable
-{
-    private final static Logger LOGGER = LoggerFactory.getLogger(ElasticsearchPersistWriter.class);
-    private final static NumberFormat MEGABYTE_FORMAT = new DecimalFormat("#.##");
-    private final static NumberFormat NUMBER_FORMAT = new DecimalFormat("###,###,###,###");
-
-    private ElasticsearchClientManager manager;
-    private Client client;
-    private String parentID = null;
-    private BulkRequestBuilder bulkRequest;
-    private OutputStreamWriter currentWriter = null;
-
-    private String index = null;
-    private String type = null;
-    private int batchSize = 50;
-    private int totalRecordsWritten = 0;
-    private boolean veryLargeBulk = false;  // by default this setting is set to false
-
-    private final static Long DEFAULT_BULK_FLUSH_THRESHOLD = 5l * 1024l * 1024l;
-    private static final long WAITING_DOCS_LIMIT = 10000;
-
-    public volatile long flushThresholdSizeInBytes = DEFAULT_BULK_FLUSH_THRESHOLD;
-
-    private volatile int totalSent = 0;
-    private volatile int totalSeconds = 0;
-    private volatile int totalOk = 0;
-    private volatile int totalFailed = 0;
-    private volatile int totalBatchCount = 0;
-    private volatile long totalSizeInBytes = 0;
-
-    private volatile long batchSizeInBytes = 0;
-    private volatile int batchItemsSent = 0;
-
-    public void setIndex(String index) {
-        this.index = index;
-    }
-
-    public void setType(String type) {
-        this.type = type;
-    }
-
-    public void setBatchSize(int batchSize) {
-        this.batchSize = batchSize;
-    }
-
-    public void setVeryLargeBulk(boolean veryLargeBulk) {
-        this.veryLargeBulk = veryLargeBulk;
-    }
-
-    private final List<String> affectedIndexes = new ArrayList<String>();
-
-    public int getTotalOutstanding()                           { return this.totalSent - (this.totalFailed + this.totalOk); }
-    public long getFlushThresholdSizeInBytes()                 { return flushThresholdSizeInBytes; }
-    public int getTotalSent()                                  { return totalSent; }
-    public int getTotalSeconds()                               { return totalSeconds; }
-    public int getTotalOk()                                    { return totalOk; }
-    public int getTotalFailed()                                { return totalFailed; }
-    public int getTotalBatchCount()                            { return totalBatchCount; }
-    public long getTotalSizeInBytes()                          { return totalSizeInBytes; }
-    public long getBatchSizeInBytes()                          { return batchSizeInBytes; }
-    public int getBatchItemsSent()                             { return batchItemsSent; }
-    public List<String> getAffectedIndexes()                   { return this.affectedIndexes; }
-
-    public void setFlushThresholdSizeInBytes(long sizeInBytes)  { this.flushThresholdSizeInBytes = sizeInBytes; }
-
-    Thread task;
-
-    protected volatile Queue<StreamsDatum> persistQueue;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private ElasticsearchConfiguration config;
-
-    public ElasticsearchPersistWriter() {
-        Config config = StreamsConfigurator.config.getConfig("elasticsearch");
-        this.config = ElasticsearchConfigurator.detectConfiguration(config);
-    }
-
-    private static final int  BYTES_IN_MB = 1024*1024;
-    private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
-    private volatile int  totalByteCount = 0;
-    private volatile int  byteCount = 0;
-
-    public boolean isConnected() 		                { return (client != null); }
-
-    @Override
-    public void prepare(Object o) {
-        manager = new ElasticsearchClientManager(config);
-        client = manager.getClient();
-
-        LOGGER.info(client.toString());
-    }
-
-    @Override
-    public void cleanUp() {
-
-        try {
-            flush();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        close();
-    }
-
-    @Override
-    public void write(StreamsDatum streamsDatum) {
-
-        String json;
-        try {
-
-            json = mapper.writeValueAsString(streamsDatum.getDocument());
-
-            add(index, type, null, json);
-
-        } catch (JsonProcessingException e) {
-            LOGGER.warn("{} {}", e.getLocation(), e.getMessage());
-
-        }
-    }
-
-    @Override
-    public void close()
-    {
-        try
-        {
-            // before they close, check to ensure that
-            this.flush();
-
-            int count = 0;
-            // We are going to give it 5 minutes.
-            while(this.getTotalOutstanding() > 0 && count++ < 20 * 60 * 5)
-                Thread.sleep(50);
-
-            if(this.getTotalOutstanding() > 0)
-            {
-                LOGGER.error("We never cleared our buffer");
-            }
-
-
-            for(String indexName : this.getAffectedIndexes())
-            {
-                createIndexIfMissing(indexName);
-
-                if(this.veryLargeBulk)
-                {
-                    LOGGER.debug("Resetting our Refresh Interval: {}", indexName);
-                    // They are in 'very large bulk' mode and the process is finished. We now want to turn the
-                    // refreshing back on.
-                    UpdateSettingsRequest updateSettingsRequest = new UpdateSettingsRequest(indexName);
-                    updateSettingsRequest.settings(ImmutableSettings.settingsBuilder().put("refresh_interval", "5s"));
-
-                    // submit to ElasticSearch
-                    this.manager.getClient()
-                            .admin()
-                            .indices()
-                            .updateSettings(updateSettingsRequest)
-                            .actionGet();
-                }
-
-                checkIndexImplications(indexName);
-
-                LOGGER.debug("Refreshing ElasticSearch index: {}", indexName);
-                this.manager.getClient()
-                        .admin()
-                        .indices()
-                        .prepareRefresh(indexName)
-                        .execute()
-                        .actionGet();
-            }
-
-            LOGGER.info("Closed: Wrote[{} of {}] Failed[{}]", this.getTotalOk(), this.getTotalSent(), this.getTotalFailed());
-
-        }
-        catch(Exception e)
-        {
-            // this line of code should be logically unreachable.
-            LOGGER.warn("This is unexpected: {}", e.getMessage());
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public void flush() throws IOException
-    {
-        flushInternal();
-    }
-
-    public void flushInternal()
-    {
-        synchronized (this)
-        {
-            // we do not have a working bulk request, we can just exit here.
-            if(this.bulkRequest == null || batchItemsSent == 0)
-                return;
-
-            // call the flush command.
-            flush(this.bulkRequest, batchItemsSent, batchSizeInBytes);
-
-            // null the flush request, this will be created in the 'add' function below
-            this.bulkRequest = null;
-
-            // record the proper statistics, and add it to our totals.
-            this.totalSizeInBytes += this.batchSizeInBytes;
-            this.totalSent += batchItemsSent;
-
-            // reset the current batch statistics
-            this.batchSizeInBytes = 0;
-            this.batchItemsSent = 0;
-
-            try
-            {
-                int count = 0;
-                if(this.getTotalOutstanding() > WAITING_DOCS_LIMIT)
-                {
-                    /****************************************************************************
-                     * Author:
-                     * Smashew
-                     *
-                     * Date:
-                     * 2013-10-20
-                     *
-                     * Note:
-                     * With the information that we have on hand. We need to develop a heuristic
-                     * that will determine when the cluster is having a problem indexing records
-                     * by telling it to pause and wait for it to catch back up. A
-                     *
-                     * There is an impact to us, the caller, whenever this happens as well. Items
-                     * that are not yet fully indexed by the server sit in a queue, on the client
-                     * that can cause the heap to overflow. This has been seen when re-indexing
-                     * large amounts of data to a small cluster. The "deletes" + "indexes" can
-                     * cause the server to have many 'outstandingItems" in queue. Running this
-                     * software with large amounts of data, on a small cluster, can re-create
-                     * this problem.
-                     *
-                     * DO NOT DELETE THESE LINES
-                     ****************************************************************************/
-
-                    // wait for the flush to catch up. We are going to cap this at
-                    while(this.getTotalOutstanding() > WAITING_DOCS_LIMIT && count++ < 500)
-                        Thread.sleep(10);
-
-                    if(this.getTotalOutstanding() > WAITING_DOCS_LIMIT)
-                        LOGGER.warn("Even after back-off there are {} items still in queue.", this.getTotalOutstanding());
-                }
-            }
-            catch(Exception e)
-            {
-                LOGGER.info("We were broken from our loop: {}", e.getMessage());
-            }
-        }
-    }
-
-    private void flush(final BulkRequestBuilder bulkRequest, final Integer thisSent, final Long thisSizeInBytes)
-    {
-        bulkRequest.execute().addListener(new ActionListener<BulkResponse>()
-        {
-            @Override
-            public void onResponse(BulkResponse bulkItemResponses)
-            {
-                if (bulkItemResponses.hasFailures())
-                    LOGGER.warn("Bulk Uploading had totalFailed: " + bulkItemResponses.buildFailureMessage());
-
-                long thisFailed = 0;
-                long thisOk = 0;
-                long thisMillis = bulkItemResponses.getTookInMillis();
-
-                // keep track of the number of totalFailed and items that we have totalOk.
-                for(BulkItemResponse resp : bulkItemResponses.getItems())
-                {
-                    if(resp.isFailed())
-                        thisFailed++;
-                    else
-                        thisOk++;
-                }
-
-                totalOk += thisOk;
-                totalFailed += thisFailed;
-                totalSeconds += (thisMillis / 1000);
-
-                if(thisSent != (thisOk + thisFailed))
-                    LOGGER.error("We sent more items than this");
-
-                LOGGER.debug("Batch[{}mb {} items with {} failures in {}ms] - Total[{}mb {} items with {} failures in {}seconds] {} outstanding]",
-                        MEGABYTE_FORMAT.format((double) thisSizeInBytes / (double)(1024*1024)), NUMBER_FORMAT.format(thisOk), NUMBER_FORMAT.format(thisFailed), NUMBER_FORMAT.format(thisMillis),
-                        MEGABYTE_FORMAT.format((double) totalSizeInBytes / (double)(1024*1024)), NUMBER_FORMAT.format(totalOk), NUMBER_FORMAT.format(totalFailed), NUMBER_FORMAT.format(totalSeconds), NUMBER_FORMAT.format(getTotalOutstanding()));
-            }
-
-            @Override
-            public void onFailure(Throwable e)
-            {
-                LOGGER.error("Error bulk loading: {}", e.getMessage());
-                e.printStackTrace();
-            }
-        });
-
-        this.notify();
-    }
-
-    public void add(String indexName, String type, String json)
-    {
-        add(indexName, type, null, json);
-    }
-
-    public void add(String indexName, String type, String id, String json)
-    {
-        IndexRequest indexRequest;
-
-        // They didn't specify an ID, so we will create one for them.
-        if(id == null)
-            indexRequest = new IndexRequest(indexName, type);
-        else
-            indexRequest = new IndexRequest(indexName, type, id);
-
-        indexRequest.source(json);
-
-        // If there is a parentID that is associated with this bulk, then we are
-        // going to have to parse the raw JSON and attempt to dereference
-        // what the parent document should be
-        if(parentID != null)
-        {
-            try
-            {
-                // The JSONObject constructor can throw an exception, it is called
-                // out explicitly here so we can catch it.
-                indexRequest = indexRequest.parent(new JSONObject(json).getString(parentID));
-            }
-            catch(JSONException e)
-            {
-                LOGGER.warn("Malformed JSON, cannot grab parentID: {}@{}[{}]: {}", id, indexName, type, e.getMessage());
-                totalFailed++;
-            }
-        }
-        add(indexRequest);
-    }
-
-    public void add(UpdateRequest updateRequest)
-    {
-        Preconditions.checkNotNull(updateRequest);
-        synchronized (this)
-        {
-            checkAndCreateBulkRequest();
-            checkIndexImplications(updateRequest.index());
-            bulkRequest.add(updateRequest);
-            try {
-                Optional<Integer> size = Objects.firstNonNull(
-                        Optional.fromNullable(updateRequest.doc().source().length()),
-                        Optional.fromNullable(updateRequest.script().length()));
-                trackItemAndBytesWritten(size.get().longValue());
-            } catch( NullPointerException x) {
-                trackItemAndBytesWritten(1000);
-            }
-        }
-    }
-
-    public void add(IndexRequest indexRequest)
-    {
-        synchronized (this)
-        {
-            checkAndCreateBulkRequest();
-            checkIndexImplications(indexRequest.index());
-            bulkRequest.add(indexRequest);
-            try {
-                trackItemAndBytesWritten(indexRequest.source().length());
-            } catch( NullPointerException x) {
-                LOGGER.warn("NPE adding/sizing indexrequest");
-            }
-        }
-    }
-
-    private void trackItemAndBytesWritten(long sizeInBytes)
-    {
-        batchItemsSent++;
-        batchSizeInBytes += sizeInBytes;
-
-        // If our queue is larger than our flush threashold, then we should flush the queue.
-        if(batchSizeInBytes > flushThresholdSizeInBytes)
-            flushInternal();
-    }
-
-    private void checkAndCreateBulkRequest()
-    {
-        // Synchronize to ensure that we don't lose any records
-        synchronized (this)
-        {
-            if(bulkRequest == null)
-                bulkRequest = this.manager.getClient().prepareBulk();
-        }
-    }
-
-    private void checkIndexImplications(String indexName)
-    {
-
-        // check to see if we have seen this index before.
-        if(this.affectedIndexes.contains(indexName))
-            return;
-
-        // we haven't log this index.
-        this.affectedIndexes.add(indexName);
-
-        // Check to see if we are in 'veryLargeBulk' mode
-        // if we aren't, exit early
-        if(!this.veryLargeBulk)
-            return;
-
-
-        // They are in 'very large bulk' mode we want to turn off refreshing the index.
-
-        // Create a request then add the setting to tell it to stop refreshing the interval
-        UpdateSettingsRequest updateSettingsRequest = new UpdateSettingsRequest(indexName);
-        updateSettingsRequest.settings(ImmutableSettings.settingsBuilder().put("refresh_interval", -1));
-
-        // submit to ElasticSearch
-        this.manager.getClient()
-                .admin()
-                .indices()
-                .updateSettings(updateSettingsRequest)
-                .actionGet();
-    }
-
-    public void createIndexIfMissing(String indexName) {
-        if(!this.manager.getClient()
-                .admin()
-                .indices()
-                .exists(new IndicesExistsRequest(indexName))
-                .actionGet()
-                .isExists())
-        {
-            // It does not exist... So we are going to need to create the index.
-            // we are going to assume that the 'templates' that we have loaded into
-            // elasticsearch are sufficient to ensure the index is being created properly.
-            CreateIndexResponse response = this.manager.getClient().admin().indices().create(new CreateIndexRequest(indexName)).actionGet();
-
-            if(response.isAcknowledged())
-            {
-                LOGGER.info("Index {} did not exist. The index was automatically created from the stored ElasticSearch Templates.", indexName);
-            }
-            else
-            {
-                LOGGER.error("Index {} did not exist. While attempting to create the index from stored ElasticSearch Templates we were unable to get an acknowledgement.", indexName);
-                LOGGER.error("Error Message: {}", response.toString());
-                throw new RuntimeException("Unable to create index " + indexName);
-            }
-        }
-    }
-    public void add(String indexName, String type, Map<String, Object> toImport)
-    {
-        for (String id : toImport.keySet())
-            add(indexName, type, id, (String)toImport.get(id));
-    }
-
-    private void checkThenAddBatch(String index, String type, Map<String, String> workingBatch)
-    {
-        Set<String> invalidIDs = checkIds(workingBatch.keySet(), index, type);
-
-        for(String toAddId : workingBatch.keySet())
-            if(!invalidIDs.contains(toAddId))
-                add(index, type, toAddId, workingBatch.get(toAddId));
-
-        LOGGER.info("Adding Batch: {} -> {}", workingBatch.size(), invalidIDs.size());
-    }
-
-
-    private Set<String> checkIds(Set<String> input, String index, String type) {
-
-        IdsQueryBuilder idsFilterBuilder = new IdsQueryBuilder();
-
-        for(String s : input)
-            idsFilterBuilder.addIds(s);
-
-        SearchRequestBuilder searchRequestBuilder = this.manager.getClient()
-                .prepareSearch(index)
-                .setTypes(type)
-                .setQuery(idsFilterBuilder)
-                .addField("_id")
-                .setSize(input.size());
-
-        SearchHits hits = searchRequestBuilder.execute()
-                .actionGet()
-                .getHits();
-
-        Set<String> toReturn = new HashSet<String>();
-
-        for(SearchHit hit : hits) {
-            toReturn.add(hit.getId());
-        }
-
-        return toReturn;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json b/trunk/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json
deleted file mode 100644
index 6524dcc..0000000
--- a/trunk/streams-contrib/streams-persist-elasticsearch/src/main/jsonschema/org/apache/streams/elasticsearch/ElasticsearchConfiguration.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.elasticsearch.ElasticsearchConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "hosts": {
-            "type": "array",
-            "description": "Elasticsearch Hosts",
-            "items": {
-                "type": "string"
-            }
-        },
-        "port": {
-            "type": "integer",
-            "description": "Elasticsearch Transport API port"
-        },
-        "clusterName": {
-            "type": "string",
-            "description": "Cluster Name"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-hdfs/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-hdfs/pom.xml b/trunk/streams-contrib/streams-persist-hdfs/pom.xml
deleted file mode 100644
index 6392158..0000000
--- a/trunk/streams-contrib/streams-persist-hdfs/pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?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-hdfs</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-common</artifactId>
-            <version>2.0.0-cdh4.5.0</version>
-            <scope>compile</scope>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-hdfs</artifactId>
-            <version>2.0.0-cdh4.5.0</version>
-            <type>pom</type>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-hdfs-httpfs</artifactId>
-            <version>2.0.0-cdh4.5.0</version>
-            <type>pom</type>
-            <scope>compile</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </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/hdfs/HdfsConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams.hdfs.pojo</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java b/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
deleted file mode 100644
index dc2b338..0000000
--- a/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/HdfsConfigurator.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package org.apache.streams.hdfs;
-
-import com.typesafe.config.Config;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class HdfsConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(HdfsConfigurator.class);
-
-    public static HdfsConfiguration detectConfiguration(Config hdfs) {
-        String host = hdfs.getString("host");
-        Long port = hdfs.getLong("port");
-        String path = hdfs.getString("path");
-        String user = hdfs.getString("user");
-        String password = hdfs.getString("password");
-
-        HdfsConfiguration hdfsConfiguration = new HdfsConfiguration();
-
-        hdfsConfiguration.setHost(host);
-        hdfsConfiguration.setPort(port);
-        hdfsConfiguration.setPath(path);
-        hdfsConfiguration.setUser(user);
-        hdfsConfiguration.setPassword(password);
-
-        return hdfsConfiguration;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java b/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
deleted file mode 100644
index 86ea72f..0000000
--- a/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriter.java
+++ /dev/null
@@ -1,330 +0,0 @@
-package org.apache.streams.hdfs;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Strings;
-import com.typesafe.config.Config;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.security.PrivilegedExceptionAction;
-import java.util.*;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class WebHdfsPersistWriter implements StreamsPersistWriter, Runnable
-{
-    private final static Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistWriter.class);
-
-    private final static char DELIMITER = '\t';
-    private final static int  DEFAULT_LINES_PER_FILE = 50000;
-
-    private FileSystem client;
-    private Path path;
-    private String filePart = "default";
-    private int linesPerFile = 1000;
-    private int totalRecordsWritten = 0;
-    private final List<Path> writtenFiles = new ArrayList<Path>();
-    private int fileLineCounter = 0;
-    private OutputStreamWriter currentWriter = null;
-
-    public boolean terminate = false;
-
-    protected volatile Queue<StreamsDatum> persistQueue;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private HdfsConfiguration config;
-
-    public WebHdfsPersistWriter() {
-        Config config = StreamsConfigurator.config.getConfig("hdfs");
-        this.config = HdfsConfigurator.detectConfiguration(config);
-        this.persistQueue  = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public WebHdfsPersistWriter(Queue<StreamsDatum> persistQueue) {
-        Config config = StreamsConfigurator.config.getConfig("hdfs");
-        this.config = HdfsConfigurator.detectConfiguration(config);
-        this.persistQueue = persistQueue;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config) {
-        this.config = config;
-        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue, Path path) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-        this.path = path;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue, Path path, String filePart) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-        this.path = path;
-        this.filePart = filePart;
-    }
-
-    public WebHdfsPersistWriter(HdfsConfiguration config, Queue<StreamsDatum> persistQueue, Path path, String filePart, int linesPerFile) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-        this.path = path;
-        this.filePart = filePart;
-        this.linesPerFile = linesPerFile;
-    }
-
-    private static final int  BYTES_IN_MB = 1024*1024;
-    private static final int  BYTES_BEFORE_FLUSH = 5 * BYTES_IN_MB;
-    private volatile int  totalByteCount = 0;
-    private volatile int  byteCount = 0;
-
-    public URI getURI() throws URISyntaxException { return new URI(WebHdfsFileSystem.SCHEME + "://" + config.getHost() + ":" + config.getPort()); }
-    public boolean isConnected() 		                { return (client != null); }
-
-    public final synchronized FileSystem getFileSystem()
-    {
-        // Check to see if we are connected.
-        if(!isConnected())
-            connectToWebHDFS();
-        return this.client;
-    }
-
-    private synchronized void connectToWebHDFS()
-    {
-        try
-        {
-            LOGGER.info("User : {}", this.config.getUser());
-            UserGroupInformation ugi = UserGroupInformation.createRemoteUser(this.config.getUser());
-            ugi.setAuthenticationMethod(UserGroupInformation.AuthenticationMethod.SIMPLE);
-
-            ugi.doAs(new PrivilegedExceptionAction<Void>() {
-                public Void run() throws Exception {
-                    Configuration conf = new Configuration();
-                    conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
-                    LOGGER.info("WebURI : {}", getURI().toString());
-                    client = FileSystem.get(getURI(), conf);
-                    LOGGER.info("Connected to WebHDFS");
-
-                    /*
-                    * ************************************************************************************************
-                    * This code is an example of how you would work with HDFS and you weren't going over
-                    * the webHDFS protocol.
-                    *
-                    * Smashew: 2013-10-01
-                    * ************************************************************************************************
-                    conf.set("fs.defaultFS", "hdfs://hadoop.mdigitallife.com:8020/user/" + userName);
-                    conf.set("namenode.host","0.0.0.0");
-                    conf.set("hadoop.job.ugi", userName);
-                    conf.set(DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY, "runner");
-                    fileSystem.createNewFile(new Path("/user/"+ userName + "/test"));
-                    FileStatus[] status = fs.listStatus(new Path("/user/" + userName));
-                    for(int i=0;i<status.length;i++)
-                    {
-                        LOGGER.info("Directory: {}", status[i].getPath());
-                    }
-                    */
-                    return null;
-                }
-            });
-        }
-        catch (Exception e)
-        {
-            LOGGER.error("There was an error connecting to WebHDFS, please check your settings and try again");
-            e.printStackTrace();
-        }
-    }
-    
-    @Override
-    public void write(StreamsDatum streamsDatum) {
-
-        synchronized (this)
-        {
-            // Check to see if we need to reset the file that we are currently working with
-            if (this.currentWriter == null || (this.fileLineCounter > this.linesPerFile))
-                try {
-                    resetFile();
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-
-            String line = convertResultToString(streamsDatum);
-            try {
-                this.currentWriter.write(line);
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-            int bytesInLine = line.getBytes().length;
-
-            totalRecordsWritten++;
-            totalByteCount += bytesInLine;
-            byteCount += bytesInLine;
-
-            if(byteCount > BYTES_BEFORE_FLUSH)
-                try {
-                    flush();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-
-            this.fileLineCounter++;
-        }
-    }
-
-    public void flush() throws IOException
-    {
-        if(this.currentWriter != null && byteCount > BYTES_BEFORE_FLUSH)
-        {
-            this.currentWriter.flush();
-            byteCount = 0;
-        }
-    }
-
-    private synchronized void resetFile() throws Exception
-    {
-        // this will keep it thread safe, so we don't create too many files
-        if(this.fileLineCounter == 0 && this.currentWriter != null)
-            return;
-
-        // if there is a current writer, we must close it first.
-        if (this.currentWriter != null)
-        {
-            flush();
-            close();
-        }
-
-        this.fileLineCounter = 0;
-
-        // Create the path for where the file is going to live.
-        Path filePath = this.path.suffix("/" + this.filePart + "-" + new Date().getTime() + ".tsv");
-
-        try
-        {
-            // Check to see if a file of the same name exists, if it does, then we are not going to be able to proceed.
-            if(client.exists(filePath))
-                throw new RuntimeException("Unable to create file: " + filePath);
-
-            this.currentWriter = new OutputStreamWriter(client.create(filePath));
-
-            // Add another file to the list of written files.
-            writtenFiles.add(filePath);
-
-            LOGGER.info("File Created: {}", filePath);
-        }
-        catch (Exception e)
-        {
-            LOGGER.error("COULD NOT CreateFile: {}", filePath);
-            LOGGER.error(e.getMessage());
-            throw e;
-        }
-    }
-
-    public synchronized void close() throws IOException
-    {
-        if(this.currentWriter != null)
-        {
-            this.currentWriter.flush();
-            this.currentWriter.close();
-            this.currentWriter = null;
-            LOGGER.info("File Closed");
-        }
-    }
-
-    private String convertResultToString(StreamsDatum entry)
-    {
-        String metadata = null;
-        try {
-            metadata = mapper.writeValueAsString(entry.getMetadata());
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
-        String documentJson = null;
-        try {
-            documentJson = mapper.writeValueAsString(entry.getDocument());
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
-
-        if(Strings.isNullOrEmpty(documentJson))
-            return null;
-        else
-            return new StringBuilder()
-                    .append(entry.getSequenceid())
-                    .append(DELIMITER)
-                    .append(entry.getTimestamp())
-                    .append(DELIMITER)
-                    .append(metadata)
-                    .append(DELIMITER)
-                    .append(documentJson)
-                    .append("\n")
-                    .toString();
-    }
-
-    @Override
-    public void start() {
-
-        connectToWebHDFS();
-
-    }
-
-    @Override
-    public void stop() {
-
-        try {
-            flush();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        try {
-            close();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Override
-    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
-    public Queue<StreamsDatum> getPersistQueue() {
-        return persistQueue;
-    }
-
-
-    @Override
-    public void run() {
-
-        start();
-
-        Thread task = new Thread(new WebHdfsPersistWriterTask(this));
-        task.start();
-
-        while( !terminate ) {
-            try {
-                Thread.sleep(new Random().nextInt(100));
-            } catch (InterruptedException e) { }
-        }
-
-        stop();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java b/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
deleted file mode 100644
index 02e4519..0000000
--- a/trunk/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistWriterTask.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.streams.hdfs;
-
-import org.apache.streams.core.StreamsDatum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Random;
-
-public class WebHdfsPersistWriterTask implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistWriterTask.class);
-
-    private WebHdfsPersistWriter writer;
-
-    public WebHdfsPersistWriterTask(WebHdfsPersistWriter writer) {
-        this.writer = writer;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            if( writer.getPersistQueue().peek() != null ) {
-                try {
-                    StreamsDatum entry = writer.persistQueue.remove();
-                    writer.write(entry);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            try {
-                Thread.sleep(new Random().nextInt(1));
-            } catch (InterruptedException e) {}
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsConfiguration.json b/trunk/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsConfiguration.json
deleted file mode 100644
index d8f2c38..0000000
--- a/trunk/streams-contrib/streams-persist-hdfs/src/main/jsonschema/org/apache/streams/hdfs/HdfsConfiguration.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.hdfs.HdfsConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "host": {
-            "type": "string",
-            "description": "WebHdfs host"
-        },
-        "port": {
-            "type": "integer",
-            "description": "WebHdfs port"
-        },
-        "path": {
-            "type": "string",
-            "description": "Base path"
-        },
-        "user": {
-            "type": "string",
-            "description": "User"
-        },
-        "password": {
-            "type": "string",
-            "description": "Password"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/pom.xml
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/pom.xml b/trunk/streams-contrib/streams-persist-kafka/pom.xml
deleted file mode 100644
index f4fcaea..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/pom.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?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-kafka</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-config</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-core</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-pojo</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.streams</groupId>
-            <artifactId>streams-util</artifactId>
-            <version>0.1-SNAPSHOT</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.kafka</groupId>
-            <artifactId>kafka_2.10</artifactId>
-            <version>0.8.0</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.jdmk</groupId>
-                    <artifactId>jmxtools</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.sun.jmx</groupId>
-                    <artifactId>jmxri</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency> <!-- Have to add to be able to .get() from storm tuple -->
-            <groupId>org.clojure</groupId>
-            <artifactId>clojure</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.101tec</groupId>
-            <artifactId>zkclient</artifactId>
-            <version>0.3</version>
-            <scope>compile</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.zookeeper</groupId>
-            <artifactId>zookeeper</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.8</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>target/generated-sources/jsonschema2pojo</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </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/kafka/KafkaConfiguration.json</sourcePath>
-                    </sourcePaths>
-                    <outputDirectory>target/generated-sources/jsonschema2pojo</outputDirectory>
-                    <targetPackage>org.apache.streams.kafka.pojo</targetPackage>
-                    <useLongIntegers>true</useLongIntegers>
-                    <useJodaDates>false</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/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaConfigurator.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaConfigurator.java b/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaConfigurator.java
deleted file mode 100644
index 7f283a7..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaConfigurator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.apache.streams.kafka;
-
-import com.typesafe.config.Config;
-import org.apache.streams.config.StreamsConfigurator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class KafkaConfigurator {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(KafkaConfigurator.class);
-
-    public static KafkaConfiguration detectConfiguration(Config kafka) {
-        String brokerlist = StreamsConfigurator.config.getString("kafka.metadata.broker.list");
-        String zkconnect = StreamsConfigurator.config.getString("kafka.zkconnect");
-        String topic = StreamsConfigurator.config.getString("kafka.topic");
-        String groupId = StreamsConfigurator.config.getString("kafka.groupid");
-
-        KafkaConfiguration kafkaConfiguration = new KafkaConfiguration();
-
-        kafkaConfiguration.setBrokerlist(brokerlist);
-        kafkaConfiguration.setZkconnect(zkconnect);
-        kafkaConfiguration.setTopic(topic);
-        kafkaConfiguration.setGroupId(groupId);
-
-        return kafkaConfiguration;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java b/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
deleted file mode 100644
index 5b1bfa5..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReader.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.apache.streams.kafka;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.typesafe.config.Config;
-import kafka.consumer.Consumer;
-import kafka.consumer.ConsumerConfig;
-import kafka.consumer.KafkaStream;
-import kafka.consumer.Whitelist;
-import kafka.javaapi.consumer.ConsumerConnector;
-import kafka.serializer.StringDecoder;
-import kafka.utils.VerifiableProperties;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistReader;
-import org.apache.streams.core.StreamsResultSet;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-import java.math.BigInteger;
-import java.util.List;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-
-public class KafkaPersistReader implements StreamsPersistReader, Serializable, Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(KafkaPersistReader.class);
-
-    protected volatile Queue<StreamsDatum> persistQueue;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private KafkaConfiguration config;
-
-    private ConsumerConfig consumerConfig;
-    private ConsumerConnector consumerConnector;
-
-    public List<KafkaStream<String, String>> inStreams;
-
-    private ExecutorService executor = Executors.newSingleThreadExecutor();
-
-    public KafkaPersistReader() {
-        Config config = StreamsConfigurator.config.getConfig("kafka");
-        this.config = KafkaConfigurator.detectConfiguration(config);
-        this.persistQueue  = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public KafkaPersistReader(Queue<StreamsDatum> persistQueue) {
-        Config config = StreamsConfigurator.config.getConfig("kafka");
-        this.config = KafkaConfigurator.detectConfiguration(config);
-        this.persistQueue = persistQueue;
-    }
-
-    public KafkaPersistReader(KafkaConfiguration config) {
-        this.config = config;
-        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public KafkaPersistReader(KafkaConfiguration config, Queue<StreamsDatum> persistQueue) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
-    public void start() {
-        Properties props = new Properties();
-        props.setProperty("serializer.encoding", "UTF8");
-
-        consumerConfig = new ConsumerConfig(props);
-
-        consumerConnector = Consumer.createJavaConsumerConnector(consumerConfig);
-
-        Whitelist topics = new Whitelist(config.getTopic());
-        VerifiableProperties vprops = new VerifiableProperties(props);
-
-        inStreams = consumerConnector.createMessageStreamsByFilter(topics, 1, new StringDecoder(vprops), new StringDecoder(vprops));
-
-        for (final KafkaStream stream : inStreams) {
-            executor.submit(new KafkaPersistReaderTask(this, stream));
-        }
-
-    }
-
-    @Override
-    public void stop() {
-        consumerConnector.shutdown();
-        while( !executor.isTerminated()) {
-            try {
-                executor.awaitTermination(5, TimeUnit.SECONDS);
-            } catch (InterruptedException e) {}
-        }
-    }
-
-    @Override
-    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
-    public Queue<StreamsDatum> getPersistQueue() {
-        return this.persistQueue;
-    }
-
-    @Override
-    public StreamsResultSet readAll() {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readNew(BigInteger bigInteger) {
-        return null;
-    }
-
-    @Override
-    public StreamsResultSet readRange(DateTime dateTime, DateTime dateTime2) {
-        return null;
-    }
-
-    private static ConsumerConfig createConsumerConfig(String a_zookeeper, String a_groupId) {
-        Properties props = new Properties();
-        props.put("zookeeper.connect", a_zookeeper);
-        props.put("group.id", a_groupId);
-        props.put("zookeeper.session.timeout.ms", "400");
-        props.put("zookeeper.sync.time.ms", "200");
-        props.put("auto.commit.interval.ms", "1000");
-        return new ConsumerConfig(props);
-    }
-
-    @Override
-    public void run() {
-        start();
-
-        // once this class can be told when to shutdown by streams, it will run stop
-        // stop();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReaderTask.java b/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReaderTask.java
deleted file mode 100644
index 514d102..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistReaderTask.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.apache.streams.kafka;
-
-import kafka.consumer.ConsumerIterator;
-import kafka.consumer.KafkaStream;
-import kafka.message.MessageAndMetadata;
-import org.apache.streams.core.StreamsDatum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Random;
-
-public class KafkaPersistReaderTask implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(KafkaPersistReaderTask.class);
-
-    private KafkaPersistReader reader;
-    private KafkaStream<String,String> stream;
-
-    public KafkaPersistReaderTask(KafkaPersistReader reader, KafkaStream<String,String> stream) {
-        this.reader = reader;
-        this.stream = stream;
-    }
-
-
-
-    @Override
-    public void run() {
-
-        MessageAndMetadata<String,String> item;
-        while(true) {
-
-            ConsumerIterator<String, String> it = stream.iterator();
-            while (it.hasNext()) {
-                item = it.next();
-                reader.persistQueue.add(new StreamsDatum(item.message()));
-            }
-            try {
-                Thread.sleep(new Random().nextInt(100));
-            } catch (InterruptedException e) {}
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java b/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
deleted file mode 100644
index 14a26f2..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.apache.streams.kafka;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.typesafe.config.Config;
-import kafka.javaapi.producer.Producer;
-import kafka.producer.KeyedMessage;
-import kafka.producer.ProducerConfig;
-import org.apache.streams.config.StreamsConfigurator;
-import org.apache.streams.core.StreamsDatum;
-import org.apache.streams.core.StreamsPersistWriter;
-import org.apache.streams.util.GuidUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class KafkaPersistWriter implements StreamsPersistWriter, Serializable, Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(KafkaPersistWriter.class);
-
-    protected volatile Queue<StreamsDatum> persistQueue;
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    private KafkaConfiguration config;
-
-    private Producer<String, String> producer;
-
-    public KafkaPersistWriter() {
-        Config config = StreamsConfigurator.config.getConfig("kafka");
-        this.config = KafkaConfigurator.detectConfiguration(config);
-        this.persistQueue  = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public KafkaPersistWriter(Queue<StreamsDatum> persistQueue) {
-        Config config = StreamsConfigurator.config.getConfig("kafka");
-        this.config = KafkaConfigurator.detectConfiguration(config);
-        this.persistQueue = persistQueue;
-    }
-
-    public KafkaPersistWriter(KafkaConfiguration config) {
-        this.config = config;
-        this.persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
-    }
-
-    public KafkaPersistWriter(KafkaConfiguration config, Queue<StreamsDatum> persistQueue) {
-        this.config = config;
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
-    public void start() {
-        Properties props = new Properties();
-
-        props.put("metadata.broker.list", config.getBrokerlist());
-        props.put("serializer.class", "kafka.serializer.StringEncoder");
-        props.put("partitioner.class", "org.apache.streams.kafka.StreamsPartitioner");
-        props.put("request.required.acks", "1");
-
-        ProducerConfig config = new ProducerConfig(props);
-
-        producer = new Producer<String, String>(config);
-
-        new Thread(new KafkaPersistWriterTask(this)).start();
-    }
-
-    @Override
-    public void stop() {
-        producer.close();
-    }
-
-    @Override
-    public void setPersistQueue(Queue<StreamsDatum> persistQueue) {
-        this.persistQueue = persistQueue;
-    }
-
-    @Override
-    public Queue<StreamsDatum> getPersistQueue() {
-        return this.persistQueue;
-    }
-
-    @Override
-    public void write(StreamsDatum entry) {
-
-        try {
-            String text = mapper.writeValueAsString(entry);
-
-            String hash = GuidUtils.generateGuid(text);
-
-            KeyedMessage<String, String> data = new KeyedMessage<String, String>(config.getTopic(), hash, text);
-
-            producer.send(data);
-
-        } catch (JsonProcessingException e) {
-            LOGGER.warn("save: {}", e);
-        }// put
-    }
-
-    @Override
-    public void run() {
-        start();
-
-        // stop();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriterTask.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriterTask.java b/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriterTask.java
deleted file mode 100644
index 0283d8d..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/KafkaPersistWriterTask.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.apache.streams.kafka;
-
-import org.apache.streams.core.StreamsDatum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Random;
-
-public class KafkaPersistWriterTask implements Runnable {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(KafkaPersistWriterTask.class);
-
-    private KafkaPersistWriter writer;
-
-    public KafkaPersistWriterTask(KafkaPersistWriter writer) {
-        this.writer = writer;
-    }
-
-    @Override
-    public void run() {
-
-        while(true) {
-            if( writer.getPersistQueue().peek() != null ) {
-                try {
-                    StreamsDatum entry = writer.persistQueue.remove();
-                    writer.write(entry);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            try {
-                Thread.sleep(new Random().nextInt(100));
-            } catch (InterruptedException e) {}
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/StreamsPartitioner.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/StreamsPartitioner.java b/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/StreamsPartitioner.java
deleted file mode 100644
index 95b0e20..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/java/org/apache/streams/kafka/StreamsPartitioner.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.streams.kafka;
-
-/**
- * Created by sblackmon on 12/15/13.
- */
-import kafka.producer.Partitioner;
-import kafka.utils.VerifiableProperties;
-
-public class StreamsPartitioner implements Partitioner<String> {
-    public StreamsPartitioner (VerifiableProperties props) {
-
-    }
-
-    public int partition(String key, int a_numPartitions) {
-        int partition = 0;
-        int offset = key.lastIndexOf('.');
-        if (offset > 0) {
-            partition = Integer.parseInt( key.substring(offset+1)) % a_numPartitions;
-        }
-        return partition;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/jsonschema/org/apache/streams/kafka/KafkaConfiguration.json
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/jsonschema/org/apache/streams/kafka/KafkaConfiguration.json b/trunk/streams-contrib/streams-persist-kafka/src/main/jsonschema/org/apache/streams/kafka/KafkaConfiguration.json
deleted file mode 100644
index 3dc84c3..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/jsonschema/org/apache/streams/kafka/KafkaConfiguration.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-    "type": "object",
-    "$schema": "http://json-schema.org/draft-03/schema",
-    "id": "#",
-    "javaType" : "org.apache.streams.kafka.KafkaConfiguration",
-    "javaInterfaces": ["java.io.Serializable"],
-    "properties": {
-        "brokerlist": {
-            "type": "string",
-            "description": "A comma-delimited list of broker nodes, used by producer"
-        },
-        "zkconnect": {
-            "type": "string",
-            "description": "A comma-delimited list of zookeeper host:ports, used by consumer"
-        },
-        "topic": {
-            "type": "string",
-            "description": "A topic to read/write from"
-        },
-        "groupId": {
-            "type": "string",
-            "description": "A required field for partitioning distributed consumers"
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-persist-kafka/src/main/resources/reference.properties
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-persist-kafka/src/main/resources/reference.properties b/trunk/streams-contrib/streams-persist-kafka/src/main/resources/reference.properties
deleted file mode 100644
index 967264d..0000000
--- a/trunk/streams-contrib/streams-persist-kafka/src/main/resources/reference.properties
+++ /dev/null
@@ -1,43 +0,0 @@
-############################# Producer Basics #############################
-
-# list of brokers used for bootstrapping knowledge about the rest of the cluster
-# format: host1:port1,host2:port2 ...
-kafka.metadata.broker.list=localhost:9092
-
-# name of the partitioner class for partitioning events; default partition spreads data randomly
-#partitioner.class=
-
-# specifies whether the messages are sent asynchronously (async) or synchronously (sync)
-kafka.producer.type=sync
-
-# specify the compression codec for all data generated: none , gzip, snappy.
-# the old config values work as well: 0, 1, 2 for none, gzip, snappy, respectivally
-kafka.compression.codec=none
-
-# message encoder
-kafka.serializer.class=kafka.serializer.DefaultEncoder
-
-# allow topic level compression
-#compressed.topics=
-
-############################# Async Producer #############################
-# maximum time, in milliseconds, for buffering data on the producer queue
-#queue.buffering.max.ms=
-
-# the maximum size of the blocking queue for buffering on the producer
-#queue.buffering.max.messages=
-
-# Timeout for event enqueue:
-# 0: events will be enqueued immediately or dropped if the queue is full
-# -ve: enqueue will block indefinitely if the queue is full
-# +ve: enqueue will block up to this many milliseconds if the queue is full
-#queue.enqueue.timeout.ms=
-
-# the number of messages batched at the producer
-#batch.num.messages=
-
-kafka.groupid=kafka
-
-kafka.zk.connect=localhost:2181
-
-


[60/71] [abbrv] adding google provider, tweaks to localbuilder and hdfs reader

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-contrib/streams-provider-google/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-google/pom.xml b/streams-contrib/streams-provider-google/pom.xml
new file mode 100644
index 0000000..57da330
--- /dev/null
+++ b/streams-contrib/streams-provider-google/pom.xml
@@ -0,0 +1,44 @@
+<?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.STREAMS26-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>streams-provider-google</artifactId>
+
+    <packaging>pom</packaging>
+
+    <properties>
+
+    </properties>
+
+    <modules>
+        <module>google-gmail</module>
+        <module>google-gplus</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>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
index 3e99827..3fc29cc 100644
--- a/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
+++ b/streams-core/src/main/java/org/apache/streams/core/builders/LocalStreamBuilder.java
@@ -4,6 +4,7 @@ import org.apache.streams.core.StreamsDatum;
 import org.apache.streams.core.StreamsPersistWriter;
 import org.apache.streams.core.StreamsProcessor;
 import org.apache.streams.core.StreamsProvider;
+import org.apache.streams.core.tasks.LocalStreamMonitorThread;
 import org.apache.streams.core.tasks.StreamsProviderTask;
 import org.apache.streams.core.tasks.StreamsTask;
 import org.apache.streams.util.SerializationUtil;
@@ -11,10 +12,7 @@ import org.joda.time.DateTime;
 
 import java.math.BigInteger;
 import java.util.*;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
+import java.util.concurrent.*;
 
 /**
  * {@link org.apache.streams.core.builders.StreamBuilder} implementation to run a data processing stream in a single
@@ -29,6 +27,7 @@ public class LocalStreamBuilder implements StreamBuilder{
     private Map<String, Object> streamConfig;
     private ExecutorService executor;
     private int totalTasks;
+    private LocalStreamMonitorThread monitorThread;
 
     /**
      *
@@ -127,7 +126,9 @@ public class LocalStreamBuilder implements StreamBuilder{
         this.executor = Executors.newFixedThreadPool(this.totalTasks);
         Map<String, StreamsProviderTask> provTasks = new HashMap<String, StreamsProviderTask>();
         Map<String, List<StreamsTask>> streamsTasks = new HashMap<String, List<StreamsTask>>();
+        monitorThread = new LocalStreamMonitorThread(this.executor, 1000);
         try {
+            this.executor.submit(monitorThread);
             for(StreamComponent comp : this.components.values()) {
                 int tasks = comp.getNumTasks();
                 List<StreamsTask> compTasks = new LinkedList<StreamsTask>();
@@ -145,7 +146,6 @@ public class LocalStreamBuilder implements StreamBuilder{
                 this.executor.submit(task);
                 provTasks.put(prov.getId(), (StreamsProviderTask) task);
             }
-
             while(isRunning) {
                 isRunning = false;
                 for(StreamsProviderTask task : provTasks.values()) {
@@ -155,6 +155,7 @@ public class LocalStreamBuilder implements StreamBuilder{
                     Thread.sleep(3000);
                 }
             }
+            //monitorThread.shutdown();
             this.executor.shutdown();
             //complete stream shut down gracfully 
             for(StreamComponent prov : this.providers.values()) {

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
index 19ef977..e382607 100644
--- a/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/BaseStreamsTask.java
@@ -53,7 +53,7 @@ public abstract class BaseStreamsTask implements StreamsTask {
     }
 
     /**
-     * NOTE NECCESSARY AT THE MOMENT.  MAY BECOME NECESSARY AS WE LOOK AT MAKING JOIN TASKS. CURRENTLY ALL TASK HAVE MAX
+     * NOTE NECESSARY AT THE MOMENT.  MAY BECOME NECESSARY AS WE LOOK AT MAKING JOIN TASKS. CURRENTLY ALL TASK HAVE MAX
      * OF 1 INPUT QUEUE.
      * Round Robins through input queues to get the next StreamsDatum. If all input queues are empty, it will return null.
      * @return the next StreamsDatum or null if all input queues are empty.

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/61592dc0/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java
----------------------------------------------------------------------
diff --git a/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java b/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java
new file mode 100644
index 0000000..4c73e74
--- /dev/null
+++ b/streams-core/src/main/java/org/apache/streams/core/tasks/LocalStreamMonitorThread.java
@@ -0,0 +1,69 @@
+package org.apache.streams.core.tasks;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryUsage;
+import java.util.concurrent.Executor;
+
+public class LocalStreamMonitorThread implements Runnable
+{
+    private static final Logger LOGGER = LoggerFactory.getLogger(LocalStreamMonitorThread.class);
+
+    private Executor executor;
+
+    private int seconds;
+
+    private boolean run = true;
+
+    public LocalStreamMonitorThread(Executor executor, int delayInSeconds) {
+        this.executor = executor;
+        this.seconds = delayInSeconds;
+    }
+
+    public void shutdown(){
+        this.run = false;
+    }
+
+    @Override
+    public void run()
+    {
+        while(run){
+
+            /**
+             *
+             * Note:
+             * Quick class and method to let us see what is going on with the JVM. We need to make sure
+             * that everything is running with as little memory as possible. If we are generating a heap
+             * overflow, this will be very apparent by the information shown here.
+             */
+
+            MemoryUsage memoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
+
+            String maxMemory = memoryUsage.getMax() == Long.MAX_VALUE ? "NO_LIMIT" :
+                    humanReadableByteCount(memoryUsage.getMax(), true);
+
+            String usedMemory = humanReadableByteCount(memoryUsage.getUsed(), true);
+
+            LOGGER.info("[monitor] Used Memory: {}, Max: {}",
+                    usedMemory,
+                    maxMemory);
+
+            try
+            {
+                Thread.sleep(seconds*1000);
+            }
+            catch (InterruptedException e)
+            { }
+        }
+    }
+
+    public String humanReadableByteCount(long bytes, boolean si) {
+        int unit = si ? 1000 : 1024;
+        if (bytes < unit) return bytes + " B";
+        int exp = (int) (Math.log(bytes) / Math.log(unit));
+        String pre = (si ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (si ? "" : "i");
+        return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
+    }
+}


[53/71] [abbrv] git commit: missing two files

Posted by sb...@apache.org.
missing two files

git-svn-id: https://svn.apache.org/repos/asf/incubator/streams/branches/STREAMS-26@1574695 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/d764d7c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/d764d7c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/d764d7c9

Branch: refs/heads/master
Commit: d764d7c969ed41733f17fc1d5c266926442b4e42
Parents: ab103c9
Author: sblackmon <sb...@unknown>
Authored: Wed Mar 5 22:22:46 2014 +0000
Committer: sblackmon <sb...@unknown>
Committed: Wed Mar 5 22:22:46 2014 +0000

----------------------------------------------------------------------
 .../streams/hdfs/WebHdfsPersistReader.java      | 196 +++++++++++++++++++
 .../streams/hdfs/WebHdfsPersistReaderTask.java  |  54 +++++
 2 files changed, 250 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/d764d7c9/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
new file mode 100644
index 0000000..cf4c146
--- /dev/null
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReader.java
@@ -0,0 +1,196 @@
+package org.apache.streams.hdfs;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Queues;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.*;
+import org.apache.hadoop.hdfs.web.WebHdfsFileSystem;
+import org.apache.hadoop.security.UserGroupInformation;
+import org.apache.streams.core.StreamsDatum;
+import org.apache.streams.core.StreamsPersistReader;
+import org.apache.streams.core.StreamsResultSet;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.math.BigInteger;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.security.PrivilegedExceptionAction;
+import java.util.Collection;
+import java.util.Queue;
+import java.util.concurrent.*;
+
+/**
+ * Created by sblackmon on 2/28/14.
+ */
+public class WebHdfsPersistReader implements StreamsPersistReader {
+
+    public final static String STREAMS_ID = "WebHdfsPersistReader";
+
+    private final static Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistReader.class);
+
+    protected final static char DELIMITER = '\t';
+
+    protected FileSystem client;
+    protected Path path;
+    protected FileStatus[] status;
+
+    protected volatile Queue<StreamsDatum> persistQueue;
+
+    private ObjectMapper mapper = new ObjectMapper();
+
+    private HdfsReaderConfiguration hdfsConfiguration;
+
+    private ExecutorService executor;
+
+    public WebHdfsPersistReader(HdfsReaderConfiguration hdfsConfiguration) {
+        this.hdfsConfiguration = hdfsConfiguration;
+    }
+
+    public URI getURI() throws URISyntaxException { return new URI(WebHdfsFileSystem.SCHEME + "://" + hdfsConfiguration.getHost() + ":" + hdfsConfiguration.getPort()); }
+    public boolean isConnected() 		                { return (client != null); }
+
+    public final synchronized FileSystem getFileSystem()
+    {
+        // Check to see if we are connected.
+        if(!isConnected())
+            connectToWebHDFS();
+        return this.client;
+    }
+
+    private synchronized void connectToWebHDFS()
+    {
+        try
+        {
+            LOGGER.info("User : {}", this.hdfsConfiguration.getUser());
+            UserGroupInformation ugi = UserGroupInformation.createRemoteUser(this.hdfsConfiguration.getUser());
+            ugi.setAuthenticationMethod(UserGroupInformation.AuthenticationMethod.SIMPLE);
+
+            ugi.doAs(new PrivilegedExceptionAction<Void>() {
+                public Void run() throws Exception {
+                    Configuration conf = new Configuration();
+                    conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
+                    LOGGER.info("WebURI : {}", getURI().toString());
+                    client = FileSystem.get(getURI(), conf);
+                    LOGGER.info("Connected to WebHDFS");
+
+                    /*
+                    * ************************************************************************************************
+                    * This code is an example of how you would work with HDFS and you weren't going over
+                    * the webHDFS protocol.
+                    *
+                    * Smashew: 2013-10-01
+                    * ************************************************************************************************
+                    conf.set("fs.defaultFS", "hdfs://hadoop.mdigitallife.com:8020/user/" + userName);
+                    conf.set("namenode.host","0.0.0.0");
+                    conf.set("hadoop.job.ugi", userName);
+                    conf.set(DFSConfigKeys.DFS_NAMENODE_USER_NAME_KEY, "runner");
+                    fileSystem.createNewFile(new Path("/user/"+ userName + "/test"));
+                    FileStatus[] status = fs.listStatus(new Path("/user/" + userName));
+                    for(int i=0;i<status.length;i++)
+                    {
+                        LOGGER.info("Directory: {}", status[i].getPath());
+                    }
+                    */
+                    return null;
+                }
+            });
+        }
+        catch (Exception e)
+        {
+            LOGGER.error("There was an error connecting to WebHDFS, please check your settings and try again");
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void prepare(Object configurationObject) {
+        LOGGER.debug("Prepare");
+        connectToWebHDFS();
+        path = new Path(hdfsConfiguration.getPath() + "/" + hdfsConfiguration.getReaderPath());
+        try {
+            status = client.listStatus(path);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        persistQueue = new ConcurrentLinkedQueue<StreamsDatum>();
+        executor = Executors.newSingleThreadExecutor();
+    }
+
+    @Override
+    public void cleanUp() {
+
+    }
+
+    @Override
+    public StreamsResultSet readAll() {
+        readSourceWritePersistQueue();
+        return new StreamsResultSet(persistQueue);
+    }
+
+    @Override
+    public void startStream() {
+        LOGGER.debug("startStream");
+        executor.submit(new WebHdfsPersistReaderTask(this));
+    }
+
+    @Override
+    public StreamsResultSet readCurrent() {
+
+        LOGGER.debug("readCurrent: {}", persistQueue.size());
+
+        Collection<StreamsDatum> currentIterator = Lists.newArrayList();
+        Iterators.addAll(currentIterator, persistQueue.iterator());
+
+        StreamsResultSet current = new StreamsResultSet(Queues.newConcurrentLinkedQueue(currentIterator));
+
+        persistQueue.clear();
+
+        return current;
+    }
+
+    @Override
+    public StreamsResultSet readNew(BigInteger sequence) {
+        return null;
+    }
+
+    @Override
+    public StreamsResultSet readRange(DateTime start, DateTime end) {
+        return null;
+    }
+
+    private void readSourceWritePersistQueue() {
+        for( FileStatus fileStatus : status ) {
+            BufferedReader reader;
+
+            if( fileStatus.isFile() && !fileStatus.getPath().getName().endsWith("_SUCCESS")) {
+                try {
+                    reader = new BufferedReader(new InputStreamReader(client.open(fileStatus.getPath())));
+
+                    String line;
+                    do{
+                        try {
+                            line = reader.readLine();
+                            if( line != null ) {
+                                String[] fields = line.split(Character.toString(DELIMITER));
+                                persistQueue.offer(new StreamsDatum(fields[3]));
+                            }
+                        } catch (IOException e) {
+                            break;
+                        }
+                    } while( line != null );
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    break;
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/d764d7c9/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
new file mode 100644
index 0000000..e8c1695
--- /dev/null
+++ b/streams-contrib/streams-persist-hdfs/src/main/java/org/apache/streams/hdfs/WebHdfsPersistReaderTask.java
@@ -0,0 +1,54 @@
+package org.apache.streams.hdfs;
+
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.streams.core.StreamsDatum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Random;
+
+public class WebHdfsPersistReaderTask implements Runnable {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(WebHdfsPersistReaderTask.class);
+
+    private WebHdfsPersistReader reader;
+
+    public WebHdfsPersistReaderTask(WebHdfsPersistReader reader) {
+        this.reader = reader;
+    }
+
+    @Override
+    public void run() {
+
+        for( FileStatus fileStatus : reader.status ) {
+            BufferedReader bufferedReader;
+
+            if( fileStatus.isFile() && !fileStatus.getPath().getName().endsWith("_SUCCESS")) {
+                try {
+                    bufferedReader = new BufferedReader(new InputStreamReader(reader.client.open(fileStatus.getPath())));
+
+                    String line = "";
+                    do{
+                        try {
+                            line = bufferedReader.readLine();
+                            if( line != null ) {
+                                String[] fields = line.split(Character.toString(reader.DELIMITER));
+                                reader.persistQueue.offer(new StreamsDatum(fields[3]));
+                            }
+                        } catch (Exception e) {
+                            LOGGER.warn("Failed processing " + line);
+                        }
+                    } while( line != null );
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    break;
+                }
+            }
+        }
+
+    }
+
+}


[08/71] [abbrv] fixing STREAMS-26 branch

Posted by sb...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java b/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
deleted file mode 100644
index 83e816a..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterEventClassifierTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.apache.streams.twitter.test;
-
-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.provider.TwitterEventClassifier;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- * Created by sblackmon on 12/13/13.
- */
-public class TwitterEventClassifierTest {
-
-    private String tweet = "{\"created_at\":\"Wed Dec 11 22:27:34 +0000 2013\",\"id\":410898682381615105,\"id_str\":\"410898682381615105\",\"text\":\"Men's Basketball Single-Game Tickets Available - A limited number of tickets remain for Kentucky's upcoming men's ... http:\\/\\/t.co\\/SH5YZGpdRx\",\"source\":\"\\u003ca href=\\\"http:\\/\\/www.hootsuite.com\\\" rel=\\\"nofollow\\\"\\u003eHootSuite\\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\":91407775,\"id_str\":\"91407775\",\"name\":\"Winchester, KY\",\"screen_name\":\"winchester_ky\",\"location\":\"\",\"url\":null,\"description\":null,\"protected\":false,\"followers_count\":136,\"friends_count\":0,\"listed_count\":1,\"created_at\":\"Fri Nov 20 19:29:02 +0000 2009\",\"favourites_count\":0,\"utc_offset\":null,\"time_zone\":null,\"geo_enabled\":false,\"verified\":fa
 lse,\"statuses_count\":1793,\"lang\":\"en\",\"contributors_enabled\":false,\"is_translator\":false,\"profile_background_color\":\"C0DEED\",\"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\",\"profile_background_tile\":false,\"profile_image_url\":\"http:\\/\\/pbs.twimg.com\\/profile_images\\/613854495\\/winchester_sociallogo_normal.jpg\",\"profile_image_url_https\":\"https:\\/\\/pbs.twimg.com\\/profile_images\\/613854495\\/winchester_sociallogo_normal.jpg\",\"profile_link_color\":\"0084B4\",\"profile_sidebar_border_color\":\"C0DEED\",\"profile_sidebar_fill_color\":\"DDEEF6\",\"profile_text_color\":\"333333\",\"profile_use_background_image\":true,\"default_profile\":true,\"default_profile_image\":false,\"following\":null,\"follow_request_sent\":null,\"notifications\":null},\"geo\":null,\"coordinates\":null,\"place\":null,\"contributors
 \":null,\"retweet_count\":0,\"favorite_count\":0,\"entities\":{\"hashtags\":[],\"symbols\":[],\"urls\":[{\"url\":\"http:\\/\\/t.co\\/SH5YZGpdRx\",\"expanded_url\":\"http:\\/\\/ow.ly\\/2C2XL1\",\"display_url\":\"ow.ly\\/2C2XL1\",\"indices\":[118,140]}],\"user_mentions\":[]},\"favorited\":false,\"retweeted\":false,\"possibly_sensitive\":false,\"filter_level\":\"medium\",\"lang\":\"en\"}\n";
-    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";
-
-    @Test
-    public void testDetectTweet() {
-        Class result = TwitterEventClassifier.detectClass(tweet);
-        if( !result.equals(Tweet.class) )
-            Assert.fail();
-    }
-
-    @Test
-    public void testDetectRetweet() {
-        Class result = TwitterEventClassifier.detectClass(retweet);
-        if( !result.equals(Retweet.class) )
-            Assert.fail();
-    }
-
-    @Test
-    public void testDetectDelete() {
-        Class result = TwitterEventClassifier.detectClass(delete);
-        if( !result.equals(Delete.class) )
-            Assert.fail();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/6ea69f29/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterStreamProviderTest.java
----------------------------------------------------------------------
diff --git a/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterStreamProviderTest.java b/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterStreamProviderTest.java
deleted file mode 100644
index 33d01f0..0000000
--- a/trunk/streams-contrib/streams-provider-twitter/src/test/java/org/apache/streams/twitter/test/TwitterStreamProviderTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.apache.streams.twitter.test;
-
-import com.google.common.collect.Lists;
-import org.apache.streams.twitter.TwitterOAuthConfiguration;
-import org.apache.streams.twitter.TwitterStreamConfiguration;
-import org.apache.streams.twitter.provider.TwitterStreamProvider;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by sblackmon on 12/10/13.
- */
-public class TwitterStreamProviderTest {
-
-    private final static Logger LOGGER = LoggerFactory.getLogger(TwitterStreamProviderTest.class);
-
-    @Ignore
-    @Test
-    public void Tests()
-    {
-        TwitterStreamConfiguration twitterStreamConfiguration = new TwitterStreamConfiguration();
-        TwitterOAuthConfiguration twitterOAuthConfiguration = new TwitterOAuthConfiguration();
-        twitterOAuthConfiguration.setAccessToken("281592383-DMabF7UmiZqDAyzHwNPe09iruBSplrt9nHdavZP4");
-        twitterOAuthConfiguration.setAccessTokenSecret("uA1oJcSEkWB9gAchE3J1FsCZlagxgunVRmfXx62OZU");
-        twitterStreamConfiguration.setOauth(twitterOAuthConfiguration);
-        twitterStreamConfiguration.setTrack(Lists.newArrayList("stream"));
-
-        TwitterStreamProvider stream = new TwitterStreamProvider(twitterStreamConfiguration);
-
-        //Assert.assertEquals(stream.getUrl().substring(0,5), "https");
-        //Assert.assertNotNull(stream.getParams().get("track"));
-        //Assert.assertFalse(stream.getParams().containsKey("follow"));
-        //Assert.assertArrayEquals(Lists.newArrayList("track").toArray(), Lists.newArrayList(stream.getParams().keySet()).toArray());
-
-        // any deterministic test of the stream would go here
-
-    }
-}


[57/71] [abbrv] git commit: these iml files shouldn't be here

Posted by sb...@apache.org.
these iml files shouldn't be here


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/d4b03f85
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/d4b03f85
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/d4b03f85

Branch: refs/heads/master
Commit: d4b03f8539c913294623003ccd0ec531d9b1aab7
Parents: 3499016
Author: Steve Blackmon <sb...@w2odigital.com>
Authored: Wed Mar 19 19:22:10 2014 -0500
Committer: Steve Blackmon <sb...@w2odigital.com>
Committed: Wed Mar 19 19:22:10 2014 -0500

----------------------------------------------------------------------
 provision/provision.iml                         | 19 ------
 .../streams-components-test.iml                 | 57 ----------------
 .../streams-provider-rss.iml                    | 71 --------------------
 3 files changed, 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/d4b03f85/provision/provision.iml
----------------------------------------------------------------------
diff --git a/provision/provision.iml b/provision/provision.iml
deleted file mode 100644
index fb87ba5..0000000
--- a/provision/provision.iml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/d4b03f85/streams-contrib/streams-components-test/streams-components-test.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-components-test/streams-components-test.iml b/streams-contrib/streams-components-test/streams-components-test.iml
deleted file mode 100644
index 0fcef34..0000000
--- a/streams-contrib/streams-components-test/streams-components-test.iml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="streams-core (3)" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="module" module-name="streams-util (3)" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-    <orderEntry type="module" module-name="streams-pojo (3)" />
-    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
-    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-json-org:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.json:json:20090211" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/d4b03f85/streams-contrib/streams-provider-rss/streams-provider-rss.iml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/streams-provider-rss.iml b/streams-contrib/streams-provider-rss/streams-provider-rss.iml
deleted file mode 100644
index 2846a74..0000000
--- a/streams-contrib/streams-provider-rss/streams-provider-rss.iml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/target/generated-sources/jsonschema2pojo" isTestSource="false" generated="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target/classes" />
-      <excludeFolder url="file://$MODULE_DIR$/target/maven-archiver" />
-      <excludeFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" />
-      <excludeFolder url="file://$MODULE_DIR$/target/maven-status" />
-      <excludeFolder url="file://$MODULE_DIR$/target/surefire-reports" />
-      <excludeFolder url="file://$MODULE_DIR$/target/test-classes" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: com.typesafe:config:1.2.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.jsonschema2pojo:jsonschema2pojo-core:0.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.codemodel:codemodel:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
-    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.0.0.GA" level="project" />
-    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.11" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:1.3.9" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.6" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
-    <orderEntry type="module" module-name="streams-core" />
-    <orderEntry type="module" module-name="streams-util" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
-    <orderEntry type="library" name="Maven: com.google.guava:guava:16.0.1" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.0.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.0.9" level="project" />
-    <orderEntry type="module" module-name="streams-pojo" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.stream:stax-api:1.0-2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:jackson-xml-databind:0.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.codehaus.jackson:jackson-xc:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:aalto-xml:0.9.9" level="project" />
-    <orderEntry type="library" name="Maven: nz.net.ultraq.jaxb:jaxb-utilities:1.2.6" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.2.7" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:2.16" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.xml.fastinfoset:FastInfoset:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: javax.xml.bind:jsr173_api:1.0" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.4" level="project" />
-    <orderEntry type="module" module-name="streams-config" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.2.1" level="project" />
-    <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path:0.9.0" level="project" />
-    <orderEntry type="library" name="Maven: net.minidev:json-smart:1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.jayway.jsonpath:json-path-assert:0.9.0" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
-    <orderEntry type="module" module-name="streams-persist-console" scope="TEST" />
-    <orderEntry type="library" name="Maven: rome:rome:1.0" level="project" />
-    <orderEntry type="library" name="Maven: jdom:jdom:1.0" level="project" />
-  </component>
-  <component name="POM File Configuration" pomFile="" />
-</module>
-