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

commit 1c66edc3cecf750746a906df2c0d437d38e149fd
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri May 14 12:43:33 2021 +0200

    CAMEL-16614: camel-core - Generated type converter should be 
CamelContextAware
---
 .../impl/converter/BaseTypeConverterRegistry.java  |  2 ++
 .../jaxp/CamelXmlJaxpBulkConverterLoader.java      |  7 ++--
 .../TypeConverterLoaderGeneratorMojo.java          | 38 ++++++++++++++++++++--
 3 files changed, 40 insertions(+), 7 deletions(-)

diff --git 
a/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
 
b/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
index be827d2..c56d231 100644
--- 
a/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
+++ 
b/core/camel-base/src/main/java/org/apache/camel/impl/converter/BaseTypeConverterRegistry.java
@@ -91,6 +91,7 @@ public abstract class BaseTypeConverterRegistry extends 
CoreTypeConverterRegistr
         try {
             // scan the class for @Converter and load them into this registry
             TypeConvertersLoader loader = new 
TypeConvertersLoader(typeConverters);
+            CamelContextAware.trySetCamelContext(loader, getCamelContext());
             loader.load(this);
         } catch (TypeConverterLoaderException e) {
             throw RuntimeCamelException.wrapRuntimeCamelException(e);
@@ -163,6 +164,7 @@ public abstract class BaseTypeConverterRegistry extends 
CoreTypeConverterRegistr
                 throw new ClassNotFoundException(name);
             }
             Object obj = getInjector().newInstance(clazz, false);
