This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch kamelet-ctr4 in repository https://gitbox.apache.org/repos/asf/camel.git
commit 1af7be28e1d8fcb06926549c4d5fc5e6db334fa4 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu May 2 22:02:03 2024 +0200 CAMEL-20514: camel-model - Add support for bean constructors for beans in route templates or kamelets --- .../org/apache/camel/model/templatedRouteBean.json | 28 --------- .../services/org/apache/camel/model.properties | 1 - .../resources/org/apache/camel/model/jaxb.index | 1 - .../camel/model/TemplatedRouteBeanDefinition.java | 34 ----------- .../java/org/apache/camel/xml/in/ModelParser.java | 71 +++++++++++----------- .../java/org/apache/camel/xml/out/ModelWriter.java | 9 --- .../org/apache/camel/yaml/out/ModelWriter.java | 9 --- 7 files changed, 34 insertions(+), 119 deletions(-) diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json deleted file mode 100644 index d487b346f69..00000000000 --- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/templatedRouteBean.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "model": { - "kind": "model", - "name": "templatedRouteBean", - "title": "Templated Route Bean", - "description": "A bean as input of a route template (local bean)", - "deprecated": true, - "label": "configuration", - "javaType": "org.apache.camel.model.TemplatedRouteBeanDefinition", - "abstract": false, - "input": false, - "output": false - }, - "properties": { - "name": { "index": 0, "kind": "attribute", "displayName": "Name", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the bean (bean id)" }, - "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The class name (fully qualified) of the bean" }, - "initMethod": { "index": 2, "kind": "attribute", "displayName": "Init Method", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception." }, - "destroyMethod": { "index": 3, "kind": "attribute", "displayName": "Destroy Method", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The name of the custom destroy method to invoke on bean shutdown, such as when Camel is shutting down. The method must have no arguments, but may throw any exception." }, - "factoryMethod": { "index": 4, "kind": "attribute", "displayName": "Factory Method", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of method to invoke when creating the bean via a factory bean." }, - "factoryBean": { "index": 5, "kind": "attribute", "displayName": "Factory Bean", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of factory bean (bean id) to use for creating the bean." }, - "builderClass": { "index": 6, "kind": "attribute", "displayName": "Builder Class", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Fully qualified class name of builder class to use for creating and configuring the bean. The builder will use the properties values to configure the bean." }, - "builderMethod": { "index": 7, "kind": "attribute", "displayName": "Builder Method", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "build", "description": "Name of method when using builder class. This method is invoked after configuring to create the actual bean. This method is often named build (used by default)." }, - "scriptLanguage": { "index": 8, "kind": "attribute", "displayName": "Script Language", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The script language to use when using inlined script for creating the bean, such as groovy, java, javascript etc." }, - "constructors": { "index": 9, "kind": "element", "displayName": "Constructors", "group": "common", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.Integer, java.lang.Object>", "deprecated": false, "autowired": false, "secret": false, "description": "Optional constructor arguments for creating the bean. Arguments correspond to specific index of the constructor argument list, starting from zero." }, - "properties": { "index": 10, "kind": "element", "displayName": "Properties", "group": "common", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "deprecated": false, "autowired": false, "secret": false, "description": "Optional properties to set on the created bean." }, - "script": { "index": 11, "kind": "element", "displayName": "Script", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The script to execute that creates the bean when using scripting languages. If the script use the prefix resource: such as resource:classpath:com\/foo\/myscript.groovy, resource:file:\/var\/myscript.groovy, then its loaded from the ex [...] - } -} diff --git a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties index e58e8efc4ee..85aabd5069c 100644 --- a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties +++ b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties @@ -193,7 +193,6 @@ syslog tarFile templateParameter templatedRoute -templatedRouteBean templatedRouteParameter templatedRoutes threadPoolProfile diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index b/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index index 551d455421c..5ff0c2477d3 100644 --- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index +++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/jaxb.index @@ -92,7 +92,6 @@ SortDefinition SplitDefinition StepDefinition StopDefinition -TemplatedRouteBeanDefinition TemplatedRouteDefinition TemplatedRouteParameterDefinition TemplatedRoutesDefinition diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteBeanDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteBeanDefinition.java deleted file mode 100644 index a88081cd84c..00000000000 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteBeanDefinition.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.model; - -import jakarta.xml.bind.annotation.XmlAccessType; -import jakarta.xml.bind.annotation.XmlAccessorType; -import jakarta.xml.bind.annotation.XmlRootElement; - -import org.apache.camel.spi.Metadata; - -/** - * A bean as input of a route template (local bean) - */ -@Metadata(label = "configuration") -@XmlRootElement(name = "templatedRouteBean") -@XmlAccessorType(XmlAccessType.FIELD) -@Deprecated -public class TemplatedRouteBeanDefinition - extends BeanFactoryDefinition<TemplatedRouteBeanDefinition, TemplatedRouteDefinition> { -} diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java index 1c8833dd7f4..ebaa69a555c 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java @@ -1078,43 +1078,6 @@ public class ModelParser extends BaseParser { protected StopDefinition doParseStopDefinition() throws IOException, XmlPullParserException { return doParse(new StopDefinition(), processorDefinitionAttributeHandler(), optionalIdentifiedDefinitionElementHandler(), noValueHandler()); } - protected TemplatedRouteBeanDefinition doParseTemplatedRouteBeanDefinition() throws IOException, XmlPullParserException { - return doParse(new TemplatedRouteBeanDefinition(), beanFactoryDefinitionAttributeHandler(), beanFactoryDefinitionElementHandler(), noValueHandler()); - } - protected <T extends BeanFactoryDefinition> AttributeHandler<T> beanFactoryDefinitionAttributeHandler() { - return (def, key, val) -> switch (key) { - case "builderClass": def.setBuilderClass(val); yield true; - case "builderMethod": def.setBuilderMethod(val); yield true; - case "destroyMethod": def.setDestroyMethod(val); yield true; - case "factoryBean": def.setFactoryBean(val); yield true; - case "factoryMethod": def.setFactoryMethod(val); yield true; - case "initMethod": def.setInitMethod(val); yield true; - case "name": def.setName(val); yield true; - case "scriptLanguage": def.setScriptLanguage(val); yield true; - case "type": def.setType(val); yield true; - default: yield false; - }; - } - protected <T extends BeanFactoryDefinition> ElementHandler<T> beanFactoryDefinitionElementHandler() { - return (def, key) -> switch (key) { - case "constructors": def.setConstructors(new BeanConstructorsAdapter().unmarshal(doParseBeanConstructorsDefinition())); yield true; - case "properties": def.setProperties(new BeanPropertiesAdapter().unmarshal(doParseBeanPropertiesDefinition())); yield true; - case "script": def.setScript(doParseText()); yield true; - default: yield false; - }; - } - protected BeanConstructorsDefinition doParseBeanConstructorsDefinition() throws IOException, XmlPullParserException { - return doParse(new BeanConstructorsDefinition(), noAttributeHandler(), (def, key) -> switch (key) { - case "constructor": doAdd(doParseBeanConstructorDefinition(), def.getConstructors(), def::setConstructors); yield true; - default: yield false; - }, noValueHandler()); - } - protected BeanPropertiesDefinition doParseBeanPropertiesDefinition() throws IOException, XmlPullParserException { - return doParse(new BeanPropertiesDefinition(), noAttributeHandler(), (def, key) -> switch (key) { - case "property": doAdd(doParseBeanPropertyDefinition(), def.getProperties(), def::setProperties); yield true; - default: yield false; - }, noValueHandler()); - } protected TemplatedRouteDefinition doParseTemplatedRouteDefinition() throws IOException, XmlPullParserException { return doParse(new TemplatedRouteDefinition(), (def, key, val) -> switch (key) { case "prefixId": def.setPrefixId(val); yield true; @@ -1391,6 +1354,18 @@ public class ModelParser extends BaseParser { default: yield false; }, noElementHandler(), noValueHandler()); } + protected BeanConstructorsDefinition doParseBeanConstructorsDefinition() throws IOException, XmlPullParserException { + return doParse(new BeanConstructorsDefinition(), noAttributeHandler(), (def, key) -> switch (key) { + case "constructor": doAdd(doParseBeanConstructorDefinition(), def.getConstructors(), def::setConstructors); yield true; + default: yield false; + }, noValueHandler()); + } + protected BeanPropertiesDefinition doParseBeanPropertiesDefinition() throws IOException, XmlPullParserException { + return doParse(new BeanPropertiesDefinition(), noAttributeHandler(), (def, key) -> switch (key) { + case "property": doAdd(doParseBeanPropertyDefinition(), def.getProperties(), def::setProperties); yield true; + default: yield false; + }, noValueHandler()); + } protected BeanPropertyDefinition doParseBeanPropertyDefinition() throws IOException, XmlPullParserException { return doParse(new BeanPropertyDefinition(), (def, key, val) -> switch (key) { case "key": def.setKey(val); yield true; @@ -1401,6 +1376,28 @@ public class ModelParser extends BaseParser { default: yield false; }, noValueHandler()); } + protected <T extends BeanFactoryDefinition> AttributeHandler<T> beanFactoryDefinitionAttributeHandler() { + return (def, key, val) -> switch (key) { + case "builderClass": def.setBuilderClass(val); yield true; + case "builderMethod": def.setBuilderMethod(val); yield true; + case "destroyMethod": def.setDestroyMethod(val); yield true; + case "factoryBean": def.setFactoryBean(val); yield true; + case "factoryMethod": def.setFactoryMethod(val); yield true; + case "initMethod": def.setInitMethod(val); yield true; + case "name": def.setName(val); yield true; + case "scriptLanguage": def.setScriptLanguage(val); yield true; + case "type": def.setType(val); yield true; + default: yield false; + }; + } + protected <T extends BeanFactoryDefinition> ElementHandler<T> beanFactoryDefinitionElementHandler() { + return (def, key) -> switch (key) { + case "constructors": def.setConstructors(new BeanConstructorsAdapter().unmarshal(doParseBeanConstructorsDefinition())); yield true; + case "properties": def.setProperties(new BeanPropertiesAdapter().unmarshal(doParseBeanPropertiesDefinition())); yield true; + case "script": def.setScript(doParseText()); yield true; + default: yield false; + }; + } protected BlacklistServiceCallServiceFilterConfiguration doParseBlacklistServiceCallServiceFilterConfiguration() throws IOException, XmlPullParserException { return doParse(new BlacklistServiceCallServiceFilterConfiguration(), identifiedTypeAttributeHandler(), (def, key) -> switch (key) { case "servers": doAdd(doParseText(), def.getServers(), def::setServers); yield true; diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java index b8cd80175f7..bae84909145 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java @@ -303,9 +303,6 @@ public class ModelWriter extends BaseWriter { public void writeStopDefinition(StopDefinition def) throws IOException { doWriteStopDefinition("stop", def); } - public void writeTemplatedRouteBeanDefinition(TemplatedRouteBeanDefinition def) throws IOException { - doWriteTemplatedRouteBeanDefinition("templatedRouteBean", def); - } public void writeTemplatedRouteDefinition(TemplatedRouteDefinition def) throws IOException { doWriteTemplatedRouteDefinition("templatedRoute", def); } @@ -1727,12 +1724,6 @@ public class ModelWriter extends BaseWriter { doWriteProcessorDefinitionAttributes(def); endElement(name); } - protected void doWriteTemplatedRouteBeanDefinition(String name, TemplatedRouteBeanDefinition def) throws IOException { - startElement(name); - doWriteBeanFactoryDefinitionAttributes(def); - doWriteBeanFactoryDefinitionElements(def); - endElement(name); - } protected void doWriteTemplatedRouteDefinition(String name, TemplatedRouteDefinition def) throws IOException { startElement(name); doWriteAttribute("routeId", def.getRouteId()); diff --git a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java index 6a1e6fc3a1d..51a66d56caf 100644 --- a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java +++ b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java @@ -303,9 +303,6 @@ public class ModelWriter extends BaseWriter { public void writeStopDefinition(StopDefinition def) throws IOException { doWriteStopDefinition("stop", def); } - public void writeTemplatedRouteBeanDefinition(TemplatedRouteBeanDefinition def) throws IOException { - doWriteTemplatedRouteBeanDefinition("templatedRouteBean", def); - } public void writeTemplatedRouteDefinition(TemplatedRouteDefinition def) throws IOException { doWriteTemplatedRouteDefinition("templatedRoute", def); } @@ -1727,12 +1724,6 @@ public class ModelWriter extends BaseWriter { doWriteProcessorDefinitionAttributes(def); endElement(name); } - protected void doWriteTemplatedRouteBeanDefinition(String name, TemplatedRouteBeanDefinition def) throws IOException { - startElement(name); - doWriteBeanFactoryDefinitionAttributes(def); - doWriteBeanFactoryDefinitionElements(def); - endElement(name); - } protected void doWriteTemplatedRouteDefinition(String name, TemplatedRouteDefinition def) throws IOException { startElement(name); doWriteAttribute("routeId", def.getRouteId());