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 2ba94c08df1 CAMEL-17641: Generate json metadata for pojo beans in camel-core that end users can use such as AggregationStrategy implementations. And have that information in camel-catalog for tooling assistance. 2ba94c08df1 is described below commit 2ba94c08df132541f3a53ff5a8b1efd03b516140 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Mar 20 11:23:44 2024 +0100 CAMEL-17641: Generate json metadata for pojo beans in camel-core that end users can use such as AggregationStrategy implementations. And have that information in camel-catalog for tooling assistance. --- .../beans/CassandraIdempotentRepository.json | 2 +- .../org/apache/camel/catalog/CamelCatalogTest.java | 2 +- .../CassandraIdempotentRepositoryConfigurer.java | 10 ++--- .../camel/bean/CassandraIdempotentRepository.json | 2 +- .../cassandra/CassandraIdempotentRepository.java | 44 ++++++++++------------ .../NamedCassandraIdempotentRepository.java | 8 ++-- 6 files changed, 32 insertions(+), 36 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/CassandraIdempotentRepository.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/CassandraIdempotentRepository.json index 78269b7e649..abab9ac67b7 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/CassandraIdempotentRepository.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/beans/CassandraIdempotentRepository.json @@ -10,7 +10,7 @@ "groupId": "org.apache.camel", "artifactId": "camel-cassandraql", "version": "4.5.0-SNAPSHOT", - "properties": { "session": { "index": 0, "kind": "property", "displayName": "Session", "required": true, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "description": "Cassandra session" }, "table": { "index": 1, "kind": "property", "displayName": "Table", "required": false, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraId [...] + "properties": { "session": { "index": 0, "kind": "property", "displayName": "Session", "required": true, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "description": "Cassandra session" }, "table": { "index": 1, "kind": "property", "displayName": "Table", "required": false, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraId [...] } } diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java index 05740bbacb7..9aa8a3be5f0 100644 --- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java +++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java @@ -1647,7 +1647,7 @@ public class CamelCatalogTest { PojoBeanModel model = catalog.pojoBeanModel("ZipAggregationStrategy"); assertNotNull(model); - assertEquals("bean", model.getKind()); + assertEquals(Kind.bean, model.getKind()); assertEquals("ZipAggregationStrategy", model.getName()); assertEquals("org.apache.camel.processor.aggregate.zipfile.ZipAggregationStrategy", model.getJavaType()); assertEquals(6, model.getOptions().size()); diff --git a/components/camel-cassandraql/src/generated/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryConfigurer.java b/components/camel-cassandraql/src/generated/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryConfigurer.java index a775cce13b5..bdf047cb598 100644 --- a/components/camel-cassandraql/src/generated/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryConfigurer.java +++ b/components/camel-cassandraql/src/generated/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepositoryConfigurer.java @@ -22,9 +22,9 @@ public class CassandraIdempotentRepositoryConfigurer extends org.apache.camel.su org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository target = (org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository) obj; switch (ignoreCase ? name.toLowerCase() : name) { case "pkcolumns": - case "PKColumns": target.setPKColumns(property(camelContext, java.lang.String.class, value)); return true; + case "PkColumns": target.setPkColumns(property(camelContext, java.lang.String.class, value)); return true; case "prefixpkvalues": - case "PrefixPKValues": target.setPrefixPKValues(property(camelContext, java.lang.String[].class, value)); return true; + case "PrefixPKValues": target.setPrefixPKValues(property(camelContext, java.lang.String.class, value)); return true; case "readconsistencylevel": case "ReadConsistencyLevel": target.setReadConsistencyLevel(property(camelContext, com.datastax.oss.driver.api.core.ConsistencyLevel.class, value)); return true; case "session": @@ -43,9 +43,9 @@ public class CassandraIdempotentRepositoryConfigurer extends org.apache.camel.su public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { case "pkcolumns": - case "PKColumns": return java.lang.String.class; + case "PkColumns": return java.lang.String.class; case "prefixpkvalues": - case "PrefixPKValues": return java.lang.String[].class; + case "PrefixPKValues": return java.lang.String.class; case "readconsistencylevel": case "ReadConsistencyLevel": return com.datastax.oss.driver.api.core.ConsistencyLevel.class; case "session": @@ -65,7 +65,7 @@ public class CassandraIdempotentRepositoryConfigurer extends org.apache.camel.su org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository target = (org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository) obj; switch (ignoreCase ? name.toLowerCase() : name) { case "pkcolumns": - case "PKColumns": return target.getPKColumns(); + case "PkColumns": return target.getPkColumns(); case "prefixpkvalues": case "PrefixPKValues": return target.getPrefixPKValues(); case "readconsistencylevel": diff --git a/components/camel-cassandraql/src/generated/resources/META-INF/services/org/apache/camel/bean/CassandraIdempotentRepository.json b/components/camel-cassandraql/src/generated/resources/META-INF/services/org/apache/camel/bean/CassandraIdempotentRepository.json index 78269b7e649..abab9ac67b7 100644 --- a/components/camel-cassandraql/src/generated/resources/META-INF/services/org/apache/camel/bean/CassandraIdempotentRepository.json +++ b/components/camel-cassandraql/src/generated/resources/META-INF/services/org/apache/camel/bean/CassandraIdempotentRepository.json @@ -10,7 +10,7 @@ "groupId": "org.apache.camel", "artifactId": "camel-cassandraql", "version": "4.5.0-SNAPSHOT", - "properties": { "session": { "index": 0, "kind": "property", "displayName": "Session", "required": true, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "description": "Cassandra session" }, "table": { "index": 1, "kind": "property", "displayName": "Table", "required": false, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraId [...] + "properties": { "session": { "index": 0, "kind": "property", "displayName": "Session", "required": true, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraIdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "description": "Cassandra session" }, "table": { "index": 1, "kind": "property", "displayName": "Table", "required": false, "type": "object", "javaType": "org.apache.camel.processor.idempotent.cassandra.CassandraId [...] } } diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java b/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java index c66d4d7a8dd..ede41ff3113 100644 --- a/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java +++ b/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/CassandraIdempotentRepository.java @@ -61,12 +61,12 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide @Metadata(description = "The table name for storing the data", defaultValue = "CAMEL_IDEMPOTENT") private String table = "CAMEL_IDEMPOTENT"; @Metadata(description = "Values used as primary key prefix. Multiple values can be separated by comma.", - displayName = "Prefix Primary Key Values", javaType = "java.lang.String") - private String[] prefixPKValues = new String[0]; + displayName = "Prefix Primary Key Values") + private String prefixPKValues; @Metadata(description = "Primary key columns. Multiple values can be separated by comma.", displayName = "Primary Key Columns", javaType = "java.lang.String", defaultValue = "KEY") - private String[] pkColumns = { "KEY" }; + private String pkColumns = "KEY"; @Metadata(description = "Time to live in seconds used for inserts", displayName = "Time to Live") private Integer ttl; @Metadata(description = "Write consistency level", @@ -95,7 +95,8 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide return false; } else { LOGGER.debug("Row with {} columns to check key", row.getColumnDefinitions()); - return row.getColumnDefinitions().size() >= pkColumns.length; + int len = pkColumns.split(",").length; + return row.getColumnDefinitions().size() >= len; } } @@ -105,7 +106,11 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide } protected Object[] getPKValues(String key) { - return append(prefixPKValues, key); + if (prefixPKValues != null) { + return append(prefixPKValues.split(","), key); + } else { + return new Object[] { key }; + } } // ------------------------------------------------------------------------- // Lifecycle methods @@ -130,7 +135,7 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide // Add key to repository protected void initInsertStatement() { - Insert insert = generateInsert(table, pkColumns, true, ttl); + Insert insert = generateInsert(table, pkColumns.split(","), true, ttl); SimpleStatement statement = applyConsistencyLevel(insert.build(), writeConsistencyLevel); LOGGER.debug("Generated Insert {}", statement); insertStatement = getSession().prepare(statement); @@ -147,7 +152,7 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide // Check if key is in repository protected void initSelectStatement() { - Select select = generateSelect(table, pkColumns, pkColumns); + Select select = generateSelect(table, pkColumns.split(","), pkColumns.split(",")); SimpleStatement statement = applyConsistencyLevel(select.build(), readConsistencyLevel); LOGGER.debug("Generated Select {}", statement); selectStatement = getSession().prepare(statement); @@ -169,7 +174,7 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide // Remove key from repository protected void initDeleteStatement() { - Delete delete = generateDelete(table, pkColumns, true); + Delete delete = generateDelete(table, pkColumns.split(","), true); SimpleStatement statement = applyConsistencyLevel(delete.build(), writeConsistencyLevel); LOGGER.debug("Generated Delete {}", statement); deleteStatement = getSession().prepare(statement); @@ -217,18 +222,6 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide this.table = table; } - public String[] getPKColumns() { - return pkColumns; - } - - public void setPKColumns(String... pkColumns) { - this.pkColumns = pkColumns; - } - - public void setPKColumns(String value) { - this.pkColumns = value.split(","); - } - public Integer getTtl() { return ttl; } @@ -253,16 +246,19 @@ public class CassandraIdempotentRepository extends ServiceSupport implements Ide this.readConsistencyLevel = readConsistencyLevel; } - public String[] getPrefixPKValues() { + public String getPrefixPKValues() { return prefixPKValues; } - public void setPrefixPKValues(String[] prefixPKValues) { + public void setPrefixPKValues(String prefixPKValues) { this.prefixPKValues = prefixPKValues; } - public void setPrefixPKValues(String values) { - this.prefixPKValues = values.split(","); + public String getPkColumns() { + return pkColumns; } + public void setPkColumns(String pkColumns) { + this.pkColumns = pkColumns; + } } diff --git a/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepository.java b/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepository.java index 451c1e348b5..dfe42be15a5 100644 --- a/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepository.java +++ b/components/camel-cassandraql/src/main/java/org/apache/camel/processor/idempotent/cassandra/NamedCassandraIdempotentRepository.java @@ -25,22 +25,22 @@ import com.datastax.oss.driver.api.core.CqlSession; public class NamedCassandraIdempotentRepository extends CassandraIdempotentRepository { public NamedCassandraIdempotentRepository() { - setPKColumns("NAME", "KEY"); + setPkColumns("NAME,KEY"); setName("DEFAULT"); } public NamedCassandraIdempotentRepository(CqlSession session, String name) { super(session); - setPKColumns("NAME", "KEY"); + setPkColumns("NAME,KEY"); setName(name); } public String getName() { - return getPrefixPKValues()[0]; + return getPrefixPKValues().split(",")[0]; } public final void setName(String name) { - setPrefixPKValues(new String[] { name }); + setPrefixPKValues(name); } }