Skip to content

Commit 2807bca

Browse files
working on #240
1 parent cff391b commit 2807bca

29 files changed

+478
-250
lines changed

pom.xml

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@
6060

6161
<properties>
6262
<java.version>1.8</java.version>
63-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
6463
<maven.scm.version>1.9.5</maven.scm.version>
64+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
65+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
66+
<failsafe.skipAfterFailureCount>1</failsafe.skipAfterFailureCount>
67+
<surefire.skipAfterFailureCount>1</surefire.skipAfterFailureCount>
6568
</properties>
6669

6770
<dependencies>
@@ -174,6 +177,11 @@
174177
<artifactId>htmlunit</artifactId>
175178
<scope>test</scope>
176179
</dependency>
180+
<dependency>
181+
<groupId>junit</groupId>
182+
<artifactId>junit</artifactId>
183+
<scope>test</scope>
184+
</dependency>
177185
<!-- end::tests[] -->
178186
</dependencies>
179187

@@ -420,6 +428,14 @@
420428
<build>
421429
<plugins>
422430

431+
<plugin>
432+
<groupId>org.apache.maven.plugins</groupId>
433+
<artifactId>maven-failsafe-plugin</artifactId>
434+
<configuration>
435+
<skipTests>true</skipTests>
436+
</configuration>
437+
</plugin>
438+
423439
<plugin>
424440
<groupId>org.apache.maven.plugins</groupId>
425441
<artifactId>maven-surefire-plugin</artifactId>
@@ -439,14 +455,27 @@
439455

440456
<plugin>
441457
<groupId>org.apache.maven.plugins</groupId>
442-
<artifactId>maven-surefire-plugin</artifactId>
458+
<artifactId>maven-failsafe-plugin</artifactId>
443459
<configuration>
444-
<systemPropertyVariables>
445-
<spring.profiles.active>testing</spring.profiles.active>
446-
</systemPropertyVariables>
460+
<systemPropertyVariables>
461+
<spring.profiles.active>testing</spring.profiles.active>
462+
<failsafe.skipAfterFailureCount>1</failsafe.skipAfterFailureCount>
463+
<surefire.skipAfterFailureCount>1</surefire.skipAfterFailureCount>
464+
</systemPropertyVariables>
447465
</configuration>
448466
</plugin>
449467

468+
<plugin>
469+
<groupId>org.apache.maven.plugins</groupId>
470+
<artifactId>maven-surefire-plugin</artifactId>
471+
<configuration>
472+
<systemPropertyVariables>
473+
<spring.profiles.active>testing</spring.profiles.active>
474+
<failsafe.skipAfterFailureCount>1</failsafe.skipAfterFailureCount>
475+
<surefire.skipAfterFailureCount>1</surefire.skipAfterFailureCount>
476+
</systemPropertyVariables>
477+
</configuration>
478+
</plugin>
450479
</plugins>
451480
</build>
452481
</profile>
@@ -456,12 +485,26 @@
456485
<build>
457486
<plugins>
458487

488+
<plugin>
489+
<groupId>org.apache.maven.plugins</groupId>
490+
<artifactId>maven-failsafe-plugin</artifactId>
491+
<configuration>
492+
<systemPropertyVariables>
493+
<spring.profiles.active>travis</spring.profiles.active>
494+
<failsafe.skipAfterFailureCount>1</failsafe.skipAfterFailureCount>
495+
<surefire.skipAfterFailureCount>1</surefire.skipAfterFailureCount>
496+
</systemPropertyVariables>
497+
</configuration>
498+
</plugin>
499+
459500
<plugin>
460501
<groupId>org.apache.maven.plugins</groupId>
461502
<artifactId>maven-surefire-plugin</artifactId>
462503
<configuration>
463504
<systemPropertyVariables>
464505
<spring.profiles.active>travis</spring.profiles.active>
506+
<failsafe.skipAfterFailureCount>1</failsafe.skipAfterFailureCount>
507+
<surefire.skipAfterFailureCount>1</surefire.skipAfterFailureCount>
465508
</systemPropertyVariables>
466509
</configuration>
467510
</plugin>

src/main/java/org/woehlke/twitterwall/oodm/entities/User.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,12 @@ public String getCssProfileImageUrl(){
391391
}
392392
}
393393

