This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch kamelet-ctr5 in repository https://gitbox.apache.org/repos/asf/camel.git
commit ba89f4878f9361a8a1f7618f8f45754e0c6f1683 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri May 3 07:11:18 2024 +0200 CAMEL-20514: camel-model - Add support for bean constructors for beans in route templates or kamelets --- .../org/apache/camel/impl/DefaultCamelContext.java | 6 +- .../camel/impl/DefaultDumpRoutesStrategy.java | 22 +++--- .../java/org/apache/camel/impl/DefaultModel.java | 14 ++-- .../org/apache/camel/builder/RouteBuilder.java | 10 +-- .../apache/camel/model/BeanFactoryDefinition.java | 81 +++++++++------------- .../org/apache/camel/model/BeanModelHelper.java | 5 +- .../main/java/org/apache/camel/model/Model.java | 5 +- .../camel/model/RouteTemplateDefinition.java | 23 +++--- .../camel/model/TemplatedRouteDefinition.java | 23 +++--- .../apache/camel/model/app/BeansDefinition.java | 7 +- .../camel/model/app/RegistryBeanDefinition.java | 3 +- .../org/apache/camel/xml/LwModelToXMLDumper.java | 12 ++-- .../org/apache/camel/xml/in/ModelParserTest.java | 14 ++-- .../camel/xml/jaxb/JaxbModelToXMLDumper.java | 12 ++-- .../org/apache/camel/yaml/LwModelToYAMLDumper.java | 12 ++-- 15 files changed, 117 insertions(+), 132 deletions(-) diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java index 3a7c8bec0a7..eba44f8353b 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultCamelContext.java @@ -44,6 +44,7 @@ import org.apache.camel.impl.engine.TransformerKey; import org.apache.camel.impl.engine.ValidatorKey; import org.apache.camel.impl.scan.AssignableToPackageScanFilter; import org.apache.camel.impl.scan.InvertingPackageScanFilter; +import org.apache.camel.model.BeanFactoryDefinition; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.model.FaultToleranceConfigurationDefinition; import org.apache.camel.model.Model; @@ -57,7 +58,6 @@ import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.RouteDefinitionHelper; import org.apache.camel.model.RouteTemplateDefinition; import org.apache.camel.model.TemplatedRouteDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.model.rest.RestDefinition; @@ -523,12 +523,12 @@ public class DefaultCamelContext extends SimpleCamelContext implements ModelCame } @Override - public void addRegistryBean(RegistryBeanDefinition bean) { + public void addRegistryBean(BeanFactoryDefinition bean) { model.addRegistryBean(bean); } @Override - public List<RegistryBeanDefinition> getRegistryBeans() { + public List<BeanFactoryDefinition> getRegistryBeans() { return model.getRegistryBeans(); } diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java index 44ab01bdb00..3843f451f72 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java @@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicInteger; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.NamedNode; +import org.apache.camel.model.BeanFactoryDefinition; import org.apache.camel.model.Model; import org.apache.camel.model.RouteConfigurationDefinition; import org.apache.camel.model.RouteConfigurationsDefinition; @@ -38,7 +39,6 @@ import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.RouteTemplateDefinition; import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.rest.RestsDefinition; import org.apache.camel.spi.DumpRoutesStrategy; @@ -166,18 +166,18 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou if (include.contains("*") || include.contains("all") || include.contains("beans")) { int size = model.getRegistryBeans().size(); if (size > 0) { - Map<Resource, List<RegistryBeanDefinition>> groups = new LinkedHashMap<>(); - for (RegistryBeanDefinition bean : model.getRegistryBeans()) { + Map<Resource, List<BeanFactoryDefinition>> groups = new LinkedHashMap<>(); + for (BeanFactoryDefinition bean : model.getRegistryBeans()) { Resource res = bean.getResource(); if (res == null) { res = dummy; } - List<RegistryBeanDefinition> beans = groups.computeIfAbsent(res, resource -> new ArrayList<>()); + List<BeanFactoryDefinition> beans = groups.computeIfAbsent(res, resource -> new ArrayList<>()); beans.add(bean); } StringBuilder sbLog = new StringBuilder(); - for (Map.Entry<Resource, List<RegistryBeanDefinition>> entry : groups.entrySet()) { - List<RegistryBeanDefinition> beans = entry.getValue(); + for (Map.Entry<Resource, List<BeanFactoryDefinition>> entry : groups.entrySet()) { + List<BeanFactoryDefinition> beans = entry.getValue(); Resource resource = entry.getKey(); StringBuilder sbLocal = new StringBuilder(); @@ -351,18 +351,18 @@ public class DefaultDumpRoutesStrategy extends ServiceSupport implements DumpRou if (include.contains("*") || include.contains("all") || include.contains("beans")) { int size = model.getRegistryBeans().size(); if (size > 0) { - Map<Resource, List<RegistryBeanDefinition>> groups = new LinkedHashMap<>(); - for (RegistryBeanDefinition bean : model.getRegistryBeans()) { + Map<Resource, List<BeanFactoryDefinition>> groups = new LinkedHashMap<>(); + for (BeanFactoryDefinition bean : model.getRegistryBeans()) { Resource res = bean.getResource(); if (res == null) { res = dummy; } - List<RegistryBeanDefinition> beans = groups.computeIfAbsent(res, resource -> new ArrayList<>()); + List<BeanFactoryDefinition> beans = groups.computeIfAbsent(res, resource -> new ArrayList<>()); beans.add(bean); } StringBuilder sbLog = new StringBuilder(); - for (Map.Entry<Resource, List<RegistryBeanDefinition>> entry : groups.entrySet()) { - List<RegistryBeanDefinition> beans = entry.getValue(); + for (Map.Entry<Resource, List<BeanFactoryDefinition>> entry : groups.entrySet()) { + List<BeanFactoryDefinition> beans = entry.getValue(); Resource resource = entry.getKey(); StringBuilder sbLocal = new StringBuilder(); diff --git a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java index 8717282647a..170c8132ef7 100644 --- a/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java +++ b/core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultModel.java @@ -29,6 +29,7 @@ import java.util.function.Function; import org.apache.camel.CamelContext; import org.apache.camel.FailedToCreateRouteFromTemplateException; import org.apache.camel.RouteTemplateContext; +import org.apache.camel.model.BeanFactoryDefinition; import org.apache.camel.model.BeanModelHelper; import org.apache.camel.model.DataFormatDefinition; import org.apache.camel.model.DefaultRouteTemplateContext; @@ -50,7 +51,6 @@ import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.TemplatedRouteDefinition; import org.apache.camel.model.TemplatedRouteParameterDefinition; import org.apache.camel.model.ToDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.transformer.TransformerDefinition; @@ -81,7 +81,7 @@ public class DefaultModel implements Model { private List<TransformerDefinition> transformers = new ArrayList<>(); private List<ValidatorDefinition> validators = new ArrayList<>(); // XML and YAML DSL allows to declare beans in the DSL - private final List<RegistryBeanDefinition> beans = new ArrayList<>(); + private final List<BeanFactoryDefinition> beans = new ArrayList<>(); private final Map<String, ServiceCallConfigurationDefinition> serviceCallConfigurations = new ConcurrentHashMap<>(); private final Map<String, Resilience4jConfigurationDefinition> resilience4jConfigurations = new ConcurrentHashMap<>(); private final Map<String, FaultToleranceConfigurationDefinition> faultToleranceConfigurations = new ConcurrentHashMap<>(); @@ -544,7 +544,7 @@ public class DefaultModel implements Model { private static void addTemplateBeans(RouteTemplateContext routeTemplateContext, RouteTemplateDefinition target) throws Exception { - for (RegistryBeanDefinition b : target.getTemplateBeans()) { + for (BeanFactoryDefinition b : target.getTemplateBeans()) { BeanModelHelper.bind(b, routeTemplateContext); } } @@ -556,9 +556,9 @@ public class DefaultModel implements Model { final RouteTemplateContext routeTemplateContext = toRouteTemplateContext(templatedRouteDefinition); // Bind the beans into the context - final List<RegistryBeanDefinition<TemplatedRouteDefinition>> beans = templatedRouteDefinition.getBeans(); + final List<BeanFactoryDefinition<TemplatedRouteDefinition>> beans = templatedRouteDefinition.getBeans(); if (beans != null) { - for (RegistryBeanDefinition<TemplatedRouteDefinition> beanDefinition : beans) { + for (BeanFactoryDefinition<TemplatedRouteDefinition> beanDefinition : beans) { BeanModelHelper.bind(beanDefinition, routeTemplateContext); } } @@ -784,14 +784,14 @@ public class DefaultModel implements Model { } @Override - public void addRegistryBean(RegistryBeanDefinition bean) { + public void addRegistryBean(BeanFactoryDefinition bean) { // remove exiting bean with same name to update beans.removeIf(b -> bean.getName().equals(b.getName())); beans.add(bean); } @Override - public List<RegistryBeanDefinition> getRegistryBeans() { + public List<BeanFactoryDefinition> getRegistryBeans() { return beans; } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java index 73c613d9c09..89e962ffc99 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java @@ -32,6 +32,7 @@ import org.apache.camel.ErrorHandlerFactory; import org.apache.camel.Ordered; import org.apache.camel.Route; import org.apache.camel.RoutesBuilder; +import org.apache.camel.model.BeanFactoryDefinition; import org.apache.camel.model.FromDefinition; import org.apache.camel.model.InterceptDefinition; import org.apache.camel.model.InterceptFromDefinition; @@ -46,7 +47,6 @@ import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.TemplatedRouteDefinition; import org.apache.camel.model.TemplatedRoutesDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.errorhandler.RefErrorHandlerDefinition; import org.apache.camel.model.rest.RestConfigurationDefinition; import org.apache.camel.model.rest.RestDefinition; @@ -77,7 +77,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild private final List<TransformerBuilder> transformerBuilders = new ArrayList<>(); private final List<ValidatorBuilder> validatorBuilders = new ArrayList<>(); // XML and YAML DSL allows to define custom beans which we need to capture - private final List<RegistryBeanDefinition> beans = new ArrayList<>(); + private final List<BeanFactoryDefinition> beans = new ArrayList<>(); private RestsDefinition restCollection = new RestsDefinition(); private RestConfigurationDefinition restConfiguration; @@ -784,7 +784,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild getRestCollection().setResource(getResource()); getRouteTemplateCollection().setResource(getResource()); getTemplatedRouteCollection().setResource(getResource()); - for (RegistryBeanDefinition def : beans) { + for (BeanFactoryDefinition def : beans) { def.setResource(getResource()); } @@ -928,7 +928,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild CamelContext camelContext = notNullCamelContext(); Model model = camelContext.getCamelContextExtension().getContextPlugin(Model.class); - for (RegistryBeanDefinition def : beans) { + for (BeanFactoryDefinition def : beans) { // add to model model.addRegistryBean(def); } @@ -944,7 +944,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild return getRestCollection(); } - public List<RegistryBeanDefinition> getBeans() { + public List<BeanFactoryDefinition> getBeans() { return beans; } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java index dd9d009ef06..7bb1222d64a 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/BeanFactoryDefinition.java @@ -24,6 +24,7 @@ import jakarta.xml.bind.annotation.XmlAccessorType; import jakarta.xml.bind.annotation.XmlAttribute; import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlTransient; +import jakarta.xml.bind.annotation.XmlType; import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import org.apache.camel.RouteTemplateContext; @@ -34,17 +35,12 @@ import org.apache.camel.spi.Resource; import org.apache.camel.spi.ResourceAware; /** - * Base class for nodes that define a bean factory. - * - * @param <T> the type of the bean factory. - * @param <P> the type of the parent node. + * Define custom beans that can be used in your Camel routes and in general. */ @Metadata(label = "configuration") +@XmlType @XmlAccessorType(XmlAccessType.FIELD) -public abstract class BeanFactoryDefinition< - T extends BeanFactoryDefinition<T, P>, P> implements ResourceAware { - - // TODO: only 1 class of this +public class BeanFactoryDefinition<P> implements ResourceAware { @XmlTransient private Resource resource; @@ -260,8 +256,7 @@ public abstract class BeanFactoryDefinition< * * #class or #type then the bean is created via the fully qualified classname, such as #class:com.foo.MyBean */ - @SuppressWarnings("unchecked") - public T type(String prefix, Class<?> type) { + public BeanFactoryDefinition<P> type(String prefix, Class<?> type) { if (prefix.startsWith("#type") || prefix.startsWith("#class")) { if (!prefix.endsWith(":")) { prefix = prefix + ":"; @@ -269,7 +264,7 @@ public abstract class BeanFactoryDefinition< setType(prefix + type.getName()); } setBeanType(type); - return (T) this; + return this; } /** @@ -277,14 +272,13 @@ public abstract class BeanFactoryDefinition< * * #class or #type then the bean is created via the fully qualified classname, such as #class:com.foo.MyBean */ - @SuppressWarnings("unchecked") - public T type(String type) { + public BeanFactoryDefinition<P> type(String type) { if (!type.startsWith("#")) { // use #class as default type = "#class:" + type; } setType(type); - return (T) this; + return this; } /** @@ -292,10 +286,9 @@ public abstract class BeanFactoryDefinition< * * @param type the type of the class to create as bean */ - @SuppressWarnings("unchecked") - public T typeClass(Class<?> type) { + public BeanFactoryDefinition<P> typeClass(Class<?> type) { setType("#class:" + type.getName()); - return (T) this; + return this; } /** @@ -303,10 +296,9 @@ public abstract class BeanFactoryDefinition< * * @param type the type of the class to create as bean */ - @SuppressWarnings("unchecked") - public T typeClass(String type) { + public BeanFactoryDefinition<P> typeClass(String type) { setType("#class:" + type); - return (T) this; + return this; } /** @@ -314,10 +306,9 @@ public abstract class BeanFactoryDefinition< * * @param type the fully qualified type of the returned bean */ - @SuppressWarnings("unchecked") - public T beanType(Class<?> type) { + public BeanFactoryDefinition<P> beanType(Class<?> type) { setBeanType(type); - return (T) this; + return this; } /** @@ -350,52 +341,52 @@ public abstract class BeanFactoryDefinition< * The name of the custom initialization method to invoke after setting bean properties. The method must have no * arguments, but may throw any exception. */ - public T initMethod(String initMethod) { + public BeanFactoryDefinition<P> initMethod(String initMethod) { setInitMethod(initMethod); - return (T) this; + return this; } /** * 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. */ - public T destroyMethod(String destroyMethod) { + public BeanFactoryDefinition<P> destroyMethod(String destroyMethod) { setDestroyMethod(destroyMethod); - return (T) this; + return this; } /** * Name of method to invoke when creating the bean via a factory bean. */ - public T factoryMethod(String factoryMethod) { + public BeanFactoryDefinition<P> factoryMethod(String factoryMethod) { setFactoryMethod(factoryMethod); - return (T) this; + return this; } /** * Name of factory bean (bean id) to use for creating the bean. */ - public T factoryBean(String factoryBean) { + public BeanFactoryDefinition<P> factoryBean(String factoryBean) { setFactoryBean(factoryBean); - return (T) this; + return this; } /** * 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. */ - public T builderClass(String builderClass) { + public BeanFactoryDefinition<P> builderClass(String builderClass) { setBuilderClass(builderClass); - return (T) this; + return this; } /** * 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). */ - public T builderMethod(String builderMethod) { + public BeanFactoryDefinition<P> builderMethod(String builderMethod) { setBuilderMethod(builderMethod); - return (T) this; + return this; } /** @@ -488,23 +479,21 @@ public abstract class BeanFactoryDefinition< * @param index the constructor index (starting from zero) * @param value the constructor value */ - @SuppressWarnings("unchecked") - public T constructor(Integer index, String value) { + public BeanFactoryDefinition<P> constructor(Integer index, String value) { if (constructors == null) { constructors = new LinkedHashMap<>(); } constructors.put(index, value); - return (T) this; + return this; } /** * Optional constructor arguments for creating the bean. Arguments correspond to specific index of the constructor * argument list, starting from zero. */ - @SuppressWarnings("unchecked") - public T constructors(Map<Integer, Object> constructors) { + public BeanFactoryDefinition<P> constructors(Map<Integer, Object> constructors) { this.constructors = constructors; - return (T) this; + return this; } /** @@ -513,22 +502,20 @@ public abstract class BeanFactoryDefinition< * @param key the property name * @param value the property value */ - @SuppressWarnings("unchecked") - public T property(String key, String value) { + public BeanFactoryDefinition<P> property(String key, String value) { if (properties == null) { properties = new LinkedHashMap<>(); } properties.put(key, value); - return (T) this; + return this; } /** * Sets properties to set on the created local bean */ - @SuppressWarnings("unchecked") - public T properties(Map<String, Object> properties) { + public BeanFactoryDefinition<P> properties(Map<String, Object> properties) { this.properties = properties; - return (T) this; + return this; } public P end() { diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/BeanModelHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/BeanModelHelper.java index c949f1961a8..c69642c26bd 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/BeanModelHelper.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/BeanModelHelper.java @@ -27,7 +27,6 @@ import org.apache.camel.Expression; import org.apache.camel.NoSuchBeanException; import org.apache.camel.RouteTemplateContext; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.spi.ExchangeFactory; import org.apache.camel.spi.Language; import org.apache.camel.spi.ScriptingLanguage; @@ -55,7 +54,7 @@ public final class BeanModelHelper { * @return the created bean instance * @throws Exception is thrown if error creating the bean */ - public static Object newInstance(RegistryBeanDefinition def, CamelContext context) throws Exception { + public static Object newInstance(BeanFactoryDefinition def, CamelContext context) throws Exception { Object target; String type = def.getType(); @@ -152,7 +151,7 @@ public final class BeanModelHelper { * @param routeTemplateContext the context into which the bean factory should be bound. * @throws Exception if an error occurs while trying to bind the bean factory */ - public static void bind(BeanFactoryDefinition<?, ?> def, RouteTemplateContext routeTemplateContext) + public static void bind(BeanFactoryDefinition<?> def, RouteTemplateContext routeTemplateContext) throws Exception { final Map<String, Object> props = new HashMap<>(); diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java b/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java index 7efa1b59452..0a307371885 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/Model.java @@ -23,7 +23,6 @@ import java.util.function.Function; import org.apache.camel.CamelContext; import org.apache.camel.RouteTemplateContext; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition; import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.transformer.TransformerDefinition; @@ -493,11 +492,11 @@ public interface Model { /** * Adds the custom bean */ - void addRegistryBean(RegistryBeanDefinition bean); + void addRegistryBean(BeanFactoryDefinition bean); /** * Gets the custom beans */ - List<RegistryBeanDefinition> getRegistryBeans(); + List<BeanFactoryDefinition> getRegistryBeans(); } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteTemplateDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteTemplateDefinition.java index e8849d78b11..c44c4de3f70 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteTemplateDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteTemplateDefinition.java @@ -33,7 +33,6 @@ import jakarta.xml.bind.annotation.XmlType; import org.apache.camel.Endpoint; import org.apache.camel.RouteTemplateContext; import org.apache.camel.builder.EndpointConsumerBuilder; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.spi.AsEndpointUri; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.Resource; @@ -56,7 +55,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT private List<RouteTemplateParameterDefinition> templateParameters; @XmlElement(name = "templateBean") @Metadata(description = "Adds a local bean the route template uses") - private List<RegistryBeanDefinition<RouteTemplateDefinition>> templateBeans; + private List<BeanFactoryDefinition<RouteTemplateDefinition>> templateBeans; @XmlElement(name = "route", required = true) private RouteDefinition route = new RouteDefinition(); @XmlTransient @@ -70,11 +69,11 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT this.templateParameters = templateParameters; } - public List<RegistryBeanDefinition<RouteTemplateDefinition>> getTemplateBeans() { + public List<BeanFactoryDefinition<RouteTemplateDefinition>> getTemplateBeans() { return templateBeans; } - public void setTemplateBeans(List<RegistryBeanDefinition<RouteTemplateDefinition>> templateBeans) { + public void setTemplateBeans(List<BeanFactoryDefinition<RouteTemplateDefinition>> templateBeans) { this.templateBeans = templateBeans; } @@ -225,7 +224,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition def = new RegistryBeanDefinition(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanType(type); templateBeans.add(def); @@ -243,7 +242,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition def = new RegistryBeanDefinition(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); if (bean instanceof RouteTemplateContext.BeanSupplier) { def.setBeanSupplier((RouteTemplateContext.BeanSupplier<Object>) bean); @@ -269,7 +268,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition def = new RegistryBeanDefinition(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition(); def.setName(name); def.setBeanSupplier(ctx -> ((Supplier<?>) bean).get()); templateBeans.add(def); @@ -287,7 +286,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition def = new RegistryBeanDefinition(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanType(type); def.setBeanSupplier(bean); @@ -306,7 +305,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition<RouteTemplateDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setScriptLanguage(language); def.setScript(script); @@ -326,7 +325,7 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition<RouteTemplateDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanType(type); def.setScriptLanguage(language); @@ -341,11 +340,11 @@ public class RouteTemplateDefinition extends OptionalIdentifiedDefinition<RouteT * @param name the name of the bean * @return fluent builder to choose which language and script to use for creating the bean */ - public RegistryBeanDefinition<RouteTemplateDefinition> templateBean(String name) { + public BeanFactoryDefinition<RouteTemplateDefinition> templateBean(String name) { if (templateBeans == null) { templateBeans = new ArrayList<>(); } - RegistryBeanDefinition<RouteTemplateDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<RouteTemplateDefinition> def = new BeanFactoryDefinition<>(); def.setParent(this); def.setName(name); templateBeans.add(def); diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteDefinition.java index e5f09bcd1aa..d3deb898f41 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/TemplatedRouteDefinition.java @@ -32,7 +32,6 @@ import jakarta.xml.bind.annotation.XmlType; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RouteTemplateContext; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.Resource; import org.apache.camel.spi.ResourceAware; @@ -62,7 +61,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar private List<TemplatedRouteParameterDefinition> parameters; @XmlElement(name = "bean") @Metadata(description = "Adds a local bean as input of the template to build the route") - private List<RegistryBeanDefinition<TemplatedRouteDefinition>> beans; + private List<BeanFactoryDefinition<TemplatedRouteDefinition>> beans; public String getRouteTemplateRef() { return routeTemplateRef; @@ -80,11 +79,11 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar this.parameters = parameters; } - public List<RegistryBeanDefinition<TemplatedRouteDefinition>> getBeans() { + public List<BeanFactoryDefinition<TemplatedRouteDefinition>> getBeans() { return beans; } - public void setBeans(List<RegistryBeanDefinition<TemplatedRouteDefinition>> beans) { + public void setBeans(List<BeanFactoryDefinition<TemplatedRouteDefinition>> beans) { this.beans = beans; } @@ -158,7 +157,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanType(type); beans.add(def); @@ -176,7 +175,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); if (bean instanceof RouteTemplateContext.BeanSupplier) { def.setBeanSupplier((RouteTemplateContext.BeanSupplier<Object>) bean); @@ -202,7 +201,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanSupplier(ctx -> ((Supplier<?>) bean).get()); beans.add(def); @@ -220,7 +219,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanType(type); def.setBeanSupplier(bean); @@ -239,7 +238,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setType(language); def.setScript(script); @@ -259,7 +258,7 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setName(name); def.setBeanType(type); def.setType(language); @@ -274,11 +273,11 @@ public class TemplatedRouteDefinition implements CamelContextAware, ResourceAwar * @param name the name of the bean * @return fluent builder to choose which language and script to use for creating the bean */ - public RegistryBeanDefinition<TemplatedRouteDefinition> bean(String name) { + public BeanFactoryDefinition<TemplatedRouteDefinition> bean(String name) { if (beans == null) { beans = new ArrayList<>(); } - RegistryBeanDefinition<TemplatedRouteDefinition> def = new RegistryBeanDefinition<>(); + BeanFactoryDefinition<TemplatedRouteDefinition> def = new BeanFactoryDefinition<>(); def.setParent(this); def.setName(name); beans.add(def); diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/app/BeansDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/app/BeansDefinition.java index 383505352fd..06b237025dc 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/app/BeansDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/app/BeansDefinition.java @@ -26,6 +26,7 @@ import jakarta.xml.bind.annotation.XmlElement; import jakarta.xml.bind.annotation.XmlRootElement; import jakarta.xml.bind.annotation.XmlType; +import org.apache.camel.model.BeanFactoryDefinition; import org.w3c.dom.Element; import org.apache.camel.model.RouteConfigurationDefinition; @@ -66,7 +67,7 @@ public class BeansDefinition { // to "bean processors" @XmlElement(name = "bean") - private List<RegistryBeanDefinition> beans = new ArrayList<>(); + private List<BeanFactoryDefinition> beans = new ArrayList<>(); // this is the only way I found to generate usable Schema without imports, while allowing elements // from different namespaces @@ -112,14 +113,14 @@ public class BeansDefinition { this.componentScanning = componentScanning; } - public List<RegistryBeanDefinition> getBeans() { + public List<BeanFactoryDefinition> getBeans() { return beans; } /** * List of bean */ - public void setBeans(List<RegistryBeanDefinition> beans) { + public void setBeans(List<BeanFactoryDefinition> beans) { this.beans = beans; } 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 e7a239d3863..c3c3bc4fea0 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 @@ -29,6 +29,7 @@ import org.apache.camel.spi.Metadata; @Metadata(label = "configuration") @XmlType @XmlAccessorType(XmlAccessType.FIELD) -public class RegistryBeanDefinition<P> extends BeanFactoryDefinition<RegistryBeanDefinition<P>, P> { +@Deprecated +public class RegistryBeanDefinition<P> extends BeanFactoryDefinition<P> { } 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 8e7d69b1d89..2a3afe62958 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 @@ -31,6 +31,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Expression; import org.apache.camel.NamedNode; +import org.apache.camel.model.BeanFactoryDefinition; import org.apache.camel.model.ExpressionNode; import org.apache.camel.model.FromDefinition; import org.apache.camel.model.OptionalIdentifiedDefinition; @@ -40,7 +41,6 @@ import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.SendDefinition; import org.apache.camel.model.ToDynamicDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.NamespaceAware; @@ -181,9 +181,9 @@ public class LwModelToXMLDumper implements ModelToXMLDumper { StringWriter buffer = new StringWriter(); BeanModelWriter writer = new BeanModelWriter(buffer); - List<RegistryBeanDefinition> list = new ArrayList<>(); + List<BeanFactoryDefinition> list = new ArrayList<>(); for (Object bean : beans) { - if (bean instanceof RegistryBeanDefinition rb) { + if (bean instanceof BeanFactoryDefinition rb) { list.add(rb); } } @@ -310,16 +310,16 @@ public class LwModelToXMLDumper implements ModelToXMLDumper { // noop } - public void writeBeans(List<RegistryBeanDefinition> beans) { + public void writeBeans(List<BeanFactoryDefinition> beans) { if (beans.isEmpty()) { return; } - for (RegistryBeanDefinition b : beans) { + for (BeanFactoryDefinition b : beans) { doWriteRegistryBeanDefinition(b); } } - private void doWriteRegistryBeanDefinition(RegistryBeanDefinition b) { + private void doWriteRegistryBeanDefinition(BeanFactoryDefinition b) { String type = b.getType(); if (type.startsWith("#class:")) { type = type.substring(7); diff --git a/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java b/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java index 65a70d24a95..a326de59fde 100644 --- a/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java +++ b/core/camel-xml-io/src/test/java/org/apache/camel/xml/in/ModelParserTest.java @@ -31,6 +31,7 @@ import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; +import org.apache.camel.model.BeanFactoryDefinition; import org.w3c.dom.Document; import org.apache.camel.model.FromDefinition; @@ -44,7 +45,6 @@ import org.apache.camel.model.SetBodyDefinition; import org.apache.camel.model.TemplatedRoutesDefinition; import org.apache.camel.model.ToDefinition; import org.apache.camel.model.app.BeansDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.errorhandler.DeadLetterChannelDefinition; import org.apache.camel.model.language.XPathExpression; import org.apache.camel.model.rest.ParamDefinition; @@ -259,8 +259,8 @@ public class ModelParserTest { assertEquals(2, beans.getBeans().size()); assertTrue(beans.getSpringBeans().isEmpty()); - RegistryBeanDefinition b1 = beans.getBeans().get(0); - RegistryBeanDefinition b2 = beans.getBeans().get(1); + BeanFactoryDefinition b1 = beans.getBeans().get(0); + BeanFactoryDefinition b2 = beans.getBeans().get(1); assertEquals("b1", b1.getName()); assertEquals("org.apache.camel.xml.in.ModelParserTest.MyBean", b1.getType()); @@ -289,8 +289,8 @@ public class ModelParserTest { assertEquals(2, beans.getBeans().size()); assertTrue(beans.getSpringBeans().isEmpty()); - RegistryBeanDefinition b1 = beans.getBeans().get(0); - RegistryBeanDefinition b2 = beans.getBeans().get(1); + BeanFactoryDefinition b1 = beans.getBeans().get(0); + BeanFactoryDefinition b2 = beans.getBeans().get(1); assertEquals("b1", b1.getName()); assertEquals("org.apache.camel.xml.in.ModelParserTest.MyBean", b1.getType()); @@ -316,8 +316,8 @@ public class ModelParserTest { assertEquals(2, beans.getBeans().size()); assertTrue(beans.getSpringBeans().isEmpty()); - RegistryBeanDefinition b1 = beans.getBeans().get(0); - RegistryBeanDefinition b2 = beans.getBeans().get(1); + BeanFactoryDefinition b1 = beans.getBeans().get(0); + BeanFactoryDefinition b2 = beans.getBeans().get(1); assertEquals("b1", b1.getName()); assertEquals("org.apache.camel.xml.in.ModelParserTest.MyBean", b1.getType()); 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 aa7099929a1..0c0e3b71d52 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 @@ -36,6 +36,7 @@ import jakarta.xml.bind.Marshaller; import javax.xml.transform.OutputKeys; import javax.xml.transform.TransformerException; +import org.apache.camel.model.BeanFactoryDefinition; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -49,7 +50,6 @@ import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.RouteTemplateDefinition; import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.spi.ModelToXMLDumper; import org.apache.camel.spi.PropertiesComponent; import org.apache.camel.spi.annotations.JdkService; @@ -227,9 +227,9 @@ public class JaxbModelToXMLDumper implements ModelToXMLDumper { StringWriter buffer = new StringWriter(); BeanModelWriter writer = new BeanModelWriter(buffer); - List<RegistryBeanDefinition> list = new ArrayList<>(); + List<BeanFactoryDefinition> list = new ArrayList<>(); for (Object bean : beans) { - if (bean instanceof RegistryBeanDefinition rb) { + if (bean instanceof BeanFactoryDefinition rb) { list.add(rb); } } @@ -295,16 +295,16 @@ public class JaxbModelToXMLDumper implements ModelToXMLDumper { // noop } - public void writeBeans(List<RegistryBeanDefinition> beans) { + public void writeBeans(List<BeanFactoryDefinition> beans) { if (beans.isEmpty()) { return; } - for (RegistryBeanDefinition b : beans) { + for (BeanFactoryDefinition b : beans) { doWriteRegistryBeanDefinition(b); } } - private void doWriteRegistryBeanDefinition(RegistryBeanDefinition b) { + private void doWriteRegistryBeanDefinition(BeanFactoryDefinition b) { String type = b.getType(); if (type.startsWith("#class:")) { type = type.substring(7); 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 d4376b550ae..735800925a9 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 @@ -32,6 +32,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Expression; import org.apache.camel.NamedNode; +import org.apache.camel.model.BeanFactoryDefinition; import org.apache.camel.model.ExpressionNode; import org.apache.camel.model.FromDefinition; import org.apache.camel.model.OptionalIdentifiedDefinition; @@ -41,7 +42,6 @@ import org.apache.camel.model.RouteTemplatesDefinition; import org.apache.camel.model.RoutesDefinition; import org.apache.camel.model.SendDefinition; import org.apache.camel.model.ToDynamicDefinition; -import org.apache.camel.model.app.RegistryBeanDefinition; import org.apache.camel.model.language.ExpressionDefinition; import org.apache.camel.spi.ModelToYAMLDumper; import org.apache.camel.spi.NamespaceAware; @@ -169,9 +169,9 @@ public class LwModelToYAMLDumper implements ModelToYAMLDumper { StringWriter buffer = new StringWriter(); BeanModelWriter writer = new BeanModelWriter(buffer); - List<RegistryBeanDefinition> list = new ArrayList<>(); + List<BeanFactoryDefinition> list = new ArrayList<>(); for (Object bean : beans) { - if (bean instanceof RegistryBeanDefinition rb) { + if (bean instanceof BeanFactoryDefinition rb) { list.add(rb); } } @@ -298,17 +298,17 @@ public class LwModelToYAMLDumper implements ModelToYAMLDumper { // noop } - public void writeBeans(List<RegistryBeanDefinition> beans) { + public void writeBeans(List<BeanFactoryDefinition> beans) { if (beans.isEmpty()) { return; } buffer.write("- beans:\n"); - for (RegistryBeanDefinition b : beans) { + for (BeanFactoryDefinition b : beans) { doWriteRegistryBeanDefinition(b); } } - private void doWriteRegistryBeanDefinition(RegistryBeanDefinition b) { + private void doWriteRegistryBeanDefinition(BeanFactoryDefinition b) { String type = b.getType(); if (type.startsWith("#class:")) { type = type.substring(7);