pollForTweets(long sinceId) {
+ return this.getTwitter().timelineOperations().getHomeTimeline(this.getPageSize(), sinceId, 0);
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/inbound/package-info.java b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/inbound/package-info.java
index cdbb097..edf5190 100644
--- a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/inbound/package-info.java
+++ b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/inbound/package-info.java
@@ -1,4 +1,4 @@
-/**
- * Provides inbound Twitter components.
- */
-package org.springframework.integration.twitter.inbound;
+/**
+ * Provides inbound Twitter components.
+ */
+package org.springframework.integration.twitter.inbound;
diff --git a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandler.java b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandler.java
index 901b750..7d1ef36 100644
--- a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandler.java
+++ b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandler.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.outbound;
-
-import org.springframework.integration.handler.AbstractMessageHandler;
-import org.springframework.integration.twitter.core.TwitterHeaders;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.util.Assert;
-
-/**
- * Simple adapter to support sending outbound direct messages ("DM"s) using Twitter.
- *
- * @author Josh Long
- * @author Oleg Zhurakousky
- * @author Mark Fisher
- */
-public class DirectMessageSendingMessageHandler extends AbstractMessageHandler {
-
- private final Twitter twitter;
-
-
- public DirectMessageSendingMessageHandler(Twitter twitter) {
- Assert.notNull(twitter, "twitter must not be null");
- this.twitter = twitter;
- }
-
- @Override
- public String getComponentType() {
- return "twitter:dm-outbound-channel-adapter";
- }
-
- @Override
- protected void handleMessageInternal(Message> message) throws Exception {
- Assert.isTrue(message.getPayload() instanceof String, "Only payload of type String is supported. " +
- "Consider adding a transformer to the message flow in front of this adapter.");
- Object toUser = message.getHeaders().get(TwitterHeaders.DM_TARGET_USER_ID);
- Assert.isTrue(toUser instanceof String || toUser instanceof Number,
- "the header '" + TwitterHeaders.DM_TARGET_USER_ID +
- "' must contain either a String (a screenname) or an number (a user ID)");
- String payload = (String) message.getPayload();
- if (toUser instanceof Number) {
- this.twitter.directMessageOperations().sendDirectMessage(((Number) toUser).longValue(), payload);
- }
- else if (toUser instanceof String) {
- this.twitter.directMessageOperations().sendDirectMessage((String) toUser, payload);
- }
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.outbound;
+
+import org.springframework.integration.handler.AbstractMessageHandler;
+import org.springframework.integration.twitter.core.TwitterHeaders;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.util.Assert;
+
+/**
+ * Simple adapter to support sending outbound direct messages ("DM"s) using Twitter.
+ *
+ * @author Josh Long
+ * @author Oleg Zhurakousky
+ * @author Mark Fisher
+ */
+public class DirectMessageSendingMessageHandler extends AbstractMessageHandler {
+
+ private final Twitter twitter;
+
+
+ public DirectMessageSendingMessageHandler(Twitter twitter) {
+ Assert.notNull(twitter, "twitter must not be null");
+ this.twitter = twitter;
+ }
+
+ @Override
+ public String getComponentType() {
+ return "twitter:dm-outbound-channel-adapter";
+ }
+
+ @Override
+ protected void handleMessageInternal(Message> message) throws Exception {
+ Assert.isTrue(message.getPayload() instanceof String, "Only payload of type String is supported. " +
+ "Consider adding a transformer to the message flow in front of this adapter.");
+ Object toUser = message.getHeaders().get(TwitterHeaders.DM_TARGET_USER_ID);
+ Assert.isTrue(toUser instanceof String || toUser instanceof Number,
+ "the header '" + TwitterHeaders.DM_TARGET_USER_ID +
+ "' must contain either a String (a screenname) or an number (a user ID)");
+ String payload = (String) message.getPayload();
+ if (toUser instanceof Number) {
+ this.twitter.directMessageOperations().sendDirectMessage(((Number) toUser).longValue(), payload);
+ }
+ else if (toUser instanceof String) {
+ this.twitter.directMessageOperations().sendDirectMessage((String) toUser, payload);
+ }
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandler.java b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandler.java
index 6953afa..1ad4e64 100644
--- a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandler.java
+++ b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandler.java
@@ -1,120 +1,120 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.outbound;
-
-import org.springframework.expression.EvaluationContext;
-import org.springframework.expression.Expression;
-import org.springframework.expression.TypeLocator;
-import org.springframework.expression.spel.support.StandardTypeLocator;
-import org.springframework.integration.expression.ExpressionUtils;
-import org.springframework.integration.handler.AbstractMessageHandler;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.MessageHandlingException;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.social.twitter.api.TweetData;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.util.Assert;
-
-/**
- * MessageHandler for sending regular status updates as well as 'replies' or 'mentions'.
- *
- * @author Josh Long
- * @author Oleg Zhurakousky
- * @author Artem Bilan
- */
-public class StatusUpdatingMessageHandler extends AbstractMessageHandler {
-
- private final Twitter twitter;
-
- private volatile Expression tweetDataExpression;
-
- private EvaluationContext evaluationContext;
-
- public StatusUpdatingMessageHandler(Twitter twitter) {
- Assert.notNull(twitter, "twitter must not be null");
- this.twitter = twitter;
- }
-
- @Override
- public String getComponentType() {
- return "twitter:outbound-channel-adapter";
- }
-
- /**
- * An expression that is used to build the {@link TweetData}; must resolve to a
- * {@link TweetData} object, or a {@link String}, or a {@link Tweet}.
- * When using a {@code TweetData} directly in the expression, it is not necessary
- * to include the package:
- * {@code "new TweetData("test").withMedia(headers.mediaResource).displayCoordinates(true)")}.
- * @param tweetDataExpression The expression.
- * @since 4.0
- */
- public void setTweetDataExpression(Expression tweetDataExpression) {
- this.tweetDataExpression = tweetDataExpression;
- }
-
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.evaluationContext = evaluationContext;
- }
-
- @Override
- protected void onInit() throws Exception {
- super.onInit();
-
- if (this.evaluationContext == null) {
- this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
-
- TypeLocator typeLocator = this.evaluationContext.getTypeLocator();
- if (typeLocator instanceof StandardTypeLocator) {
- /*
- * Register the twitter api package so they don't need a FQCN for TweetData.
- */
- ((StandardTypeLocator) typeLocator).registerImport("org.springframework.social.twitter.api");
- }
- }
- }
-
- @Override
- protected void handleMessageInternal(Message> message) throws Exception {
- Object value;
- if (this.tweetDataExpression != null) {
- value = this.tweetDataExpression.getValue(this.evaluationContext, message);
- }
- else {
- value = message.getPayload();
- }
- Assert.notNull(value, "The tweetData cannot evaluate to 'null'.");
-
- TweetData tweetData = null;
-
- if (value instanceof TweetData) {
- tweetData = (TweetData) value;
- }
- else if (value instanceof Tweet) {
- tweetData = new TweetData(((Tweet) value).getText());
- }
- else if (value instanceof String) {
- tweetData = new TweetData((String) value);
- }
- else {
- throw new MessageHandlingException(message, "Unsupported tweetData: " + value);
- }
-
- this.twitter.timelineOperations().updateStatus(tweetData);
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.outbound;
+
+import org.springframework.expression.EvaluationContext;
+import org.springframework.expression.Expression;
+import org.springframework.expression.TypeLocator;
+import org.springframework.expression.spel.support.StandardTypeLocator;
+import org.springframework.integration.expression.ExpressionUtils;
+import org.springframework.integration.handler.AbstractMessageHandler;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHandlingException;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.social.twitter.api.TweetData;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.util.Assert;
+
+/**
+ * MessageHandler for sending regular status updates as well as 'replies' or 'mentions'.
+ *
+ * @author Josh Long
+ * @author Oleg Zhurakousky
+ * @author Artem Bilan
+ */
+public class StatusUpdatingMessageHandler extends AbstractMessageHandler {
+
+ private final Twitter twitter;
+
+ private volatile Expression tweetDataExpression;
+
+ private EvaluationContext evaluationContext;
+
+ public StatusUpdatingMessageHandler(Twitter twitter) {
+ Assert.notNull(twitter, "twitter must not be null");
+ this.twitter = twitter;
+ }
+
+ @Override
+ public String getComponentType() {
+ return "twitter:outbound-channel-adapter";
+ }
+
+ /**
+ * An expression that is used to build the {@link TweetData}; must resolve to a
+ * {@link TweetData} object, or a {@link String}, or a {@link Tweet}.
+ *
When using a {@code TweetData} directly in the expression, it is not necessary
+ * to include the package:
+ * {@code "new TweetData("test").withMedia(headers.mediaResource).displayCoordinates(true)")}.
+ * @param tweetDataExpression The expression.
+ * @since 4.0
+ */
+ public void setTweetDataExpression(Expression tweetDataExpression) {
+ this.tweetDataExpression = tweetDataExpression;
+ }
+
+ public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
+ this.evaluationContext = evaluationContext;
+ }
+
+ @Override
+ protected void onInit() throws Exception {
+ super.onInit();
+
+ if (this.evaluationContext == null) {
+ this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
+
+ TypeLocator typeLocator = this.evaluationContext.getTypeLocator();
+ if (typeLocator instanceof StandardTypeLocator) {
+ /*
+ * Register the twitter api package so they don't need a FQCN for TweetData.
+ */
+ ((StandardTypeLocator) typeLocator).registerImport("org.springframework.social.twitter.api");
+ }
+ }
+ }
+
+ @Override
+ protected void handleMessageInternal(Message> message) throws Exception {
+ Object value;
+ if (this.tweetDataExpression != null) {
+ value = this.tweetDataExpression.getValue(this.evaluationContext, message);
+ }
+ else {
+ value = message.getPayload();
+ }
+ Assert.notNull(value, "The tweetData cannot evaluate to 'null'.");
+
+ TweetData tweetData = null;
+
+ if (value instanceof TweetData) {
+ tweetData = (TweetData) value;
+ }
+ else if (value instanceof Tweet) {
+ tweetData = new TweetData(((Tweet) value).getText());
+ }
+ else if (value instanceof String) {
+ tweetData = new TweetData((String) value);
+ }
+ else {
+ throw new MessageHandlingException(message, "Unsupported tweetData: " + value);
+ }
+
+ this.twitter.timelineOperations().updateStatus(tweetData);
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGateway.java b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGateway.java
index 6ecf10c..fea601c 100644
--- a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGateway.java
+++ b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGateway.java
@@ -1,160 +1,160 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.outbound;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.springframework.expression.EvaluationContext;
-import org.springframework.expression.Expression;
-import org.springframework.expression.TypeLocator;
-import org.springframework.expression.spel.support.StandardTypeLocator;
-import org.springframework.integration.expression.ExpressionUtils;
-import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
-import org.springframework.integration.twitter.core.TwitterHeaders;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.SearchParameters;
-import org.springframework.social.twitter.api.SearchResults;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.util.Assert;
-
-/**
- * The {@link AbstractReplyProducingMessageHandler} implementation to perform request/reply
- * Twitter search with {@link SearchParameters} as the result of {@link #searchArgsExpression}
- * expression evaluation.
- *
- * @author Gary Russell
- */
-public class TwitterSearchOutboundGateway extends AbstractReplyProducingMessageHandler {
-
- private static final int DEFAULT_PAGE_SIZE = 20;
-
- private final Twitter twitter;
-
- private volatile Expression searchArgsExpression;
-
- private volatile EvaluationContext evaluationContext;
-
- public TwitterSearchOutboundGateway(Twitter twitter) {
- Assert.notNull(twitter, "'twitter' must not be null");
- this.twitter = twitter;
- }
-
- /**
- * An expression that is used to build the search; must resolve to a
- * {@code SearchParameters} object, or a
- * {@link String}, in which case the default page size of 20 is applied,
- * or a list of up to 4 arguments, such as
- * {@code "{payload, headers.pageSize, headers.sinceId, headers.maxId}"}.
- * The first (required) argument must resolve to a String (query), the
- * optional arguments must resolve to an Number and represent the
- * page size, sinceId, and maxId respectively. Refer to the 'Spring
- * Social Twitter' documentation for more details.
- *
When using a {@code SearchParameters} directly, it is not necessary
- * to include the package: {@code "new SearchParameters("#foo").count(20)")}.
- *
Default: {@code "payload"}.
- * @param searchArgsExpression The expression.
- */
- public void setSearchArgsExpression(Expression searchArgsExpression) {
- Assert.notNull(searchArgsExpression, "'searchArgsExpression' must not be null");
- this.searchArgsExpression = searchArgsExpression;
- }
-
- public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
- this.evaluationContext = evaluationContext;
- }
-
- @Override
- public String getComponentType() {
- return "twitter:search-outbound-gateway";
- }
-
- protected Twitter getTwitter() {
- return this.twitter;
- }
-
- @Override
- protected void doInit() {
- super.doInit();
- if (this.evaluationContext == null) {
- this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
- TypeLocator typeLocator = this.evaluationContext.getTypeLocator();
- if (typeLocator instanceof StandardTypeLocator) {
- /*
- * Register the twitter api package so they don't need a FQCN for SearchParameters.
- */
- ((StandardTypeLocator) typeLocator).registerImport("org.springframework.social.twitter.api");
- }
- }
- }
-
- @Override
- protected Object handleRequestMessage(Message> requestMessage) {
- Object args;
- if (this.searchArgsExpression != null) {
- args = this.searchArgsExpression.getValue(this.evaluationContext, requestMessage);
- }
- else {
- args = requestMessage.getPayload();
- }
- Assert.notNull(args, "The twitter search expression cannot evaluate to 'null'.");
- SearchParameters searchParameters;
- if (args instanceof SearchParameters) {
- searchParameters = (SearchParameters) args;
- }
- else if (args instanceof String) {
- searchParameters = new SearchParameters((String) args).count(DEFAULT_PAGE_SIZE);
- }
- else if (args instanceof List) {
- List> list = (List>) args;
- Assert.isTrue(list.size() > 0 && list.size() < 5, "Between 1 and 4 search arguments are required");
- Assert.isInstanceOf(String.class, list.get(0), "The first search argument (query) must be a String");
- searchParameters = new SearchParameters((String) list.get(0));
- if (list.size() > 1) {
- Assert.isInstanceOf(Number.class, list.get(1),
- "The second search argument (pageSize) must be a Number");
- searchParameters.count(((Number) list.get(1)).intValue());
- if (list.size() > 2) {
- Assert.isInstanceOf(Number.class, list.get(2),
- "The third search argument (sinceId) must be a Number");
- searchParameters.sinceId(((Number) list.get(2)).longValue());
- }
- if (list.size() > 3) {
- Assert.isInstanceOf(Number.class, list.get(3),
- "The fourth search argument (maxId) must be a Number");
- searchParameters.maxId(((Number) list.get(3)).longValue());
- }
- }
- }
- else {
- throw new IllegalArgumentException(
- "Search Expression must evaluate to a 'SearchParameters', 'String' or 'List'.");
- }
- SearchResults results = this.getTwitter().searchOperations().search(searchParameters);
- if (results != null) {
- List tweets = (results.getTweets() != null ? results.getTweets() : Collections.emptyList());
- return this.getMessageBuilderFactory().withPayload(tweets)
- .setHeader(TwitterHeaders.SEARCH_METADATA, results.getSearchMetadata());
- }
- else {
- return null;
- }
-
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.outbound;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.springframework.expression.EvaluationContext;
+import org.springframework.expression.Expression;
+import org.springframework.expression.TypeLocator;
+import org.springframework.expression.spel.support.StandardTypeLocator;
+import org.springframework.integration.expression.ExpressionUtils;
+import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
+import org.springframework.integration.twitter.core.TwitterHeaders;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.SearchParameters;
+import org.springframework.social.twitter.api.SearchResults;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.util.Assert;
+
+/**
+ * The {@link AbstractReplyProducingMessageHandler} implementation to perform request/reply
+ * Twitter search with {@link SearchParameters} as the result of {@link #searchArgsExpression}
+ * expression evaluation.
+ *
+ * @author Gary Russell
+ */
+public class TwitterSearchOutboundGateway extends AbstractReplyProducingMessageHandler {
+
+ private static final int DEFAULT_PAGE_SIZE = 20;
+
+ private final Twitter twitter;
+
+ private volatile Expression searchArgsExpression;
+
+ private volatile EvaluationContext evaluationContext;
+
+ public TwitterSearchOutboundGateway(Twitter twitter) {
+ Assert.notNull(twitter, "'twitter' must not be null");
+ this.twitter = twitter;
+ }
+
+ /**
+ * An expression that is used to build the search; must resolve to a
+ * {@code SearchParameters} object, or a
+ * {@link String}, in which case the default page size of 20 is applied,
+ * or a list of up to 4 arguments, such as
+ * {@code "{payload, headers.pageSize, headers.sinceId, headers.maxId}"}.
+ * The first (required) argument must resolve to a String (query), the
+ * optional arguments must resolve to an Number and represent the
+ * page size, sinceId, and maxId respectively. Refer to the 'Spring
+ * Social Twitter' documentation for more details.
+ * When using a {@code SearchParameters} directly, it is not necessary
+ * to include the package: {@code "new SearchParameters("#foo").count(20)")}.
+ *
Default: {@code "payload"}.
+ * @param searchArgsExpression The expression.
+ */
+ public void setSearchArgsExpression(Expression searchArgsExpression) {
+ Assert.notNull(searchArgsExpression, "'searchArgsExpression' must not be null");
+ this.searchArgsExpression = searchArgsExpression;
+ }
+
+ public void setIntegrationEvaluationContext(EvaluationContext evaluationContext) {
+ this.evaluationContext = evaluationContext;
+ }
+
+ @Override
+ public String getComponentType() {
+ return "twitter:search-outbound-gateway";
+ }
+
+ protected Twitter getTwitter() {
+ return this.twitter;
+ }
+
+ @Override
+ protected void doInit() {
+ super.doInit();
+ if (this.evaluationContext == null) {
+ this.evaluationContext = ExpressionUtils.createStandardEvaluationContext(getBeanFactory());
+ TypeLocator typeLocator = this.evaluationContext.getTypeLocator();
+ if (typeLocator instanceof StandardTypeLocator) {
+ /*
+ * Register the twitter api package so they don't need a FQCN for SearchParameters.
+ */
+ ((StandardTypeLocator) typeLocator).registerImport("org.springframework.social.twitter.api");
+ }
+ }
+ }
+
+ @Override
+ protected Object handleRequestMessage(Message> requestMessage) {
+ Object args;
+ if (this.searchArgsExpression != null) {
+ args = this.searchArgsExpression.getValue(this.evaluationContext, requestMessage);
+ }
+ else {
+ args = requestMessage.getPayload();
+ }
+ Assert.notNull(args, "The twitter search expression cannot evaluate to 'null'.");
+ SearchParameters searchParameters;
+ if (args instanceof SearchParameters) {
+ searchParameters = (SearchParameters) args;
+ }
+ else if (args instanceof String) {
+ searchParameters = new SearchParameters((String) args).count(DEFAULT_PAGE_SIZE);
+ }
+ else if (args instanceof List) {
+ List> list = (List>) args;
+ Assert.isTrue(list.size() > 0 && list.size() < 5, "Between 1 and 4 search arguments are required");
+ Assert.isInstanceOf(String.class, list.get(0), "The first search argument (query) must be a String");
+ searchParameters = new SearchParameters((String) list.get(0));
+ if (list.size() > 1) {
+ Assert.isInstanceOf(Number.class, list.get(1),
+ "The second search argument (pageSize) must be a Number");
+ searchParameters.count(((Number) list.get(1)).intValue());
+ if (list.size() > 2) {
+ Assert.isInstanceOf(Number.class, list.get(2),
+ "The third search argument (sinceId) must be a Number");
+ searchParameters.sinceId(((Number) list.get(2)).longValue());
+ }
+ if (list.size() > 3) {
+ Assert.isInstanceOf(Number.class, list.get(3),
+ "The fourth search argument (maxId) must be a Number");
+ searchParameters.maxId(((Number) list.get(3)).longValue());
+ }
+ }
+ }
+ else {
+ throw new IllegalArgumentException(
+ "Search Expression must evaluate to a 'SearchParameters', 'String' or 'List'.");
+ }
+ SearchResults results = this.getTwitter().searchOperations().search(searchParameters);
+ if (results != null) {
+ List tweets = (results.getTweets() != null ? results.getTweets() : Collections.emptyList());
+ return this.getMessageBuilderFactory().withPayload(tweets)
+ .setHeader(TwitterHeaders.SEARCH_METADATA, results.getSearchMetadata());
+ }
+ else {
+ return null;
+ }
+
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/package-info.java b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/package-info.java
index af1f6cf..d74fdc9 100644
--- a/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/package-info.java
+++ b/spring-integration-social-twitter/src/main/java/org/springframework/integration/twitter/outbound/package-info.java
@@ -1,4 +1,4 @@
-/**
- * Provides outbound Twitter components.
- */
-package org.springframework.integration.twitter.outbound;
+/**
+ * Provides outbound Twitter components.
+ */
+package org.springframework.integration.twitter.outbound;
diff --git a/spring-integration-social-twitter/src/main/resources/META-INF/spring.handlers b/spring-integration-social-twitter/src/main/resources/META-INF/spring.handlers
index 699fb00..cce5117 100644
--- a/spring-integration-social-twitter/src/main/resources/META-INF/spring.handlers
+++ b/spring-integration-social-twitter/src/main/resources/META-INF/spring.handlers
@@ -1,2 +1,2 @@
-http\://www.springframework.org/schema/integration/twitter=org.springframework.integration.twitter.config.TwitterNamespaceHandler
-
+http\://www.springframework.org/schema/integration/twitter=org.springframework.integration.twitter.config.TwitterNamespaceHandler
+
diff --git a/spring-integration-social-twitter/src/main/resources/META-INF/spring.schemas b/spring-integration-social-twitter/src/main/resources/META-INF/spring.schemas
index e42f53f..ba9bf1a 100644
--- a/spring-integration-social-twitter/src/main/resources/META-INF/spring.schemas
+++ b/spring-integration-social-twitter/src/main/resources/META-INF/spring.schemas
@@ -1,2 +1,2 @@
-http\://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter-1.0.xsd=org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
-http\://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter.xsd=org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
+http\://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter-1.0.xsd=org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
+http\://www.springframework.org/schema/integration/twitter/spring-integration-social-twitter.xsd=org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
diff --git a/spring-integration-social-twitter/src/main/resources/META-INF/spring.tooling b/spring-integration-social-twitter/src/main/resources/META-INF/spring.tooling
index afcdacb..b6a771d 100644
--- a/spring-integration-social-twitter/src/main/resources/META-INF/spring.tooling
+++ b/spring-integration-social-twitter/src/main/resources/META-INF/spring.tooling
@@ -1,4 +1,4 @@
-# Tooling related information for the integration twitter namespace
-http\://www.springframework.org/schema/integration/twitter@name=integration twitter Namespace
-http\://www.springframework.org/schema/integration/twitter@prefix=int-twitter
-http\://www.springframework.org/schema/integration/twitter@icon=org/springframework/integration/twitter/config/spring-integration-twitter.gif
+# Tooling related information for the integration twitter namespace
+http\://www.springframework.org/schema/integration/twitter@name=integration twitter Namespace
+http\://www.springframework.org/schema/integration/twitter@prefix=int-twitter
+http\://www.springframework.org/schema/integration/twitter@icon=org/springframework/integration/twitter/config/spring-integration-twitter.gif
diff --git a/spring-integration-social-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd b/spring-integration-social-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
index c314579..cefdaf2 100644
--- a/spring-integration-social-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
+++ b/spring-integration-social-twitter/src/main/resources/org/springframework/integration/twitter/config/spring-integration-social-twitter-1.0.xsd
@@ -1,322 +1,322 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a Polling Channel Adapter for the
- 'org.springframework.integration.twitter.inbound.TimelineReceivingMessageSource' that consumes your
- friends' timeline updates from Twitter and sends Messages whose payloads are Tweet objects.
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a Polling Channel Adapter for the
- 'org.springframework.integration.twitter.inbound.MentionsReceivingMessageSource' that consumes mentions
- of your handle from Twitter and sends Messages whose payloads are Tweet objects.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Defines a Polling Channel Adapter for the
- 'org.springframework.integration.twitter.inbound.SearchReceivingMessageSource' that consumes search
- results for a given query from Twitter and sends Messages whose payloads are Tweet objects.
-
-
-
-
-
-
-
-
- Twitter search query (e.g, #springintegration).
- For more info on Twitter queries please refer to this site: http://search.twitter.com/operators)
-
-
-
-
-
-
-
-
-
-
-
- Defines a Polling Channel Adapter for the
- 'org.springframework.integration.twitter.inbound.DirectMessageReceivingMessageSource' that consumes
- direct messages from Twitter and sends Messages whose payloads are DirectMessage objects.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Configures a Consumer Endpoint for the
- 'org.springframework.integration.twitter.outbound.DirectMessageSendingMessageHandler'
- that sends Direct Messages to a Twitter user as
- specified in the header whose name is defined by the TwitterHeaders.DM_TARGET_USER_ID constant.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Configures a Consumer Endpoint for the
- 'org.springframework.integration.twitter.outbound.StatusUpdatingMessageHandler'
- that posts a status update to the authorized user's timeline.
-
-
-
-
-
-
-
-
- A SpEL expression that evaluates to tweetData; the evaluation result type can be
- an 'org.springframework.social.twitter.api.TweetData', a 'String' or
- 'org.springframework.social.twitter.api.Tweet'.
- Default: "payload".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The bean id of this gateway; the MessageHandler is also registered with this id
- plus a suffix '.handler'.
-
-
-
-
-
-
- A SpEL expression that evaluates to search arguments; the evaluation result type can be
- an 'org.springframework.social.twitter.api.SearchParameters', a 'String', in
- which case the default page size of 20 is used, or the expression can evaluate to
- a list of search
- arguments, for example: "{payload, headers.pageSize, headers.sinceId, headers.maxId}".
- Default: "payload".
-
-
-
-
-
-
-
-
-
-
-
- Identifies the request channel attached to this gateway.
-
-
-
-
-
-
-
-
-
-
-
- Identifies the reply channel attached to this
- gateway.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The bean id of this Polling Endpoint; the MessageSource is also registered with this id
- plus a suffix '.source'; also used as the
- MetaDataStore key with suffix '.' + the profileId from the authorized Twitter user.
-
-
-
-
-
-
-
-
-
-
-
- Identifies the channel the attached to this adapter, to which messages will be sent.
-
-
-
-
-
-
-
-
-
-
-
-
- Reference to a TwitterTemplate bean provided by the Spring Social project.
-
-
-
-
-
-
- Reference to a MetadataStore instance for storing metadata associated with
- the retrieved feeds. If the implementation is persistent, it can help to
- prevent duplicates between restarts. If shared, it can help coordinate multiple
- instances of an adapter across different processes.
-
-
-
-
-
-
-
-
-
-
-
- Limits the number of tweets retrieved on each poll; default: 20.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Reference to a TwitterTemplate bean provided by the Spring Social project.
-
-
-
-
-
-
- Specifies the order for invocation when this endpoint is connected as a
- subscriber to a SubscribableChannel.
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines a Polling Channel Adapter for the
+ 'org.springframework.integration.twitter.inbound.TimelineReceivingMessageSource' that consumes your
+ friends' timeline updates from Twitter and sends Messages whose payloads are Tweet objects.
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines a Polling Channel Adapter for the
+ 'org.springframework.integration.twitter.inbound.MentionsReceivingMessageSource' that consumes mentions
+ of your handle from Twitter and sends Messages whose payloads are Tweet objects.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defines a Polling Channel Adapter for the
+ 'org.springframework.integration.twitter.inbound.SearchReceivingMessageSource' that consumes search
+ results for a given query from Twitter and sends Messages whose payloads are Tweet objects.
+
+
+
+
+
+
+
+
+ Twitter search query (e.g, #springintegration).
+ For more info on Twitter queries please refer to this site: http://search.twitter.com/operators)
+
+
+
+
+
+
+
+
+
+
+
+ Defines a Polling Channel Adapter for the
+ 'org.springframework.integration.twitter.inbound.DirectMessageReceivingMessageSource' that consumes
+ direct messages from Twitter and sends Messages whose payloads are DirectMessage objects.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configures a Consumer Endpoint for the
+ 'org.springframework.integration.twitter.outbound.DirectMessageSendingMessageHandler'
+ that sends Direct Messages to a Twitter user as
+ specified in the header whose name is defined by the TwitterHeaders.DM_TARGET_USER_ID constant.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Configures a Consumer Endpoint for the
+ 'org.springframework.integration.twitter.outbound.StatusUpdatingMessageHandler'
+ that posts a status update to the authorized user's timeline.
+
+
+
+
+
+
+
+
+ A SpEL expression that evaluates to tweetData; the evaluation result type can be
+ an 'org.springframework.social.twitter.api.TweetData', a 'String' or
+ 'org.springframework.social.twitter.api.Tweet'.
+ Default: "payload".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The bean id of this gateway; the MessageHandler is also registered with this id
+ plus a suffix '.handler'.
+
+
+
+
+
+
+ A SpEL expression that evaluates to search arguments; the evaluation result type can be
+ an 'org.springframework.social.twitter.api.SearchParameters', a 'String', in
+ which case the default page size of 20 is used, or the expression can evaluate to
+ a list of search
+ arguments, for example: "{payload, headers.pageSize, headers.sinceId, headers.maxId}".
+ Default: "payload".
+
+
+
+
+
+
+
+
+
+
+
+ Identifies the request channel attached to this gateway.
+
+
+
+
+
+
+
+
+
+
+
+ Identifies the reply channel attached to this
+ gateway.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The bean id of this Polling Endpoint; the MessageSource is also registered with this id
+ plus a suffix '.source'; also used as the
+ MetaDataStore key with suffix '.' + the profileId from the authorized Twitter user.
+
+
+
+
+
+
+
+
+
+
+
+ Identifies the channel the attached to this adapter, to which messages will be sent.
+
+
+
+
+
+
+
+
+
+
+
+
+ Reference to a TwitterTemplate bean provided by the Spring Social project.
+
+
+
+
+
+
+ Reference to a MetadataStore instance for storing metadata associated with
+ the retrieved feeds. If the implementation is persistent, it can help to
+ prevent duplicates between restarts. If shared, it can help coordinate multiple
+ instances of an adapter across different processes.
+
+
+
+
+
+
+
+
+
+
+
+ Limits the number of tweets retrieved on each poll; default: 20.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reference to a TwitterTemplate bean provided by the Spring Social project.
+
+
+
+
+
+
+ Specifies the order for invocation when this endpoint is connected as a
+ subscriber to a SubscribableChannel.
+
+
+
+
+
+
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java
index 35aaeb5..8c1ca44 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestReceivingMessageSourceParserTests.java
@@ -1,83 +1,83 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.config;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.integration.endpoint.SourcePollingChannelAdapter;
-import org.springframework.integration.test.util.TestUtils;
-import org.springframework.integration.twitter.inbound.DirectMessageReceivingMessageSource;
-import org.springframework.integration.twitter.inbound.MentionsReceivingMessageSource;
-import org.springframework.integration.twitter.inbound.TimelineReceivingMessageSource;
-
-
-/**
- * @author Oleg Zhurakousky
- * @author Gunnar Hillert
- * @author Gary Russell
- * @author Rijnard van Tonder
- */
-public class TestReceivingMessageSourceParserTests {
-
- @Test
- public void testReceivingAdapterConfigurationAutoStartup() {
- ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
- "TestReceivingMessageSourceParser-context.xml", getClass());
- SourcePollingChannelAdapter spca = ac.getBean("mentionAdapter", SourcePollingChannelAdapter.class);
- MentionsReceivingMessageSource ms = TestUtils.getPropertyValue(spca, "source",
- MentionsReceivingMessageSource.class);
- assertEquals(Integer.valueOf(23), TestUtils.getPropertyValue(ms, "pageSize", Integer.class));
- assertNotNull(ms);
-
- spca = ac.getBean("dmAdapter", SourcePollingChannelAdapter.class);
- DirectMessageReceivingMessageSource dms = TestUtils.getPropertyValue(spca, "source",
- DirectMessageReceivingMessageSource.class);
- assertNotNull(dms);
- assertEquals(Integer.valueOf(45), TestUtils.getPropertyValue(dms, "pageSize", Integer.class));
-
- spca = ac.getBean("updateAdapter", SourcePollingChannelAdapter.class);
-
- TimelineReceivingMessageSource tms = TestUtils.getPropertyValue(spca, "source",
- TimelineReceivingMessageSource.class);
- assertEquals(Integer.valueOf(67), TestUtils.getPropertyValue(tms, "pageSize", Integer.class));
- assertNotNull(tms);
- ac.close();
- }
-
- @Test
- public void testThatMessageSourcesAreRegisteredAsBeans() {
- ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
- "TestReceivingMessageSourceParser-context.xml", this.getClass());
-
- MentionsReceivingMessageSource ms = ac.getBean("mentionAdapter.source", MentionsReceivingMessageSource.class);
- assertNotNull(ms);
-
- DirectMessageReceivingMessageSource dms = ac.getBean("dmAdapter.source",
- DirectMessageReceivingMessageSource.class);
- assertNotNull(dms);
-
- TimelineReceivingMessageSource tms = ac.getBean("updateAdapter.source", TimelineReceivingMessageSource.class);
- assertNotNull(tms);
- ac.close();
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.integration.endpoint.SourcePollingChannelAdapter;
+import org.springframework.integration.test.util.TestUtils;
+import org.springframework.integration.twitter.inbound.DirectMessageReceivingMessageSource;
+import org.springframework.integration.twitter.inbound.MentionsReceivingMessageSource;
+import org.springframework.integration.twitter.inbound.TimelineReceivingMessageSource;
+
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gunnar Hillert
+ * @author Gary Russell
+ * @author Rijnard van Tonder
+ */
+public class TestReceivingMessageSourceParserTests {
+
+ @Test
+ public void testReceivingAdapterConfigurationAutoStartup() {
+ ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
+ "TestReceivingMessageSourceParser-context.xml", getClass());
+ SourcePollingChannelAdapter spca = ac.getBean("mentionAdapter", SourcePollingChannelAdapter.class);
+ MentionsReceivingMessageSource ms = TestUtils.getPropertyValue(spca, "source",
+ MentionsReceivingMessageSource.class);
+ assertEquals(Integer.valueOf(23), TestUtils.getPropertyValue(ms, "pageSize", Integer.class));
+ assertNotNull(ms);
+
+ spca = ac.getBean("dmAdapter", SourcePollingChannelAdapter.class);
+ DirectMessageReceivingMessageSource dms = TestUtils.getPropertyValue(spca, "source",
+ DirectMessageReceivingMessageSource.class);
+ assertNotNull(dms);
+ assertEquals(Integer.valueOf(45), TestUtils.getPropertyValue(dms, "pageSize", Integer.class));
+
+ spca = ac.getBean("updateAdapter", SourcePollingChannelAdapter.class);
+
+ TimelineReceivingMessageSource tms = TestUtils.getPropertyValue(spca, "source",
+ TimelineReceivingMessageSource.class);
+ assertEquals(Integer.valueOf(67), TestUtils.getPropertyValue(tms, "pageSize", Integer.class));
+ assertNotNull(tms);
+ ac.close();
+ }
+
+ @Test
+ public void testThatMessageSourcesAreRegisteredAsBeans() {
+ ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
+ "TestReceivingMessageSourceParser-context.xml", this.getClass());
+
+ MentionsReceivingMessageSource ms = ac.getBean("mentionAdapter.source", MentionsReceivingMessageSource.class);
+ assertNotNull(ms);
+
+ DirectMessageReceivingMessageSource dms = ac.getBean("dmAdapter.source",
+ DirectMessageReceivingMessageSource.class);
+ assertNotNull(dms);
+
+ TimelineReceivingMessageSource tms = ac.getBean("updateAdapter.source", TimelineReceivingMessageSource.class);
+ assertNotNull(tms);
+ ac.close();
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSearchReceivingMessageSourceParserTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSearchReceivingMessageSourceParserTests.java
index 5525f5e..5e580c9 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSearchReceivingMessageSourceParserTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSearchReceivingMessageSourceParserTests.java
@@ -1,49 +1,49 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.config;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import org.junit.Test;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.integration.endpoint.SourcePollingChannelAdapter;
-import org.springframework.integration.test.util.TestUtils;
-import org.springframework.integration.twitter.inbound.SearchReceivingMessageSource;
-import org.springframework.social.twitter.api.Twitter;
-
-
-/**
- * @author Oleg Zhurakousky
- * @author Gary Russell
- */
-public class TestSearchReceivingMessageSourceParserTests {
-
- @Test
- public void testSearchReceivingDefaultTemplate() {
- ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
- "TestSearchReceivingMessageSourceParser-context.xml", this.getClass());
- SourcePollingChannelAdapter spca = ac.getBean("searchAdapterWithTemplate", SourcePollingChannelAdapter.class);
- SearchReceivingMessageSource ms = (SearchReceivingMessageSource) TestUtils.getPropertyValue(spca, "source");
- assertEquals(Integer.valueOf(23), TestUtils.getPropertyValue(ms, "pageSize", Integer.class));
- Twitter template = (Twitter) TestUtils.getPropertyValue(ms, "twitter");
- assertNotNull(template);
- ac.close();
- }
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import org.junit.Test;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.integration.endpoint.SourcePollingChannelAdapter;
+import org.springframework.integration.test.util.TestUtils;
+import org.springframework.integration.twitter.inbound.SearchReceivingMessageSource;
+import org.springframework.social.twitter.api.Twitter;
+
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gary Russell
+ */
+public class TestSearchReceivingMessageSourceParserTests {
+
+ @Test
+ public void testSearchReceivingDefaultTemplate() {
+ ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
+ "TestSearchReceivingMessageSourceParser-context.xml", this.getClass());
+ SourcePollingChannelAdapter spca = ac.getBean("searchAdapterWithTemplate", SourcePollingChannelAdapter.class);
+ SearchReceivingMessageSource ms = (SearchReceivingMessageSource) TestUtils.getPropertyValue(spca, "source");
+ assertEquals(Integer.valueOf(23), TestUtils.getPropertyValue(ms, "pageSize", Integer.class));
+ Twitter template = (Twitter) TestUtils.getPropertyValue(ms, "twitter");
+ assertNotNull(template);
+ ac.close();
+ }
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSendingMessageHandlerParserTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSendingMessageHandlerParserTests.java
index 07f2d8f..c97d947 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSendingMessageHandlerParserTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TestSendingMessageHandlerParserTests.java
@@ -1,91 +1,91 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.config;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import org.junit.Test;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.integration.endpoint.EventDrivenConsumer;
-import org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice;
-import org.springframework.integration.test.util.TestUtils;
-import org.springframework.integration.twitter.outbound.DirectMessageSendingMessageHandler;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.MessageHandler;
-import org.springframework.messaging.support.GenericMessage;
-
-/**
- * @author Oleg Zhurakousky
- * @author Gary Russell
- * @author Artem Bilan
- * @author Gary Russell
- */
-public class TestSendingMessageHandlerParserTests {
-
- private static volatile int adviceCalled;
-
- @Test
- public void testSendingMessageHandlerSuccessfulBootstrap() {
- ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
- "TestSendingMessageHandlerParser-context.xml", this.getClass());
- EventDrivenConsumer dmAdapter = ac.getBean("dmAdapter", EventDrivenConsumer.class);
- MessageHandler handler = TestUtils.getPropertyValue(dmAdapter, "handler", MessageHandler.class);
- assertEquals(DirectMessageSendingMessageHandler.class, handler.getClass());
- assertEquals(23, TestUtils.getPropertyValue(handler, "order"));
- dmAdapter = ac.getBean("dmAdvised", EventDrivenConsumer.class);
- handler = TestUtils.getPropertyValue(dmAdapter, "handler", MessageHandler.class);
- handler.handleMessage(new GenericMessage("foo"));
- assertEquals(1, adviceCalled);
- MessageHandler handler2 = TestUtils.getPropertyValue(ac.getBean("advised"), "handler", MessageHandler.class);
- assertNotSame(handler, handler2);
- handler2.handleMessage(new GenericMessage("foo"));
- assertEquals(2, adviceCalled);
- ac.close();
- }
-
- @Test
- public void testInt2718FailForOutboundAdapterWithRequestHandlerAdviceChainWithinChainConfig() {
- try {
- new ClassPathXmlApplicationContext("OutboundAdapterWithRHACWithinChain-fail-context.xml", this.getClass())
- .close();
- fail("Expected BeanDefinitionParsingException");
- }
- catch (BeansException e) {
- assertTrue(e instanceof BeanDefinitionParsingException);
- assertTrue(e.getMessage().contains("'request-handler-advice-chain' isn't allowed " +
- "for 'twitter:outbound-channel-adapter' within a , because its Handler isn't an AbstractReplyProducingMessageHandler"));
- }
- }
-
-
- public static class FooAdvice extends AbstractRequestHandlerAdvice {
-
- @Override
- protected Object doInvoke(ExecutionCallback callback, Object target, Message> message) throws Exception {
- adviceCalled++;
- return null;
- }
-
- }
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.integration.endpoint.EventDrivenConsumer;
+import org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice;
+import org.springframework.integration.test.util.TestUtils;
+import org.springframework.integration.twitter.outbound.DirectMessageSendingMessageHandler;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHandler;
+import org.springframework.messaging.support.GenericMessage;
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gary Russell
+ * @author Artem Bilan
+ * @author Gary Russell
+ */
+public class TestSendingMessageHandlerParserTests {
+
+ private static volatile int adviceCalled;
+
+ @Test
+ public void testSendingMessageHandlerSuccessfulBootstrap() {
+ ConfigurableApplicationContext ac = new ClassPathXmlApplicationContext(
+ "TestSendingMessageHandlerParser-context.xml", this.getClass());
+ EventDrivenConsumer dmAdapter = ac.getBean("dmAdapter", EventDrivenConsumer.class);
+ MessageHandler handler = TestUtils.getPropertyValue(dmAdapter, "handler", MessageHandler.class);
+ assertEquals(DirectMessageSendingMessageHandler.class, handler.getClass());
+ assertEquals(23, TestUtils.getPropertyValue(handler, "order"));
+ dmAdapter = ac.getBean("dmAdvised", EventDrivenConsumer.class);
+ handler = TestUtils.getPropertyValue(dmAdapter, "handler", MessageHandler.class);
+ handler.handleMessage(new GenericMessage("foo"));
+ assertEquals(1, adviceCalled);
+ MessageHandler handler2 = TestUtils.getPropertyValue(ac.getBean("advised"), "handler", MessageHandler.class);
+ assertNotSame(handler, handler2);
+ handler2.handleMessage(new GenericMessage("foo"));
+ assertEquals(2, adviceCalled);
+ ac.close();
+ }
+
+ @Test
+ public void testInt2718FailForOutboundAdapterWithRequestHandlerAdviceChainWithinChainConfig() {
+ try {
+ new ClassPathXmlApplicationContext("OutboundAdapterWithRHACWithinChain-fail-context.xml", this.getClass())
+ .close();
+ fail("Expected BeanDefinitionParsingException");
+ }
+ catch (BeansException e) {
+ assertTrue(e instanceof BeanDefinitionParsingException);
+ assertTrue(e.getMessage().contains("'request-handler-advice-chain' isn't allowed " +
+ "for 'twitter:outbound-channel-adapter' within a , because its Handler isn't an AbstractReplyProducingMessageHandler"));
+ }
+ }
+
+
+ public static class FooAdvice extends AbstractRequestHandlerAdvice {
+
+ @Override
+ protected Object doInvoke(ExecutionCallback callback, Object target, Message> message) throws Exception {
+ adviceCalled++;
+ return null;
+ }
+
+ }
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TwitterSearchOutboundGatewayParserTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TwitterSearchOutboundGatewayParserTests.java
index b0422de..cdf665c 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TwitterSearchOutboundGatewayParserTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/config/TwitterSearchOutboundGatewayParserTests.java
@@ -1,81 +1,81 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.config;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertThat;
-
-import java.util.List;
-
-import org.hamcrest.Matchers;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.integration.endpoint.PollingConsumer;
-import org.springframework.integration.handler.advice.RequestHandlerRetryAdvice;
-import org.springframework.integration.test.util.TestUtils;
-import org.springframework.integration.twitter.outbound.TwitterSearchOutboundGateway;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-/**
- * @author Gary Russell
- * @author Artem Bilan
- */
-@ContextConfiguration
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext
-public class TwitterSearchOutboundGatewayParserTests {
-
- @Autowired
- @Qualifier("defaultTSOG.handler")
- private TwitterSearchOutboundGateway defaultTSOG;
-
- @Autowired
- @Qualifier("allAttsTSOG.handler")
- private TwitterSearchOutboundGateway allAttsTSOG;
-
- @Autowired
- private PollingConsumer polledAndAdvisedTSOG;
-
- @Autowired
- private Twitter twitter;
-
- @Test
- public void testDefault() {
- assertSame(twitter, TestUtils.getPropertyValue(defaultTSOG, "twitter"));
- }
-
- @Test
- public void testAllAtts() {
- assertSame(twitter, TestUtils.getPropertyValue(allAttsTSOG, "twitter"));
- assertEquals("'foo'", TestUtils.getPropertyValue(allAttsTSOG, "searchArgsExpression.expression"));
- }
-
- @Test
- public void testAdvised() {
- assertSame(twitter, TestUtils.getPropertyValue(polledAndAdvisedTSOG, "handler.twitter"));
- assertThat(TestUtils.getPropertyValue(polledAndAdvisedTSOG, "handler.adviceChain", List.class).get(0),
- Matchers.instanceOf(RequestHandlerRetryAdvice.class));
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.config;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThat;
+
+import java.util.List;
+
+import org.hamcrest.Matchers;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.integration.endpoint.PollingConsumer;
+import org.springframework.integration.handler.advice.RequestHandlerRetryAdvice;
+import org.springframework.integration.test.util.TestUtils;
+import org.springframework.integration.twitter.outbound.TwitterSearchOutboundGateway;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * @author Gary Russell
+ * @author Artem Bilan
+ */
+@ContextConfiguration
+@RunWith(SpringJUnit4ClassRunner.class)
+@DirtiesContext
+public class TwitterSearchOutboundGatewayParserTests {
+
+ @Autowired
+ @Qualifier("defaultTSOG.handler")
+ private TwitterSearchOutboundGateway defaultTSOG;
+
+ @Autowired
+ @Qualifier("allAttsTSOG.handler")
+ private TwitterSearchOutboundGateway allAttsTSOG;
+
+ @Autowired
+ private PollingConsumer polledAndAdvisedTSOG;
+
+ @Autowired
+ private Twitter twitter;
+
+ @Test
+ public void testDefault() {
+ assertSame(twitter, TestUtils.getPropertyValue(defaultTSOG, "twitter"));
+ }
+
+ @Test
+ public void testAllAtts() {
+ assertSame(twitter, TestUtils.getPropertyValue(allAttsTSOG, "twitter"));
+ assertEquals("'foo'", TestUtils.getPropertyValue(allAttsTSOG, "searchArgsExpression.expression"));
+ }
+
+ @Test
+ public void testAdvised() {
+ assertSame(twitter, TestUtils.getPropertyValue(polledAndAdvisedTSOG, "handler.twitter"));
+ assertThat(TestUtils.getPropertyValue(polledAndAdvisedTSOG, "handler.adviceChain", List.class).get(0),
+ Matchers.instanceOf(RequestHandlerRetryAdvice.class));
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace.java
index 083cf20..662c9f5 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestReceivingUsingNamespace.java
@@ -1,47 +1,47 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.ignored;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-/**
- * @author Oleg Zhurakousky
- * @author Gary Russell
- *
- */
-public class TestReceivingUsingNamespace {
-
- @Test
- @Ignore
- /*
- * In order to run this test you need to provide oauth properties in sample.properties on the classpath.
- */
- public void testUpdatesWithRealTwitter() throws Exception {
- CountDownLatch latch = new CountDownLatch(1);
- ConfigurableApplicationContext ctx =
- new ClassPathXmlApplicationContext("TestReceivingUsingNamespace-context.xml", this.getClass());
- latch.await(10000, TimeUnit.SECONDS);
- ctx.close();
- }
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.ignored;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gary Russell
+ *
+ */
+public class TestReceivingUsingNamespace {
+
+ @Test
+ @Ignore
+ /*
+ * In order to run this test you need to provide oauth properties in sample.properties on the classpath.
+ */
+ public void testUpdatesWithRealTwitter() throws Exception {
+ CountDownLatch latch = new CountDownLatch(1);
+ ConfigurableApplicationContext ctx =
+ new ClassPathXmlApplicationContext("TestReceivingUsingNamespace-context.xml", this.getClass());
+ latch.await(10000, TimeUnit.SECONDS);
+ ctx.close();
+ }
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSearchOutboundGateway.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSearchOutboundGateway.java
index 1d33185..3dc2ee8 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSearchOutboundGateway.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSearchOutboundGateway.java
@@ -1,50 +1,50 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.ignored;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.messaging.support.GenericMessage;
-import org.springframework.social.twitter.api.SearchParameters;
-
-/**
- * @author Gary Russell
- */
-public class TestSearchOutboundGateway {
-
- @Test
- @Ignore
- /*
- * In order to run this test you need to provide oauth properties in sample.properties on the classpath.
- */
- public void testSearch() throws Exception {
- ConfigurableApplicationContext ctx =
- new ClassPathXmlApplicationContext("TestSearchOutboundGateway-context.xml", this.getClass());
- MessageChannel search = ctx.getBean("search", MessageChannel.class);
- search.send(new GenericMessage("#springintegration"));
- Thread.sleep(10000);
- search.send(new GenericMessage(new SearchParameters("#springintegration").count(5)));
- Thread.sleep(10000);
- search.send(new GenericMessage(new SearchParameters("#jjjjunk").count(5)));
- Thread.sleep(10000);
- ctx.close();
- }
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.ignored;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.messaging.support.GenericMessage;
+import org.springframework.social.twitter.api.SearchParameters;
+
+/**
+ * @author Gary Russell
+ */
+public class TestSearchOutboundGateway {
+
+ @Test
+ @Ignore
+ /*
+ * In order to run this test you need to provide oauth properties in sample.properties on the classpath.
+ */
+ public void testSearch() throws Exception {
+ ConfigurableApplicationContext ctx =
+ new ClassPathXmlApplicationContext("TestSearchOutboundGateway-context.xml", this.getClass());
+ MessageChannel search = ctx.getBean("search", MessageChannel.class);
+ search.send(new GenericMessage("#springintegration"));
+ Thread.sleep(10000);
+ search.send(new GenericMessage(new SearchParameters("#springintegration").count(5)));
+ Thread.sleep(10000);
+ search.send(new GenericMessage(new SearchParameters("#jjjjunk").count(5)));
+ Thread.sleep(10000);
+ ctx.close();
+ }
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingDMsUsingNamespace.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingDMsUsingNamespace.java
index 814d03c..de0de78 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingDMsUsingNamespace.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingDMsUsingNamespace.java
@@ -1,73 +1,73 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.ignored;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.integration.support.MessageBuilder;
-import org.springframework.integration.twitter.core.TwitterHeaders;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-import org.springframework.util.StringUtils;
-
-/**
- * @author Josh Long
- * @author Oleg Zhurakouksy
- * @author Artem Bilan
- */
-@ContextConfiguration
-public class TestSendingDMsUsingNamespace extends AbstractJUnit4SpringContextTests {
-
- @Autowired
- @Qualifier("inputChannel")
-
- private MessageChannel inputChannel;
-
- @Autowired
- @Qualifier("dmOutboundWithinChain")
- private MessageChannel dmOutboundWithinChain;
-
- @Test
- @Ignore
- public void testSendigRealDirectMessage() throws Throwable {
- String dmUsr = "z_oleg";
- MessageBuilder mb = MessageBuilder.withPayload("'Hello world!', from the Spring Integration outbound Twitter adapter "
- + System.currentTimeMillis());
-
- if (StringUtils.hasText(dmUsr)) {
- mb.setHeader(TwitterHeaders.DM_TARGET_USER_ID, dmUsr);
- }
- inputChannel.send(mb.build());
- }
-
- @Test
- @Ignore
- public void testSendigDirectMessageFromChain() throws Throwable {
- String dmUsr = "z_oleg";
- MessageBuilder mb = MessageBuilder.withPayload("Hello world!");
-
- if (StringUtils.hasText(dmUsr)) {
- mb.setHeader(TwitterHeaders.DM_TARGET_USER_ID, dmUsr);
- }
- dmOutboundWithinChain.send(mb.build());
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.ignored;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.integration.twitter.core.TwitterHeaders;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+import org.springframework.util.StringUtils;
+
+/**
+ * @author Josh Long
+ * @author Oleg Zhurakouksy
+ * @author Artem Bilan
+ */
+@ContextConfiguration
+public class TestSendingDMsUsingNamespace extends AbstractJUnit4SpringContextTests {
+
+ @Autowired
+ @Qualifier("inputChannel")
+
+ private MessageChannel inputChannel;
+
+ @Autowired
+ @Qualifier("dmOutboundWithinChain")
+ private MessageChannel dmOutboundWithinChain;
+
+ @Test
+ @Ignore
+ public void testSendigRealDirectMessage() throws Throwable {
+ String dmUsr = "z_oleg";
+ MessageBuilder mb = MessageBuilder.withPayload("'Hello world!', from the Spring Integration outbound Twitter adapter "
+ + System.currentTimeMillis());
+
+ if (StringUtils.hasText(dmUsr)) {
+ mb.setHeader(TwitterHeaders.DM_TARGET_USER_ID, dmUsr);
+ }
+ inputChannel.send(mb.build());
+ }
+
+ @Test
+ @Ignore
+ public void testSendigDirectMessageFromChain() throws Throwable {
+ String dmUsr = "z_oleg";
+ MessageBuilder mb = MessageBuilder.withPayload("Hello world!");
+
+ if (StringUtils.hasText(dmUsr)) {
+ mb.setHeader(TwitterHeaders.DM_TARGET_USER_ID, dmUsr);
+ }
+ dmOutboundWithinChain.send(mb.build());
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingUpdatesUsingNamespace.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingUpdatesUsingNamespace.java
index 58cfad6..dc535d2 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingUpdatesUsingNamespace.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TestSendingUpdatesUsingNamespace.java
@@ -1,66 +1,66 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.ignored;
-
-import java.util.Date;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.integration.core.MessagingTemplate;
-import org.springframework.integration.support.MessageBuilder;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-/**
- * @author Josh Long
- * @author Artem Bilan
- */
-@ContextConfiguration
-public class TestSendingUpdatesUsingNamespace extends AbstractJUnit4SpringContextTests {
-
- private MessagingTemplate messagingTemplate = new MessagingTemplate();
-
- @Value("#{out}")
- private MessageChannel channel;
-
- @Autowired
- @Qualifier("outFromChain")
- private MessageChannel outFromChain;
-
- @Test
- @Ignore
- public void testSendingATweet() throws Throwable {
- MessageBuilder mb = MessageBuilder.withPayload("Early start today"
- + new Date(System.currentTimeMillis()));
- Message m = mb.build();
- this.messagingTemplate.send(this.channel, m);
- }
-
- @Test
- @Ignore
- public void testSendingATweetFromChain() throws Throwable {
- Message m = MessageBuilder.withPayload("Early start today" + new Date(System.currentTimeMillis())).build();
- this.outFromChain.send(m);
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.ignored;
+
+import java.util.Date;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.integration.core.MessagingTemplate;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
+
+/**
+ * @author Josh Long
+ * @author Artem Bilan
+ */
+@ContextConfiguration
+public class TestSendingUpdatesUsingNamespace extends AbstractJUnit4SpringContextTests {
+
+ private MessagingTemplate messagingTemplate = new MessagingTemplate();
+
+ @Value("#{out}")
+ private MessageChannel channel;
+
+ @Autowired
+ @Qualifier("outFromChain")
+ private MessageChannel outFromChain;
+
+ @Test
+ @Ignore
+ public void testSendingATweet() throws Throwable {
+ MessageBuilder mb = MessageBuilder.withPayload("Early start today"
+ + new Date(System.currentTimeMillis()));
+ Message m = mb.build();
+ this.messagingTemplate.send(this.channel, m);
+ }
+
+ @Test
+ @Ignore
+ public void testSendingATweetFromChain() throws Throwable {
+ Message m = MessageBuilder.withPayload("Early start today" + new Date(System.currentTimeMillis())).build();
+ this.outFromChain.send(m);
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TwitterAnnouncer.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TwitterAnnouncer.java
index 1d426a1..af6a28c 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TwitterAnnouncer.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/ignored/TwitterAnnouncer.java
@@ -1,72 +1,72 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.ignored;
-
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.springframework.integration.history.MessageHistory;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.DirectMessage;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.stereotype.Component;
-
-/**
- * @author Oleg Zhurakousky
- * @author Mark Fisher
- * @author Gary Russell
- *
- */
-@Component
-public class TwitterAnnouncer {
-
- private final Log logger = LogFactory.getLog(getClass());
-
- public void dm(DirectMessage directMessage) {
- logger.info("A direct message has been received from " +
- directMessage.getSender().getScreenName() + " with text " + directMessage.getText());
- }
-
- public void search(Message> search) {
- MessageHistory history = MessageHistory.read(search);
- Tweet tweet = (Tweet) search.getPayload();
- logger.info("A search item was received " +
- tweet.getCreatedAt() + " with text " + tweet.getText());
- }
-
- public void mention(Tweet s) {
- logger.info("A tweet mentioning (or replying) to you was received having text "
- + s.getFromUser() + "-" + s.getText() + " from " + s.getSource());
- }
-
- public void searchResult(Collection tweets) {
- if (tweets.size() == 0) {
- logger.info("No results");
- }
- for (Tweet s : tweets) {
- logger.info("Search result: "
- + s.getFromUser() + "-" + s.getText() + " from " + s.getSource());
- }
- }
-
- public void updates(Tweet t) {
- logger.info("Received timeline update: " + t.getText() + " from " + t.getSource());
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.ignored;
+
+import java.util.Collection;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.springframework.integration.history.MessageHistory;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.DirectMessage;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Mark Fisher
+ * @author Gary Russell
+ *
+ */
+@Component
+public class TwitterAnnouncer {
+
+ private final Log logger = LogFactory.getLog(getClass());
+
+ public void dm(DirectMessage directMessage) {
+ logger.info("A direct message has been received from " +
+ directMessage.getSender().getScreenName() + " with text " + directMessage.getText());
+ }
+
+ public void search(Message> search) {
+ MessageHistory history = MessageHistory.read(search);
+ Tweet tweet = (Tweet) search.getPayload();
+ logger.info("A search item was received " +
+ tweet.getCreatedAt() + " with text " + tweet.getText());
+ }
+
+ public void mention(Tweet s) {
+ logger.info("A tweet mentioning (or replying) to you was received having text "
+ + s.getFromUser() + "-" + s.getText() + " from " + s.getSource());
+ }
+
+ public void searchResult(Collection tweets) {
+ if (tweets.size() == 0) {
+ logger.info("No results");
+ }
+ for (Tweet s : tweets) {
+ logger.info("Search result: "
+ + s.getFromUser() + "-" + s.getText() + " from " + s.getSource());
+ }
+ }
+
+ public void updates(Tweet t) {
+ logger.info("Received timeline update: " + t.getText() + " from " + t.getSource());
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java
index 6740309..26bdbb6 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/DirectMessageReceivingMessageSourceTests.java
@@ -1,63 +1,63 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.inbound;
-
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.beans.factory.config.PropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.DirectMessage;
-import org.springframework.social.twitter.api.impl.TwitterTemplate;
-
-/**
- * @author Oleg Zhurakousky
- * @author Gary Russell
- */
-public class DirectMessageReceivingMessageSourceTests {
-
- private final Log logger = LogFactory.getLog(getClass());
-
- @SuppressWarnings("unchecked")
- @Test
- @Ignore
- public void demoReceiveDm() throws Exception {
- PropertiesFactoryBean pf = new PropertiesFactoryBean();
- pf.setLocation(new ClassPathResource("sample.properties"));
- pf.afterPropertiesSet();
- Properties prop = pf.getObject();
- TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
- prop.getProperty("z_oleg.oauth.consumerSecret"),
- prop.getProperty("z_oleg.oauth.accessToken"),
- prop.getProperty("z_oleg.oauth.accessTokenSecret"));
- DirectMessageReceivingMessageSource tSource = new DirectMessageReceivingMessageSource(template, "foo");
- tSource.afterPropertiesSet();
- for (int i = 0; i < 50; i++) {
- Message message = tSource.receive();
- if (message != null) {
- DirectMessage tweet = message.getPayload();
- logger.info(tweet.getSender().getScreenName() + " - " + tweet.getText() + " - " + tweet.getCreatedAt());
- }
- }
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.inbound;
+
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.DirectMessage;
+import org.springframework.social.twitter.api.impl.TwitterTemplate;
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gary Russell
+ */
+public class DirectMessageReceivingMessageSourceTests {
+
+ private final Log logger = LogFactory.getLog(getClass());
+
+ @SuppressWarnings("unchecked")
+ @Test
+ @Ignore
+ public void demoReceiveDm() throws Exception {
+ PropertiesFactoryBean pf = new PropertiesFactoryBean();
+ pf.setLocation(new ClassPathResource("sample.properties"));
+ pf.afterPropertiesSet();
+ Properties prop = pf.getObject();
+ TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
+ prop.getProperty("z_oleg.oauth.consumerSecret"),
+ prop.getProperty("z_oleg.oauth.accessToken"),
+ prop.getProperty("z_oleg.oauth.accessTokenSecret"));
+ DirectMessageReceivingMessageSource tSource = new DirectMessageReceivingMessageSource(template, "foo");
+ tSource.afterPropertiesSet();
+ for (int i = 0; i < 50; i++) {
+ Message message = tSource.receive();
+ if (message != null) {
+ DirectMessage tweet = message.getPayload();
+ logger.info(tweet.getSender().getScreenName() + " - " + tweet.getText() + " - " + tweet.getCreatedAt());
+ }
+ }
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/SearchReceivingMessageSourceTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/SearchReceivingMessageSourceTests.java
index 1efab03..4c163f9 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/SearchReceivingMessageSourceTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/SearchReceivingMessageSourceTests.java
@@ -1,182 +1,182 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.inbound;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.mock;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.config.PropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.integration.metadata.SimpleMetadataStore;
-import org.springframework.integration.test.util.TestUtils;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.SearchMetadata;
-import org.springframework.social.twitter.api.SearchOperations;
-import org.springframework.social.twitter.api.SearchParameters;
-import org.springframework.social.twitter.api.SearchResults;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.social.twitter.api.impl.TwitterTemplate;
-
-
-/**
- * @author Oleg Zhurakousky
- * @author Gunnar Hillert
- * @author Gary Russell
- * @author Artem Bilan
- */
-public class SearchReceivingMessageSourceTests {
-
- private final Log logger = LogFactory.getLog(getClass());
-
- private static final String SEARCH_QUERY = "#springsource";
-
- @SuppressWarnings("unchecked")
- @Test
- @Ignore
- public void demoReceiveSearchResults() throws Exception {
- PropertiesFactoryBean pf = new PropertiesFactoryBean();
- pf.setLocation(new ClassPathResource("sample.properties"));
- pf.afterPropertiesSet();
- Properties prop = pf.getObject();
- TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
- prop.getProperty("z_oleg.oauth.consumerSecret"),
- prop.getProperty("z_oleg.oauth.accessToken"),
- prop.getProperty("z_oleg.oauth.accessTokenSecret"));
- SearchReceivingMessageSource tSource = new SearchReceivingMessageSource(template, "foo");
- tSource.setQuery(SEARCH_QUERY);
- tSource.afterPropertiesSet();
- for (int i = 0; i < 50; i++) {
- Message message = tSource.receive();
- if (message != null) {
- Tweet tweet = message.getPayload();
- logger.info(tweet.getFromUser() + " - " + tweet.getText() + " - " + tweet.getCreatedAt());
- }
- }
- }
-
- /**
- * Unit Test ensuring some basic initialization properties being set.
- */
- @Test
- public void testSearchReceivingMessageSourceInit() {
-
- final SearchReceivingMessageSource messageSource =
- new SearchReceivingMessageSource(new TwitterTemplate("test"), "foo");
- messageSource.setComponentName("twitterSearchMessageSource");
-
- final Object metadataStore = TestUtils.getPropertyValue(messageSource, "metadataStore");
- final Object metadataKey = TestUtils.getPropertyValue(messageSource, "metadataKey");
-
- assertNull(metadataStore);
- assertNotNull(metadataKey);
-
- messageSource.setBeanFactory(mock(BeanFactory.class));
- messageSource.afterPropertiesSet();
-
- final Object metadataStoreInitialized = TestUtils.getPropertyValue(messageSource, "metadataStore");
- final Object metadataKeyInitialized = TestUtils.getPropertyValue(messageSource, "metadataKey");
-
- assertNotNull(metadataStoreInitialized);
- assertTrue(metadataStoreInitialized instanceof SimpleMetadataStore);
- assertNotNull(metadataKeyInitialized);
- assertEquals("foo", metadataKeyInitialized);
-
- final Twitter twitter = TestUtils.getPropertyValue(messageSource, "twitter", Twitter.class);
-
- assertFalse(twitter.isAuthorized());
- assertNotNull(twitter.userOperations());
-
- }
-
- /**
- * This test ensures that when polling for a list of Tweets null is never returned.
- * In case of no polling results, an empty list is returned instead.
- */
- @Test
- public void testPollForTweetsNullResults() {
-
- final TwitterTemplate twitterTemplate = mock(TwitterTemplate.class);
- final SearchOperations so = mock(SearchOperations.class);
-
- given(twitterTemplate.searchOperations()).willReturn(so);
- given(twitterTemplate.searchOperations().search(SEARCH_QUERY, 20, 0, 0)).willReturn(null);
-
- final SearchReceivingMessageSource messageSource = new SearchReceivingMessageSource(twitterTemplate, "foo");
- messageSource.setQuery(SEARCH_QUERY);
-
- final String setQuery = TestUtils.getPropertyValue(messageSource, "query", String.class);
-
- assertEquals(SEARCH_QUERY, setQuery);
- assertEquals("twitter:search-inbound-channel-adapter", messageSource.getComponentType());
-
- final List tweets = messageSource.pollForTweets(0);
-
- assertNotNull(tweets);
- assertTrue(tweets.isEmpty());
- }
-
- /**
- * Verify that a polling operation returns in fact 3 results.
- */
- @Test
- public void testPollForTweetsThreeResults() {
-
- final TwitterTemplate twitterTemplate;
-
- final SearchOperations so = mock(SearchOperations.class);
-
- final List tweets = new ArrayList();
-
- tweets.add(mock(Tweet.class));
- tweets.add(mock(Tweet.class));
- tweets.add(mock(Tweet.class));
-
- final SearchResults results = new SearchResults(tweets, new SearchMetadata(111, 111));
-
- twitterTemplate = mock(TwitterTemplate.class);
-
- given(twitterTemplate.searchOperations()).willReturn(so);
- SearchParameters params = new SearchParameters(SEARCH_QUERY).count(20).sinceId(0);
- given(twitterTemplate.searchOperations().search(params)).willReturn(results);
-
- final SearchReceivingMessageSource messageSource = new SearchReceivingMessageSource(twitterTemplate, "foo");
-
- messageSource.setQuery(SEARCH_QUERY);
-
- final List tweetSearchResults = messageSource.pollForTweets(0);
-
- assertNotNull(tweetSearchResults);
- assertEquals(3, tweetSearchResults.size());
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.inbound;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.integration.metadata.SimpleMetadataStore;
+import org.springframework.integration.test.util.TestUtils;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.SearchMetadata;
+import org.springframework.social.twitter.api.SearchOperations;
+import org.springframework.social.twitter.api.SearchParameters;
+import org.springframework.social.twitter.api.SearchResults;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.social.twitter.api.impl.TwitterTemplate;
+
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gunnar Hillert
+ * @author Gary Russell
+ * @author Artem Bilan
+ */
+public class SearchReceivingMessageSourceTests {
+
+ private final Log logger = LogFactory.getLog(getClass());
+
+ private static final String SEARCH_QUERY = "#springsource";
+
+ @SuppressWarnings("unchecked")
+ @Test
+ @Ignore
+ public void demoReceiveSearchResults() throws Exception {
+ PropertiesFactoryBean pf = new PropertiesFactoryBean();
+ pf.setLocation(new ClassPathResource("sample.properties"));
+ pf.afterPropertiesSet();
+ Properties prop = pf.getObject();
+ TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
+ prop.getProperty("z_oleg.oauth.consumerSecret"),
+ prop.getProperty("z_oleg.oauth.accessToken"),
+ prop.getProperty("z_oleg.oauth.accessTokenSecret"));
+ SearchReceivingMessageSource tSource = new SearchReceivingMessageSource(template, "foo");
+ tSource.setQuery(SEARCH_QUERY);
+ tSource.afterPropertiesSet();
+ for (int i = 0; i < 50; i++) {
+ Message message = tSource.receive();
+ if (message != null) {
+ Tweet tweet = message.getPayload();
+ logger.info(tweet.getFromUser() + " - " + tweet.getText() + " - " + tweet.getCreatedAt());
+ }
+ }
+ }
+
+ /**
+ * Unit Test ensuring some basic initialization properties being set.
+ */
+ @Test
+ public void testSearchReceivingMessageSourceInit() {
+
+ final SearchReceivingMessageSource messageSource =
+ new SearchReceivingMessageSource(new TwitterTemplate("test"), "foo");
+ messageSource.setComponentName("twitterSearchMessageSource");
+
+ final Object metadataStore = TestUtils.getPropertyValue(messageSource, "metadataStore");
+ final Object metadataKey = TestUtils.getPropertyValue(messageSource, "metadataKey");
+
+ assertNull(metadataStore);
+ assertNotNull(metadataKey);
+
+ messageSource.setBeanFactory(mock(BeanFactory.class));
+ messageSource.afterPropertiesSet();
+
+ final Object metadataStoreInitialized = TestUtils.getPropertyValue(messageSource, "metadataStore");
+ final Object metadataKeyInitialized = TestUtils.getPropertyValue(messageSource, "metadataKey");
+
+ assertNotNull(metadataStoreInitialized);
+ assertTrue(metadataStoreInitialized instanceof SimpleMetadataStore);
+ assertNotNull(metadataKeyInitialized);
+ assertEquals("foo", metadataKeyInitialized);
+
+ final Twitter twitter = TestUtils.getPropertyValue(messageSource, "twitter", Twitter.class);
+
+ assertFalse(twitter.isAuthorized());
+ assertNotNull(twitter.userOperations());
+
+ }
+
+ /**
+ * This test ensures that when polling for a list of Tweets null is never returned.
+ * In case of no polling results, an empty list is returned instead.
+ */
+ @Test
+ public void testPollForTweetsNullResults() {
+
+ final TwitterTemplate twitterTemplate = mock(TwitterTemplate.class);
+ final SearchOperations so = mock(SearchOperations.class);
+
+ given(twitterTemplate.searchOperations()).willReturn(so);
+ given(twitterTemplate.searchOperations().search(SEARCH_QUERY, 20, 0, 0)).willReturn(null);
+
+ final SearchReceivingMessageSource messageSource = new SearchReceivingMessageSource(twitterTemplate, "foo");
+ messageSource.setQuery(SEARCH_QUERY);
+
+ final String setQuery = TestUtils.getPropertyValue(messageSource, "query", String.class);
+
+ assertEquals(SEARCH_QUERY, setQuery);
+ assertEquals("twitter:search-inbound-channel-adapter", messageSource.getComponentType());
+
+ final List tweets = messageSource.pollForTweets(0);
+
+ assertNotNull(tweets);
+ assertTrue(tweets.isEmpty());
+ }
+
+ /**
+ * Verify that a polling operation returns in fact 3 results.
+ */
+ @Test
+ public void testPollForTweetsThreeResults() {
+
+ final TwitterTemplate twitterTemplate;
+
+ final SearchOperations so = mock(SearchOperations.class);
+
+ final List tweets = new ArrayList();
+
+ tweets.add(mock(Tweet.class));
+ tweets.add(mock(Tweet.class));
+ tweets.add(mock(Tweet.class));
+
+ final SearchResults results = new SearchResults(tweets, new SearchMetadata(111, 111));
+
+ twitterTemplate = mock(TwitterTemplate.class);
+
+ given(twitterTemplate.searchOperations()).willReturn(so);
+ SearchParameters params = new SearchParameters(SEARCH_QUERY).count(20).sinceId(0);
+ given(twitterTemplate.searchOperations().search(params)).willReturn(results);
+
+ final SearchReceivingMessageSource messageSource = new SearchReceivingMessageSource(twitterTemplate, "foo");
+
+ messageSource.setQuery(SEARCH_QUERY);
+
+ final List tweetSearchResults = messageSource.pollForTweets(0);
+
+ assertNotNull(tweetSearchResults);
+ assertEquals(3, tweetSearchResults.size());
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/TimelineReceivingMessageSourceTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/TimelineReceivingMessageSourceTests.java
index 1da0e1d..171575c 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/TimelineReceivingMessageSourceTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/inbound/TimelineReceivingMessageSourceTests.java
@@ -1,64 +1,64 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.inbound;
-
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.beans.factory.config.PropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.social.twitter.api.impl.TwitterTemplate;
-
-
-/**
- * @author Oleg Zhurakousky
- * @author Gary Russell
- */
-public class TimelineReceivingMessageSourceTests {
-
- private final Log logger = LogFactory.getLog(getClass());
-
- @SuppressWarnings("unchecked")
- @Test
- @Ignore
- public void demoReceiveTimeline() throws Exception {
- PropertiesFactoryBean pf = new PropertiesFactoryBean();
- pf.setLocation(new ClassPathResource("sample.properties"));
- pf.afterPropertiesSet();
- Properties prop = pf.getObject();
- TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
- prop.getProperty("z_oleg.oauth.consumerSecret"),
- prop.getProperty("z_oleg.oauth.accessToken"),
- prop.getProperty("z_oleg.oauth.accessTokenSecret"));
- TimelineReceivingMessageSource tSource = new TimelineReceivingMessageSource(template, "foo");
- tSource.afterPropertiesSet();
- for (int i = 0; i < 50; i++) {
- Message message = tSource.receive();
- if (message != null) {
- Tweet tweet = message.getPayload();
- logger.info(tweet.getFromUser() + " - " + tweet.getText() + " - " + tweet.getCreatedAt());
- }
- }
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.inbound;
+
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.social.twitter.api.impl.TwitterTemplate;
+
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Gary Russell
+ */
+public class TimelineReceivingMessageSourceTests {
+
+ private final Log logger = LogFactory.getLog(getClass());
+
+ @SuppressWarnings("unchecked")
+ @Test
+ @Ignore
+ public void demoReceiveTimeline() throws Exception {
+ PropertiesFactoryBean pf = new PropertiesFactoryBean();
+ pf.setLocation(new ClassPathResource("sample.properties"));
+ pf.afterPropertiesSet();
+ Properties prop = pf.getObject();
+ TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
+ prop.getProperty("z_oleg.oauth.consumerSecret"),
+ prop.getProperty("z_oleg.oauth.accessToken"),
+ prop.getProperty("z_oleg.oauth.accessTokenSecret"));
+ TimelineReceivingMessageSource tSource = new TimelineReceivingMessageSource(template, "foo");
+ tSource.afterPropertiesSet();
+ for (int i = 0; i < 50; i++) {
+ Message message = tSource.receive();
+ if (message != null) {
+ Tweet tweet = message.getPayload();
+ logger.info(tweet.getFromUser() + " - " + tweet.getText() + " - " + tweet.getCreatedAt());
+ }
+ }
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandlerTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandlerTests.java
index f80e195..8a834e9 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandlerTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/DirectMessageSendingMessageHandlerTests.java
@@ -1,56 +1,56 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.outbound;
-
-import java.util.Properties;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.beans.factory.config.PropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.integration.support.MessageBuilder;
-import org.springframework.integration.twitter.core.TwitterHeaders;
-import org.springframework.messaging.Message;
-import org.springframework.social.twitter.api.impl.TwitterTemplate;
-
-/**
- * @author Oleg Zhurakousky
- * @author Mark Fisher
- * @author Gary Russell
- */
-public class DirectMessageSendingMessageHandlerTests {
-
- @Test
- @Ignore
- public void validateSendDirectMessage() throws Exception {
- PropertiesFactoryBean pf = new PropertiesFactoryBean();
- pf.setLocation(new ClassPathResource("sample.properties"));
- pf.afterPropertiesSet();
- Properties prop = pf.getObject();
- TwitterTemplate template = new TwitterTemplate(prop.getProperty("spring_eip.oauth.consumerKey"),
- prop.getProperty("spring_eip.oauth.consumerSecret"),
- prop.getProperty("spring_eip.oauth.accessToken"),
- prop.getProperty("spring_eip.oauth.accessTokenSecret"));
- Message> message1 = MessageBuilder.withPayload("Polsihing SI Twitter migration")
- .setHeader(TwitterHeaders.DM_TARGET_USER_ID, "z_oleg").build();
- DirectMessageSendingMessageHandler handler = new DirectMessageSendingMessageHandler(template);
- handler.afterPropertiesSet();
- handler.handleMessage(message1);
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.outbound;
+
+import java.util.Properties;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.integration.twitter.core.TwitterHeaders;
+import org.springframework.messaging.Message;
+import org.springframework.social.twitter.api.impl.TwitterTemplate;
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Mark Fisher
+ * @author Gary Russell
+ */
+public class DirectMessageSendingMessageHandlerTests {
+
+ @Test
+ @Ignore
+ public void validateSendDirectMessage() throws Exception {
+ PropertiesFactoryBean pf = new PropertiesFactoryBean();
+ pf.setLocation(new ClassPathResource("sample.properties"));
+ pf.afterPropertiesSet();
+ Properties prop = pf.getObject();
+ TwitterTemplate template = new TwitterTemplate(prop.getProperty("spring_eip.oauth.consumerKey"),
+ prop.getProperty("spring_eip.oauth.consumerSecret"),
+ prop.getProperty("spring_eip.oauth.accessToken"),
+ prop.getProperty("spring_eip.oauth.accessTokenSecret"));
+ Message> message1 = MessageBuilder.withPayload("Polsihing SI Twitter migration")
+ .setHeader(TwitterHeaders.DM_TARGET_USER_ID, "z_oleg").build();
+ DirectMessageSendingMessageHandler handler = new DirectMessageSendingMessageHandler(template);
+ handler.afterPropertiesSet();
+ handler.handleMessage(message1);
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandlerTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandlerTests.java
index ac1a212..62d4de9 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandlerTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/StatusUpdatingMessageHandlerTests.java
@@ -1,110 +1,110 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.outbound;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import java.util.Collections;
-import java.util.Properties;
-
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mockito;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.config.PropertiesFactoryBean;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.integration.support.MessageBuilder;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.MessageChannel;
-import org.springframework.messaging.support.GenericMessage;
-import org.springframework.social.twitter.api.TimelineOperations;
-import org.springframework.social.twitter.api.TweetData;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.social.twitter.api.impl.TwitterTemplate;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.util.MultiValueMap;
-
-/**
- * @author Oleg Zhurakousky
- * @author Artem Bilan
- */
-@ContextConfiguration
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext
-public class StatusUpdatingMessageHandlerTests {
-
- @Autowired
- MessageChannel in1;
-
- @Autowired
- MessageChannel in2;
-
- @Autowired
- Twitter twitter;
-
- @Test
- @Ignore
- public void demoSendStatusMessage() throws Exception {
- PropertiesFactoryBean pf = new PropertiesFactoryBean();
- pf.setLocation(new ClassPathResource("sample.properties"));
- pf.afterPropertiesSet();
- Properties prop = pf.getObject();
- TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
- prop.getProperty("z_oleg.oauth.consumerSecret"),
- prop.getProperty("z_oleg.oauth.accessToken"),
- prop.getProperty("z_oleg.oauth.accessTokenSecret"));
- Message> message1 = new GenericMessage<>("Polishing #springintegration migration to Spring Social. test");
- StatusUpdatingMessageHandler handler = new StatusUpdatingMessageHandler(template);
- handler.afterPropertiesSet();
- handler.handleMessage(message1);
- }
-
- @Test
- public void testStatusUpdatingMessageHandler() {
- TimelineOperations timelineOperations = Mockito.mock(TimelineOperations.class);
- Mockito.when(this.twitter.timelineOperations()).thenReturn(timelineOperations);
-
- ArgumentCaptor argument = ArgumentCaptor.forClass(TweetData.class);
-
- this.in1.send(new GenericMessage("foo"));
-
- Mockito.verify(timelineOperations).updateStatus(argument.capture());
- assertEquals("foo", argument.getValue().toRequestParameters().getFirst("status"));
-
- Mockito.reset(timelineOperations);
-
- ClassPathResource media = new ClassPathResource("log4j.properties");
- this.in2.send(MessageBuilder.withPayload(Collections.singletonMap("foo", "bar"))
- .setHeader("media", media)
- .build());
-
- Mockito.verify(timelineOperations).updateStatus(argument.capture());
- TweetData tweetData = argument.getValue();
- MultiValueMap requestParameters = tweetData.toRequestParameters();
- assertEquals("bar", requestParameters.getFirst("status"));
- assertNull(requestParameters.getFirst("media"));
- MultiValueMap uploadMediaParameters = tweetData.toUploadMediaParameters();
- assertEquals(media, uploadMediaParameters.getFirst("media"));
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.outbound;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import java.util.Collections;
+import java.util.Properties;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mockito;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.config.PropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.messaging.support.GenericMessage;
+import org.springframework.social.twitter.api.TimelineOperations;
+import org.springframework.social.twitter.api.TweetData;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.social.twitter.api.impl.TwitterTemplate;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.util.MultiValueMap;
+
+/**
+ * @author Oleg Zhurakousky
+ * @author Artem Bilan
+ */
+@ContextConfiguration
+@RunWith(SpringJUnit4ClassRunner.class)
+@DirtiesContext
+public class StatusUpdatingMessageHandlerTests {
+
+ @Autowired
+ MessageChannel in1;
+
+ @Autowired
+ MessageChannel in2;
+
+ @Autowired
+ Twitter twitter;
+
+ @Test
+ @Ignore
+ public void demoSendStatusMessage() throws Exception {
+ PropertiesFactoryBean pf = new PropertiesFactoryBean();
+ pf.setLocation(new ClassPathResource("sample.properties"));
+ pf.afterPropertiesSet();
+ Properties prop = pf.getObject();
+ TwitterTemplate template = new TwitterTemplate(prop.getProperty("z_oleg.oauth.consumerKey"),
+ prop.getProperty("z_oleg.oauth.consumerSecret"),
+ prop.getProperty("z_oleg.oauth.accessToken"),
+ prop.getProperty("z_oleg.oauth.accessTokenSecret"));
+ Message> message1 = new GenericMessage<>("Polishing #springintegration migration to Spring Social. test");
+ StatusUpdatingMessageHandler handler = new StatusUpdatingMessageHandler(template);
+ handler.afterPropertiesSet();
+ handler.handleMessage(message1);
+ }
+
+ @Test
+ public void testStatusUpdatingMessageHandler() {
+ TimelineOperations timelineOperations = Mockito.mock(TimelineOperations.class);
+ Mockito.when(this.twitter.timelineOperations()).thenReturn(timelineOperations);
+
+ ArgumentCaptor argument = ArgumentCaptor.forClass(TweetData.class);
+
+ this.in1.send(new GenericMessage("foo"));
+
+ Mockito.verify(timelineOperations).updateStatus(argument.capture());
+ assertEquals("foo", argument.getValue().toRequestParameters().getFirst("status"));
+
+ Mockito.reset(timelineOperations);
+
+ ClassPathResource media = new ClassPathResource("log4j.properties");
+ this.in2.send(MessageBuilder.withPayload(Collections.singletonMap("foo", "bar"))
+ .setHeader("media", media)
+ .build());
+
+ Mockito.verify(timelineOperations).updateStatus(argument.capture());
+ TweetData tweetData = argument.getValue();
+ MultiValueMap requestParameters = tweetData.toRequestParameters();
+ assertEquals("bar", requestParameters.getFirst("status"));
+ assertNull(requestParameters.getFirst("media"));
+ MultiValueMap uploadMediaParameters = tweetData.toUploadMediaParameters();
+ assertEquals(media, uploadMediaParameters.getFirst("media"));
+ }
+
+}
diff --git a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGatewayTests.java b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGatewayTests.java
index 579a5df..e87b0ba 100644
--- a/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGatewayTests.java
+++ b/spring-integration-social-twitter/src/test/java/org/springframework/integration/twitter/outbound/TwitterSearchOutboundGatewayTests.java
@@ -1,238 +1,238 @@
-/*
- * Copyright 2018 the original author or authors.
- *
- * Licensed 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.springframework.integration.twitter.outbound;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.BDDMockito.willAnswer;
-import static org.mockito.Mockito.mock;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.expression.spel.standard.SpelExpressionParser;
-import org.springframework.integration.channel.QueueChannel;
-import org.springframework.integration.config.EnableIntegration;
-import org.springframework.integration.twitter.core.TwitterHeaders;
-import org.springframework.integration.twitter.outbound.TwitterSearchOutboundGatewayTests.TwitterConfig;
-import org.springframework.messaging.Message;
-import org.springframework.messaging.PollableChannel;
-import org.springframework.messaging.support.GenericMessage;
-import org.springframework.social.twitter.api.SearchMetadata;
-import org.springframework.social.twitter.api.SearchOperations;
-import org.springframework.social.twitter.api.SearchParameters;
-import org.springframework.social.twitter.api.SearchResults;
-import org.springframework.social.twitter.api.Tweet;
-import org.springframework.social.twitter.api.Twitter;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.annotation.DirtiesContext.ClassMode;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-/**
- * @author Gary Russell
- * @author Artem Bilan
- */
-@ContextConfiguration(classes = TwitterConfig.class)
-@RunWith(SpringJUnit4ClassRunner.class)
-@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
-public class TwitterSearchOutboundGatewayTests {
-
- @Autowired
- private SearchOperations searchOps;
-
- @Autowired
- private TwitterSearchOutboundGateway gateway;
-
- @Autowired
- private PollableChannel outputChannel;
-
- @Test
- public void testStringQuery() {
- Tweet tweet = mock(Tweet.class);
- SearchMetadata searchMetadata = mock(SearchMetadata.class);
- final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
- willAnswer(invocation -> {
- SearchParameters searchParameters = invocation.getArgument(0);
- assertEquals("foo", searchParameters.getQuery());
- assertEquals(Integer.valueOf(20), searchParameters.getCount());
- return searchResults;
- }).given(this.searchOps).search(any(SearchParameters.class));
- this.gateway.handleMessage(new GenericMessage<>("foo"));
- Message> reply = this.outputChannel.receive(0);
- assertNotNull(reply);
- @SuppressWarnings("unchecked")
- List tweets = (List) reply.getPayload();
- assertEquals(1, tweets.size());
- assertSame(tweet, tweets.get(0));
- assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
- }
-
- @Test
- public void testStringQueryCustomLimit() {
- this.gateway.setSearchArgsExpression(new SpelExpressionParser()
- .parseExpression("{payload, 30}"));
- Tweet tweet = mock(Tweet.class);
- SearchMetadata searchMetadata = mock(SearchMetadata.class);
- final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
- willAnswer(invocation -> {
- SearchParameters searchParameters = invocation.getArgument(0);
- assertEquals("foo", searchParameters.getQuery());
- assertEquals(Integer.valueOf(30), searchParameters.getCount());
- return searchResults;
- }).given(this.searchOps).search(any(SearchParameters.class));
- this.gateway.handleMessage(new GenericMessage("foo"));
- Message> reply = this.outputChannel.receive(0);
- assertNotNull(reply);
- @SuppressWarnings("unchecked")
- List tweets = (List) reply.getPayload();
- assertEquals(1, tweets.size());
- assertSame(tweet, tweets.get(0));
- assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
- }
-
- @Test
- public void testStringQueryCustomExpression() {
- this.gateway.setSearchArgsExpression(new SpelExpressionParser()
- .parseExpression("{'bar', 1, 2, 3}"));
- Tweet tweet = mock(Tweet.class);
- SearchMetadata searchMetadata = mock(SearchMetadata.class);
- final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
- willAnswer(invocation -> {
- SearchParameters searchParameters = invocation.getArgument(0);
- assertEquals("bar", searchParameters.getQuery());
- assertEquals(Integer.valueOf(1), searchParameters.getCount());
- assertEquals(Long.valueOf(2), searchParameters.getSinceId());
- assertEquals(Long.valueOf(3), searchParameters.getMaxId());
- return searchResults;
- }).given(this.searchOps).search(any(SearchParameters.class));
- this.gateway.handleMessage(new GenericMessage("foo"));
- Message> reply = this.outputChannel.receive(0);
- assertNotNull(reply);
- @SuppressWarnings("unchecked")
- List tweets = (List) reply.getPayload();
- assertEquals(1, tweets.size());
- assertSame(tweet, tweets.get(0));
- assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
- }
-
- @Test
- public void testSearchParamsQuery() {
- Tweet tweet = mock(Tweet.class);
- SearchMetadata searchMetadata = mock(SearchMetadata.class);
- final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
- final SearchParameters parameters = new SearchParameters("bar");
- willAnswer(invocation -> {
- SearchParameters searchParameters = invocation.getArgument(0);
- assertSame(parameters, searchParameters);
- return searchResults;
- }).given(this.searchOps).search(any(SearchParameters.class));
- this.gateway.handleMessage(new GenericMessage(parameters));
- Message> reply = this.outputChannel.receive(0);
- assertNotNull(reply);
- @SuppressWarnings("unchecked")
- List tweets = (List) reply.getPayload();
- assertEquals(1, tweets.size());
- assertSame(tweet, tweets.get(0));
- assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
- }
-
- @Test
- public void testSearchParamsQueryCustomExpression() {
- this.gateway.setSearchArgsExpression(new SpelExpressionParser()
- .parseExpression("new SearchParameters('foo' + payload).count(5).sinceId(11)"));
- Tweet tweet = mock(Tweet.class);
- SearchMetadata searchMetadata = mock(SearchMetadata.class);
- final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
- willAnswer(invocation -> {
- SearchParameters searchParameters = invocation.getArgument(0);
- assertEquals("foobar", searchParameters.getQuery());
- assertEquals(Integer.valueOf(5), searchParameters.getCount());
- assertEquals(Long.valueOf(11), searchParameters.getSinceId());
- return searchResults;
- }).given(this.searchOps).search(any(SearchParameters.class));
- this.gateway.handleMessage(new GenericMessage("bar"));
- Message> reply = this.outputChannel.receive(0);
- assertNotNull(reply);
- @SuppressWarnings("unchecked")
- List tweets = (List) reply.getPayload();
- assertEquals(1, tweets.size());
- assertSame(tweet, tweets.get(0));
- assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
- }
-
- @Test
- public void testEmptyResult() {
- SearchMetadata searchMetadata = mock(SearchMetadata.class);
- List empty = new ArrayList(0);
- final SearchResults searchResults = new SearchResults(empty, searchMetadata);
- willAnswer(invocation -> {
- SearchParameters searchParameters = invocation.getArgument(0);
- assertEquals("foo", searchParameters.getQuery());
- assertEquals(Integer.valueOf(20), searchParameters.getCount());
- return searchResults;
- }).given(this.searchOps).search(any(SearchParameters.class));
- this.gateway.handleMessage(new GenericMessage("foo"));
- Message> reply = this.outputChannel.receive(0);
- assertNotNull(reply);
- @SuppressWarnings("unchecked")
- List tweets = (List) reply.getPayload();
- assertEquals(0, tweets.size());
- assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
- }
-
- @Configuration
- @EnableIntegration
- public static class TwitterConfig {
-
- @Bean
- public TwitterSearchOutboundGateway gateway() {
- TwitterSearchOutboundGateway gateway = new TwitterSearchOutboundGateway(twitter());
- gateway.setOutputChannel(outputChannel());
- return gateway;
- }
-
- @Bean
- public PollableChannel outputChannel() {
- return new QueueChannel();
- }
-
- @Bean
- public Twitter twitter() {
- Twitter twitter = mock(Twitter.class);
- given(twitter.searchOperations()).willReturn(searchOps());
- return twitter;
- }
-
- @Bean
- public SearchOperations searchOps() {
- return mock(SearchOperations.class);
- }
-
- }
-
-}
+/*
+ * Copyright 2018 the original author or authors.
+ *
+ * Licensed 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.springframework.integration.twitter.outbound;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.BDDMockito.willAnswer;
+import static org.mockito.Mockito.mock;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.expression.spel.standard.SpelExpressionParser;
+import org.springframework.integration.channel.QueueChannel;
+import org.springframework.integration.config.EnableIntegration;
+import org.springframework.integration.twitter.core.TwitterHeaders;
+import org.springframework.integration.twitter.outbound.TwitterSearchOutboundGatewayTests.TwitterConfig;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.PollableChannel;
+import org.springframework.messaging.support.GenericMessage;
+import org.springframework.social.twitter.api.SearchMetadata;
+import org.springframework.social.twitter.api.SearchOperations;
+import org.springframework.social.twitter.api.SearchParameters;
+import org.springframework.social.twitter.api.SearchResults;
+import org.springframework.social.twitter.api.Tweet;
+import org.springframework.social.twitter.api.Twitter;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * @author Gary Russell
+ * @author Artem Bilan
+ */
+@ContextConfiguration(classes = TwitterConfig.class)
+@RunWith(SpringJUnit4ClassRunner.class)
+@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
+public class TwitterSearchOutboundGatewayTests {
+
+ @Autowired
+ private SearchOperations searchOps;
+
+ @Autowired
+ private TwitterSearchOutboundGateway gateway;
+
+ @Autowired
+ private PollableChannel outputChannel;
+
+ @Test
+ public void testStringQuery() {
+ Tweet tweet = mock(Tweet.class);
+ SearchMetadata searchMetadata = mock(SearchMetadata.class);
+ final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
+ willAnswer(invocation -> {
+ SearchParameters searchParameters = invocation.getArgument(0);
+ assertEquals("foo", searchParameters.getQuery());
+ assertEquals(Integer.valueOf(20), searchParameters.getCount());
+ return searchResults;
+ }).given(this.searchOps).search(any(SearchParameters.class));
+ this.gateway.handleMessage(new GenericMessage<>("foo"));
+ Message> reply = this.outputChannel.receive(0);
+ assertNotNull(reply);
+ @SuppressWarnings("unchecked")
+ List tweets = (List) reply.getPayload();
+ assertEquals(1, tweets.size());
+ assertSame(tweet, tweets.get(0));
+ assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
+ }
+
+ @Test
+ public void testStringQueryCustomLimit() {
+ this.gateway.setSearchArgsExpression(new SpelExpressionParser()
+ .parseExpression("{payload, 30}"));
+ Tweet tweet = mock(Tweet.class);
+ SearchMetadata searchMetadata = mock(SearchMetadata.class);
+ final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
+ willAnswer(invocation -> {
+ SearchParameters searchParameters = invocation.getArgument(0);
+ assertEquals("foo", searchParameters.getQuery());
+ assertEquals(Integer.valueOf(30), searchParameters.getCount());
+ return searchResults;
+ }).given(this.searchOps).search(any(SearchParameters.class));
+ this.gateway.handleMessage(new GenericMessage("foo"));
+ Message> reply = this.outputChannel.receive(0);
+ assertNotNull(reply);
+ @SuppressWarnings("unchecked")
+ List tweets = (List) reply.getPayload();
+ assertEquals(1, tweets.size());
+ assertSame(tweet, tweets.get(0));
+ assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
+ }
+
+ @Test
+ public void testStringQueryCustomExpression() {
+ this.gateway.setSearchArgsExpression(new SpelExpressionParser()
+ .parseExpression("{'bar', 1, 2, 3}"));
+ Tweet tweet = mock(Tweet.class);
+ SearchMetadata searchMetadata = mock(SearchMetadata.class);
+ final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
+ willAnswer(invocation -> {
+ SearchParameters searchParameters = invocation.getArgument(0);
+ assertEquals("bar", searchParameters.getQuery());
+ assertEquals(Integer.valueOf(1), searchParameters.getCount());
+ assertEquals(Long.valueOf(2), searchParameters.getSinceId());
+ assertEquals(Long.valueOf(3), searchParameters.getMaxId());
+ return searchResults;
+ }).given(this.searchOps).search(any(SearchParameters.class));
+ this.gateway.handleMessage(new GenericMessage("foo"));
+ Message> reply = this.outputChannel.receive(0);
+ assertNotNull(reply);
+ @SuppressWarnings("unchecked")
+ List tweets = (List) reply.getPayload();
+ assertEquals(1, tweets.size());
+ assertSame(tweet, tweets.get(0));
+ assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
+ }
+
+ @Test
+ public void testSearchParamsQuery() {
+ Tweet tweet = mock(Tweet.class);
+ SearchMetadata searchMetadata = mock(SearchMetadata.class);
+ final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
+ final SearchParameters parameters = new SearchParameters("bar");
+ willAnswer(invocation -> {
+ SearchParameters searchParameters = invocation.getArgument(0);
+ assertSame(parameters, searchParameters);
+ return searchResults;
+ }).given(this.searchOps).search(any(SearchParameters.class));
+ this.gateway.handleMessage(new GenericMessage(parameters));
+ Message> reply = this.outputChannel.receive(0);
+ assertNotNull(reply);
+ @SuppressWarnings("unchecked")
+ List tweets = (List) reply.getPayload();
+ assertEquals(1, tweets.size());
+ assertSame(tweet, tweets.get(0));
+ assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
+ }
+
+ @Test
+ public void testSearchParamsQueryCustomExpression() {
+ this.gateway.setSearchArgsExpression(new SpelExpressionParser()
+ .parseExpression("new SearchParameters('foo' + payload).count(5).sinceId(11)"));
+ Tweet tweet = mock(Tweet.class);
+ SearchMetadata searchMetadata = mock(SearchMetadata.class);
+ final SearchResults searchResults = new SearchResults(Collections.singletonList(tweet), searchMetadata);
+ willAnswer(invocation -> {
+ SearchParameters searchParameters = invocation.getArgument(0);
+ assertEquals("foobar", searchParameters.getQuery());
+ assertEquals(Integer.valueOf(5), searchParameters.getCount());
+ assertEquals(Long.valueOf(11), searchParameters.getSinceId());
+ return searchResults;
+ }).given(this.searchOps).search(any(SearchParameters.class));
+ this.gateway.handleMessage(new GenericMessage("bar"));
+ Message> reply = this.outputChannel.receive(0);
+ assertNotNull(reply);
+ @SuppressWarnings("unchecked")
+ List tweets = (List) reply.getPayload();
+ assertEquals(1, tweets.size());
+ assertSame(tweet, tweets.get(0));
+ assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
+ }
+
+ @Test
+ public void testEmptyResult() {
+ SearchMetadata searchMetadata = mock(SearchMetadata.class);
+ List empty = new ArrayList(0);
+ final SearchResults searchResults = new SearchResults(empty, searchMetadata);
+ willAnswer(invocation -> {
+ SearchParameters searchParameters = invocation.getArgument(0);
+ assertEquals("foo", searchParameters.getQuery());
+ assertEquals(Integer.valueOf(20), searchParameters.getCount());
+ return searchResults;
+ }).given(this.searchOps).search(any(SearchParameters.class));
+ this.gateway.handleMessage(new GenericMessage("foo"));
+ Message> reply = this.outputChannel.receive(0);
+ assertNotNull(reply);
+ @SuppressWarnings("unchecked")
+ List tweets = (List) reply.getPayload();
+ assertEquals(0, tweets.size());
+ assertSame(searchMetadata, reply.getHeaders().get(TwitterHeaders.SEARCH_METADATA));
+ }
+
+ @Configuration
+ @EnableIntegration
+ public static class TwitterConfig {
+
+ @Bean
+ public TwitterSearchOutboundGateway gateway() {
+ TwitterSearchOutboundGateway gateway = new TwitterSearchOutboundGateway(twitter());
+ gateway.setOutputChannel(outputChannel());
+ return gateway;
+ }
+
+ @Bean
+ public PollableChannel outputChannel() {
+ return new QueueChannel();
+ }
+
+ @Bean
+ public Twitter twitter() {
+ Twitter twitter = mock(Twitter.class);
+ given(twitter.searchOperations()).willReturn(searchOps());
+ return twitter;
+ }
+
+ @Bean
+ public SearchOperations searchOps() {
+ return mock(SearchOperations.class);
+ }
+
+ }
+
+}