This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-3.11.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.11.x by this push: new 34b2b14 CAMEL-17135: camel-debezium - Fixed configuration component level options not working correctly. 34b2b14 is described below commit 34b2b1463b592c7975e861d5053d18920630619b Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat Oct 30 10:27:04 2021 +0200 CAMEL-17135: camel-debezium - Fixed configuration component level options not working correctly. --- .../component/debezium/DebeziumComponent.java | 3 +- .../EmbeddedDebeziumConfiguration.java | 15 ++++++++- .../debezium/DebeziumMongodbComponent.java | 7 +---- .../debezium/DebeziumMongodbComponentTest.java | 36 ---------------------- .../component/debezium/DebeziumMySqlComponent.java | 7 +---- .../debezium/DebeziumMySqlComponentTest.java | 35 --------------------- .../debezium/DebeziumPostgresComponent.java | 7 +---- .../debezium/DebeziumPostgresComponentTest.java | 34 -------------------- .../debezium/DebeziumSqlserverComponent.java | 8 ++--- .../debezium/DebeziumSqlserverComponentTest.java | 34 -------------------- 10 files changed, 21 insertions(+), 165 deletions(-) diff --git a/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/DebeziumComponent.java b/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/DebeziumComponent.java index 12d9e4f..1094995 100644 --- a/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/DebeziumComponent.java +++ b/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/DebeziumComponent.java @@ -41,7 +41,8 @@ public abstract class DebeziumComponent<C extends EmbeddedDebeziumConfiguration> @Override protected DebeziumEndpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { - final C configuration = getConfiguration(); + // use a copy on the endpoint + final C configuration = (C) getConfiguration().copy(); if (ObjectHelper.isEmpty(remaining) && ObjectHelper.isEmpty(configuration.getName())) { throw new IllegalArgumentException( diff --git a/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/configuration/EmbeddedDebeziumConfiguration.java b/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/configuration/EmbeddedDebeziumConfiguration.java index fea2a4f..a0f4bf2 100644 --- a/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/configuration/EmbeddedDebeziumConfiguration.java +++ b/components/camel-debezium/camel-debezium-common/camel-debezium-common-component/src/main/java/org/apache/camel/component/debezium/configuration/EmbeddedDebeziumConfiguration.java @@ -23,6 +23,7 @@ import io.debezium.config.Configuration; import io.debezium.config.Field; import io.debezium.embedded.EmbeddedEngine; import io.debezium.engine.spi.OffsetCommitPolicy; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.debezium.DebeziumConstants; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; @@ -32,7 +33,7 @@ import org.apache.camel.util.ObjectHelper; import org.apache.kafka.connect.json.JsonConverter; @UriParams -public abstract class EmbeddedDebeziumConfiguration { +public abstract class EmbeddedDebeziumConfiguration implements Cloneable { private static final String LABEL_NAME = "consumer"; @@ -105,6 +106,18 @@ public abstract class EmbeddedDebeziumConfiguration { this.connectorClass = configureConnectorClass(); } + public Object copy() { + try { + EmbeddedDebeziumConfiguration answer = (EmbeddedDebeziumConfiguration) clone(); + // make sure the map is copied in its own instance + Map<String, Object> additionalPropertiesCopy = new HashMap<>(additionalProperties); + answer.setAdditionalProperties(additionalPropertiesCopy); + return answer; + } catch (CloneNotSupportedException e) { + throw new RuntimeCamelException(e); + } + } + /** * Configure the Debezium connector class that is supported by Debezium * diff --git a/components/camel-debezium/camel-debezium-mongodb/src/main/java/org/apache/camel/component/debezium/DebeziumMongodbComponent.java b/components/camel-debezium/camel-debezium-mongodb/src/main/java/org/apache/camel/component/debezium/DebeziumMongodbComponent.java index 12ac1f0..aa6b41b 100644 --- a/components/camel-debezium/camel-debezium-mongodb/src/main/java/org/apache/camel/component/debezium/DebeziumMongodbComponent.java +++ b/components/camel-debezium/camel-debezium-mongodb/src/main/java/org/apache/camel/component/debezium/DebeziumMongodbComponent.java @@ -25,7 +25,7 @@ import org.apache.camel.spi.annotations.Component; public final class DebeziumMongodbComponent extends DebeziumComponent<MongoDbConnectorEmbeddedDebeziumConfiguration> { @Metadata - private MongoDbConnectorEmbeddedDebeziumConfiguration configuration; + private MongoDbConnectorEmbeddedDebeziumConfiguration configuration = new MongoDbConnectorEmbeddedDebeziumConfiguration(); public DebeziumMongodbComponent() { } @@ -36,14 +36,9 @@ public final class DebeziumMongodbComponent extends DebeziumComponent<MongoDbCon /** * Allow pre-configured Configurations to be set. - * - * @return {@link MongoDbConnectorEmbeddedDebeziumConfiguration} */ @Override public MongoDbConnectorEmbeddedDebeziumConfiguration getConfiguration() { - if (configuration == null) { - return new MongoDbConnectorEmbeddedDebeziumConfiguration(); - } return configuration; } diff --git a/components/camel-debezium/camel-debezium-mongodb/src/test/java/org/apache/camel/component/debezium/DebeziumMongodbComponentTest.java b/components/camel-debezium/camel-debezium-mongodb/src/test/java/org/apache/camel/component/debezium/DebeziumMongodbComponentTest.java index 855f8a2..3b7cd8d 100644 --- a/components/camel-debezium/camel-debezium-mongodb/src/test/java/org/apache/camel/component/debezium/DebeziumMongodbComponentTest.java +++ b/components/camel-debezium/camel-debezium-mongodb/src/test/java/org/apache/camel/component/debezium/DebeziumMongodbComponentTest.java @@ -26,7 +26,6 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; public class DebeziumMongodbComponentTest { @@ -94,39 +93,4 @@ public class DebeziumMongodbComponentTest { } } - @Test - void testIfItHandlesNullExternalConfigurations() throws Exception { - final String remaining = ""; - final String uri = "debezium:"; - try (final DebeziumComponent debeziumComponent = new DebeziumMongodbComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } - - @Test - void testIfItHandlesNullExternalConfigurationsWithValidUri() throws Exception { - final String remaining = "dummy"; - final String uri = "debezium:dummy"; - try (final DebeziumComponent debeziumComponent = new DebeziumMongodbComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } } diff --git a/components/camel-debezium/camel-debezium-mysql/src/main/java/org/apache/camel/component/debezium/DebeziumMySqlComponent.java b/components/camel-debezium/camel-debezium-mysql/src/main/java/org/apache/camel/component/debezium/DebeziumMySqlComponent.java index 9e6f091..574335d 100644 --- a/components/camel-debezium/camel-debezium-mysql/src/main/java/org/apache/camel/component/debezium/DebeziumMySqlComponent.java +++ b/components/camel-debezium/camel-debezium-mysql/src/main/java/org/apache/camel/component/debezium/DebeziumMySqlComponent.java @@ -25,7 +25,7 @@ import org.apache.camel.spi.annotations.Component; public final class DebeziumMySqlComponent extends DebeziumComponent<MySqlConnectorEmbeddedDebeziumConfiguration> { @Metadata - private MySqlConnectorEmbeddedDebeziumConfiguration configuration; + private MySqlConnectorEmbeddedDebeziumConfiguration configuration = new MySqlConnectorEmbeddedDebeziumConfiguration(); public DebeziumMySqlComponent() { } @@ -36,14 +36,9 @@ public final class DebeziumMySqlComponent extends DebeziumComponent<MySqlConnect /** * Allow pre-configured Configurations to be set. - * - * @return {@link MySqlConnectorEmbeddedDebeziumConfiguration} */ @Override public MySqlConnectorEmbeddedDebeziumConfiguration getConfiguration() { - if (configuration == null) { - return new MySqlConnectorEmbeddedDebeziumConfiguration(); - } return configuration; } diff --git a/components/camel-debezium/camel-debezium-mysql/src/test/java/org/apache/camel/component/debezium/DebeziumMySqlComponentTest.java b/components/camel-debezium/camel-debezium-mysql/src/test/java/org/apache/camel/component/debezium/DebeziumMySqlComponentTest.java index f2aaf80..9e63cb3 100644 --- a/components/camel-debezium/camel-debezium-mysql/src/test/java/org/apache/camel/component/debezium/DebeziumMySqlComponentTest.java +++ b/components/camel-debezium/camel-debezium-mysql/src/test/java/org/apache/camel/component/debezium/DebeziumMySqlComponentTest.java @@ -26,7 +26,6 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; public class DebeziumMySqlComponentTest { @@ -96,38 +95,4 @@ public class DebeziumMySqlComponentTest { } } - @Test - void testIfItHandlesNullExternalConfigurations() throws Exception { - final String remaining = ""; - final String uri = "debezium:"; - try (final DebeziumComponent debeziumComponent = new DebeziumMySqlComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } - - @Test - void testIfItHandlesNullExternalConfigurationsWithValidUri() throws Exception { - final String remaining = "dummy"; - final String uri = "debezium:dummy"; - try (final DebeziumComponent debeziumComponent = new DebeziumMySqlComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } } diff --git a/components/camel-debezium/camel-debezium-postgres/src/main/java/org/apache/camel/component/debezium/DebeziumPostgresComponent.java b/components/camel-debezium/camel-debezium-postgres/src/main/java/org/apache/camel/component/debezium/DebeziumPostgresComponent.java index 5793c32..9061eac 100644 --- a/components/camel-debezium/camel-debezium-postgres/src/main/java/org/apache/camel/component/debezium/DebeziumPostgresComponent.java +++ b/components/camel-debezium/camel-debezium-postgres/src/main/java/org/apache/camel/component/debezium/DebeziumPostgresComponent.java @@ -25,7 +25,7 @@ import org.apache.camel.spi.annotations.Component; public final class DebeziumPostgresComponent extends DebeziumComponent<PostgresConnectorEmbeddedDebeziumConfiguration> { @Metadata - private PostgresConnectorEmbeddedDebeziumConfiguration configuration; + private PostgresConnectorEmbeddedDebeziumConfiguration configuration = new PostgresConnectorEmbeddedDebeziumConfiguration(); public DebeziumPostgresComponent() { } @@ -36,14 +36,9 @@ public final class DebeziumPostgresComponent extends DebeziumComponent<PostgresC /** * Allow pre-configured Configurations to be set. - * - * @return {@link PostgresConnectorEmbeddedDebeziumConfiguration} */ @Override public PostgresConnectorEmbeddedDebeziumConfiguration getConfiguration() { - if (configuration == null) { - return new PostgresConnectorEmbeddedDebeziumConfiguration(); - } return configuration; } diff --git a/components/camel-debezium/camel-debezium-postgres/src/test/java/org/apache/camel/component/debezium/DebeziumPostgresComponentTest.java b/components/camel-debezium/camel-debezium-postgres/src/test/java/org/apache/camel/component/debezium/DebeziumPostgresComponentTest.java index 7359f5e..2f9eb38 100644 --- a/components/camel-debezium/camel-debezium-postgres/src/test/java/org/apache/camel/component/debezium/DebeziumPostgresComponentTest.java +++ b/components/camel-debezium/camel-debezium-postgres/src/test/java/org/apache/camel/component/debezium/DebeziumPostgresComponentTest.java @@ -26,7 +26,6 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; public class DebeziumPostgresComponentTest { @@ -96,37 +95,4 @@ public class DebeziumPostgresComponentTest { } } - @Test - void testIfItHandlesNullExternalConfigurations() throws Exception { - final String remaining = ""; - final String uri = "debezium:"; - try (final DebeziumComponent debeziumComponent = new DebeziumPostgresComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } - - @Test - void testIfItHandlesNullExternalConfigurationsWithValidUri() throws Exception { - final String remaining = "dummy"; - final String uri = "debezium:dummy"; - try (final DebeziumComponent debeziumComponent = new DebeziumPostgresComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } } diff --git a/components/camel-debezium/camel-debezium-sqlserver/src/main/java/org/apache/camel/component/debezium/DebeziumSqlserverComponent.java b/components/camel-debezium/camel-debezium-sqlserver/src/main/java/org/apache/camel/component/debezium/DebeziumSqlserverComponent.java index 94776ab..4e5e01f 100644 --- a/components/camel-debezium/camel-debezium-sqlserver/src/main/java/org/apache/camel/component/debezium/DebeziumSqlserverComponent.java +++ b/components/camel-debezium/camel-debezium-sqlserver/src/main/java/org/apache/camel/component/debezium/DebeziumSqlserverComponent.java @@ -25,7 +25,8 @@ import org.apache.camel.spi.annotations.Component; public final class DebeziumSqlserverComponent extends DebeziumComponent<SqlServerConnectorEmbeddedDebeziumConfiguration> { @Metadata - private SqlServerConnectorEmbeddedDebeziumConfiguration configuration; + private SqlServerConnectorEmbeddedDebeziumConfiguration configuration + = new SqlServerConnectorEmbeddedDebeziumConfiguration(); public DebeziumSqlserverComponent() { } @@ -36,14 +37,9 @@ public final class DebeziumSqlserverComponent extends DebeziumComponent<SqlServe /** * Allow pre-configured Configurations to be set. - * - * @return {@link SqlServerConnectorEmbeddedDebeziumConfiguration} */ @Override public SqlServerConnectorEmbeddedDebeziumConfiguration getConfiguration() { - if (configuration == null) { - return new SqlServerConnectorEmbeddedDebeziumConfiguration(); - } return configuration; } diff --git a/components/camel-debezium/camel-debezium-sqlserver/src/test/java/org/apache/camel/component/debezium/DebeziumSqlserverComponentTest.java b/components/camel-debezium/camel-debezium-sqlserver/src/test/java/org/apache/camel/component/debezium/DebeziumSqlserverComponentTest.java index e4a6f5c..b01a6df 100644 --- a/components/camel-debezium/camel-debezium-sqlserver/src/test/java/org/apache/camel/component/debezium/DebeziumSqlserverComponentTest.java +++ b/components/camel-debezium/camel-debezium-sqlserver/src/test/java/org/apache/camel/component/debezium/DebeziumSqlserverComponentTest.java @@ -26,7 +26,6 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; public class DebeziumSqlserverComponentTest { @@ -96,37 +95,4 @@ public class DebeziumSqlserverComponentTest { } } - @Test - void testIfItHandlesNullExternalConfigurations() throws Exception { - final String remaining = ""; - final String uri = "debezium:"; - try (final DebeziumComponent debeziumComponent = new DebeziumSqlserverComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } - - @Test - void testIfItHandlesNullExternalConfigurationsWithValidUri() throws Exception { - final String remaining = "dummy"; - final String uri = "debezium:dummy"; - try (final DebeziumComponent debeziumComponent = new DebeziumSqlserverComponent(new DefaultCamelContext())) { - debeziumComponent.start(); - - // set configurations - debeziumComponent.setConfiguration(null); - - final Map<String, Object> parameters = Collections.emptyMap(); - assertThrows(IllegalArgumentException.class, () -> { - debeziumComponent.createEndpoint(uri, remaining, parameters); - }); - } - } }