Author: davsclaus
Date: Sun Mar 25 11:57:50 2012
New Revision: 1305013

URL: http://svn.apache.org/viewvc?rev=1305013&view=rev
Log:
CAMEL-5117: You can now configure twitter settings on twitter component level. 
Made the example run out of the box.

Modified:
    camel/trunk/components/camel-twitter/   (props changed)
    
camel/trunk/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponent.java
    camel/trunk/examples/camel-example-twitter-websocket/README.txt
    
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
    
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/TwitterWebSocketRoute.java

Propchange: camel/trunk/components/camel-twitter/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sun Mar 25 11:57:50 2012
@@ -14,3 +14,4 @@ eclipse-classes
 *.ipr
 *.iml
 *.iws
+*.idea

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=1305013&r1=1305012&r2=1305013&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
 Sun Mar 25 11:57:50 2012
@@ -27,9 +27,23 @@ import org.apache.camel.impl.DefaultComp
  */
 public class TwitterComponent extends DefaultComponent {
 
+    private String consumerKey;
+    private String consumerSecret;
+    private String accessToken;
+    private String accessTokenSecret;
+
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters)
         throws Exception {
+
         TwitterConfiguration properties = new TwitterConfiguration();
+
+        // set options from component
+        properties.setConsumerKey(consumerKey);
+        properties.setConsumerSecret(consumerSecret);
+        properties.setAccessToken(accessToken);
+        properties.setAccessTokenSecret(accessTokenSecret);
+
+        // and then override from parameters
         setProperties(properties, parameters);
 
         TwitterEndpoint endpoint;
@@ -47,4 +61,35 @@ public class TwitterComponent extends De
         return endpoint;
     }
 
+    public String getAccessToken() {
+        return accessToken;
+    }
+
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+
+    public String getAccessTokenSecret() {
+        return accessTokenSecret;
+    }
+
+    public void setAccessTokenSecret(String accessTokenSecret) {
+        this.accessTokenSecret = accessTokenSecret;
+    }
+
+    public String getConsumerKey() {
+        return consumerKey;
+    }
+
+    public void setConsumerKey(String consumerKey) {
+        this.consumerKey = consumerKey;
+    }
+
+    public String getConsumerSecret() {
+        return consumerSecret;
+    }
+
+    public void setConsumerSecret(String consumerSecret) {
+        this.consumerSecret = consumerSecret;
+    }
 }

Modified: camel/trunk/examples/camel-example-twitter-websocket/README.txt
URL: 
http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-twitter-websocket/README.txt?rev=1305013&r1=1305012&r2=1305013&view=diff
==============================================================================
--- camel/trunk/examples/camel-example-twitter-websocket/README.txt (original)
+++ camel/trunk/examples/camel-example-twitter-websocket/README.txt Sun Mar 25 
11:57:50 2012
@@ -4,19 +4,15 @@ Twitter and Websocket Example
 The example is demonstrating how to poll a constant feed of twitter searches
 and publish results in real time using web socket to a web page.
 
-To use twitter, you need a twitter account which have setup an application to 
be used.
-For twitter users, you may be familiar that twitter requires you to grant 
applications
-access to your twitter account, such as twitter for iphone etc.
-The same applies for this example.
+This example is already configured using a testing purpose twitter account 
named 'cameltweet'.
+And therefore the example is ready to run out of the box.
+
+This account is only for testing purpose, and should not be used in your 
custom applications.
+For that you need to setup and use your own twitter account.
 
 We have described this in more details at the Camel twitter documentation:
   http://camel.apache.org/twitter
 
-When you have created an application, you get a number of details back from 
twitter
-which you need to use the twitter component. Enter these details in the source 
code at:
-  
src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
-in the constant fields, by replacing the values "INSERT HERE".
-
 You will need to compile this example first:
   mvn compile
 

Modified: 
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java?rev=1305013&r1=1305012&r2=1305013&view=diff
==============================================================================
--- 
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
 (original)
+++ 
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/CamelTwitterWebSocketMain.java
 Sun Mar 25 11:57:50 2012
@@ -27,32 +27,25 @@ public final class CamelTwitterWebSocket
     // In order to use camel-twitter with your account, you'll need to create 
a new application
     // within Twitter at https://dev.twitter.com/apps/new and grant the 
application access to your account.
     // Finally, generate your access token and secret.
