You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2013/08/22 18:06:51 UTC

git commit: CAMEL-6662 - camel-yammer - don't share requestor between different endpoint types

Updated Branches:
  refs/heads/master d8c482277 -> bb4f2e5b5


CAMEL-6662 - camel-yammer - don't share requestor between different endpoint types


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

Branch: refs/heads/master
Commit: bb4f2e5b5c268fff4bde72d2301c881fe155bae6
Parents: d8c4822
Author: Jonathan Anstey <ja...@gmail.com>
Authored: Thu Aug 22 13:36:26 2013 -0230
Committer: Jonathan Anstey <ja...@gmail.com>
Committed: Thu Aug 22 13:36:33 2013 -0230

----------------------------------------------------------------------
 .../camel/component/yammer/YammerComponent.java | 21 +++--
 .../yammer/YammerComponentTestSupport.java      | 18 ++--
 .../yammer/YammerMessageAndUserRouteTest.java   | 88 ++++++++++++++++++++
 .../YammerMessagesConsumerOptionTest.java       | 15 ++--
 .../YammerRelationshipConsumerOptionTest.java   |  8 +-
 5 files changed, 128 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bb4f2e5b/components/camel-yammer/src/main/java/org/apache/camel/component/yammer/YammerComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-yammer/src/main/java/org/apache/camel/component/yammer/YammerComponent.java b/components/camel-yammer/src/main/java/org/apache/camel/component/yammer/YammerComponent.java
index 1f5433d..fce7c94 100644
--- a/components/camel-yammer/src/main/java/org/apache/camel/component/yammer/YammerComponent.java
+++ b/components/camel-yammer/src/main/java/org/apache/camel/component/yammer/YammerComponent.java
@@ -32,16 +32,22 @@ public class YammerComponent extends DefaultComponent {
     private YammerConfiguration config;
     
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        // by default use config for each endpoint; use from component level if one has been explicitly set
+        YammerConfiguration endpointConfig = getConfig();
+        if (endpointConfig == null) {
+            endpointConfig = new YammerConfiguration();            
+        }
+        
         // set options from component
-        getConfig().setConsumerKey(consumerKey);
-        getConfig().setConsumerSecret(consumerSecret);
-        getConfig().setAccessToken(accessToken);
-        getConfig().setFunction(remaining);
+        endpointConfig.setConsumerKey(consumerKey);
+        endpointConfig.setConsumerSecret(consumerSecret);
+        endpointConfig.setAccessToken(accessToken);
+        endpointConfig.setFunction(remaining);
         
         // and then override from parameters
-        setProperties(getConfig(), parameters);
+        setProperties(endpointConfig, parameters);
         
-        Endpoint endpoint = new YammerEndpoint(uri, this, getConfig());
+        Endpoint endpoint = new YammerEndpoint(uri, this, endpointConfig);
         setProperties(endpoint, parameters);
         return endpoint;
     }
