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

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

commit f08bb1dd23647d608ba6a2a83868e63005121eff
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Sep 26 14:25:54 2023 +0200

    CAMEL-19808: camel-core-model - Add init and destroy method to <bean>
---
 .../camel/model/app/RegistryBeanDefinition.java      | 20 ++++++++++++++++++++
 .../java/org/apache/camel/xml/in/ModelParser.java    |  2 ++
 .../java/org/apache/camel/xml/out/ModelWriter.java   |  2 ++
 .../org/apache/camel/xml/LwModelToXMLDumper.java     |  6 ++++++
 .../apache/camel/xml/jaxb/JaxbModelToXMLDumper.java  |  7 ++++++-
 .../java/org/apache/camel/yaml/out/ModelWriter.java  |  2 ++
 .../org/apache/camel/yaml/LwModelToYAMLDumper.java   |  6 ++++++
 .../main/xml/blueprint/BlueprintXmlBeansHandler.java |  8 ++++++++
 .../camel/main/xml/spring/SpringXmlBeansHandler.java |  6 ++++++
 .../dsl/yaml/deserializers/ModelDeserializers.java   | 12 ++++++++++++
 .../src/generated/resources/schema/camelYamlDsl.json |  6 ++++++
 11 files changed, 76 insertions(+), 1 deletion(-)

diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/app/RegistryBeanDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/app/RegistryBeanDefinition.java
index 70100e769cd..ad764a8aa71 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/app/RegistryBeanDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/app/RegistryBeanDefinition.java
@@ -47,6 +47,10 @@ public class RegistryBeanDefinition implements ResourceAware 
{
     @XmlAttribute(required = true)
     private String type;
     @XmlAttribute
+    private String initMethod;
+    @XmlAttribute
+    private String destroyMethod;
+    @XmlAttribute
     private String factoryMethod;
     @XmlAttribute
     private String factoryBean;
@@ -73,6 +77,22 @@ public class RegistryBeanDefinition implements ResourceAware 
{
         this.type = type;
     }
 
+    public String getInitMethod() {
+        return initMethod;
+    }
+
+    public void setInitMethod(String initMethod) {
+        this.initMethod = initMethod;
+    }
+
+    public String getDestroyMethod() {
+        return destroyMethod;
+    }
+
+    public void setDestroyMethod(String destroyMethod) {
+        this.destroyMethod = destroyMethod;
+    }
+
     public String getFactoryMethod() {
         return factoryMethod;
     }
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 7dcff72a36b..3e06002b2b6 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
@@ -1634,8 +1634,10 @@ public class ModelParser extends BaseParser {
     protected RegistryBeanDefinition doParseRegistryBeanDefinition() throws 
IOException, XmlPullParserException {
         return doParse(new RegistryBeanDefinition(), (def, key, val) -> {
             switch (key) {
+                case "destroyMethod": def.setDestroyMethod(val); break;
                 case "factoryBean": def.setFactoryBean(val); break;
                 case "factoryMethod": def.setFactoryMethod(val); break;
+                case "initMethod": def.setInitMethod(val); break;
                 case "name": def.setName(val); break;
                 case "type": def.setType(val); break;
                 default: return false;
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 4e228274c16..275afafab9c 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
@@ -2567,7 +2567,9 @@ public class ModelWriter extends BaseWriter {
             throws IOException {
         startElement(name);
         doWriteAttribute("factoryMethod", def.getFactoryMethod());
+        doWriteAttribute("initMethod", def.getInitMethod());
         doWriteAttribute("name", def.getName());
+        doWriteAttribute("destroyMethod", def.getDestroyMethod());
         doWriteAttribute("type", def.getType());
         doWriteAttribute("factoryBean", def.getFactoryBean());
         doWriteElement("constructors", new 
BeanConstructorsAdapter().marshal(def.getConstructors()), 
this::doWriteBeanConstructorsDefinition);
diff --git 
a/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java 
b/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java
index 7cec1ce562b..9ad46e95510 100644
--- 
a/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java
+++ 
b/core/camel-xml-io/src/main/java/org/apache/camel/xml/LwModelToXMLDumper.java
@@ -331,6 +331,12 @@ public class LwModelToXMLDumper implements 
ModelToXMLDumper {
             if (b.getFactoryMethod() != null) {
                 buffer.write(String.format(" factory-method=\"%s\"", 
b.getFactoryMethod()));
             }
+            if (b.getInitMethod() != null) {
+                buffer.write(String.format(" init-method=\"%s\"", 
b.getInitMethod()));
+            }
+            if (b.getDestroyMethod() != null) {
+                buffer.write(String.format(" destroy-method=\"%s\"", 
b.getDestroyMethod()));
+            }
             buffer.write(">\n");
             if (b.getConstructors() != null && !b.getConstructors().isEmpty()) 
{
                 buffer.write(String.format("        <constructors>%n"));
diff --git 
a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
 
b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
index 02e3078c6b1..6e6a1abe149 100644
--- 
a/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
+++ 
b/core/camel-xml-jaxb/src/main/java/org/apache/camel/xml/jaxb/JaxbModelToXMLDumper.java
@@ -338,13 +338,18 @@ public class JaxbModelToXMLDumper implements 
ModelToXMLDumper {
                 type = type.substring(7);
             }
             buffer.write(String.format("    <bean name=\"%s\" type=\"%s\"", 
b.getName(), type));
-            String factoryMethod = b.getFactoryMethod();
             if (b.getFactoryBean() != null) {
                 buffer.write(String.format(" factory-bean=\"%s\"", 
b.getFactoryBean()));
             }
             if (b.getFactoryMethod() != null) {
                 buffer.write(String.format(" factory-method=\"%s\"", 
b.getFactoryMethod()));
             }
+            if (b.getInitMethod() != null) {
+                buffer.write(String.format(" init-method=\"%s\"", 
b.getInitMethod()));
+            }
+            if (b.getDestroyMethod() != null) {
+                buffer.write(String.format(" destroy-method=\"%s\"", 
b.getDestroyMethod()));
+            }
             buffer.write(">\n");
             if (b.getConstructors() != null && !b.getConstructors().isEmpty()) 
{
                 buffer.write(String.format("        <constructors>%n"));
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 08c098e8cf0..cd2bdb66105 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
@@ -2567,7 +2567,9 @@ public class ModelWriter extends BaseWriter {
             throws IOException {
         startElement(name);
         doWriteAttribute("factoryMethod", def.getFactoryMethod());
+        doWriteAttribute("initMethod", def.getInitMethod());
         doWriteAttribute("name", def.getName());
+        doWriteAttribute("destroyMethod", def.getDestroyMethod());
         doWriteAttribute("type", def.getType());
         doWriteAttribute("factoryBean", def.getFactoryBean());
         doWriteElement("constructors", new 
BeanConstructorsAdapter().marshal(def.getConstructors()), 
this::doWriteBeanConstructorsDefinition);
diff --git 
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
 
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
index 2507043724a..46decad3e35 100644
--- 
a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
+++ 
b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/LwModelToYAMLDumper.java
@@ -320,6 +320,12 @@ public class LwModelToYAMLDumper implements 
ModelToYAMLDumper {
             if (b.getFactoryMethod() != null) {
                 buffer.write(String.format("      factoryMethod: \"%s\"%n", 
b.getFactoryMethod()));
             }
+            if (b.getInitMethod() != null) {
+                buffer.write(String.format("      initMethod: \"%s\"%n", 
b.getInitMethod()));
+            }
+            if (b.getDestroyMethod() != null) {
+                buffer.write(String.format("      destroyMethod: \"%s\"%n", 
b.getDestroyMethod()));
+            }
             if (b.getConstructors() != null && !b.getConstructors().isEmpty()) 
{
                 buffer.write(String.format("      constructors:%n"));
                 int counter = 0;
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
index cba1329dd65..c5037814ebb 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/blueprint/BlueprintXmlBeansHandler.java
@@ -116,6 +116,14 @@ public class BlueprintXmlBeansHandler {
         if (fm != null) {
             rrd.setFactoryMethod(fm);
         }
+        String im = XmlHelper.getAttribute(node, "init-method");
+        if (im != null) {
+            rrd.setInitMethod(fm);
+        }
+        String dm = XmlHelper.getAttribute(node, "destroy-method");
+        if (dm != null) {
+            rrd.setDestroyMethod(dm);
+        }
         // constructor arguments
         Map<Integer, Object> constructors = new LinkedHashMap<>();
         rrd.setConstructors(constructors);
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/spring/SpringXmlBeansHandler.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/spring/SpringXmlBeansHandler.java
index b371c5a2ac0..7fc231df481 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/spring/SpringXmlBeansHandler.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/xml/spring/SpringXmlBeansHandler.java
@@ -243,6 +243,12 @@ public class SpringXmlBeansHandler {
             if (def.getFactoryMethodName() != null) {
                 rrd.setFactoryMethod(def.getFactoryMethodName());
             }
+            if (def.getInitMethodName() != null) {
+                rrd.setInitMethod(def.getInitMethodName());
+            }
+            if (def.getDestroyMethodName() != null) {
+                rrd.setDestroyMethod(def.getDestroyMethodName());
+            }
             // constructor arguments
             if (def.hasConstructorArgumentValues()) {
                 Map<Integer, Object> constructors = new LinkedHashMap<>();
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index 45c0068500c..05674840b1e 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -12349,8 +12349,10 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
             properties = {
                     @YamlProperty(name = "constructors", type = "object"),
+                    @YamlProperty(name = "destroy-method", type = "string"),
                     @YamlProperty(name = "factory-bean", type = "string"),
                     @YamlProperty(name = "factory-method", type = "string"),
+                    @YamlProperty(name = "init-method", type = "string"),
                     @YamlProperty(name = "name", type = "string", required = 
true),
                     @YamlProperty(name = "properties", type = "object"),
                     @YamlProperty(name = "type", type = "string", required = 
true)
@@ -12375,6 +12377,11 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     target.setConstructors(val);
                     break;
                 }
+                case "destroy-method": {
+                    String val = asText(node);
+                    target.setDestroyMethod(val);
+                    break;
+                }
                 case "factory-bean": {
                     String val = asText(node);
                     target.setFactoryBean(val);
@@ -12385,6 +12392,11 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     target.setFactoryMethod(val);
                     break;
                 }
+                case "init-method": {
+                    String val = asText(node);
+                    target.setInitMethod(val);
+                    break;
+                }
                 case "name": {
                     String val = asText(node);
                     target.setName(val);
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
index 4c298bdbda4..cc9133aad35 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
@@ -8026,12 +8026,18 @@
           "constructors" : {
             "type" : "object"
           },
+          "destroyMethod" : {
+            "type" : "string"
+          },
           "factoryBean" : {
             "type" : "string"
           },
           "factoryMethod" : {
             "type" : "string"
           },
+          "initMethod" : {
+            "type" : "string"
+          },
           "name" : {
             "type" : "string"
           },

Reply via email to