394+
@Transient
395+
public boolean isTweeting(){
396+
Boolean isTweeting = this.getTaskInfo().getFetchTweetsFromSearch();
397+
if(isTweeting == null) {return false; } else { return isTweeting; }
398+
}
399+
394400
public static User getDummyUserForScreenName(String screenName,Task task){
395401
long idTwitter= new Date().getTime();
396402
String name="Exception Handler Dummy Username";
@@ -700,10 +706,10 @@ public void setShowAllInlineMedia(Boolean showAllInlineMedia) {
700706
}
701707

702708
public Boolean getFollower() {
703-
if(follower==null){
709+
if(this.getTaskInfo().getFetchFollower()==null){
704710
return false;
705711
} else {
706-
return follower;
712+
return this.getTaskInfo().getFetchFollower();
707713
}
708714
}
709715

@@ -712,10 +718,10 @@ public void setFollower(Boolean follower) {
712718
}
713719

714720
public Boolean getFriend() {
715-
if(friend==null){
721+
if(this.getTaskInfo().getFetchFriends()==null){
716722
return false;
717723
} else {
718-
return friend;
724+
return this.getTaskInfo().getFetchFriends();
719725
}
720726
}
721727

src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/TweetFinisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public interface TweetFinisher {
1010

11-
TweetResultList finish(Message<List<TweetMessage>> incomingMessageList);
11+
Message<TweetResultList> finish(Message<List<TweetMessage>> incomingMessageList);
1212

1313
void finishAsnyc(Message<List<TweetMessage>> incomingMessageList);
1414
}

src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/UserFinisher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public interface UserFinisher {
1010

11-
UserResultList finish(Message<List<UserMessage>> incomingMessageList);
11+
Message<UserResultList> finish(Message<List<UserMessage>> incomingMessageList);
1212

1313
void finishAsnyc(Message<List<UserMessage>> incomingMessageList);
1414
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package org.woehlke.twitterwall.scheduled.mq.endpoint.common;
2+
3+
import org.springframework.messaging.Message;
4+
import org.springframework.social.twitter.api.Tweet;
5+
import org.springframework.social.twitter.api.TwitterProfile;
6+
import org.woehlke.twitterwall.oodm.entities.Task;
7+
import org.woehlke.twitterwall.oodm.entities.User;
8+
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
9+
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
10+
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
11+
12+
public interface TwitterwallMessageBuilder {
13+
14+
Message<TweetMessage> buildTweetMessage(Message<TaskMessage> incomingTaskMessage, org.woehlke.twitterwall.oodm.entities.Tweet tweet, int loopId, int loopAll);
15+
16+
Message<TweetMessage> buildTweetMessage(Message<TaskMessage> incomingTaskMessage, Tweet tweet, int loopId, int loopAll);
17+
18+
Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingTaskMessage, User userPers, int loopId, int loopAll);
19+
20+
Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingTaskMessage, TwitterProfile userProfiles, int loopId, int loopAll);
21+
22+
Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingTaskMessage, long twitterProfileId , int loopId, int loopAll);
23+
24+
Message<TaskMessage> buildTaskMessage(Task task);
25+
26+
Message<UserMessage> buildUserMessage(Message<UserMessage> incomingMessage, boolean isInStorage);
27+
28+
Message<UserMessage> buildUserMessage(Message<UserMessage> incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation);
29+
30+
Message<UserMessage> buildUserMessage(Message<TaskMessage> mqMessageIn, TwitterProfile twitterProfile);
31+
32+
Message<UserMessage> buildUserMessage(Message<TaskMessage> mqMessageIn, User imprintUser);
33+
34+
}
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
package org.woehlke.twitterwall.scheduled.mq.endpoint.common.impl;
2+
3+
import org.springframework.integration.support.MessageBuilder;
4+
import org.springframework.messaging.Message;
5+
import org.springframework.social.twitter.api.Tweet;
6+
import org.springframework.social.twitter.api.TwitterProfile;
7+
import org.springframework.stereotype.Component;
8+
import org.woehlke.twitterwall.oodm.entities.Task;
9+
import org.woehlke.twitterwall.oodm.entities.User;
10+
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
11+
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
12+
import org.woehlke.twitterwall.scheduled.mq.msg.TweetMessage;
13+
import org.woehlke.twitterwall.scheduled.mq.msg.UserMessage;
14+
15+
@Component
16+
public class TwitterwallMessageBuilderImpl implements TwitterwallMessageBuilder {
17+
18+
@Override
19+
public Message<TweetMessage> buildTweetMessage(Message<TaskMessage> incomingTaskMessage, org.woehlke.twitterwall.oodm.entities.Tweet tweet, int loopId, int loopAll){
20+
TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet);
21+
Message<TweetMessage> mqMessageOut =
22+
MessageBuilder.withPayload(outputPayload)
23+
.copyHeaders(incomingTaskMessage.getHeaders())
24+
.setHeader("loop_id",loopId)
25+
.setHeader("loop_all",loopAll)
26+
.build();
27+
return mqMessageOut;
28+
}
29+
30+
@Override
31+
public Message<TweetMessage> buildTweetMessage(Message<TaskMessage> incomingTaskMessage, Tweet tweet, int loopId, int loopAll){
32+
TweetMessage outputPayload = new TweetMessage(incomingTaskMessage.getPayload(),tweet);
33+
Message<TweetMessage> mqMessageOut =
34+
MessageBuilder.withPayload(outputPayload)
35+
.copyHeaders(incomingTaskMessage.getHeaders())
36+
.setHeader("loop_id",loopId)
37+
.setHeader("loop_all",loopAll)
38+
.build();
39+
return mqMessageOut;
40+
}
41+
42+
@Override
43+
public Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingTaskMessage, User userPers, int loopId, int loopAll){
44+
UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),userPers);
45+
Message<UserMessage> mqMessageOut =
46+
MessageBuilder.withPayload(outputPayload)
47+
.copyHeaders(incomingTaskMessage.getHeaders())
48+
.setHeader("loop_id",loopId)
49+
.setHeader("loop_all",loopAll)
50+
.build();
51+
return mqMessageOut;
52+
}
53+
54+
@Override
55+
public Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingTaskMessage, TwitterProfile userProfiles, int loopId, int loopAll){
56+
UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),userProfiles);
57+
Message<UserMessage> mqMessageOut =
58+
MessageBuilder.withPayload(outputPayload)
59+
.copyHeaders(incomingTaskMessage.getHeaders())
60+
.setHeader("tw_lfd_nr",loopId)
61+
.setHeader("tw_all",loopAll)
62+
.build();
63+
return mqMessageOut;
64+
}
65+
66+
@Override
67+
public Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingTaskMessage, long twitterProfileId, int loopId, int loopAll) {
68+
UserMessage outputPayload = new UserMessage(incomingTaskMessage.getPayload(),twitterProfileId);
69+
Message<UserMessage> mqMessageOut =
70+
MessageBuilder.withPayload(outputPayload)
71+
.copyHeaders(incomingTaskMessage.getHeaders())
72+
.setHeader("loop_id",loopId)
73+
.setHeader("loop_all",loopAll)
74+
.build();
75+
return mqMessageOut;
76+
}
77+
78+
@Override
79+
public Message<TaskMessage> buildTaskMessage(Task task) {
80+
TaskMessage outputPayload = new TaskMessage(task.getId(), task.getTaskType(), task.getSendType(), task.getTimeStarted());
81+
Message<TaskMessage> mqMessage =
82+
MessageBuilder.withPayload(outputPayload)
83+
.setHeader("task_id", task.getId())
84+
.setHeader("task_uid", task.getUniqueId())
85+
.setHeader("task_type", task.getTaskType())
86+
.setHeader("time_started", task.getTimeStarted().getTime())
87+
.setHeader("send_type", task.getSendType())
88+
.build();
89+
return mqMessage;
90+
}
91+
92+
@Override
93+
public Message<UserMessage> buildUserMessage(Message<UserMessage> incomingMessage, boolean isInStorage) {
94+
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),incomingMessage.getPayload().getTwitterProfileId(),isInStorage);
95+
Message<UserMessage> mqMessageOut =
96+
MessageBuilder.withPayload(outputPayload)
97+
.copyHeaders(incomingMessage.getHeaders())
98+
.setHeader("checked_storage",Boolean.TRUE)
99+
.build();
100+
return mqMessageOut;
101+
}
102+
103+
@Override
104+
public Message<UserMessage> buildUserMessage(Message<UserMessage> incomingMessage, TwitterProfile twitterProfile, boolean ignoreTransformation) {
105+
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload().getTaskMessage(),twitterProfile,ignoreTransformation);
106+
Message<UserMessage> mqMessageOut =
107+
MessageBuilder.withPayload(outputPayload)
108+
.copyHeaders(incomingMessage.getHeaders())
109+
.setHeader("checked_storage",Boolean.TRUE)
110+
.build();
111+
return mqMessageOut;
112+
}
113+
114+
@Override
115+
public Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingMessage, TwitterProfile twitterProfile) {
116+
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(),twitterProfile);
117+
Message<UserMessage> mqMessageOut =
118+
MessageBuilder.withPayload(outputPayload)
119+
.copyHeaders(incomingMessage.getHeaders())
120+
.setHeader("twitter_profile_id", twitterProfile.getId())
121+
.build();
122+
return mqMessageOut;
123+
}
124+
125+
@Override
126+
public Message<UserMessage> buildUserMessage(Message<TaskMessage> incomingMessage, User imprintUser) {
127+
UserMessage outputPayload = new UserMessage(incomingMessage.getPayload(), imprintUser);
128+
Message<UserMessage> mqMessageOut =
129+
MessageBuilder.withPayload(outputPayload)
130+
.copyHeaders(incomingMessage.getHeaders())
131+
.setHeader("twitter_profile_id", imprintUser.getIdTwitter())
132+
.build();
133+
return mqMessageOut;
134+
}
135+
136+
137+
}