-    private static String consumerKey = "INSERT HERE";
-    private static String consumerSecret = "INSERT HERE";
-    private static String accessToken = "INSERT HERE";
-    private static String accessTokenSecret = "INSERT HERE";
+
+    // This uses the Twitter 'cameltweet' account for testing purposes.
+    // do NOT use this twitter account in your applications!
+    private static String consumerKey = "NMqaca1bzXsOcZhP2XlwA";
+    private static String consumerSecret = 
"VxNQiRLwwKVD0K9mmfxlTTbVdgRpriORypnUbHhxeQw";
+    private static String accessToken = 
"26693234-W0YjxL9cMJrC0VZZ4xdgFMymxIQ10LeL1K8YlbBY";
+    private static String accessTokenSecret = 
"BZD51BgzbOdFstWZYsqB5p5dbuuDV12vrOdatzhY4E";
 
     private CamelTwitterWebSocketMain() {
-        // utility class
+        // to pass checkstyle we have a private constructor
     }
 
     public static void main(String[] args) throws Exception {
-        if (consumerKey.equals("INSERT HERE")) {
-            System.out.println("\n\n\n\n");
-            
System.err.println("============================================================================");
-            System.err.println("Error you need to configure twitter 
application authentication before using.");
-            System.err.println("See more details in this source code.");
-            
System.err.println("============================================================================");
-            System.out.println("\n\n\n\n");
-            System.exit(0);
-        } else {
-            System.out.println("\n\n\n\n");
-            
System.out.println("===============================================");
-            System.out.println("Open your web browser on 
http://localhost:9090";);
-            System.out.println("Press ctrl+c to stop this example");
-            
System.out.println("===============================================");
-            System.out.println("\n\n\n\n");
-        }
+        System.out.println("\n\n\n\n");
+        System.out.println("===============================================");
+        System.out.println("Open your web browser on http://localhost:9090";);
+        System.out.println("Press ctrl+c to stop this example");
+        System.out.println("===============================================");
+        System.out.println("\n\n\n\n");
 
         // create a new Camel Main so we can easily start Camel
         Main main = new Main();
@@ -72,6 +65,9 @@ public final class CamelTwitterWebSocket
         route.setSearchTerm("gaga");
         route.setDelay(2);
 
+        // web socket on port 9090
+        route.setPort(9090);
+
         // add our routes to Camel
         main.addRouteBuilder(route);
 

Modified: 
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/TwitterWebSocketRoute.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/TwitterWebSocketRoute.java?rev=1305013&r1=1305012&r2=1305013&view=diff
==============================================================================
--- 
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/TwitterWebSocketRoute.java
 (original)
+++ 
camel/trunk/examples/camel-example-twitter-websocket/src/main/java/org/apache/camel/example/websocket/TwitterWebSocketRoute.java
 Sun Mar 25 11:57:50 2012
@@ -17,6 +17,7 @@
 package org.apache.camel.example.websocket;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.twitter.TwitterComponent;
 import org.apache.camel.component.websocket.WebsocketComponent;
 import org.apache.camel.component.websocket.WebsocketConstants;
 
@@ -26,9 +27,9 @@ import org.apache.camel.component.websoc
  */
 public class TwitterWebSocketRoute extends RouteBuilder {
 
+    private int port = 9090;
     private String searchTerm;
     private int delay = 2;
-    
     private String consumerKey;
     private String consumerSecret;
     private String accessToken;
@@ -82,17 +83,30 @@ public class TwitterWebSocketRoute exten
         this.searchTerm = searchTerm;
     }
 
+    public int getPort() {
+        return port;
+    }
+
+    public void setPort(int port) {
+        this.port = port;
+    }
+
     @Override
     public void configure() throws Exception {
         // setup Camel web-socket component on port 9090
         WebsocketComponent wc = getContext().getComponent("websocket", 
WebsocketComponent.class);
-        wc.setPort(9090);
+        wc.setPort(port);
         wc.setStaticResources("src/main/resources");
 
+        // setup Twitter component
+        TwitterComponent tc = getContext().getComponent("twitter", 
TwitterComponent.class);
+        tc.setAccessToken(accessToken);
+        tc.setAccessTokenSecret(accessTokenSecret);
+        tc.setConsumerKey(consumerKey);
+        tc.setConsumerSecret(consumerSecret);
+
         // poll twitter search for new tweets, and push tweets to all web 
socket subscribers on camel-tweet
-        fromF("twitter://search?type=polling&delay=%s&keywords=%s"
-                + 
"&consumerKey=%s&consumerSecret=%s&accessToken=%s&accessTokenSecret=%s",
-                delay, searchTerm, consumerKey, consumerSecret, accessToken, 
accessTokenSecret)
+        fromF("twitter://search?type=polling&delay=%s&keywords=%s", delay, 
searchTerm)
             .setHeader(WebsocketConstants.SEND_TO_ALL).constant(true)
             .to("websocket:camel-tweet");
     }


Reply via email to