@@ -71,9 +77,6 @@ public class YammerComponent extends DefaultComponent {
     }
 
     public YammerConfiguration getConfig() {
-        if (config == null) {
-            config = new YammerConfiguration();
-        }
         return config;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/bb4f2e5b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerComponentTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerComponentTestSupport.java b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerComponentTestSupport.java
index 39dce59..522f919 100644
--- a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerComponentTestSupport.java
+++ b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerComponentTestSupport.java
@@ -18,7 +18,9 @@
 package org.apache.camel.component.yammer;
 
 import java.io.InputStream;
+import java.util.Collection;
 
+import org.apache.camel.Endpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Before;
 
@@ -34,12 +36,18 @@ public abstract class YammerComponentTestSupport extends CamelTestSupport {
     @Before
     public void setUp() throws Exception {
         super.setUp();
-    
+        
+        InputStream is = getClass().getResourceAsStream(jsonFile());        
+        String messages = context.getTypeConverter().convertTo(String.class, is);    
+        
         yammerComponent = context.getComponent("yammer", YammerComponent.class);
-        YammerConfiguration config = yammerComponent.getConfig();
-        InputStream is = getClass().getResourceAsStream(jsonFile());
-        String messages = context.getTypeConverter().convertTo(String.class, is);
-        config.setRequestor(new TestApiRequestor(messages));
+        
+        Collection<Endpoint> endpoints = context.getEndpoints();
+        for (Endpoint endpoint : endpoints) {
+            if (endpoint instanceof YammerEndpoint) {
+                ((YammerEndpoint)endpoint).getConfig().setRequestor(new TestApiRequestor(messages));
+            }
+        }
     }
 
     protected String jsonFile() {

http://git-wip-us.apache.org/repos/asf/camel/blob/bb4f2e5b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessageAndUserRouteTest.java
----------------------------------------------------------------------
diff --git a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessageAndUserRouteTest.java b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessageAndUserRouteTest.java
new file mode 100644
index 0000000..a8e3f0f
--- /dev/null
+++ b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessageAndUserRouteTest.java
@@ -0,0 +1,88 @@
+/**
+ * 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.yammer;
+
+
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.yammer.model.Messages;
+import org.apache.camel.component.yammer.model.User;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Before;
+import org.junit.Test;
+
+public class YammerMessageAndUserRouteTest extends CamelTestSupport {
+
+    private static final String YAMMER_CURRENT_USER_CONSUMER = "yammer:current?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken";
+    private static final String YAMMER_MESSAGES_CONSUMER = "yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken";
+
+    @Before
+    public void setUp() throws Exception { 
+        super.setUp();
+       
+        YammerEndpoint messagesEndpoint = context.getEndpoint(YAMMER_MESSAGES_CONSUMER, YammerEndpoint.class);
+        YammerEndpoint usersEndpoint = context.getEndpoint(YAMMER_CURRENT_USER_CONSUMER, YammerEndpoint.class);
+
+        String messages = context.getTypeConverter().convertTo(String.class, getClass().getResourceAsStream("/messages.json"));
+        messagesEndpoint.getConfig().setRequestor(new TestApiRequestor(messages));
+        
+        String users = context.getTypeConverter().convertTo(String.class, getClass().getResourceAsStream("/users.json"));
+        usersEndpoint.getConfig().setRequestor(new TestApiRequestor(users));
+    }
+    
+    @Test
+    public void testConsumeAllMessages() throws Exception {
+        MockEndpoint messagesMock = getMockEndpoint("mock:messages");
+        messagesMock.expectedMinimumMessageCount(1);
+        messagesMock.assertIsSatisfied();
+        
+        Exchange exchange = messagesMock.getExchanges().get(0);
+        Messages messages = exchange.getIn().getBody(Messages.class);
+
+        assertEquals(2, messages.getMessages().size());
+        assertEquals("Testing yammer API...", messages.getMessages().get(0).getBody().getPlain());
+        assertEquals("(Principal Software Engineer) has #joined the redhat.com network. Take a moment to welcome Jonathan.", messages.getMessages().get(1).getBody().getPlain());
+        
+        MockEndpoint userMock = getMockEndpoint("mock:user");
+        userMock.expectedMinimumMessageCount(1);
+        
+        template.sendBody("direct:start", "overwrite me");        
+        
+        userMock.assertIsSatisfied();
+        
+        exchange = userMock.getExchanges().get(0);
+        List<User> users = exchange.getIn().getBody(List.class);
+
+        assertEquals(1, users.size());
+        assertEquals("Joe Camel", users.get(0).getFullName());        
+        assertEquals("jcamel@redhat.com", users.get(0).getContact().getEmailAddresses().get(0).getAddress());        
+    }
+
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
+        return new RouteBuilder() {
+            public void configure() {
+                // using dummy keys here since we are mocking out calls to yammer.com with static json; in a real app, please use your own keys!
+                from(YAMMER_MESSAGES_CONSUMER).to("mock:messages");
+                from("direct:start").pollEnrich(YAMMER_CURRENT_USER_CONSUMER).to("mock:user");
+            }
+        };
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/bb4f2e5b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessagesConsumerOptionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessagesConsumerOptionTest.java b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessagesConsumerOptionTest.java
index 6c3270d..b8476ab 100644
--- a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessagesConsumerOptionTest.java
+++ b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerMessagesConsumerOptionTest.java
@@ -21,21 +21,24 @@ import org.junit.Test;
 
 public class YammerMessagesConsumerOptionTest extends YammerComponentTestSupport {
 
+    private static final String YAMMER_MESSAGES_CONSUMER = "yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken&limit=1&threaded=true&olderThan=130&newerThan=127";
+
     @Test
     public void testOptions() throws Exception {
+        YammerEndpoint endpoint = context.getEndpoint(YAMMER_MESSAGES_CONSUMER, YammerEndpoint.class);
+        
         // now check if options got applied
-        assertEquals(1, yammerComponent.getConfig().getLimit());
-        assertEquals("true", yammerComponent.getConfig().getThreaded());
-        assertEquals(130, yammerComponent.getConfig().getOlderThan());
-        assertEquals(127, yammerComponent.getConfig().getNewerThan());
-        //assertEquals(YammerConstants.YAMMER_BASE_API_URL + "messages.json?limit=1&older_than=130&newer_than=127&threaded=true", yammerComponent.getConfig().getApiUrl());
+        assertEquals(1, endpoint.getConfig().getLimit());
+        assertEquals("true", endpoint.getConfig().getThreaded());
+        assertEquals(130, endpoint.getConfig().getOlderThan());
+        assertEquals(127, endpoint.getConfig().getNewerThan());
     }
 
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("yammer:messages?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken&limit=1&threaded=true&olderThan=130&newerThan=127").to("mock:result");
+                from(YAMMER_MESSAGES_CONSUMER).to("mock:result");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/bb4f2e5b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerRelationshipConsumerOptionTest.java
----------------------------------------------------------------------
diff --git a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerRelationshipConsumerOptionTest.java b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerRelationshipConsumerOptionTest.java
index 26f0742..8f31f60 100644
--- a/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerRelationshipConsumerOptionTest.java
+++ b/components/camel-yammer/src/test/java/org/apache/camel/component/yammer/YammerRelationshipConsumerOptionTest.java
@@ -21,17 +21,21 @@ import org.junit.Test;
 
 public class YammerRelationshipConsumerOptionTest extends YammerComponentTestSupport {
 
+    private static final String YAMMER_RELATIONSHIPS_CONSUMER = "yammer:relationships?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken&userId=jcamel";
+
     @Test
     public void testOptions() throws Exception {
+        YammerEndpoint endpoint = context.getEndpoint(YAMMER_RELATIONSHIPS_CONSUMER, YammerEndpoint.class);
+        
         // now check if options got applied
-        assertEquals("jcamel", yammerComponent.getConfig().getUserId());
+        assertEquals("jcamel", endpoint.getConfig().getUserId());
     }
     
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() {
-                from("yammer:relationships?consumerKey=aConsumerKey&consumerSecret=aConsumerSecretKey&accessToken=aAccessToken&userId=jcamel").to("mock:result");
+                from(YAMMER_RELATIONSHIPS_CONSUMER).to("mock:result");
             }
         };
     }