From 59a15d61770d98481eb173fb8aa16cf6d1d403e9 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 8 Nov 2010 16:13:52 -0500 Subject: [PATCH] INT-1553 third round of refactoring to align with Spring Social, removed direct dependency on Paging, modified and enhanced a few tests --- .../twitter/core/Twitter4jTemplate.java | 22 ++++-------- .../twitter/core/TwitterOperations.java | 7 ++-- .../DirectMessageReceivingMessageSource.java | 2 +- .../MentionReceivingMessageSource.java | 2 +- .../TimelineUpdateReceivingMessageSource.java | 4 ++- .../twitter/core/Twitter4jTemplateTests.java | 11 ++---- .../TestReceivingUsingNamespace-context.xml | 16 ++++----- ...ectMessageReceivingMessageSourceTests.java | 34 +++++++++++++++---- .../src/test/java/twitter.receiver.properties | 8 ++--- 9 files changed, 58 insertions(+), 48 deletions(-) diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/Twitter4jTemplate.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/Twitter4jTemplate.java index 9e5f1014c3..21858cd911 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/Twitter4jTemplate.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/Twitter4jTemplate.java @@ -71,15 +71,7 @@ public class Twitter4jTemplate implements TwitterOperations{ throw new TwitterOperationException("Failed to obtain profile id ", e); } } - //@Override - public RateLimitStatus getRateLimitStatus() { - try { - return twitter.getRateLimitStatus(); - } - catch (Exception e) { - throw new TwitterOperationException("Failed to obtain Rate Limit status ", e); - } - } + @Override public List getDirectMessages() { @@ -92,9 +84,9 @@ public class Twitter4jTemplate implements TwitterOperations{ } } @Override - public List getDirectMessages(Paging paging) { + public List getDirectMessages(long sinceId) { try { - ResponseList directMessages = twitter.getDirectMessages(paging); + ResponseList directMessages = twitter.getDirectMessages(new Paging(sinceId)); return this.buildTweetsFromTwitterResponses(directMessages); } catch (Exception e) { @@ -112,9 +104,9 @@ public class Twitter4jTemplate implements TwitterOperations{ } } @Override - public List getMentions(Paging paging) { + public List getMentions(long sinceId) { try { - ResponseList mentions = twitter.getMentions(paging); + ResponseList mentions = twitter.getMentions(new Paging(sinceId)); return this.buildTweetsFromTwitterResponses(mentions); } catch (Exception e) { @@ -132,9 +124,9 @@ public class Twitter4jTemplate implements TwitterOperations{ } } @Override - public List getFriendsTimeline(Paging paging) { + public List getFriendsTimeline(long sinceId) { try { - ResponseList timelines = twitter.getFriendsTimeline(paging); + ResponseList timelines = twitter.getFriendsTimeline(new Paging(sinceId)); return this.buildTweetsFromTwitterResponses(timelines); } catch (Exception e) { diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/TwitterOperations.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/TwitterOperations.java index e6c5b0a075..183cbb0866 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/TwitterOperations.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/core/TwitterOperations.java @@ -17,7 +17,6 @@ package org.springframework.integration.twitter.core; import java.util.List; -import twitter4j.Paging; import twitter4j.Twitter; /** @@ -31,15 +30,15 @@ public interface TwitterOperations { List getDirectMessages(); - List getDirectMessages(Paging paging); + List getDirectMessages(long sinceId); List getMentions(); - List getMentions(Paging paging); + List getMentions(long sinceId); List getFriendsTimeline(); - List getFriendsTimeline(Paging paging); + List getFriendsTimeline(long sinceId); void sendDirectMessage(String userName, String text); diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java index c8ff61c379..14eb348a89 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSource.java @@ -52,7 +52,7 @@ public class DirectMessageReceivingMessageSource extends AbstractTwitterMessageS if (tweets.size() <= prefetchThreshold){ List dms = !hasMarkedStatus() ? twitter.getDirectMessages() - : twitter.getDirectMessages(new Paging(sinceId)); + : twitter.getDirectMessages(sinceId); if (!CollectionUtils.isEmpty(dms)){ forwardAll(dms); diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/MentionReceivingMessageSource.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/MentionReceivingMessageSource.java index b3f2a224a6..d0f54b38c0 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/MentionReceivingMessageSource.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/MentionReceivingMessageSource.java @@ -47,7 +47,7 @@ public class MentionReceivingMessageSource extends AbstractTwitterMessageSource< if (tweets.size() <= prefetchThreshold){ List stats = (!hasMarkedStatus()) ? twitter.getMentions() - : twitter.getMentions(new Paging(sinceId)); + : twitter.getMentions(sinceId); forwardAll(stats); } } catch (Exception e) { diff --git a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/TimelineUpdateReceivingMessageSource.java b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/TimelineUpdateReceivingMessageSource.java index 1f5cfc220e..69b953e985 100644 --- a/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/TimelineUpdateReceivingMessageSource.java +++ b/spring-integration-twitter/src/main/java/org/springframework/integration/twitter/inbound/TimelineUpdateReceivingMessageSource.java @@ -49,7 +49,9 @@ public class TimelineUpdateReceivingMessageSource extends AbstractTwitterMessage try { long sinceId = getMarkerId(); if (tweets.size() <= prefetchThreshold){ - List tweets = !hasMarkedStatus() ? twitter.getFriendsTimeline() : twitter.getFriendsTimeline(new Paging(sinceId)); + List tweets = !hasMarkedStatus() + ? twitter.getFriendsTimeline() + : twitter.getFriendsTimeline(sinceId); forwardAll(tweets); } } catch (Exception e) { diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java index 0f93344986..2560377f7c 100644 --- a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/core/Twitter4jTemplateTests.java @@ -70,16 +70,11 @@ public class Twitter4jTemplateTests { when(twitter.getScreenName()).thenReturn("kermit"); assertEquals("kermit", template.getProfileId()); } - @Test - public void testRateLimitStatus() throws Exception{ - template.getRateLimitStatus(); - verify(twitter, times(1)).getRateLimitStatus(); - } @Test public void testGetDirectMessages() throws Exception{ template.getDirectMessages(); - template.getDirectMessages(new Paging()); + template.getDirectMessages(123); verify(twitter, times(1)).getDirectMessages(); verify(twitter, times(1)).getDirectMessages(Mockito.any(Paging.class)); } @@ -87,7 +82,7 @@ public class Twitter4jTemplateTests { @Test public void testGetMentions() throws Exception{ template.getMentions(); - template.getMentions(new Paging()); + template.getMentions(123); verify(twitter, times(1)).getMentions(); verify(twitter, times(1)).getMentions(Mockito.any(Paging.class)); } @@ -95,7 +90,7 @@ public class Twitter4jTemplateTests { @Test public void testGetFriendsTimeline() throws Exception{ template.getFriendsTimeline(); - template.getFriendsTimeline(new Paging()); + template.getFriendsTimeline(123); verify(twitter, times(1)).getFriendsTimeline(); verify(twitter, times(1)).getFriendsTimeline(Mockito.any(Paging.class)); } diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace-context.xml b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace-context.xml index b0eaa0d726..eb09db03cc 100644 --- a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace-context.xml +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace-context.xml @@ -34,15 +34,15 @@ - - - - - - + - - + + + + + + + diff --git a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java index 52b8fdccfd..b1d433ce0a 100644 --- a/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java +++ b/spring-integration-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java @@ -19,9 +19,12 @@ package org.springframework.integration.twitter.inbound; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertTrue; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.ArrayList; +import java.util.Collection; import java.util.Date; import java.util.Queue; @@ -48,8 +51,14 @@ public class DirectMessageReceivingMessageSourceTests { private Tweet firstMessage; private Tweet secondMessage; + + private Tweet thirdMessage; + + private Tweet fourthMessage; private TwitterOperations twitter; + + Twitter tw; @Before @@ -62,6 +71,14 @@ public class DirectMessageReceivingMessageSourceTests { when(secondMessage.getCreatedAt()).thenReturn(new Date(2222222222L)); when(secondMessage.getId()).thenReturn((long) 2000); + thirdMessage = mock(Tweet.class); + when(thirdMessage.getCreatedAt()).thenReturn(new Date(66666666666L)); + when(thirdMessage.getId()).thenReturn((long) 3000); + + fourthMessage = mock(Tweet.class); + when(fourthMessage.getCreatedAt()).thenReturn(new Date(77777777777L)); + when(fourthMessage.getId()).thenReturn((long) 4000); + when(twitter.getProfileId()).thenReturn("kermit"); Twitter tw = mock(Twitter.class); when(twitter.getUnderlyingTwitter()).thenReturn(tw); @@ -101,7 +118,10 @@ public class DirectMessageReceivingMessageSourceTests { assertEquals(1, msg.size()); // because the other message has a older timestamp and is assumed to be read by Tweet message = (Tweet) msg.poll(); assertEquals(secondMessage, message); - + Thread.sleep(1000); + verify(twitter, times(1)).getDirectMessages(2000); + // based on the Mock, the Queue shoud now have 2 mopre messages third and fourth + assertTrue(((Queue)TestUtils.getPropertyValue(source, "tweets")).size() == 2); } @@ -111,16 +131,18 @@ public class DirectMessageReceivingMessageSourceTests { Twitter tw = mock(Twitter.class); when(twitter.getUnderlyingTwitter()).thenReturn(tw); when(tw.getRateLimitStatus()).thenReturn(rateLimitStatus); - when(rateLimitStatus.getSecondsUntilReset()).thenReturn(2464); - when(rateLimitStatus.getRemainingHits()).thenReturn(250); + when(rateLimitStatus.getSecondsUntilReset()).thenReturn(1000); + when(rateLimitStatus.getRemainingHits()).thenReturn(1000); - //ResponseList responses = mock(ResponseList.class); SampleResoponceList testMessages = new SampleResoponceList(); testMessages.add(firstMessage); testMessages.add(secondMessage); - //when(responses.iterator()).thenReturn(testMessages.iterator()); when(twitter.getDirectMessages()).thenReturn(testMessages); - when(twitter.getDirectMessages(Mockito.any(Paging.class))).thenReturn(testMessages); + + testMessages = new SampleResoponceList(); + testMessages.add(thirdMessage); + testMessages.add(fourthMessage); + when(twitter.getDirectMessages((long)2000)).thenReturn(testMessages); } @SuppressWarnings({ "rawtypes", "serial" }) diff --git a/spring-integration-twitter/src/test/java/twitter.receiver.properties b/spring-integration-twitter/src/test/java/twitter.receiver.properties index 869caa3956..047c1b547a 100644 --- a/spring-integration-twitter/src/test/java/twitter.receiver.properties +++ b/spring-integration-twitter/src/test/java/twitter.receiver.properties @@ -1,5 +1,5 @@ # oauth setup for prosibook twitter account -twitter.oauth.consumerKey=OU4CbkHKIWl1SI0VwiOgAQ -twitter.oauth.consumerSecret=p6pPukUG6d0ebSXuLSI9iaq2MIpzxJoLZyj6ilRmO3o -twitter.oauth.accessToken=61091649-vWVUNginOL069jjpm2lHEuxGXjW163kK3CPNZCdcc -twitter.oauth.accessTokenSecret=dufKyVlcngRitGDFfqiTlJC5leh6lsxPaq8FbeBc \ No newline at end of file +twitter.oauth.consumerKey= +twitter.oauth.consumerSecret= +twitter.oauth.accessToken= +twitter.oauth.accessTokenSecret= \ No newline at end of file