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 <[email protected]>
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>
+ """));
+ }
+
+}