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>