This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new d00d4c3  CAMEL-17135: camel-debezium - Fixed configuration component 
level options not working correctly.
d00d4c3 is described below

commit d00d4c32c70b0ebf850cb7f8a340f317c392fea8
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 35fc1b3..453cff7 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);
-            });
-        }
-    }
 }

Reply via email to