You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/01/19 05:38:42 UTC

svn commit: r1233162 - in /camel/trunk/components/camel-twitter/src: main/java/org/apache/camel/component/twitter/ main/java/org/apache/camel/component/twitter/consumer/streaming/ test/resources/

Author: davsclaus
Date: Thu Jan 19 04:38:41 2012
New Revision: 1233162

URL: http://svn.apache.org/viewvc?rev=1233162&view=rev
Log:
CAMEL-4908: Fixes for camel-twitter. Thanks to Bilgin for the patch. Fixed CS.

Modified:
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/FilterConsumer.java
    camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/StreamingConsumer.java
    camel/trunk/components/camel-twitter/src/test/resources/test-options.properties

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java?rev=1233162&r1=1233161&r2=1233162&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java Thu Jan 19 04:38:41 2012
@@ -30,6 +30,7 @@ public class TwitterConfiguration {
     private int delay = 60;
     private String type;
     private String locations;
+    private String userIds;
 
     public void checkComplete() {
         if (consumerKey.isEmpty() || consumerSecret.isEmpty() || accessToken.isEmpty()
@@ -118,4 +119,12 @@ public class TwitterConfiguration {
     public void setLocations(String locations) {
         this.locations = locations;
     }
+
+    public String getUserIds() {
+        return userIds;
+    }
+
+    public void setUserIds(String userIds) {
+        this.userIds = userIds;
+    }
 }

Modified: camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/FilterConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/FilterConsumer.java?rev=1233162&r1=1233161&r2=1233162&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/FilterConsumer.java (original)
+++ camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/streaming/FilterConsumer.java Thu Jan 19 04:38:41 2012
@@ -30,22 +30,46 @@ public class FilterConsumer extends Stre
 
     public FilterConsumer(TwitterEndpoint te) {
         super(te);
-
         TwitterStream twitterStream = new TwitterStreamFactory(te.getProperties().getConfiguration()).getInstance();
         twitterStream.addListener(this);
+        FilterQuery filterQuery = createFilter(te);
+        twitterStream.filter(filterQuery);
+    }
 
+    private FilterQuery createFilter(TwitterEndpoint te) {
+        FilterQuery filterQuery = new FilterQuery();
         String allLocationsString = te.getProperties().getLocations();
-        String[] locationStrings = allLocationsString.split(";");
-        double[][] locations = new double[locationStrings.length][2];
-        for (int i = 0; i < locationStrings.length; i++) {
-            String[] coords = locationStrings[i].split(",");
-            locations[i][0] = Double.valueOf(coords[0]);
-            locations[i][1] = Double.valueOf(coords[1]);
+        if (allLocationsString != null) {
+            String[] locationStrings = allLocationsString.split(";");
+            double[][] locations = new double[locationStrings.length][2];
+            for (int i = 0; i < locationStrings.length; i++) {
+                String[] coords = locationStrings[i].split(",");
+                locations[i][0] = Double.valueOf(coords[0]);
+                locations[i][1] = Double.valueOf(coords[1]);
+            }
+            filterQuery.locations(locations);
         }
 
-        FilterQuery fq = new FilterQuery();
-        fq.locations(locations);
+        String keywords = te.getProperties().getKeywords();
+        if (keywords != null && keywords.length() > 0) {
+            filterQuery.track(keywords.split(","));
+        }
+        
+        String userIds = te.getProperties().getUserIds();
+        if (userIds != null) {
+            String[] stringUserIds = userIds.split(",");
+            long[] longUserIds = new long[stringUserIds.length];
+            for (int i = 0; i < stringUserIds.length; i++) {
+                longUserIds[i] = Long.valueOf(stringUserIds[i]);
+            }
+            filterQuery.follow(longUserIds);
+        }
+        
+        if (allLocationsString == null && keywords == null && userIds == null) {
+            throw new IllegalArgumentException("At least one filter parameter is required");
+        }
 
-        twitterStream.filter(fq);
+        filterQuery.setIncludeEntities(true);
+        return filterQuery;
     }
 }

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=1233162&r1=1233161&r2=1233162&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 Thu Jan 19 04:38:41 2012
@@ -35,8 +35,8 @@ import twitter4j.TwitterException;
 public class StreamingConsumer extends Twitter4JConsumer implements StatusListener {
 
     TwitterEndpoint te;
-    private List<Status> receivedStatuses = new ArrayList<Status>();
-    private boolean clear;
+    private final List<Status> receivedStatuses = new ArrayList<Status>();
+    private volatile boolean clear;
 
     public StreamingConsumer(TwitterEndpoint te) {
         this.te = te;
@@ -44,7 +44,7 @@ public class StreamingConsumer extends T
 
     public List<Status> pollConsume() throws TwitterException {
         clear = true;
-        return Collections.unmodifiableList(receivedStatuses);
+        return Collections.unmodifiableList(new ArrayList<Status>(receivedStatuses));
     }
 
     public List<Status> directConsume() throws TwitterException {
@@ -54,8 +54,6 @@ public class StreamingConsumer extends T
 
     @Override
     public void onException(Exception ex) {
-        // TODO Auto-generated method stub
-
     }
 
     @Override
@@ -69,20 +67,14 @@ public class StreamingConsumer extends T
 
     @Override
     public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
-        // TODO Auto-generated method stub
-
     }
 
     @Override
     public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
-        // TODO Auto-generated method stub
-
     }
 
     @Override
     public void onScrubGeo(long userId, long upToStatusId) {
-        // TODO Auto-generated method stub
-
     }
 
 }

Modified: camel/trunk/components/camel-twitter/src/test/resources/test-options.properties
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-twitter/src/test/resources/test-options.properties?rev=1233162&r1=1233161&r2=1233162&view=diff
==============================================================================
--- camel/trunk/components/camel-twitter/src/test/resources/test-options.properties (original)
+++ camel/trunk/components/camel-twitter/src/test/resources/test-options.properties Thu Jan 19 04:38:41 2012
@@ -16,7 +16,7 @@
 ## ---------------------------------------------------------------------------
 
 #This uses the Twitter 'cameltweet' account for testing purposes.
-+consumer.key=NMqaca1bzXsOcZhP2XlwA
-+consumer.secret=VxNQiRLwwKVD0K9mmfxlTTbVdgRpriORypnUbHhxeQw
-+access.token=26693234-W0YjxL9cMJrC0VZZ4xdgFMymxIQ10LeL1K8YlbBY
-+access.token.secret=BZD51BgzbOdFstWZYsqB5p5dbuuDV12vrOdatzhY4E
\ No newline at end of file
+consumer.key=NMqaca1bzXsOcZhP2XlwA
+consumer.secret=VxNQiRLwwKVD0K9mmfxlTTbVdgRpriORypnUbHhxeQw
+access.token=26693234-W0YjxL9cMJrC0VZZ4xdgFMymxIQ10LeL1K8YlbBY
+access.token.secret=BZD51BgzbOdFstWZYsqB5p5dbuuDV12vrOdatzhY4E
\ No newline at end of file