src/main/java/org/woehlke/twitterwall/scheduled/mq/endpoint/impl/AsyncStartTaskImpl.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
import org.springframework.beans.factory.annotation.Autowired;
66
import org.springframework.integration.channel.ExecutorChannel;
77
import org.springframework.integration.core.MessagingTemplate;
8-
import org.springframework.integration.support.MessageBuilder;
98
import org.springframework.messaging.Message;
109
import org.springframework.stereotype.Component;
1110
import org.woehlke.twitterwall.oodm.entities.Task;
1211
import org.woehlke.twitterwall.oodm.entities.parts.CountedEntities;
1312
import org.woehlke.twitterwall.oodm.entities.parts.TaskType;
13+
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
1414
import org.woehlke.twitterwall.oodm.service.TaskService;
1515
import org.woehlke.twitterwall.scheduled.mq.endpoint.AsyncStartTask;
16+
import org.woehlke.twitterwall.scheduled.mq.endpoint.common.TwitterwallMessageBuilder;
1617
import org.woehlke.twitterwall.scheduled.mq.msg.SendType;
1718
import org.woehlke.twitterwall.scheduled.mq.msg.TaskMessage;
18-
import org.woehlke.twitterwall.oodm.service.CountedEntitiesService;
1919

2020
@Component("mqAsyncStartTask")
2121
public class AsyncStartTaskImpl implements AsyncStartTask {
@@ -86,24 +86,20 @@ private Task send(TaskType taskType){
8686
log.info(msg);
8787
CountedEntities countedEntities = countedEntitiesService.countAll();
8888
Task task = taskService.create(msg, taskType, sendType, countedEntities);
89-
TaskMessage taskMessage = new TaskMessage(task.getId(), taskType, sendType, task.getTimeStarted());
90-
Message<TaskMessage> mqMessage = MessageBuilder.withPayload(taskMessage)
91-
.setHeader("task_id", task.getId())
92-
.setHeader("task_uid", task.getUniqueId())
93-
.setHeader("task_type", task.getTaskType())
94-
.setHeader("time_started", task.getTimeStarted().getTime())
95-
.setHeader("send_type", sendType)
96-
.build();
89+
90+
Message<TaskMessage> mqMessage = twitterwallMessageBuilder.buildTaskMessage(task);
91+
9792
MessagingTemplate mqTemplate = new MessagingTemplate();
9893
mqTemplate.send(executorChannelForAsyncStart, mqMessage);
9994
return task;
10095
}
10196

10297
@Autowired
103-
public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, ExecutorChannel executorChannelForAsyncStart) {
98+
public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService countedEntitiesService, ExecutorChannel executorChannelForAsyncStart, TwitterwallMessageBuilder twitterwallMessageBuilder) {
10499
this.taskService = taskService;
105100
this.countedEntitiesService = countedEntitiesService;
106101
this.executorChannelForAsyncStart = executorChannelForAsyncStart;
102+
this.twitterwallMessageBuilder = twitterwallMessageBuilder;
107103
}
108104

109105
private final TaskService taskService;
@@ -112,5 +108,7 @@ public AsyncStartTaskImpl(TaskService taskService, CountedEntitiesService counte
112108

113109
private final ExecutorChannel executorChannelForAsyncStart;
114110

111+
private final TwitterwallMessageBuilder twitterwallMessageBuilder;
112+
115113
private static final Logger log = LoggerFactory.getLogger(AsyncStartTaskImpl.class);
116114
}

0 commit comments

Comments
 (0)