+            CamelContextAware.trySetCamelContext(obj, getCamelContext());
             if (obj instanceof TypeConverterLoader) {
                 TypeConverterLoader loader = (TypeConverterLoader) obj;
                 LOG.debug("TypeConverterLoader: {} loading converters", name);
diff --git 
a/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java
 
b/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java
index ade46cd..f0d8daa 100644
--- 
a/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java
+++ 
b/core/camel-xml-jaxp/src/generated/java/org/apache/camel/converter/jaxp/CamelXmlJaxpBulkConverterLoader.java
@@ -1,11 +1,7 @@
 /* Generated by camel build tools - do NOT edit this file! */
 package org.apache.camel.converter.jaxp;
 
-import org.apache.camel.Exchange;
-import org.apache.camel.Ordered;
-import org.apache.camel.TypeConversionException;
-import org.apache.camel.TypeConverterLoaderException;
-import org.apache.camel.TypeConverter;
+import org.apache.camel.*;
 import org.apache.camel.spi.BulkTypeConverters;
 import org.apache.camel.spi.TypeConverterLoader;
 import org.apache.camel.spi.TypeConverterRegistry;
@@ -692,6 +688,7 @@ public final class CamelXmlJaxpBulkConverterLoader 
implements TypeConverterLoade
     private org.apache.camel.converter.jaxp.StaxConverter getStaxConverter() {
         if (staxConverter == null) {
             staxConverter = new 
org.apache.camel.converter.jaxp.StaxConverter();
+            CamelContextAware.trySetCamelContext(staxConverter, camelContext);
         }
         return staxConverter;
     }
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
index bac0fe2..24a2129 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
@@ -183,6 +183,8 @@ public class TypeConverterLoaderGeneratorMojo extends 
AbstractGeneratorMojo {
         writer.append("/* ").append(GENERATED_MSG).append(" */\n");
         writer.append("package ").append(p).append(";\n");
         writer.append("\n");
+        writer.append("import org.apache.camel.CamelContext;\n");
+        writer.append("import org.apache.camel.CamelContextAware;\n");
         writer.append("import org.apache.camel.Exchange;\n");
         writer.append("import org.apache.camel.Ordered;\n");
         writer.append("import org.apache.camel.TypeConversionException;\n");
@@ -196,12 +198,26 @@ public class TypeConverterLoaderGeneratorMojo extends 
AbstractGeneratorMojo {
         writer.append(" * ").append(GENERATED_MSG).append("\n");
         writer.append(" */\n");
         writer.append("@SuppressWarnings(\"unchecked\")\n");
-        writer.append("public final class ").append(c).append(" implements 
TypeConverterLoader, BulkTypeConverters {\n");
+        writer.append("public final class ").append(c)
+                .append(" implements TypeConverterLoader, BulkTypeConverters, 
CamelContextAware {\n");
+        writer.append("\n");
+        writer.append("    private CamelContext camelContext;\n");
         writer.append("\n");
         writer.append("    ").append("public ").append(c).append("() {\n");
         writer.append("    }\n");
         writer.append("\n");
 
+        writer.append("    @Override\n");
+        writer.append("    public void setCamelContext(CamelContext 
camelContext) {\n");
+        writer.append("        this.camelContext = camelContext;\n");
+        writer.append("    }\n");
+        writer.append("\n");
+        writer.append("    @Override\n");
+        writer.append("    public CamelContext getCamelContext() {\n");
+        writer.append("        return camelContext;\n");
+        writer.append("    }\n");
+        writer.append("\n");
+
         if (base) {
             // we want to be highest ordered for the base converters
             writer.append("    @Override\n");
@@ -260,6 +276,7 @@ public class TypeConverterLoaderGeneratorMojo extends 
AbstractGeneratorMojo {
             writer.append("    private ").append(f).append(" 
get").append(s).append("() {\n");
             writer.append("        if (").append(v).append(" == null) {\n");
             writer.append("            ").append(v).append(" = new 
").append(f).append("();\n");
+            writer.append("            
CamelContextAware.trySetCamelContext(").append(v).append(", camelContext);\n");
             writer.append("        }\n");
             writer.append("        return ").append(v).append(";\n");
             writer.append("    }\n");
@@ -370,6 +387,8 @@ public class TypeConverterLoaderGeneratorMojo extends 
AbstractGeneratorMojo {
         writer.append("/* ").append(GENERATED_MSG).append(" */\n");
         writer.append("package ").append(p).append(";\n");
         writer.append("\n");
+        writer.append("import org.apache.camel.CamelContext;\n");
+        writer.append("import org.apache.camel.CamelContextAware;\n");
         writer.append("import org.apache.camel.Exchange;\n");
         writer.append("import org.apache.camel.TypeConversionException;\n");
         writer.append("import 
org.apache.camel.TypeConverterLoaderException;\n");
@@ -383,11 +402,25 @@ public class TypeConverterLoaderGeneratorMojo extends 
AbstractGeneratorMojo {
         writer.append(" * ").append(GENERATED_MSG).append("\n");
         writer.append(" */\n");
         writer.append("@SuppressWarnings(\"unchecked\")\n");
-        writer.append("public final class ").append(c).append(" implements 
TypeConverterLoader {\n");
+        writer.append("public final class ").append(c).append(" implements 
TypeConverterLoader, CamelContextAware {\n");
+        writer.append("\n");
+        writer.append("    private CamelContext camelContext;\n");
         writer.append("\n");
         writer.append("    ").append("public ").append(c).append("() {\n");
         writer.append("    }\n");
         writer.append("\n");
+
+        writer.append("    @Override\n");
+        writer.append("    public void setCamelContext(CamelContext 
camelContext) {\n");
+        writer.append("        this.camelContext = camelContext;\n");
+        writer.append("    }\n");
+        writer.append("\n");
+        writer.append("    @Override\n");
+        writer.append("    public CamelContext getCamelContext() {\n");
+        writer.append("        return camelContext;\n");
+        writer.append("    }\n");
+        writer.append("\n");
+
         writer.append("    @Override\n");
         writer.append("    public void load(TypeConverterRegistry registry) 
throws TypeConverterLoaderException {\n");
         if (converters.size() > 0) {
@@ -458,6 +491,7 @@ public class TypeConverterLoaderGeneratorMojo extends 
AbstractGeneratorMojo {
             writer.append("    private ").append(f).append(" 
get").append(s).append("() {\n");
             writer.append("        if (").append(v).append(" == null) {\n");
             writer.append("            ").append(v).append(" = new 
").append(f).append("();\n");
+            writer.append("            
CamelContextAware.trySetCamelContext(").append(v).append(", camelContext);\n");
             writer.append("        }\n");
             writer.append("        return ").append(v).append(";\n");
             writer.append("    }\n");

Reply via email to