You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/07/12 19:02:43 UTC
[camel] branch main updated: camel-twitter - Upgrade to twitter4j 4.1.2
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new e76830f293f camel-twitter - Upgrade to twitter4j 4.1.2
e76830f293f is described below
commit e76830f293f7b1fbd87fa195fa4a9c17d28bbe1b
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jul 12 21:01:54 2023 +0200
camel-twitter - Upgrade to twitter4j 4.1.2
---
.../twitter/util/TwitterConverterLoader.java | 20 ++---
.../twitter/timeline/twitter-timeline.json | 2 +-
.../twitter/AbstractTwitterComponent.java | 10 ---
.../twitter/TwitterComponentVerifierExtension.java | 95 ----------------------
.../component/twitter/TwitterConfiguration.java | 41 ++++------
.../camel/component/twitter/TwitterHelper.java | 2 +-
.../consumer/AbstractTwitterConsumerHandler.java | 8 +-
.../camel/component/twitter/data/TimelineType.java | 1 -
.../DirectMessageConsumerHandler.java | 10 +--
.../directmessage/DirectMessageProducer.java | 6 +-
.../twitter/search/SearchConsumerHandler.java | 30 +++----
.../component/twitter/search/SearchProducer.java | 22 ++---
.../timeline/AbstractStatusConsumerHandler.java | 2 +-
.../twitter/timeline/HomeConsumerHandler.java | 10 +--
.../twitter/timeline/MentionsConsumerHandler.java | 10 +--
.../twitter/timeline/RetweetsConsumerHandler.java | 47 -----------
.../twitter/timeline/TwitterTimelineEndpoint.java | 3 -
.../twitter/timeline/UserConsumerHandler.java | 10 +--
.../twitter/timeline/UserListConsumerHandler.java | 12 +--
.../component/twitter/timeline/UserProducer.java | 8 +-
.../component/twitter/util/TwitterConverter.java | 10 +--
.../component/twitter/util/TwitterSorter.java | 4 +-
.../AbstractComponentVerifierExtensionIT.java | 94 ---------------------
.../twitter/AbstractComponentVerifierIT.java | 90 --------------------
.../component/twitter/UriConfigurationTest.java | 4 -
.../component/twitter/UserProducerInOutIT.java | 2 +-
...rDirectmessageComponentVerifierExtensionIT.java | 29 -------
.../TwitterDirectmessageComponentVerifierIT.java | 29 -------
.../TwitterSearchComponentVerifierExtensionIT.java | 84 -------------------
.../search/TwitterSearchComponentVerifierIT.java | 83 -------------------
...witterTimelineComponentVerifierExtensionIT.java | 29 -------
.../TwitterTimelineComponentVerifierIT.java | 29 -------
parent/pom.xml | 2 +-
33 files changed, 100 insertions(+), 738 deletions(-)
diff --git a/components/camel-twitter/src/generated/java/org/apache/camel/component/twitter/util/TwitterConverterLoader.java b/components/camel-twitter/src/generated/java/org/apache/camel/component/twitter/util/TwitterConverterLoader.java
index cd4a8ee5d26..4ac91ce6426 100644
--- a/components/camel-twitter/src/generated/java/org/apache/camel/component/twitter/util/TwitterConverterLoader.java
+++ b/components/camel-twitter/src/generated/java/org/apache/camel/component/twitter/util/TwitterConverterLoader.java
@@ -41,16 +41,16 @@ public final class TwitterConverterLoader implements TypeConverterLoader, CamelC
}
private void registerConverters(TypeConverterRegistry registry) {
- addTypeConverter(registry, java.lang.String.class, twitter4j.DirectMessage.class, false,
- (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.DirectMessage) value));
- addTypeConverter(registry, java.lang.String.class, twitter4j.Status.class, false,
- (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.Status) value));
- addTypeConverter(registry, java.lang.String.class, twitter4j.Trend.class, false,
- (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.Trend) value));
- addTypeConverter(registry, java.lang.String.class, twitter4j.Trends.class, false,
- (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.Trends) value));
- addTypeConverter(registry, java.lang.String.class, twitter4j.UserList.class, false,
- (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.UserList) value));
+ addTypeConverter(registry, java.lang.String.class, twitter4j.v1.DirectMessage.class, false,
+ (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.v1.DirectMessage) value));
+ addTypeConverter(registry, java.lang.String.class, twitter4j.v1.Status.class, false,
+ (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.v1.Status) value));
+ addTypeConverter(registry, java.lang.String.class, twitter4j.v1.Trend.class, false,
+ (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.v1.Trend) value));
+ addTypeConverter(registry, java.lang.String.class, twitter4j.v1.Trends.class, false,
+ (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.v1.Trends) value));
+ addTypeConverter(registry, java.lang.String.class, twitter4j.v1.UserList.class, false,
+ (type, exchange, value) -> org.apache.camel.component.twitter.util.TwitterConverter.toString((twitter4j.v1.UserList) value));
}
private static void addTypeConverter(TypeConverterRegistry registry, Class<?> toType, Class<?> fromType, boolean allowNull, SimpleTypeConverter.ConversionMethod method) {
diff --git a/components/camel-twitter/src/generated/resources/org/apache/camel/component/twitter/timeline/twitter-timeline.json b/components/camel-twitter/src/generated/resources/org/apache/camel/component/twitter/timeline/twitter-timeline.json
index aaec867c346..e14139ad7f1 100644
--- a/components/camel-twitter/src/generated/resources/org/apache/camel/component/twitter/timeline/twitter-timeline.json
+++ b/components/camel-twitter/src/generated/resources/org/apache/camel/component/twitter/timeline/twitter-timeline.json
@@ -39,7 +39,7 @@
"CamelTwitterEventType": { "index": 0, "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of event. The supported values are the values of the enum org.apache.camel.component.twitter.consumer.TwitterEventType", "constantName": "org.apache.camel.component.twitter.TwitterConstants#TWITTER_EVENT_TYPE" }
},
"properties": {
- "timelineType": { "index": 0, "kind": "path", "displayName": "Timeline Type", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.twitter.data.TimelineType", "enum": [ "PUBLIC", "HOME", "USER", "MENTIONS", "RETWEETSOFME", "LIST", "UNKNOWN" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The timeline type to produce\/consume." },
+ "timelineType": { "index": 0, "kind": "path", "displayName": "Timeline Type", "group": "common", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.twitter.data.TimelineType", "enum": [ "PUBLIC", "HOME", "USER", "MENTIONS", "LIST", "UNKNOWN" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The timeline type to produce\/consume." },
"list": { "index": 1, "kind": "parameter", "displayName": "List", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The list name when using timelineType=list" },
"user": { "index": 2, "kind": "parameter", "displayName": "User", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The username when using timelineType=user" },
"sendEmptyMessageWhenIdle": { "index": 3, "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." },
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterComponent.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterComponent.java
index 8faf8a4e462..d278b2ecc55 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterComponent.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/AbstractTwitterComponent.java
@@ -20,7 +20,6 @@ import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
import org.apache.camel.spi.Metadata;
import org.apache.camel.support.DefaultComponent;
@@ -51,8 +50,6 @@ public abstract class AbstractTwitterComponent extends DefaultComponent {
protected AbstractTwitterComponent(CamelContext context, String componentVerifierScheme) {
super(context);
-
- registerExtension(() -> new TwitterComponentVerifierExtension(componentVerifierScheme));
}
@Override
@@ -169,11 +166,4 @@ public abstract class AbstractTwitterComponent extends DefaultComponent {
return httpProxyPort;
}
- /**
- * Get a verifier for the component.
- */
- public ComponentVerifierExtension getVerifier() {
- return (scope, parameters) -> getExtension(ComponentVerifierExtension.class)
- .orElseThrow(UnsupportedOperationException::new).verify(scope, parameters);
- }
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponentVerifierExtension.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponentVerifierExtension.java
deleted file mode 100644
index 9602891ecd2..00000000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterComponentVerifierExtension.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter;
-
-import java.util.Map;
-
-import org.apache.camel.component.extension.verifier.DefaultComponentVerifierExtension;
-import org.apache.camel.component.extension.verifier.ResultBuilder;
-import org.apache.camel.component.extension.verifier.ResultErrorBuilder;
-import org.apache.camel.component.extension.verifier.ResultErrorHelper;
-import twitter4j.Twitter;
-import twitter4j.TwitterException;
-
-public final class TwitterComponentVerifierExtension extends DefaultComponentVerifierExtension {
-
- public TwitterComponentVerifierExtension() {
- this("twitter");
- }
-
- public TwitterComponentVerifierExtension(String scheme) {
- super(scheme);
- }
-
- // *********************************
- // Parameters validation
- // *********************************
-
- @Override
- protected Result verifyParameters(Map<String, Object> parameters) {
- ResultBuilder builder = ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.PARAMETERS)
- .error(ResultErrorHelper.requiresOption("accessToken", parameters))
- .error(ResultErrorHelper.requiresOption("accessTokenSecret", parameters))
- .error(ResultErrorHelper.requiresOption("consumerKey", parameters))
- .error(ResultErrorHelper.requiresOption("consumerSecret", parameters));
-
- // Validate using the catalog
- super.verifyParametersAgainstCatalog(builder, parameters);
-
- return builder.build();
- }
-
- // *********************************
- // Connectivity validation
- // *********************************
-
- @Override
- protected Result verifyConnectivity(Map<String, Object> parameters) {
- return ResultBuilder.withStatusAndScope(Result.Status.OK, Scope.CONNECTIVITY)
- .error(parameters, this::verifyCredentials)
- .build();
- }
-
- private void verifyCredentials(ResultBuilder builder, Map<String, Object> parameters) throws Exception {
- try {
- TwitterConfiguration configuration = setProperties(new TwitterConfiguration(), parameters);
- Twitter twitter = configuration.getTwitter();
-
- twitter.verifyCredentials();
- } catch (TwitterException e) {
- // verifyCredentials throws TwitterException when Twitter service or
- // network is unavailable or if supplied credential is wrong
- ResultErrorBuilder errorBuilder = ResultErrorBuilder
- .withCodeAndDescription(VerificationError.StandardCode.AUTHENTICATION, e.getErrorMessage())
- .detail("twitter_error_code", e.getErrorCode())
- .detail("twitter_status_code", e.getStatusCode())
- .detail("twitter_exception_code", e.getExceptionCode())
- .detail("twitter_exception_message", e.getMessage())
- .detail("twitter_exception_caused-by-network-issue", e.isCausedByNetworkIssue())
- .detail(VerificationError.ExceptionAttribute.EXCEPTION_CLASS, e.getClass().getName())
- .detail(VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE, e);
-
- // For a complete list of error codes see:
- // https://dev.twitter.com/overview/api/response-codes
- if (e.getErrorCode() == 89) {
- errorBuilder.parameterKey("accessToken");
- }
-
- builder.error(errorBuilder.build());
- }
- }
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java
index 76f0d49b4b7..c4c8b02db7b 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterConfiguration.java
@@ -21,9 +21,6 @@ import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
import org.apache.camel.util.ObjectHelper;
import twitter4j.Twitter;
-import twitter4j.TwitterFactory;
-import twitter4j.conf.Configuration;
-import twitter4j.conf.ConfigurationBuilder;
@UriParams
public class TwitterConfiguration {
@@ -92,37 +89,29 @@ public class TwitterConfiguration {
}
/**
- * Builds a Twitter4J Configuration using the OAuth params.
- *
- * @return Configuration
+ * Builds {@link Twitter} with the current configuration.
*/
- public Configuration getConfiguration() {
+ protected Twitter buildTwitter() {
checkComplete();
- ConfigurationBuilder confBuilder = new ConfigurationBuilder();
- confBuilder.setOAuthConsumerKey(consumerKey);
- confBuilder.setOAuthConsumerSecret(consumerSecret);
- confBuilder.setOAuthAccessToken(accessToken);
- confBuilder.setOAuthAccessTokenSecret(accessTokenSecret);
- confBuilder.setTweetModeExtended(isExtendedMode());
- if (getHttpProxyHost() != null) {
- confBuilder.setHttpProxyHost(getHttpProxyHost());
- }
- if (getHttpProxyUser() != null) {
- confBuilder.setHttpProxyUser(getHttpProxyUser());
- }
- if (getHttpProxyPassword() != null) {
- confBuilder.setHttpProxyPassword(getHttpProxyPassword());
- }
- if (httpProxyPort != null) {
- confBuilder.setHttpProxyPort(httpProxyPort);
+
+ Twitter.TwitterBuilder builder = Twitter.newBuilder()
+ .oAuthConsumer(consumerKey, consumerSecret)
+ .oAuthAccessToken(accessToken, accessTokenSecret)
+ .tweetModeExtended(isExtendedMode())
+ .httpProxyHost(getHttpProxyHost())
+ .httpProxyUser(getHttpProxyUser())
+ .httpProxyPassword(getHttpProxyPassword());
+
+ if (getHttpProxyPort() != null) {
+ builder.httpProxyPort(getHttpProxyPort());
}
- return confBuilder.build();
+ return builder.build();
}
public Twitter getTwitter() {
if (twitter == null) {
- twitter = new TwitterFactory(getConfiguration()).getInstance();
+ twitter = buildTwitter();
}
return twitter;
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java
index 6fb9395df71..e454bed70b4 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/TwitterHelper.java
@@ -22,7 +22,7 @@ import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.component.twitter.consumer.AbstractTwitterConsumerHandler;
import org.apache.camel.component.twitter.consumer.DefaultTwitterConsumer;
-import twitter4j.User;
+import twitter4j.v1.User;
public final class TwitterHelper {
private TwitterHelper() {
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/AbstractTwitterConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/AbstractTwitterConsumerHandler.java
index 8660936b853..1e7447908be 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/AbstractTwitterConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/consumer/AbstractTwitterConsumerHandler.java
@@ -22,9 +22,9 @@ import org.apache.camel.Exchange;
import org.apache.camel.component.twitter.TwitterEndpoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.Paging;
import twitter4j.Twitter;
import twitter4j.TwitterException;
+import twitter4j.v1.Paging;
public abstract class AbstractTwitterConsumerHandler {
@@ -85,11 +85,11 @@ public abstract class AbstractTwitterConsumerHandler {
Integer pages = endpoint.getProperties().getNumberOfPages();
Integer count = endpoint.getProperties().getCount();
if (pages != null && count != null) {
- return new Paging(pages, count, lastId);
+ return Paging.ofPage(pages).count(count).sinceId(lastId);
} else if (pages != null) {
- return new Paging(pages, lastId);
+ return Paging.ofPage(pages).sinceId(lastId);
} else {
- return new Paging(lastId);
+ return Paging.ofSinceId(lastId);
}
}
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/TimelineType.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/TimelineType.java
index ff795a54cf2..efcfabc7892 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/TimelineType.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/data/TimelineType.java
@@ -23,7 +23,6 @@ public enum TimelineType {
HOME,
USER,
MENTIONS,
- RETWEETSOFME,
LIST,
UNKNOWN;
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageConsumerHandler.java
index 97f4c6b9623..de484802aee 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageConsumerHandler.java
@@ -23,9 +23,9 @@ import org.apache.camel.Exchange;
import org.apache.camel.component.twitter.TwitterEndpoint;
import org.apache.camel.component.twitter.consumer.AbstractTwitterConsumerHandler;
import org.apache.camel.component.twitter.consumer.TwitterEventType;
-import twitter4j.DirectMessage;
-import twitter4j.DirectMessageList;
import twitter4j.TwitterException;
+import twitter4j.v1.DirectMessage;
+import twitter4j.v1.DirectMessageList;
/**
* Consumes a user's direct messages
@@ -49,15 +49,15 @@ public class DirectMessageConsumerHandler extends AbstractTwitterConsumerHandler
private DirectMessageList directMessages(String previousCursor, String cursor) throws TwitterException {
// https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/list-events
- // if there are more DM to retrieve the the next_cursor parameter is set.
+ // if there are more DM to retrieve the next_cursor parameter is set.
// however next_cursor is always set in the response, so we must handle pagination correctly
// after the first call, there is always a second call to check if there is new DM and we compare
// the previous and current next_cursor, if not equals there is pagination.
DirectMessageList directMessages;
if (cursor != null) {
- directMessages = getTwitter().getDirectMessages(endpoint.getProperties().getCount(), cursor);
+ directMessages = getTwitter().v1().directMessages().getDirectMessages(endpoint.getProperties().getCount(), cursor);
} else {
- directMessages = getTwitter().getDirectMessages(endpoint.getProperties().getCount());
+ directMessages = getTwitter().v1().directMessages().getDirectMessages(endpoint.getProperties().getCount());
}
String nextCursor = directMessages.getNextCursor();
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageProducer.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageProducer.java
index 9f2c3be1e20..f2abb80d9ae 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageProducer.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/directmessage/DirectMessageProducer.java
@@ -24,7 +24,7 @@ import org.apache.camel.support.DefaultProducer;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.User;
+import twitter4j.v1.User;
/**
* Produces text as a direct message.
@@ -55,8 +55,8 @@ public class DirectMessageProducer extends DefaultProducer {
throw new CamelExchangeException("Username not configured on TwitterEndpoint", exchange);
} else {
LOG.debug("Sending to: {} message: {}", toUsername, text);
- User userStatus = endpoint.getProperties().getTwitter().showUser(toUsername);
- endpoint.getProperties().getTwitter().sendDirectMessage(userStatus.getId(), text);
+ User userStatus = endpoint.getProperties().getTwitter().v1().users().showUser(toUsername);
+ endpoint.getProperties().getTwitter().v1().directMessages().sendDirectMessage(userStatus.getId(), text);
}
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchConsumerHandler.java
index c1c90b37942..53ef379d5ba 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchConsumerHandler.java
@@ -26,13 +26,13 @@ import org.apache.camel.component.twitter.consumer.TwitterEventType;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.GeoLocation;
-import twitter4j.Query;
-import twitter4j.Query.Unit;
-import twitter4j.QueryResult;
-import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
+import twitter4j.v1.GeoLocation;
+import twitter4j.v1.Query;
+import twitter4j.v1.Query.Unit;
+import twitter4j.v1.QueryResult;
+import twitter4j.v1.Status;
/**
* Consumes search requests
@@ -55,15 +55,15 @@ public class SearchConsumerHandler extends AbstractTwitterConsumerHandler {
Query query;
if (keywords != null && keywords.trim().length() > 0) {
- query = new Query(keywords);
+ query = Query.of(keywords);
LOG.debug("Searching twitter with keywords: {}", keywords);
} else {
- query = new Query();
+ query = Query.of("");
LOG.debug("Searching twitter without keywords.");
}
if (endpoint.getProperties().isFilterOld()) {
- query.setSinceId(getLastId());
+ query.sinceId(getLastId());
}
return search(query);
@@ -75,7 +75,7 @@ public class SearchConsumerHandler extends AbstractTwitterConsumerHandler {
if (keywords == null || keywords.trim().length() == 0) {
return Collections.emptyList();
}
- Query query = new Query(keywords);
+ Query query = Query.of(keywords);
LOG.debug("Searching twitter with keywords: {}", keywords);
return search(query);
@@ -85,11 +85,11 @@ public class SearchConsumerHandler extends AbstractTwitterConsumerHandler {
Integer numberOfPages = 1;
if (ObjectHelper.isNotEmpty(endpoint.getProperties().getLang())) {
- query.setLang(endpoint.getProperties().getLang());
+ query.lang(endpoint.getProperties().getLang());
}
if (ObjectHelper.isNotEmpty(endpoint.getProperties().getCount())) {
- query.setCount(endpoint.getProperties().getCount());
+ query.count(endpoint.getProperties().getCount());
}
if (ObjectHelper.isNotEmpty(endpoint.getProperties().getNumberOfPages())) {
@@ -100,8 +100,8 @@ public class SearchConsumerHandler extends AbstractTwitterConsumerHandler {
&& ObjectHelper.isNotEmpty(endpoint.getProperties().getLongitude())
&& ObjectHelper.isNotEmpty(endpoint.getProperties().getRadius())) {
GeoLocation location
- = new GeoLocation(endpoint.getProperties().getLatitude(), endpoint.getProperties().getLongitude());
- query.setGeoCode(location, endpoint.getProperties().getRadius(),
+ = GeoLocation.of(endpoint.getProperties().getLatitude(), endpoint.getProperties().getLongitude());
+ query.geoCode(location, endpoint.getProperties().getRadius(),
Unit.valueOf(endpoint.getProperties().getDistanceMetric()));
LOG.debug("Searching with additional geolocation parameters.");
@@ -110,7 +110,7 @@ public class SearchConsumerHandler extends AbstractTwitterConsumerHandler {
LOG.debug("Searching with {} pages.", numberOfPages);
Twitter twitter = getTwitter();
- QueryResult qr = twitter.search(query);
+ QueryResult qr = twitter.v1().search().search(query);
List<Status> tweets = qr.getTweets();
for (int i = 1; i < numberOfPages; i++) {
@@ -118,7 +118,7 @@ public class SearchConsumerHandler extends AbstractTwitterConsumerHandler {
break;
}
- qr = twitter.search(qr.nextQuery());
+ qr = twitter.v1().search().search(qr.nextQuery());
tweets.addAll(qr.getTweets());
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchProducer.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchProducer.java
index 9de61b8a303..d4afd63ca19 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchProducer.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/search/SearchProducer.java
@@ -26,10 +26,10 @@ import org.apache.camel.support.DefaultProducer;
import org.apache.camel.util.ObjectHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.Query;
-import twitter4j.QueryResult;
-import twitter4j.Status;
import twitter4j.Twitter;
+import twitter4j.v1.Query;
+import twitter4j.v1.QueryResult;
+import twitter4j.v1.Status;
public class SearchProducer extends DefaultProducer {
@@ -59,11 +59,11 @@ public class SearchProducer extends DefaultProducer {
throw new CamelExchangeException("No keywords to use for query", exchange);
}
- Query query = new Query(queryKeywords);
+ Query query = Query.of(queryKeywords);
// filter of older tweets
if (endpoint.getProperties().isFilterOld() && myLastId != 0) {
- query.setSinceId(myLastId);
+ query.sinceId(myLastId);
}
// since id
@@ -72,13 +72,13 @@ public class SearchProducer extends DefaultProducer {
sinceId = endpoint.getProperties().getSinceId();
}
if (ObjectHelper.isNotEmpty(sinceId)) {
- query.setSinceId(sinceId);
+ query.sinceId(sinceId);
}
// max id
Long maxId = exchange.getIn().getHeader(TwitterConstants.TWITTER_MAXID, Long.class);
if (ObjectHelper.isNotEmpty(maxId)) {
- query.setMaxId(maxId);
+ query.maxId(maxId);
}
// language
@@ -88,7 +88,7 @@ public class SearchProducer extends DefaultProducer {
}
if (ObjectHelper.isNotEmpty(lang)) {
- query.setLang(lang);
+ query.lang(lang);
}
// number of elements per page
@@ -97,7 +97,7 @@ public class SearchProducer extends DefaultProducer {
count = endpoint.getProperties().getCount();
}
if (ObjectHelper.isNotEmpty(count)) {
- query.setCount(count);
+ query.count(count);
}
// number of pages
@@ -108,7 +108,7 @@ public class SearchProducer extends DefaultProducer {
Twitter twitter = endpoint.getProperties().getTwitter();
LOG.debug("Searching twitter with keywords: {}", queryKeywords);
- QueryResult results = twitter.search(query);
+ QueryResult results = twitter.v1().search().search(query);
List<Status> list = results.getTweets();
for (int i = 1; i < numberOfPages; i++) {
@@ -116,7 +116,7 @@ public class SearchProducer extends DefaultProducer {
break;
}
LOG.debug("Fetching page");
- results = twitter.search(results.nextQuery());
+ results = twitter.v1().search().search(results.nextQuery());
list.addAll(results.getTweets());
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/AbstractStatusConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/AbstractStatusConsumerHandler.java
index ac545d8b7a3..77585b1bfa4 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/AbstractStatusConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/AbstractStatusConsumerHandler.java
@@ -22,8 +22,8 @@ import org.apache.camel.Exchange;
import org.apache.camel.component.twitter.TwitterEndpoint;
import org.apache.camel.component.twitter.consumer.AbstractTwitterConsumerHandler;
import org.apache.camel.component.twitter.consumer.TwitterEventType;
-import twitter4j.Status;
import twitter4j.TwitterException;
+import twitter4j.v1.Status;
/**
* Consumes the user's home timeline.
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/HomeConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/HomeConsumerHandler.java
index bcc34a0f217..d464c525846 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/HomeConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/HomeConsumerHandler.java
@@ -19,9 +19,9 @@ package org.apache.camel.component.twitter.timeline;
import java.util.List;
import org.apache.camel.component.twitter.TwitterEndpoint;
-import twitter4j.Paging;
-import twitter4j.Status;
import twitter4j.TwitterException;
+import twitter4j.v1.Paging;
+import twitter4j.v1.Status;
/**
* Consumes the user's home timeline.
@@ -35,13 +35,13 @@ public class HomeConsumerHandler extends AbstractStatusConsumerHandler {
@Override
protected List<Status> doPoll() throws TwitterException {
Paging paging = getLastIdPaging();
- log.trace("doPoll.getHomeTimeline(sinceId={})", paging.getSinceId());
- return getTwitter().getHomeTimeline(paging);
+ log.trace("doPoll.getHomeTimeline(sinceId={})", paging.sinceId);
+ return getTwitter().v1().timelines().getHomeTimeline(paging);
}
@Override
protected List<Status> doDirect() throws TwitterException {
log.trace("doDirect.getHomeTimeline()");
- return getTwitter().getHomeTimeline();
+ return getTwitter().v1().timelines().getHomeTimeline();
}
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/MentionsConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/MentionsConsumerHandler.java
index f76a1ea5358..290c79db509 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/MentionsConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/MentionsConsumerHandler.java
@@ -19,9 +19,9 @@ package org.apache.camel.component.twitter.timeline;
import java.util.List;
import org.apache.camel.component.twitter.TwitterEndpoint;
-import twitter4j.Paging;
-import twitter4j.Status;
import twitter4j.TwitterException;
+import twitter4j.v1.Paging;
+import twitter4j.v1.Status;
/**
* Consumes tweets in which the user has been mentioned.
@@ -35,13 +35,13 @@ public class MentionsConsumerHandler extends AbstractStatusConsumerHandler {
@Override
protected List<Status> doPoll() throws TwitterException {
Paging paging = getLastIdPaging();
- log.trace("doPoll.getMentionsTimeline(sinceId={})", paging.getSinceId());
- return getTwitter().getMentionsTimeline(paging);
+ log.trace("doPoll.getMentionsTimeline(sinceId={})", paging.sinceId);
+ return getTwitter().v1().timelines().getMentionsTimeline(paging);
}
@Override
protected List<Status> doDirect() throws TwitterException {
log.trace("doDirect.getMentionsTimeline()");
- return getTwitter().getMentionsTimeline();
+ return getTwitter().v1().timelines().getMentionsTimeline();
}
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/RetweetsConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/RetweetsConsumerHandler.java
deleted file mode 100644
index 89e26f88a53..00000000000
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/RetweetsConsumerHandler.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.timeline;
-
-import java.util.List;
-
-import org.apache.camel.component.twitter.TwitterEndpoint;
-import twitter4j.Paging;
-import twitter4j.Status;
-import twitter4j.TwitterException;
-
-/**
- * Consumes a user's tweets that have been retweeted
- */
-public class RetweetsConsumerHandler extends AbstractStatusConsumerHandler {
-
- public RetweetsConsumerHandler(TwitterEndpoint endpoint) {
- super(endpoint);
- }
-
- @Override
- protected List<Status> doPoll() throws TwitterException {
- Paging paging = getLastIdPaging();
- log.trace("doPoll.getRetweetsOfMe(sinceId={})", paging.getSinceId());
- return getTwitter().getRetweetsOfMe(paging);
- }
-
- @Override
- protected List<Status> doDirect() throws TwitterException {
- log.trace("doDirect.getRetweetsOfMe(");
- return getTwitter().getRetweetsOfMe();
- }
-}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
index a27c48ef5c3..ba234ff6381 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/TwitterTimelineEndpoint.java
@@ -98,9 +98,6 @@ public class TwitterTimelineEndpoint extends AbstractTwitterEndpoint {
case MENTIONS:
handler = new MentionsConsumerHandler(this);
break;
- case RETWEETSOFME:
- handler = new RetweetsConsumerHandler(this);
- break;
case LIST:
handler = new UserListConsumerHandler(this, user, list);
break;
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserConsumerHandler.java
index 3d5ed1268cc..9de9b79caee 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserConsumerHandler.java
@@ -19,9 +19,9 @@ package org.apache.camel.component.twitter.timeline;
import java.util.List;
import org.apache.camel.component.twitter.TwitterEndpoint;
-import twitter4j.Paging;
-import twitter4j.Status;
import twitter4j.TwitterException;
+import twitter4j.v1.Paging;
+import twitter4j.v1.Status;
/**
* Consumes the timeline of a given user.
@@ -38,13 +38,13 @@ public class UserConsumerHandler extends AbstractStatusConsumerHandler {
@Override
protected List<Status> doPoll() throws TwitterException {
Paging paging = getLastIdPaging();
- log.trace("doPoll.getUserTimeline(user={}, sinceId={})", user, paging.getSinceId());
- return getTwitter().getUserTimeline(user, paging);
+ log.trace("doPoll.getUserTimeline(user={}, sinceId={})", user, paging.sinceId);
+ return getTwitter().v1().timelines().getUserTimeline(user, paging);
}
@Override
protected List<Status> doDirect() throws TwitterException {
log.trace("doDirect.getUserTimeline(user={})", user);
- return getTwitter().getUserTimeline(user);
+ return getTwitter().v1().timelines().getUserTimeline(user);
}
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserListConsumerHandler.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserListConsumerHandler.java
index 29290b15b54..dc44310422a 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserListConsumerHandler.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserListConsumerHandler.java
@@ -19,9 +19,9 @@ package org.apache.camel.component.twitter.timeline;
import java.util.List;
import org.apache.camel.component.twitter.TwitterEndpoint;
-import twitter4j.Paging;
-import twitter4j.Status;
import twitter4j.TwitterException;
+import twitter4j.v1.Paging;
+import twitter4j.v1.Status;
public class UserListConsumerHandler extends AbstractStatusConsumerHandler {
private final String user;
@@ -37,13 +37,13 @@ public class UserListConsumerHandler extends AbstractStatusConsumerHandler {
@Override
protected List<Status> doPoll() throws TwitterException {
Paging paging = getLastIdPaging();
- log.trace("doPoll.getUserListStatuses(user={}, list={}, sinceId={})", user, list, paging.getSinceId());
- return getTwitter().getUserListStatuses(user, list, paging);
+ log.trace("doPoll.getUserListStatuses(user={}, list={}, sinceId={})", user, list, paging.sinceId);
+ return getTwitter().v1().list().getUserListStatuses(user, list, paging);
}
@Override
protected List<Status> doDirect() throws TwitterException {
- Paging paging = new Paging(getLastId());
- return getTwitter().getUserListStatuses(user, list, paging);
+ Paging paging = Paging.ofSinceId(getLastId());
+ return getTwitter().v1().list().getUserListStatuses(user, list, paging);
}
}
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserProducer.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserProducer.java
index 3d74ce9cd4a..6d750dce7ec 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserProducer.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/timeline/UserProducer.java
@@ -22,8 +22,8 @@ import org.apache.camel.support.DefaultProducer;
import org.apache.camel.support.ExchangeHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.Status;
-import twitter4j.StatusUpdate;
+import twitter4j.v1.Status;
+import twitter4j.v1.StatusUpdate;
/**
* Produces text as a status update.
@@ -62,14 +62,14 @@ public class UserProducer extends DefaultProducer {
}
private Status updateStatus(StatusUpdate status) throws Exception {
- Status response = endpoint.getProperties().getTwitter().updateStatus(status);
+ Status response = endpoint.getProperties().getTwitter().v1().tweets().updateStatus(status);
LOG.debug("Updated status: {}", status);
LOG.debug("Status id: {}", response.getId());
return response;
}
private Status updateStatus(String status) throws Exception {
- Status response = endpoint.getProperties().getTwitter().updateStatus(status);
+ Status response = endpoint.getProperties().getTwitter().v1().tweets().updateStatus(status);
LOG.debug("Updated status: {}", status);
LOG.debug("Status id: {}", response.getId());
return response;
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java
index f77f6dc2d7a..6a8341d8a4b 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterConverter.java
@@ -17,11 +17,11 @@
package org.apache.camel.component.twitter.util;
import org.apache.camel.Converter;
-import twitter4j.DirectMessage;
-import twitter4j.Status;
-import twitter4j.Trend;
-import twitter4j.Trends;
-import twitter4j.UserList;
+import twitter4j.v1.DirectMessage;
+import twitter4j.v1.Status;
+import twitter4j.v1.Trend;
+import twitter4j.v1.Trends;
+import twitter4j.v1.UserList;
/**
* Utility for converting between Twitter4J and camel-twitter data layers.
diff --git a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterSorter.java b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterSorter.java
index d5579f7b1df..613e1a4ab25 100644
--- a/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterSorter.java
+++ b/components/camel-twitter/src/main/java/org/apache/camel/component/twitter/util/TwitterSorter.java
@@ -20,7 +20,7 @@ import java.util.List;
import java.util.stream.Collectors;
import org.apache.camel.Exchange;
-import twitter4j.Status;
+import twitter4j.v1.Status;
/**
* To sort tweets.
@@ -31,7 +31,7 @@ public final class TwitterSorter {
}
/**
- * Sorts the tweets by {@link Status#getId()}.
+ * Sorts the tweets status id
*/
public static List<Exchange> sortByStatusId(List<Exchange> exchanges) {
return exchanges.stream().sorted((e1, e2) -> {
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/AbstractComponentVerifierExtensionIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/AbstractComponentVerifierExtensionIT.java
deleted file mode 100644
index 69cddd7e721..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/AbstractComponentVerifierExtensionIT.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter;
-
-import java.util.Map;
-
-import org.apache.camel.Component;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public abstract class AbstractComponentVerifierExtensionIT extends CamelTwitterITSupport {
-
- protected abstract String getComponentScheme();
-
- @Override
- public boolean isUseRouteBuilder() {
- return false;
- }
-
- @Test
- public void testConnectivity() {
- Component component = context.getComponent(getComponentScheme());
- ComponentVerifierExtension verifier
- = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
-
- Map<String, Object> parameters = getParameters();
- ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
- assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus());
- }
-
- @Test
- public void testInvalidKeyConfiguration() {
- Component component = context().getComponent(getComponentScheme());
- ComponentVerifierExtension verifier
- = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
-
- Map<String, Object> parameters = getParameters();
- parameters.put("consumerKey", "invalid");
-
- ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(1, result.getErrors().size());
- assertEquals(ComponentVerifierExtension.VerificationError.StandardCode.AUTHENTICATION,
- result.getErrors().get(0).getCode());
- assertEquals(401, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_status_code")));
- assertEquals(32, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_error_code")));
- }
-
- @Test
- public void testInvalidTokenConfiguration() {
- Component component = context().getComponent(getComponentScheme());
- ComponentVerifierExtension verifier
- = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
-
- Map<String, Object> parameters = getParameters();
- parameters.put("accessToken", "invalid");
-
- ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(1, result.getErrors().size());
- assertEquals(ComponentVerifierExtension.VerificationError.StandardCode.AUTHENTICATION,
- result.getErrors().get(0).getCode());
- assertEquals(401, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_status_code")));
- assertEquals(89, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_error_code")));
- assertEquals(1, result.getErrors().get(0).getParameterKeys().size());
- assertEquals("accessToken", result.getErrors().get(0).getParameterKeys().iterator().next());
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/AbstractComponentVerifierIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/AbstractComponentVerifierIT.java
deleted file mode 100644
index bf5df7923ea..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/AbstractComponentVerifierIT.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter;
-
-import java.util.Map;
-
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public abstract class AbstractComponentVerifierIT extends CamelTwitterITSupport {
-
- protected abstract String getComponentScheme();
-
- @Override
- public boolean isUseRouteBuilder() {
- return false;
- }
-
- @Test
- public void testConnectivity() {
- AbstractTwitterComponent component = context().getComponent(getComponentScheme(), AbstractTwitterComponent.class);
- ComponentVerifierExtension verifier = component.getVerifier();
-
- Map<String, Object> parameters = getParameters();
- ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
- assertEquals(ComponentVerifierExtension.Result.Status.OK, result.getStatus());
- }
-
- @Test
- public void testInvalidKeyConfiguration() {
- AbstractTwitterComponent component = context().getComponent(getComponentScheme(), AbstractTwitterComponent.class);
- ComponentVerifierExtension verifier = component.getVerifier();
-
- Map<String, Object> parameters = getParameters();
- parameters.put("consumerKey", "invalid");
-
- ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(1, result.getErrors().size());
- assertEquals(ComponentVerifierExtension.VerificationError.StandardCode.AUTHENTICATION,
- result.getErrors().get(0).getCode());
- assertEquals(401, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_status_code")));
- assertEquals(32, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_error_code")));
- }
-
- @Test
- public void testInvalidTokenConfiguration() {
- AbstractTwitterComponent component = context().getComponent(getComponentScheme(), AbstractTwitterComponent.class);
- ComponentVerifierExtension verifier = component.getVerifier();
-
- Map<String, Object> parameters = getParameters();
- parameters.put("accessToken", "invalid");
-
- ComponentVerifierExtension.Result result = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, parameters);
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(1, result.getErrors().size());
- assertEquals(ComponentVerifierExtension.VerificationError.StandardCode.AUTHENTICATION,
- result.getErrors().get(0).getCode());
- assertEquals(401, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_status_code")));
- assertEquals(89, result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.asAttribute("twitter_error_code")));
- assertEquals(1, result.getErrors().get(0).getParameterKeys().size());
- assertEquals("accessToken", result.getErrors().get(0).getParameterKeys().iterator().next());
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UriConfigurationTest.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UriConfigurationTest.java
index ac44c97bfd5..c541f89ad2a 100644
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UriConfigurationTest.java
+++ b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UriConfigurationTest.java
@@ -98,10 +98,6 @@ public class UriConfigurationTest {
assertTrue(endpoint instanceof TwitterTimelineEndpoint, "Endpoint not a TwitterTimelineEndpoint: " + endpoint);
timelineEndpoint = (TwitterTimelineEndpoint) endpoint;
assertEquals(TimelineType.MENTIONS, timelineEndpoint.getTimelineType());
- endpoint = context.getEndpoint("twitter-timeline:retweetsofme");
- assertTrue(endpoint instanceof TwitterTimelineEndpoint, "Endpoint not a TwitterTimelineEndpoint: " + endpoint);
- timelineEndpoint = (TwitterTimelineEndpoint) endpoint;
- assertEquals(TimelineType.RETWEETSOFME, timelineEndpoint.getTimelineType());
endpoint = context.getEndpoint("twitter-timeline:user");
assertTrue(endpoint instanceof TwitterTimelineEndpoint, "Endpoint not a TwitterTimelineEndpoint: " + endpoint);
timelineEndpoint = (TwitterTimelineEndpoint) endpoint;
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutIT.java
index 058f6d89df5..c078182da36 100644
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutIT.java
+++ b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/UserProducerInOutIT.java
@@ -29,7 +29,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import twitter4j.Status;
+import twitter4j.v1.Status;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/directmessage/TwitterDirectmessageComponentVerifierExtensionIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/directmessage/TwitterDirectmessageComponentVerifierExtensionIT.java
deleted file mode 100644
index fdb78f7e30f..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/directmessage/TwitterDirectmessageComponentVerifierExtensionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.directmessage;
-
-import org.apache.camel.component.twitter.AbstractComponentVerifierExtensionIT;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public class TwitterDirectmessageComponentVerifierExtensionIT extends AbstractComponentVerifierExtensionIT {
- @Override
- protected String getComponentScheme() {
- return "twitter-directmessage";
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/directmessage/TwitterDirectmessageComponentVerifierIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/directmessage/TwitterDirectmessageComponentVerifierIT.java
deleted file mode 100644
index f3f42a83309..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/directmessage/TwitterDirectmessageComponentVerifierIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.directmessage;
-
-import org.apache.camel.component.twitter.AbstractComponentVerifierIT;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public class TwitterDirectmessageComponentVerifierIT extends AbstractComponentVerifierIT {
- @Override
- protected String getComponentScheme() {
- return "twitter-directmessage";
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/search/TwitterSearchComponentVerifierExtensionIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/search/TwitterSearchComponentVerifierExtensionIT.java
deleted file mode 100644
index f5d1f8a33d2..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/search/TwitterSearchComponentVerifierExtensionIT.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.search;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.camel.Component;
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.component.twitter.AbstractComponentVerifierExtensionIT;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public class TwitterSearchComponentVerifierExtensionIT extends AbstractComponentVerifierExtensionIT {
- @Override
- protected String getComponentScheme() {
- return "twitter-search";
- }
-
- @Test
- public void testEmptyConfiguration() {
- Component component = context().getComponent(getComponentScheme());
- ComponentVerifierExtension verifier
- = component.getExtension(ComponentVerifierExtension.class).orElseThrow(IllegalStateException::new);
-
- {
- // Parameters validation
- ComponentVerifierExtension.Result result
- = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, Collections.emptyMap());
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(5, result.getErrors().size());
-
- List<String> expected = new LinkedList<>();
- expected.add("keywords");
- expected.add("consumerKey");
- expected.add("consumerSecret");
- expected.add("accessToken");
- expected.add("accessTokenSecret");
-
- for (ComponentVerifierExtension.VerificationError error : result.getErrors()) {
- expected.removeAll(error.getParameterKeys());
- }
-
- assertTrue(expected.isEmpty(), "Missing expected params: " + expected.toString());
- }
-
- {
- // Connectivity validation
- ComponentVerifierExtension.Result result
- = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, Collections.emptyMap());
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(1, result.getErrors().size());
- assertEquals(ComponentVerifierExtension.VerificationError.StandardCode.EXCEPTION,
- result.getErrors().get(0).getCode());
- assertNotNull(result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE));
- assertTrue(result.getErrors().get(0).getDetails().get(
- ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE) instanceof IllegalArgumentException);
- }
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/search/TwitterSearchComponentVerifierIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/search/TwitterSearchComponentVerifierIT.java
deleted file mode 100644
index b50c3f43f72..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/search/TwitterSearchComponentVerifierIT.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.search;
-
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.camel.component.extension.ComponentVerifierExtension;
-import org.apache.camel.component.twitter.AbstractComponentVerifierIT;
-import org.apache.camel.component.twitter.AbstractTwitterComponent;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public class TwitterSearchComponentVerifierIT extends AbstractComponentVerifierIT {
- @Override
- protected String getComponentScheme() {
- return "twitter-search";
- }
-
- @Test
- public void testEmptyConfiguration() {
- AbstractTwitterComponent component = context().getComponent(getComponentScheme(), AbstractTwitterComponent.class);
- ComponentVerifierExtension verifier = component.getVerifier();
-
- {
- // Parameters validation
- ComponentVerifierExtension.Result result
- = verifier.verify(ComponentVerifierExtension.Scope.PARAMETERS, Collections.emptyMap());
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(5, result.getErrors().size());
-
- List<String> expected = new LinkedList<>();
- expected.add("keywords");
- expected.add("consumerKey");
- expected.add("consumerSecret");
- expected.add("accessToken");
- expected.add("accessTokenSecret");
-
- for (ComponentVerifierExtension.VerificationError error : result.getErrors()) {
- expected.removeAll(error.getParameterKeys());
- }
-
- assertTrue(expected.isEmpty(), "Missing expected params: " + expected.toString());
- }
-
- {
- // Connectivity validation
- ComponentVerifierExtension.Result result
- = verifier.verify(ComponentVerifierExtension.Scope.CONNECTIVITY, Collections.emptyMap());
-
- assertEquals(ComponentVerifierExtension.Result.Status.ERROR, result.getStatus());
- assertEquals(1, result.getErrors().size());
- assertEquals(ComponentVerifierExtension.VerificationError.StandardCode.EXCEPTION,
- result.getErrors().get(0).getCode());
- assertNotNull(result.getErrors().get(0).getDetails()
- .get(ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE));
- assertTrue(result.getErrors().get(0).getDetails().get(
- ComponentVerifierExtension.VerificationError.ExceptionAttribute.EXCEPTION_INSTANCE) instanceof IllegalArgumentException);
- }
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/timeline/TwitterTimelineComponentVerifierExtensionIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/timeline/TwitterTimelineComponentVerifierExtensionIT.java
deleted file mode 100644
index 55426f0d3a2..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/timeline/TwitterTimelineComponentVerifierExtensionIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.timeline;
-
-import org.apache.camel.component.twitter.AbstractComponentVerifierExtensionIT;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public class TwitterTimelineComponentVerifierExtensionIT extends AbstractComponentVerifierExtensionIT {
- @Override
- protected String getComponentScheme() {
- return "twitter-timeline";
- }
-}
diff --git a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/timeline/TwitterTimelineComponentVerifierIT.java b/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/timeline/TwitterTimelineComponentVerifierIT.java
deleted file mode 100644
index 699b1fa86fb..00000000000
--- a/components/camel-twitter/src/test/java/org/apache/camel/component/twitter/timeline/TwitterTimelineComponentVerifierIT.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.twitter.timeline;
-
-import org.apache.camel.component.twitter.AbstractComponentVerifierIT;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
-
-@EnabledIfSystemProperty(named = "enable.twitter.itests", matches = "true",
- disabledReason = "Likely has API limits, so it's better to keep it off by default")
-public class TwitterTimelineComponentVerifierIT extends AbstractComponentVerifierIT {
- @Override
- protected String getComponentScheme() {
- return "twitter-timeline";
- }
-}
diff --git a/parent/pom.xml b/parent/pom.xml
index 2dd8e5583a0..aeb44e0618a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -461,7 +461,7 @@
<testcontainers-version>1.17.6</testcontainers-version>
<tika-version>2.8.0</tika-version>
<twilio-version>9.6.2</twilio-version>
- <twitter4j-version>4.0.7</twitter4j-version>
+ <twitter4j-version>4.1.2</twitter4j-version>
<undertow-version>2.3.7.Final</undertow-version>
<univocity-parsers-version>2.9.1</univocity-parsers-version>
<validation-api-version>2.0.1.Final</validation-api-version>