This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-upgrade-recipes.git
The following commit(s) were added to refs/heads/main by this push: new 73111c5 Migration from Camel 4.8 to 4.9 (#17) 73111c5 is described below commit 73111c5f5b7fd8acab84f4e12e22715a902812d8 Author: JiriOndrusek <jondr...@redhat.com> AuthorDate: Mon Dec 2 15:18:01 2024 +0100 Migration from Camel 4.8 to 4.9 (#17) --- pom.xml | 63 ++++ release_notes.adoc | 45 +++ .../camel/upgrade/AbstractCamelJavaVisitor.java | 26 ++ .../camel/upgrade/camel41/CamelCoreRecipe.java | 4 +- .../LiteralRegexpConverterRecipe.java | 97 +++++ src/main/resources/META-INF/rewrite/4.9.yaml | 268 ++++++++++++++ .../org/apache/camel/upgrade/CamelTestUtil.java | 4 +- .../apache/camel/upgrade/CamelUpdate49Test.java | 412 +++++++++++++++++++++ 8 files changed, 916 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 6da8ae1..9e27112 100644 --- a/pom.xml +++ b/pom.xml @@ -92,6 +92,7 @@ <camel4.4-version>4.4.2</camel4.4-version> <camel4.5-version>4.5.0</camel4.5-version> <camel4.6-version>4.6.0</camel4.6-version> + <camel4.8-version>4.8.0</camel4.8-version> <rewrite-recipe-bom.version>2.10.0</rewrite-recipe-bom.version> @@ -204,6 +205,19 @@ <version>${lombok.version}</version> </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core-engine</artifactId> + <version>${camel4.8-version}</version> + </dependency> + + + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core-languages</artifactId> + <version>${camel4.8-version}</version> + </dependency> + </dependencies> @@ -410,6 +424,55 @@ <version>6.0.0</version> <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> </artifactItem> + <!-- 4.8 --> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-api</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-core-model</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-debezium-db2</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-debezium-mongodb</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-debezium-oracle</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-debezium-mysql</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-debezium-postgres</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> + <artifactItem> + <groupId>org.apache.camel</groupId> + <artifactId>camel-debezium-sqlserver</artifactId> + <version>${camel4.8-version}</version> + <outputDirectory>${rewrite-tmp-classpath}</outputDirectory> + </artifactItem> </artifactItems> </configuration> </execution> diff --git a/release_notes.adoc b/release_notes.adoc new file mode 100644 index 0000000..bf9ab53 --- /dev/null +++ b/release_notes.adoc @@ -0,0 +1,45 @@ += Release notes + + + +[%autowidth,stripes=hover] +|=== +| from | to | chapter + +| 4.8.0 | 4.9.0 | <<_4_9_0>> + +|=== + +=== 4.9.0 + +Upgrading Camel 4.8 to 4.9 (described by the https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html[guide]) + +Not all of the migrations could be covered by the openrewrite recipes. +See the table for more details: + +[%autowidth,stripes=hover] +|=== +| component | status | comment + + +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_api[camel-api] | partial | Renamed Exchange.ACTIVE_SPAN to Exchange.OTEL_ACTIVE_SPAN. Renamed ExchangePropertyKey.ACTIVE_SPAN to ExchangePropertyKey.OTEL_ACTIVE_SPAN. +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_management[camel-management] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_using_route_templates[Route Templates] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_xml_io[camel-xml-io] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_jackson[camel-jackson] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_jms[camel-jms] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_opentelemetry[camel-opentelemetry] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_pubnub[camel-pubnub] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_smooks[camel-smooks] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_hashicorp_vault_properties_function[camel-hashicorp-vault properties function ] | partial | Literal expressions matching `(\{\{hashicorp:secret:[^/]+)/([^/]+}})` are migrated. +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_aws_secrets_manager_properties_function[camel-aws-secrets-manager properties function] | partial | Literal expressions matching `(\{\{aws:[^/]+)/([^/]+}})` are migrated. +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_aws_secrets_manager_properties_function[camel-google-secret-manager properties function] | partial | Literal expressions matching `(\{\{gcp:[^/]+)/([^/]+}})` are migrated. +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_azure_key_vault_properties_function[camel-azure-key-vault properties function] | partial | Literal expressions matching `(\{\{azure:[^/]+)/([^/]+}})` are migrated. +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_azure_key_vault_properties_function[camel-aws] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_test[camel-test] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_debezium[camel-debezium] | covered | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_deprecated_components[Deprecated components] | N/A | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_removed_deprecated_components[Removed deprecated components] | covered | +| https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_removed_api[Removed API] | covered | + + diff --git a/src/main/java/org/apache/camel/upgrade/AbstractCamelJavaVisitor.java b/src/main/java/org/apache/camel/upgrade/AbstractCamelJavaVisitor.java index d658334..72f6771 100644 --- a/src/main/java/org/apache/camel/upgrade/AbstractCamelJavaVisitor.java +++ b/src/main/java/org/apache/camel/upgrade/AbstractCamelJavaVisitor.java @@ -19,6 +19,7 @@ package org.apache.camel.upgrade; import java.util.HashMap; import java.util.Map; import java.util.function.Supplier; +import java.util.regex.Pattern; import org.openrewrite.ExecutionContext; import org.openrewrite.java.JavaIsoVisitor; @@ -44,6 +45,9 @@ public abstract class AbstractCamelJavaVisitor extends JavaIsoVisitor<ExecutionC //Map is a cache for created patterns private static final Map<String, MethodMatcher> methodMatchers = new HashMap<>(); + //cache for patterns + private static final Map<String, Pattern> patterns = new HashMap<>(); + @Override public final J.Import visitImport(J.Import _import, ExecutionContext context) { @@ -80,6 +84,11 @@ public abstract class AbstractCamelJavaVisitor extends JavaIsoVisitor<ExecutionC return executeVisitWithCatch(() -> doVisitNewClass(newClass, context), newClass, context); } + @Override + public final J.Literal visitLiteral(J.Literal literal, ExecutionContext context) { + return executeVisitWithCatch(() -> doVisitLiteral(literal, context), literal, context); + } + //-------------------------------- internal methods used by children--------------------------------- protected J.Import doVisitImport(J.Import _import, ExecutionContext context) { @@ -110,6 +119,10 @@ public abstract class AbstractCamelJavaVisitor extends JavaIsoVisitor<ExecutionC return super.visitNewClass(newClass, context); } + protected J.Literal doVisitLiteral(J.Literal literal, ExecutionContext context) { + return super.visitLiteral(literal, context); + } + // ------------------------------------------ helper methods ------------------------------------------- // If the migration fails - do not fail whole migration process, only this one recipe @@ -134,4 +147,17 @@ public abstract class AbstractCamelJavaVisitor extends JavaIsoVisitor<ExecutionC return matcher; } } + + protected Pattern getPattern(String pattern) { + synchronized (patterns) { + Pattern p = patterns.get(pattern); + + if (p == null) { + p = Pattern.compile(pattern); + patterns.put(pattern, p); + } + + return p; + } + } } diff --git a/src/main/java/org/apache/camel/upgrade/camel41/CamelCoreRecipe.java b/src/main/java/org/apache/camel/upgrade/camel41/CamelCoreRecipe.java index 22922d7..55445fe 100644 --- a/src/main/java/org/apache/camel/upgrade/camel41/CamelCoreRecipe.java +++ b/src/main/java/org/apache/camel/upgrade/camel41/CamelCoreRecipe.java @@ -56,8 +56,8 @@ public class CamelCoreRecipe extends Recipe { return RecipesUtil.newVisitor(new AbstractCamelJavaVisitor() { @Override - public J.Literal visitLiteral(J.Literal literal, ExecutionContext context) { - J.Literal l = super.visitLiteral(literal, context); + public J.Literal doVisitLiteral(J.Literal literal, ExecutionContext context) { + J.Literal l = super.doVisitLiteral(literal, context); //is it possible to precondition that aws2 is present? if (JavaType.Primitive.String.equals(l.getType()) diff --git a/src/main/java/org/apache/camel/upgrade/customRecipes/LiteralRegexpConverterRecipe.java b/src/main/java/org/apache/camel/upgrade/customRecipes/LiteralRegexpConverterRecipe.java new file mode 100644 index 0000000..d609c74 --- /dev/null +++ b/src/main/java/org/apache/camel/upgrade/customRecipes/LiteralRegexpConverterRecipe.java @@ -0,0 +1,97 @@ +/* + * 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.upgrade.customRecipes; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import org.apache.camel.upgrade.AbstractCamelJavaVisitor; +import org.apache.camel.upgrade.RecipesUtil; +import org.openrewrite.ExecutionContext; +import org.openrewrite.Option; +import org.openrewrite.Recipe; +import org.openrewrite.TreeVisitor; +import org.openrewrite.java.tree.J; +import org.openrewrite.java.tree.TypeUtils; + +import java.util.List; +import java.util.Optional; +import java.util.function.BiFunction; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Replaces literal matching pattern and replacing it with a replacement (regexp groups are supported) + */ +@EqualsAndHashCode(callSuper = false) +@RequiredArgsConstructor +@AllArgsConstructor +public class LiteralRegexpConverterRecipe extends Recipe { + + @Option(displayName = "Literal regexp name", + description = "Regexp for matching a literal.") + public String regexp; + + @Option(displayName = "Replacement to use", + description = "Replacement to use.") + public String replacement; + + @Override + public String getDisplayName() { + return "Replaces a literal matching an expression"; + } + + @Override + public String getDescription() { + return "Replaces literal, groups from regexp can be used as ${0}, ${1}, ..."; + } + + @Override + public TreeVisitor<?, ExecutionContext> getVisitor() { + return RecipesUtil.newVisitor(new AbstractCamelJavaVisitor() { + + @Override + protected J.Literal doVisitLiteral(J.Literal literal, ExecutionContext context) { + J.Literal l = super.doVisitLiteral(literal, context); + + // Only handle String literals + if (TypeUtils.isString(literal.getType()) && literal.getValue() != null) { + Matcher m = getPattern(regexp.trim()).matcher((String)literal.getValue()); + if(m.matches()) { + //if no group one group is used + String tmp = replacement; + for (int i = 1; i <= 100; i++) { + if(!tmp.contains("${" + i + "}")) { + break; + } + String tmp2 = tmp.replaceAll("\\$\\{" + i + "}", m.group(i)); + //if there is no change, return value + if(tmp.equals(tmp2)) { + break; + } + tmp = tmp2; + } + return RecipesUtil.createStringLiteral(tmp); + } + } + + return l; + } + }); + } +} diff --git a/src/main/resources/META-INF/rewrite/4.9.yaml b/src/main/resources/META-INF/rewrite/4.9.yaml new file mode 100644 index 0000000..5889792 --- /dev/null +++ b/src/main/resources/META-INF/rewrite/4.9.yaml @@ -0,0 +1,268 @@ +# +# 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. +# + +##### +# Rules coming from https://camel.apache.org/manual/camel-4x-upgrade-guide-4_8.html#_upgrading_camel_4_7_to_4_8 +# None of the migrations can be covered by the automation migrations. +##### + +--- +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.CamelMigrationRecipe +displayName: Migrates `camel 4.8` application to `camel 4.9` +description: Migrates `camel 4.8` application to `camel 4.9`. +recipeList: + - org.apache.camel.upgrade.camel49.renamedAPIs + - org.apache.camel.upgrade.camel49.HashicorpSecretRecipe + - org.apache.camel.upgrade.camel49.GcpSecretRecipe + - org.apache.camel.upgrade.camel49.AwsSecretRecipe + - org.apache.camel.upgrade.camel49.AzureSecretRecipe + - org.apache.camel.upgrade.camel49.DebeziumChangeTypes + - org.apache.camel.upgrade.camel49.removedDependencies +--- +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_api +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.renamedAPIs +displayName: Renamed classes for API +description: Renamed classes for API. +recipeList: + - org.openrewrite.java.ReplaceConstantWithAnotherConstant: + existingFullyQualifiedConstantName: org.apache.camel.Exchange.ACTIVE_SPAN + fullyQualifiedConstantName: org.apache.camel.Exchange.OTEL_ACTIVE_SPAN + - org.openrewrite.java.ReplaceConstantWithAnotherConstant: + existingFullyQualifiedConstantName: org.apache.camel.ExchangePropertyKey.ACTIVE_SPAN + fullyQualifiedConstantName: org.apache.camel.ExchangePropertyKey.OTEL_ACTIVE_SPAN +--- +#thttps://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_hashicorp_vault_properties_function +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.HashicorpSecretRecipe +displayName: The syntax for retrieving a single field of a secret has been changed +description: The syntax for retrieving a single field of a secret has been changed.. +recipeList: + - org.apache.camel.upgrade.customRecipes.LiteralRegexpConverterRecipe: + regexp: "(\\{\\{hashicorp:secret:[^/]+)/([^/]+}})" + replacement: "${1}#${2}" +--- +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_google_secret_manager_properties_function +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.GcpSecretRecipe +displayName: The syntax for retrieving a single field of a secret has been changed +description: The syntax for retrieving a single field of a secret has been changed.. +recipeList: + - org.apache.camel.upgrade.customRecipes.LiteralRegexpConverterRecipe: + regexp: "(\\{\\{gcp:[^/]+)/([^/]+}})" + replacement: "${1}#${2}" +--- +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_aws_secrets_manager_properties_function +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.AwsSecretRecipe +displayName: The syntax for retrieving a single field of a secret has been changed +description: The syntax for retrieving a single field of a secret has been changed.. +recipeList: + - org.apache.camel.upgrade.customRecipes.LiteralRegexpConverterRecipe: + regexp: "(\\{\\{aws:[^/]+)/([^/]+}})" + replacement: "${1}#${2}" +--- +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_azure_key_vault_properties_function +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.AzureSecretRecipe +displayName: The syntax for retrieving a single field of a secret has been changed +description: The syntax for retrieving a single field of a secret has been changed.. +recipeList: + - org.apache.camel.upgrade.customRecipes.LiteralRegexpConverterRecipe: + regexp: "(\\{\\{azure:[^/]+)/([^/]+}})" + replacement: "${1}#${2}" +--- +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_debezium +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.DebeziumChangeTypes +displayName: Each camel-debezium module has its own subpackage corresponding to the database type +description: each camel-debezium module has its own subpackage corresponding to the database type. So for example, all the classes of the module camel-debezium-postgres have been moved to a dedicated package which is org.apache.camel.component.debezium.postgres instead of having everything under the root package org.apache.camel.component.debezium. +recipeList: +# db2 + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.configuration.Db2ConnectorEmbeddedDebeziumConfiguration + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2ComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2ComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2EndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2EndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2EndpointUriFactory + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2EndpointUriFactory + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2Component + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2Component + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2ComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2ComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2EndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2EndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumDb2Endpoint + newFullyQualifiedTypeName: org.apache.camel.component.debezium.db2.DebeziumDb2Endpoint +# mongoDb + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.configuration.MongodbConnectorEmbeddedDebeziumConfiguration + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.configuration.MongodbConnectorEmbeddedDebeziumConfiguration + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbEndpointUriFactory + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbEndpointUriFactory + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbComponent + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbComponent + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMongodbEndpoint + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mongodb.DebeziumMongodbEndpoint +# mysql + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.configuration.MySqlConnectorEmbeddedDebeziumConfiguration + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.configuration.MySqlConnectorEmbeddedDebeziumConfiguration + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlEndpointUriFactory + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlEndpointUriFactory + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlComponent + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlComponent + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumMySqlEndpoint + newFullyQualifiedTypeName: org.apache.camel.component.debezium.mysql.DebeziumMySqlEndpoint +# oracle + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.configuration.OracleConnectorEmbeddedDebeziumConfiguration + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.configuration.OracleConnectorEmbeddedDebeziumConfiguration + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleEndpointUriFactory + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleEndpointUriFactory + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleComponent + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleComponent + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumOracleEndpoint + newFullyQualifiedTypeName: org.apache.camel.component.debezium.oracle.DebeziumOracleEndpoint +# postgres + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.configuration.PostgresConnectorEmbeddedDebeziumConfiguration + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.configuration.PostgresConnectorEmbeddedDebeziumConfiguration + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresEndpointUriFactory + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresEndpointUriFactory + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresComponent + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresComponent + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumPostgresEndpoint + newFullyQualifiedTypeName: org.apache.camel.component.debezium.postgres.DebeziumPostgresEndpoint +# sqlserver + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.configuration.SqlserverConnectorEmbeddedDebeziumConfiguration + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.configuration.SqlserverConnectorEmbeddedDebeziumConfiguration + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverEndpointUriFactory + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverEndpointUriFactory + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverComponent + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverComponent + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverComponentConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverComponentConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverEndpointConfigurer + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverEndpointConfigurer + - org.openrewrite.java.ChangeType: + oldFullyQualifiedTypeName: org.apache.camel.component.debezium.DebeziumSqlserverEndpoint + newFullyQualifiedTypeName: org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverEndpoint +--- +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_removed_deprecated_components +#https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_removed_api +type: specs.openrewrite.org/v1beta/recipe +name: org.apache.camel.upgrade.camel49.removedDependencies +displayName: Removed deprecated components +description: Removed deprecated components (camel-groovy-dsl, camel-js-dsl, camel-jsh-dsl, camel-kotlin-api, camel-kotlin-dsl). +recipeList: + - org.openrewrite.maven.RemoveDependency: + groupId: org.apache.camel + artifactId: camel-groovy-dsl + - org.openrewrite.maven.RemoveDependency: + groupId: org.apache.camel + artifactId: camel-js-dsl + - org.openrewrite.maven.RemoveDependency: + groupId: org.apache.camel + artifactId: camel-jsh-dsl + - org.openrewrite.maven.RemoveDependency: + groupId: org.apache.camel + artifactId: camel-kotlin-api + - org.openrewrite.maven.RemoveDependency: + groupId: org.apache.camel + artifactId: camel-kotlin-dsl \ No newline at end of file diff --git a/src/test/java/org/apache/camel/upgrade/CamelTestUtil.java b/src/test/java/org/apache/camel/upgrade/CamelTestUtil.java index a8474f5..2d1d4e8 100644 --- a/src/test/java/org/apache/camel/upgrade/CamelTestUtil.java +++ b/src/test/java/org/apache/camel/upgrade/CamelTestUtil.java @@ -42,7 +42,9 @@ public class CamelTestUtil { v4_4(4, 4, 2), v4_5(4, 5, 0), v4_6(4, 6, 0), - v4_7(4, 7, 0); + v4_7(4, 7, 0), + v4_8(4, 8, 0), + v4_9(4, 9, 0); private int major; private int minor; diff --git a/src/test/java/org/apache/camel/upgrade/CamelUpdate49Test.java b/src/test/java/org/apache/camel/upgrade/CamelUpdate49Test.java new file mode 100644 index 0000000..7489b4f --- /dev/null +++ b/src/test/java/org/apache/camel/upgrade/CamelUpdate49Test.java @@ -0,0 +1,412 @@ +/* + * 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.upgrade; + +import org.junit.jupiter.api.Test; +import org.openrewrite.test.RecipeSpec; +import org.openrewrite.test.RewriteTest; +import org.openrewrite.test.TypeValidation; +import org.openrewrite.yaml.Assertions; + +import static org.openrewrite.java.Assertions.java; +import static org.openrewrite.maven.Assertions.pomXml; +import static org.openrewrite.xml.Assertions.xml; + +public class CamelUpdate49Test implements RewriteTest { + + @Override + public void defaults(RecipeSpec spec) { + CamelTestUtil.recipe(spec, CamelTestUtil.CamelVersion.v4_9) + .parser(CamelTestUtil.parserFromClasspath(CamelTestUtil.CamelVersion.v4_8, + "camel-api", "camel-core-model", "camel-debezium-db2", "camel-debezium-mysql", "camel-debezium-oracle", "camel-debezium-mongodb", "camel-debezium-postgres", "camel-debezium-sqlserver")) + .typeValidationOptions(TypeValidation.none()); + } + + /** + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_api">camel-api</a> + */ + @Test + public void testApiChanges() { + //language=java + rewriteRun(java( + """ + import org.apache.camel.Exchange; + import org.apache.camel.ExchangePropertyKey; + + public class ApisTest { + public void test() { + var s1 = Exchange.ACTIVE_SPAN; + var s2 = ExchangePropertyKey.ACTIVE_SPAN.name(); + System.out.println(s1 + ":" + s2); + } + } + """, + """ + import org.apache.camel.Exchange; + import org.apache.camel.ExchangePropertyKey; + + public class ApisTest { + public void test() { + var s1 = Exchange.OTEL_ACTIVE_SPAN; + var s2 = ExchangePropertyKey.OTEL_ACTIVE_SPAN.name(); + System.out.println(s1 + ":" + s2); + } + } + """)); + } + + /** + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_hashicorp_vault_properties_function">camel-hashicorp-vault properties function</a> + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_aws_secrets_manager_properties_function">camel-aws-secrets-manager properties function</a> + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_google_secret_manager_properties_function">camel-google-secret-manager properties function</a> + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_azure_key_vault_properties_function">camel-azure-key-vault properties function</a> + */ + @Test + public void testSecretFieldSyntax() { + //language=java + rewriteRun(java( + """ + import org.apache.camel.builder.RouteBuilder; + + public class SecretFieldRoute extends RouteBuilder { + + @Override + public void configure() { + from("direct:a") + .inOut("{{hashicorp:secret:db/user}}") + .to("log:result_hashicorp:secret"); + from("direct:a") + .inOut("{{aws:436etrt/Sheldon}}") + .to("log:result_aws"); + from("direct:a") + .inOut("{{gcp:3ee4ff/Leonard}}") + .to("log:result_aws"); + from("direct:a") + .inOut("{{azure:de43e56e6d6/Vilma}}") + .to("log:result_azure"); + from("direct:a") + .inOut("{{azure:something/wrong/JoeD}}") + .to("log:result_azure"); + from("direct:a") + .inOut("{{wrong:de43e56e6d6/JoeD}}") + .to("log:result_azure"); + } + } + """, + """ + import org.apache.camel.builder.RouteBuilder; + + public class SecretFieldRoute extends RouteBuilder { + + @Override + public void configure() { + from("direct:a") + .inOut("{{hashicorp:secret:db#user}}") + .to("log:result_hashicorp:secret"); + from("direct:a") + .inOut("{{aws:436etrt#Sheldon}}") + .to("log:result_aws"); + from("direct:a") + .inOut("{{gcp:3ee4ff#Leonard}}") + .to("log:result_aws"); + from("direct:a") + .inOut("{{azure:de43e56e6d6#Vilma}}") + .to("log:result_azure"); + from("direct:a") + .inOut("{{azure:something/wrong/JoeD}}") + .to("log:result_azure"); + from("direct:a") + .inOut("{{wrong:de43e56e6d6/JoeD}}") + .to("log:result_azure"); + } + } + """)); + } + /** + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_camel_debezium">camel-debezium</a> + */ + @Test + public void testDebezium() { + //language=java + rewriteRun(java( + """ + import org.apache.camel.component.debezium.configuration.Db2ConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.DebeziumDb2ComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumDb2EndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumDb2EndpointUriFactory; + import org.apache.camel.component.debezium.DebeziumDb2Component; + import org.apache.camel.component.debezium.DebeziumDb2ComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumDb2EndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumDb2Endpoint; + import org.apache.camel.component.debezium.configuration.MongodbConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.DebeziumMongodbComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumMongodbEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumMongodbEndpointUriFactory; + import org.apache.camel.component.debezium.DebeziumMongodbComponent; + import org.apache.camel.component.debezium.DebeziumMongodbComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumMongodbEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumMongodbEndpoint; + import org.apache.camel.component.debezium.configuration.MySqlConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.DebeziumMySqlComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumMySqlEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumMySqlEndpointUriFactory; + import org.apache.camel.component.debezium.DebeziumMySqlComponent; + import org.apache.camel.component.debezium.DebeziumMySqlComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumMySqlEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumMySqlEndpoint; + import org.apache.camel.component.debezium.configuration.OracleConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.DebeziumOracleComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumOracleEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumOracleEndpointUriFactory; + import org.apache.camel.component.debezium.DebeziumOracleComponent; + import org.apache.camel.component.debezium.DebeziumOracleComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumOracleEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumOracleEndpoint; + import org.apache.camel.component.debezium.configuration.PostgresConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.DebeziumPostgresComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumPostgresEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumPostgresEndpointUriFactory; + import org.apache.camel.component.debezium.DebeziumPostgresComponent; + import org.apache.camel.component.debezium.DebeziumPostgresComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumPostgresEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumPostgresEndpoint; + import org.apache.camel.component.debezium.configuration.SqlserverConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.DebeziumSqlserverComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumSqlserverEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumSqlserverEndpointUriFactory; + import org.apache.camel.component.debezium.DebeziumSqlserverComponent; + import org.apache.camel.component.debezium.DebeziumSqlserverComponentConfigurer; + import org.apache.camel.component.debezium.DebeziumSqlserverEndpointConfigurer; + import org.apache.camel.component.debezium.DebeziumSqlserverEndpoint; + + public class DebeziumTest { + + public void method() { + //db2 + Db2ConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumDb2ComponentConfigurer configurer = null; + DebeziumDb2EndpointConfigurer endpointConfigurer = null; + DebeziumDb2EndpointUriFactory uriFactory = null; + DebeziumDb2Component component = null; + DebeziumDb2ComponentConfigurer componentConfigurer = null; + DebeziumDb2EndpointConfigurer endpointConfigurer = null; + DebeziumDb2Endpoint endpoint = null; + //mongodb + MongodbConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumMongodbComponentConfigurer configurer = null; + DebeziumMongodbEndpointConfigurer endpointConfigurer = null; + DebeziumMongodbEndpointUriFactory uriFactory = null; + DebeziumMongodbComponent component = null; + DebeziumMongodbComponentConfigurer componentConfigurer = null; + DebeziumMongodbEndpointConfigurer endpointConfigurer = null; + DebeziumMongodbEndpoint endpoint = null; + //mysql + MySqlConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumMySqlComponentConfigurer configurer = null; + DebeziumMySqlEndpointConfigurer endpointConfigurer = null; + DebeziumMySqlEndpointUriFactory uriFactory = null; + DebeziumMySqlComponent component = null; + DebeziumMySqlComponentConfigurer componentConfigurer = null; + DebeziumMySqlEndpointConfigurer endpointConfigurer = null; + DebeziumMySqlEndpoint endpoint = null; + //oracle + OracleConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumOracleComponentConfigurer configurer = null; + DebeziumOracleEndpointConfigurer endpointConfigurer = null; + DebeziumOracleEndpointUriFactory uriFactory = null; + DebeziumOracleComponent component = null; + DebeziumOracleComponentConfigurer componentConfigurer = null; + DebeziumOracleEndpointConfigurer endpointConfigurer = null; + DebeziumOracleEndpoint endpoint = null; + //postgres + PostgresConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumPostgresComponentConfigurer configurer = null; + DebeziumPostgresEndpointConfigurer endpointConfigurer = null; + DebeziumPostgresEndpointUriFactory uriFactory = null; + DebeziumPostgresComponent component = null; + DebeziumPostgresComponentConfigurer componentConfigurer = null; + DebeziumPostgresEndpointConfigurer endpointConfigurer = null; + DebeziumPostgresEndpoint endpoint = null; + //sqlserver + SqlserverConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumSqlserverComponentConfigurer configurer = null; + DebeziumSqlserverEndpointConfigurer endpointConfigurer = null; + DebeziumSqlserverEndpointUriFactory uriFactory = null; + DebeziumSqlserverComponent component = null; + DebeziumSqlserverComponentConfigurer componentConfigurer = null; + DebeziumSqlserverEndpointConfigurer endpointConfigurer = null; + DebeziumSqlserverEndpoint endpoint = null; + } + } + """, + """ + import org.apache.camel.component.debezium.configuration.MongodbConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.configuration.SqlserverConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.db2.*; + import org.apache.camel.component.debezium.db2.configuration.Db2ConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.mongodb.*; + import org.apache.camel.component.debezium.mysql.*; + import org.apache.camel.component.debezium.mysql.configuration.MySqlConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.oracle.*; + import org.apache.camel.component.debezium.oracle.configuration.OracleConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.postgres.*; + import org.apache.camel.component.debezium.postgres.configuration.PostgresConnectorEmbeddedDebeziumConfiguration; + import org.apache.camel.component.debezium.sqlserver.*; + + public class DebeziumTest { + + public void method() { + //db2 + Db2ConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumDb2ComponentConfigurer configurer = null; + DebeziumDb2EndpointConfigurer endpointConfigurer = null; + DebeziumDb2EndpointUriFactory uriFactory = null; + DebeziumDb2Component component = null; + DebeziumDb2ComponentConfigurer componentConfigurer = null; + DebeziumDb2EndpointConfigurer endpointConfigurer = null; + DebeziumDb2Endpoint endpoint = null; + //mongodb + MongodbConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumMongodbComponentConfigurer configurer = null; + DebeziumMongodbEndpointConfigurer endpointConfigurer = null; + DebeziumMongodbEndpointUriFactory uriFactory = null; + DebeziumMongodbComponent component = null; + DebeziumMongodbComponentConfigurer componentConfigurer = null; + DebeziumMongodbEndpointConfigurer endpointConfigurer = null; + DebeziumMongodbEndpoint endpoint = null; + //mysql + MySqlConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumMySqlComponentConfigurer configurer = null; + DebeziumMySqlEndpointConfigurer endpointConfigurer = null; + DebeziumMySqlEndpointUriFactory uriFactory = null; + DebeziumMySqlComponent component = null; + DebeziumMySqlComponentConfigurer componentConfigurer = null; + DebeziumMySqlEndpointConfigurer endpointConfigurer = null; + DebeziumMySqlEndpoint endpoint = null; + //oracle + OracleConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumOracleComponentConfigurer configurer = null; + DebeziumOracleEndpointConfigurer endpointConfigurer = null; + DebeziumOracleEndpointUriFactory uriFactory = null; + DebeziumOracleComponent component = null; + DebeziumOracleComponentConfigurer componentConfigurer = null; + DebeziumOracleEndpointConfigurer endpointConfigurer = null; + DebeziumOracleEndpoint endpoint = null; + //postgres + PostgresConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumPostgresComponentConfigurer configurer = null; + DebeziumPostgresEndpointConfigurer endpointConfigurer = null; + DebeziumPostgresEndpointUriFactory uriFactory = null; + DebeziumPostgresComponent component = null; + DebeziumPostgresComponentConfigurer componentConfigurer = null; + DebeziumPostgresEndpointConfigurer endpointConfigurer = null; + DebeziumPostgresEndpoint endpoint = null; + //sqlserver + SqlserverConnectorEmbeddedDebeziumConfiguration conf = null; + DebeziumSqlserverComponentConfigurer configurer = null; + DebeziumSqlserverEndpointConfigurer endpointConfigurer = null; + DebeziumSqlserverEndpointUriFactory uriFactory = null; + DebeziumSqlserverComponent component = null; + DebeziumSqlserverComponentConfigurer componentConfigurer = null; + DebeziumSqlserverEndpointConfigurer endpointConfigurer = null; + DebeziumSqlserverEndpoint endpoint = null; + } + } + """)); + } + + /** + * TODO update link + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_removed_deprecated_components">Removed deprecated components</a> + * <a href="https://camel.apache.org/manual/camel-4x-upgrade-guide-4_9.html#_removed_api">Removed API</a> + */ + @Test + public void testRemovedDependencies() { + //language=xml + rewriteRun(pomXml( + """ + <project> + <modelVersion>4.0.0</modelVersion> + + <artifactId>test</artifactId> + <groupId>org.apache.camel.test</groupId> + <version>1.0.0</version> + + <properties> + <camel.version>4.8.0</camel.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-api</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-groovy-dsl</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-js-dsl</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-jsh-dsl</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-kotlin-api</artifactId> + <version>${camel.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-kotlin-dsl</artifactId> + <version>${camel.version}</version> + </dependency> + </dependencies> + + </project> + """, + """ + <project> + <modelVersion>4.0.0</modelVersion> + + <artifactId>test</artifactId> + <groupId>org.apache.camel.test</groupId> + <version>1.0.0</version> + + <properties> + <camel.version>4.8.0</camel.version> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-api</artifactId> + <version>${camel.version}</version> + </dependency> + </dependencies> + + </project> + """)); + } + +}