You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2012/01/10 03:51:51 UTC

svn commit: r1229457 - in /camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter: ./ consumer/ consumer/directmessage/ consumer/search/ consumer/streaming/ consumer/timeline/ data/ util/

Author: ningjiang
Date: Tue Jan 10 02:51:50 2012
New Revision: 1229457

URL: http://svn.apache.org/viewvc?rev=1229457&view=rev
Log:
CAMEL-4873 Twitter4J response objects as Exchange body

Modified:
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/Twitter4JConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/directmessage/DirectMessageConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/StreamingConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/HomeConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/MentionsConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/PublicConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/RetweetsConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/UserConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/Status.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/User.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java Tue Jan 10 02:51:50 2012
@@ -42,7 +42,6 @@ public class TwitterComponent extends De
             break;
         }
 
-        endpoint.initiate();
         return endpoint;
     }
 

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpoint.java Tue Jan 10 02:51:50 2012
@@ -22,8 +22,6 @@ import twitter4j.Twitter;
 
 public interface TwitterEndpoint extends Endpoint {
 
-    void initiate();
-
     Twitter getTwitter();
 
     TwitterConfiguration getProperties();

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointDirect.java Tue Jan 10 02:51:50 2012
@@ -38,16 +38,19 @@ public class TwitterEndpointDirect exten
         this.properties = properties;
     }
 
+    @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         Twitter4JConsumer twitter4jConsumer = Twitter4JFactory.getConsumer(this, getEndpointUri());
         return new TwitterConsumerDirect(this, processor, twitter4jConsumer);
     }
 
+    @Override
     public Producer createProducer() throws Exception {
         return Twitter4JFactory.getProducer(this, getEndpointUri());
     }
 
-    public void initiate() {
+    @Override
+    protected void doStart() {
         properties.checkComplete();
         twitter = new TwitterFactory(properties.getConfiguration()).getInstance();
     }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterEndpointPolling.java Tue Jan 10 02:51:50 2012
@@ -39,6 +39,7 @@ public class TwitterEndpointPolling exte
         this.properties = properties;
     }
 
+    @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         Twitter4JConsumer twitter4jConsumer = Twitter4JFactory.getConsumer(this, getEndpointUri());
         TwitterConsumer tc = new TwitterConsumerPolling(this, processor, twitter4jConsumer);
@@ -46,11 +47,13 @@ public class TwitterEndpointPolling exte
         return tc;
     }
 
+    @Override
     public Producer createProducer() throws Exception {
         return Twitter4JFactory.getProducer(this, getEndpointUri());
     }
 
-    public void initiate() {
+    @Override
+    protected void doStart() {
         properties.checkComplete();
         twitter = new TwitterFactory(properties.getConfiguration()).getInstance();
     }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/Twitter4JConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/Twitter4JConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/Twitter4JConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/Twitter4JConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,16 +16,25 @@
  */
 package org.apache.camel.component.twitter.consumer;
 
-import java.util.Iterator;
-
-import org.apache.camel.component.twitter.data.Status;
+import java.io.Serializable;
+import java.util.List;
 
 import twitter4j.TwitterException;
 
 
-public interface Twitter4JConsumer {
+public abstract class Twitter4JConsumer {
+    
+    protected long lastId = 1;
+    
+    // Can't assume that the end of the list will be the most recent ID.
+    // The Twitter API sometimes returns them slightly out of order.
+    protected void checkLastId(long newId) {
+    	if (newId > lastId) {
+			lastId = newId;
+		}
+    }
 
-    Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException;
+    public abstract List<? extends Serializable> pollConsume() throws TwitterException;
 
-    Iterator<Status> requestDirectStatus() throws TwitterException;
+    public abstract List<? extends Serializable> directConsume() throws TwitterException;
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerDirect.java Tue Jan 10 02:51:50 2012
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.component.twitter.consumer;
 
+import java.io.Serializable;
 import java.util.Iterator;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.direct.DirectConsumer;
 import org.apache.camel.component.twitter.TwitterEndpoint;
-import org.apache.camel.component.twitter.data.Status;
 
 /**
  * Camel DirectConsumer implementation.
@@ -43,17 +43,10 @@ public class TwitterConsumerDirect exten
     protected void doStart() throws Exception {
         super.doStart();
 
-        Iterator<Status> statusIterator = twitter4jConsumer.requestDirectStatus();
-        while (statusIterator.hasNext()) {
-            Status tStatus = statusIterator.next();
-
-            Exchange e = getEndpoint().createExchange();
-
-            e.getIn().setHeader("screenName", tStatus.getUser().getScreenName());
-            e.getIn().setHeader("date", tStatus.getDate());
-
-            e.getIn().setBody(tStatus);
-
+        Iterator<? extends Serializable> i = twitter4jConsumer.directConsume().iterator();
+        while (i.hasNext()) {
+        	Exchange e = getEndpoint().createExchange();
+            e.getIn().setBody(i.next());
             getProcessor().process(e);
         }
     }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/TwitterConsumerPolling.java Tue Jan 10 02:51:50 2012
@@ -16,13 +16,13 @@
  */
 package org.apache.camel.component.twitter.consumer;
 
+import java.io.Serializable;
 import java.util.Iterator;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.component.twitter.TwitterEndpoint;
-import org.apache.camel.component.twitter.data.Status;
 import org.apache.camel.impl.ScheduledPollConsumer;
 
 /**
@@ -32,7 +32,6 @@ import org.apache.camel.impl.ScheduledPo
 public class TwitterConsumerPolling extends ScheduledPollConsumer implements TwitterConsumer {
 
     private Twitter4JConsumer twitter4jConsumer;
-    private long lastStatusUpdateID = 1;
 
     public TwitterConsumerPolling(TwitterEndpoint endpoint, Processor processor,
                                   Twitter4JConsumer twitter4jConsumer) {
@@ -47,37 +46,17 @@ public class TwitterConsumerPolling exte
     }
 
     protected int poll() throws Exception {
-        Iterator<Status> statusIterator = twitter4jConsumer.requestPollingStatus(lastStatusUpdateID);
+        Iterator<? extends Serializable> i = twitter4jConsumer.pollConsume().iterator();
 
         int total = 0;
-        while (statusIterator.hasNext()) {
-            Status tStatus = statusIterator.next();
-
-            // if (tStatus.getId() <= lastStatusUpdateID) {
-            // return 0;
-            // }
-
+        while (i.hasNext()) {
             Exchange e = getEndpoint().createExchange();
-
-            e.getIn().setHeader("screenName", tStatus.getUser().getScreenName());
-            e.getIn().setHeader("date", tStatus.getDate());
-
-            e.getIn().setBody(tStatus);
-
+            e.getIn().setBody(i.next());
             getProcessor().process(e);
 
             total++;
-            // make sure it ignores updates that were already polled
-            long newerStatusID = tStatus.getId();
-            if (newerStatusID > lastStatusUpdateID) {
-                lastStatusUpdateID = newerStatusID;
-            }
         }
 
         return total;
     }
-
-    public long getLastStatusUpdateID() {
-        return lastStatusUpdateID;
-    }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/directmessage/DirectMessageConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/directmessage/DirectMessageConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/directmessage/DirectMessageConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/directmessage/DirectMessageConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,13 +16,10 @@
  */
 package org.apache.camel.component.twitter.consumer.directmessage;
 
-import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
 
 import twitter4j.DirectMessage;
 import twitter4j.Paging;
@@ -31,7 +28,7 @@ import twitter4j.TwitterException;
 /**
  * Consumes a user's direct messages
  */
-public class DirectMessageConsumer implements Twitter4JConsumer {
+public class DirectMessageConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -39,19 +36,15 @@ public class DirectMessageConsumer imple
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
-        return getIterator(te.getTwitter().getDirectMessages(new Paging(lastStatusUpdateId)));
+    public List<DirectMessage> pollConsume() throws TwitterException {
+    	List<DirectMessage> list = te.getTwitter().getDirectMessages(new Paging(lastId));
+    	for (DirectMessage dm : list) {
+    		checkLastId(dm.getId());
+    	}
+        return list;
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
-        return getIterator(te.getTwitter().getDirectMessages());
-    }
-
-    private Iterator<Status> getIterator(List<DirectMessage> messagesList) {
-        List<Status> statusCamelTweet = new ArrayList<Status>(messagesList.size());
-        for (Iterator<DirectMessage> i = messagesList.iterator(); i.hasNext();) {
-            statusCamelTweet.add(new Status(i.next()));
-        }
-        return statusCamelTweet.iterator();
+    public List<DirectMessage> directConsume() throws TwitterException {
+        return te.getTwitter().getDirectMessages();
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/search/SearchConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,13 +16,10 @@
  */
 package org.apache.camel.component.twitter.consumer.search;
 
-import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
 
 import twitter4j.Query;
 import twitter4j.QueryResult;
@@ -33,7 +30,7 @@ import twitter4j.TwitterException;
  * Consumes search requests
  * 
  */
-public class SearchConsumer implements Twitter4JConsumer {
+public class SearchConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -41,28 +38,25 @@ public class SearchConsumer implements T
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
+    public List<Tweet> pollConsume() throws TwitterException {
         String keywords = te.getProperties().getKeywords();
         Query query = new Query(keywords);
-        query.setSinceId(lastStatusUpdateId);
+        query.setSinceId(lastId);
         return search(query);
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
+    public List<Tweet> directConsume() throws TwitterException {
         String keywords = te.getProperties().getKeywords();
         return search(new Query(keywords));
     }
 
-    private Iterator<Status> search(Query query) throws TwitterException {
+    private List<Tweet> search(Query query) throws TwitterException {
         QueryResult qr = te.getTwitter().search(query);
         List<Tweet> tweets = qr.getTweets();
 
-        List<Status> statusCamel = new ArrayList<Status>(tweets.size());
-        Iterator<Tweet> i = tweets.iterator();
-        while (i.hasNext()) {
-            statusCamel.add(new Status(i.next()));
-        }
-
-        return statusCamel.iterator();
+        for (Tweet t : tweets) {
+    		checkLastId(t.getId());
+    	}
+        return tweets;
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/StreamingConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/StreamingConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/StreamingConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/StreamingConsumer.java Tue Jan 10 02:51:50 2012
@@ -18,14 +18,12 @@ package org.apache.camel.component.twitt
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
-import org.apache.camel.component.twitter.util.TwitterConverter;
 
+import twitter4j.Status;
 import twitter4j.StatusDeletionNotice;
 import twitter4j.StatusListener;
 import twitter4j.TwitterException;
@@ -34,7 +32,7 @@ import twitter4j.TwitterException;
  * Super class providing consuming capabilities for the streaming API.
  * 
  */
-public class StreamingConsumer implements Twitter4JConsumer, StatusListener {
+public class StreamingConsumer extends Twitter4JConsumer implements StatusListener {
 
     TwitterEndpoint te;
     private List<Status> receivedStatuses = new ArrayList<Status>();
@@ -44,12 +42,12 @@ public class StreamingConsumer implement
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
+    public List<Status> pollConsume() throws TwitterException {
         clear = true;
-        return Collections.unmodifiableList(receivedStatuses).iterator();
+        return Collections.unmodifiableList(receivedStatuses);
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
+    public List<Status> directConsume() throws TwitterException {
         // not used
         return null;
     }
@@ -61,12 +59,12 @@ public class StreamingConsumer implement
     }
 
     @Override
-    public void onStatus(twitter4j.Status status) {
+    public void onStatus(Status status) {
         if (clear) {
             receivedStatuses.clear();
             clear = false;
         }
-        receivedStatuses.add(TwitterConverter.convertStatus(status));
+        receivedStatuses.add(status);
     }
 
     @Override

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/HomeConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/HomeConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/HomeConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/HomeConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,22 +16,20 @@
  */
 package org.apache.camel.component.twitter.consumer.timeline;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
-import org.apache.camel.component.twitter.util.TwitterConverter;
 
 import twitter4j.Paging;
+import twitter4j.Status;
 import twitter4j.TwitterException;
 
 /**
  * Consumes the user's home timeline.
  * 
  */
-public class HomeConsumer implements Twitter4JConsumer {
+public class HomeConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -39,13 +37,15 @@ public class HomeConsumer implements Twi
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getHomeTimeline(new Paging(lastStatusUpdateId));
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> pollConsume() throws TwitterException {
+        List<Status> list = te.getTwitter().getHomeTimeline(new Paging(lastId));
+        for (Status s : list) {
+    		checkLastId(s.getId());
+    	}
+        return list;
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getHomeTimeline();
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> directConsume() throws TwitterException {
+        return te.getTwitter().getHomeTimeline();
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/MentionsConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/MentionsConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/MentionsConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/MentionsConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,21 +16,19 @@
  */
 package org.apache.camel.component.twitter.consumer.timeline;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
-import org.apache.camel.component.twitter.util.TwitterConverter;
 
 import twitter4j.Paging;
+import twitter4j.Status;
 import twitter4j.TwitterException;
 
 /**
  * Consumes tweets in which the user has been mentioned.
  */
-public class MentionsConsumer implements Twitter4JConsumer {
+public class MentionsConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -38,13 +36,15 @@ public class MentionsConsumer implements
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getMentions(new Paging(lastStatusUpdateId));
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> pollConsume() throws TwitterException {
+        List<Status> list = te.getTwitter().getMentions(new Paging(lastId));
+        for (Status s : list) {
+    		checkLastId(s.getId());
+    	}
+        return list;
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getMentions();
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> directConsume() throws TwitterException {
+        return te.getTwitter().getMentions();
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/PublicConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/PublicConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/PublicConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/PublicConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,21 +16,19 @@
  */
 package org.apache.camel.component.twitter.consumer.timeline;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
-import org.apache.camel.component.twitter.util.TwitterConverter;
 
+import twitter4j.Status;
 import twitter4j.TwitterException;
 
 /**
  * Consumes the public timeline
  * 
  */
-public class PublicConsumer implements Twitter4JConsumer {
+public class PublicConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -38,16 +36,15 @@ public class PublicConsumer implements T
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
+    public List<Status> pollConsume() throws TwitterException {
         return getPublicTimeline();
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
+    public List<Status> directConsume() throws TwitterException {
         return getPublicTimeline();
     }
 
-    private Iterator<Status> getPublicTimeline() throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getPublicTimeline();
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    private List<Status> getPublicTimeline() throws TwitterException {
+        return te.getTwitter().getPublicTimeline();
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/RetweetsConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/RetweetsConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/RetweetsConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/RetweetsConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,22 +16,20 @@
  */
 package org.apache.camel.component.twitter.consumer.timeline;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
-import org.apache.camel.component.twitter.util.TwitterConverter;
 
 import twitter4j.Paging;
+import twitter4j.Status;
 import twitter4j.TwitterException;
 
 /**
  * Consumes a user's tweets that have been retweeted
  * 
  */
-public class RetweetsConsumer implements Twitter4JConsumer {
+public class RetweetsConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -39,13 +37,15 @@ public class RetweetsConsumer implements
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getRetweetsOfMe(new Paging(lastStatusUpdateId));
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> pollConsume() throws TwitterException {
+        List<Status> list = te.getTwitter().getRetweetsOfMe(new Paging(lastId));
+        for (Status s : list) {
+    		checkLastId(s.getId());
+    	}
+        return list;
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getRetweetsOfMe();
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> directConsume() throws TwitterException {
+        return te.getTwitter().getRetweetsOfMe();
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/UserConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/UserConsumer.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/UserConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/timeline/UserConsumer.java Tue Jan 10 02:51:50 2012
@@ -16,21 +16,19 @@
  */
 package org.apache.camel.component.twitter.consumer.timeline;
 
-import java.util.Iterator;
 import java.util.List;
 
 import org.apache.camel.component.twitter.TwitterEndpoint;
 import org.apache.camel.component.twitter.consumer.Twitter4JConsumer;
-import org.apache.camel.component.twitter.data.Status;
-import org.apache.camel.component.twitter.util.TwitterConverter;
 
 import twitter4j.Paging;
+import twitter4j.Status;
 import twitter4j.TwitterException;
 
 /**
  * Consumes the timeline of a given user.
  */
-public class UserConsumer implements Twitter4JConsumer {
+public class UserConsumer extends Twitter4JConsumer {
 
     TwitterEndpoint te;
 
@@ -38,14 +36,16 @@ public class UserConsumer implements Twi
         this.te = te;
     }
 
-    public Iterator<Status> requestPollingStatus(long lastStatusUpdateId) throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getUserTimeline(te.getProperties().getUser(),
-                                                                            new Paging(lastStatusUpdateId));
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> pollConsume() throws TwitterException {
+        List<Status> list = te.getTwitter().getUserTimeline(
+        		te.getProperties().getUser(), new Paging(lastId));
+        for (Status s : list) {
+    		checkLastId(s.getId());
+    	}
+        return list;
     }
 
-    public Iterator<Status> requestDirectStatus() throws TwitterException {
-        List<twitter4j.Status> statusList = te.getTwitter().getUserTimeline(te.getProperties().getUser());
-        return TwitterConverter.convertStatuses(statusList).iterator();
+    public List<Status> directConsume() throws TwitterException {
+        return te.getTwitter().getUserTimeline(te.getProperties().getUser());
     }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/Status.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/Status.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/Status.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/Status.java Tue Jan 10 02:51:50 2012
@@ -1,181 +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 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.
- */
-package org.apache.camel.component.twitter.data;
-
-import java.util.Date;
-
-import twitter4j.DirectMessage;
-import twitter4j.Tweet;
-
-public class Status {
-
-    private Date date;
-    private User user;
-    private long id;
-    private String text;
-    private boolean truncated;
-    private GeoLocation geoLocation;
-    private String inReplyToScreenName;
-    private long inReplyToStatusId;
-    private long inReplyToUserId;
-    private long retweetCount;
-    private Status retweetedStatus;
-    private String source;
-
-    public Status(twitter4j.Status s) {
-        this.user = new User(s.getUser());
-        this.id = s.getId();
-        this.text = s.getText();
-        this.date = s.getCreatedAt();
-        this.truncated = s.isTruncated();
-        this.inReplyToScreenName = s.getInReplyToScreenName();
-        this.inReplyToStatusId = s.getInReplyToStatusId();
-        this.inReplyToUserId = s.getInReplyToUserId();
-        this.retweetCount = s.getRetweetCount();
-        this.source = s.getSource();
-
-        if (s.getGeoLocation() != null) {
-            this.geoLocation = new GeoLocation(s.getGeoLocation());
-        }
-
-        if (s.getRetweetedStatus() != null) {
-            this.retweetedStatus = new Status(s.getRetweetedStatus());
-        }
-    }
-
-    public Status(Tweet s) {
-        this.user = new User(s.getFromUser());
-        this.id = s.getId();
-        this.text = s.getText();
-        this.date = s.getCreatedAt();
-        this.source = s.getSource();
-
-        if (s.getGeoLocation() != null) {
-            this.geoLocation = new GeoLocation(s.getGeoLocation());
-        }
-    }
-
-    public Status(DirectMessage dm) {
-        this.date = dm.getCreatedAt();
-        this.id = dm.getId();
-        this.user = new User(dm.getSender());
-        this.text = dm.getText();
-    }
-
-    public Date getDate() {
-        return date;
-    }
-
-    public void setDate(Date date) {
-        this.date = date;
-    }
-
-    public User getUser() {
-        return user;
-    }
-
-    public void setUser(User user) {
-        this.user = user;
-    }
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getText() {
-        return text;
-    }
-
-    public void setText(String text) {
-        this.text = text;
-    }
-
-    public boolean isTruncated() {
-        return truncated;
-    }
-
-    public void setTruncated(boolean truncated) {
-        this.truncated = truncated;
-    }
-
-    public GeoLocation getGeoLocation() {
-        return geoLocation;
-    }
-
-    public void setGeoLocation(GeoLocation geoLocation) {
-        this.geoLocation = geoLocation;
-    }
-
-    public String getInReplyToScreenName() {
-        return inReplyToScreenName;
-    }
-
-    public void setInReplyToScreenName(String inReplyToScreenName) {
-        this.inReplyToScreenName = inReplyToScreenName;
-    }
-
-    public long getInReplyToStatusId() {
-        return inReplyToStatusId;
-    }
-
-    public void setInReplyToStatusId(long inReplyToStatusId) {
-        this.inReplyToStatusId = inReplyToStatusId;
-    }
-
-    public long getInReplyToUserId() {
-        return inReplyToUserId;
-    }
-
-    public void setInReplyToUserId(long inReplyToUserId) {
-        this.inReplyToUserId = inReplyToUserId;
-    }
-
-    public long getRetweetCount() {
-        return retweetCount;
-    }
-
-    public void setRetweetCount(long retweetCount) {
-        this.retweetCount = retweetCount;
-    }
-
-    public Status getRetweetedStatus() {
-        return retweetedStatus;
-    }
-
-    public void setRetweetedStatus(Status retweetedStatus) {
-        this.retweetedStatus = retweetedStatus;
-    }
-
-    public String getSource() {
-        return source;
-    }
-
-    public void setSource(String source) {
-        this.source = source;
-    }
-
-    public String toString() {
-        StringBuilder s = new StringBuilder();
-        s.append(getDate()).append(" (").append(getUser().getScreenName()).append(") ");
-        s.append(getText());
-        return s.toString();
-    }
-}

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/User.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/User.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/User.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/User.java Tue Jan 10 02:51:50 2012
@@ -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 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.
- */
-package org.apache.camel.component.twitter.data;
-
-import java.net.URL;
-import java.util.Date;
-
-public class User {
-
-    private String description;
-    private String screenName;
-    private URL profileUrl;
-    private URL profileImageUrl;
-    private String name;
-    private String location;
-    private int followersCount;
-    private int accessLevel;
-    private Date createdAt;
-    private int favoritesCount;
-    private int friendsCount;
-    private long id;
-    private String language;
-    private int listedCount;
-    private int statusesCount;
-    private String timeZone;
-    private URL url;
-
-    public User(String name) {
-        this.name = name;
-    }
-
-    public User(twitter4j.User user) {
-        this.name = user.getName();
-        this.screenName = user.getScreenName();
-        this.profileImageUrl = user.getProfileImageURL();
-        this.profileUrl = user.getURL();
-        this.location = user.getLocation();
-        this.description = user.getDescription();
-        this.followersCount = user.getFollowersCount();
-        this.accessLevel = user.getAccessLevel();
-        this.createdAt = user.getCreatedAt();
-        this.favoritesCount = user.getFavouritesCount();
-        this.friendsCount = user.getFriendsCount();
-        this.id = user.getId();
-        this.language = user.getLang();
-        this.listedCount = user.getListedCount();
-        this.statusesCount = user.getStatusesCount();
-        this.timeZone = user.getTimeZone();
-        this.url = user.getURL();
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getScreenName() {
-        return screenName;
-    }
-
-    public void setScreenName(String screenName) {
-        this.screenName = screenName;
-    }
-
-    public URL getProfileUrl() {
-        return profileUrl;
-    }
-
-    public void setProfileUrl(URL profileUrl) {
-        this.profileUrl = profileUrl;
-    }
-
-    public URL getProfileImageUrl() {
-        return profileImageUrl;
-    }
-
-    public void setProfileImageUrl(URL profileImageUrl) {
-        this.profileImageUrl = profileImageUrl;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getLocation() {
-        return location;
-    }
-
-    public void setLocation(String location) {
-        this.location = location;
-    }
-
-    public int getFollowersCount() {
-        return followersCount;
-    }
-
-    public void setFollowersCount(int followersCount) {
-        this.followersCount = followersCount;
-    }
-
-    public int getAccessLevel() {
-        return accessLevel;
-    }
-
-    public void setAccessLevel(int accessLevel) {
-        this.accessLevel = accessLevel;
-    }
-
-    public Date getCreatedAt() {
-        return createdAt;
-    }
-
-    public void setCreatedAt(Date createdAt) {
-        this.createdAt = createdAt;
-    }
-
-    public int getFavoritesCount() {
-        return favoritesCount;
-    }
-
-    public void setFavoritesCount(int favoritesCount) {
-        this.favoritesCount = favoritesCount;
-    }
-
-    public int getFriendsCount() {
-        return friendsCount;
-    }
-
-    public void setFriendsCount(int friendsCount) {
-        this.friendsCount = friendsCount;
-    }
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public String getLanguage() {
-        return language;
-    }
-
-    public void setLanguage(String language) {
-        this.language = language;
-    }
-
-    public int getListedCount() {
-        return listedCount;
-    }
-
-    public void setListedCount(int listedCount) {
-        this.listedCount = listedCount;
-    }
-
-    public int getStatusesCount() {
-        return statusesCount;
-    }
-
-    public void setStatusesCount(int statusesCount) {
-        this.statusesCount = statusesCount;
-    }
-
-    public String getTimeZone() {
-        return timeZone;
-    }
-
-    public void setTimeZone(String timeZone) {
-        this.timeZone = timeZone;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    public void setUrl(URL url) {
-        this.url = url;
-    }
-}

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java?rev=1229457&r1=1229456&r2=1229457&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java Tue Jan 10 02:51:50 2012
@@ -17,12 +17,12 @@
 package org.apache.camel.component.twitter.util;
 
 import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 
 import org.apache.camel.Converter;
-import org.apache.camel.component.twitter.data.Status;
+
+import twitter4j.DirectMessage;
+import twitter4j.Status;
+import twitter4j.Tweet;
 
 /**
  * Utility for converting between Twitter4J and camel-twitter data layers.
@@ -37,20 +37,25 @@ public final class TwitterConverter {
 
     @Converter
     public static String toString(Status status) throws ParseException {
-        return status.toString();
+    	StringBuilder s = new StringBuilder();
+        s.append(status.getCreatedAt()).append(" (").append(status.getUser().getScreenName()).append(") ");
+        s.append(status.getText());
+        return s.toString();
     }
 
     @Converter
-    public static Status convertStatus(twitter4j.Status s) {
-        return new Status(s);
+    public static String toString(Tweet tweet) throws ParseException {
+    	StringBuilder s = new StringBuilder();
+        s.append(tweet.getCreatedAt()).append(" (").append(tweet.getFromUser()).append(") ");
+        s.append(tweet.getText());
+        return s.toString();
     }
 
     @Converter
-    public static List<Status> convertStatuses(List<twitter4j.Status> ls) {
-        List<Status> newLs = new ArrayList<Status>(ls.size());
-        for (Iterator<twitter4j.Status> i = ls.iterator(); i.hasNext();) {
-            newLs.add(convertStatus(i.next()));
-        }
-        return newLs;
+    public static String toString(DirectMessage dm) throws ParseException {
+    	StringBuilder s = new StringBuilder();
+        s.append(dm.getCreatedAt()).append(" (").append(dm.getSenderScreenName()).append(") ");
+        s.append(dm.getText());
+        return s.toString();
     }
 }