You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gg...@apache.org on 2023/05/19 11:05:02 UTC

[camel] 06/06: [CAMEL-18189] camel-xml-io-dsl handles element similar to YAML DSL

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

ggrzybek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit ca16f95c90b3cb2df5889ff0914c39d6de6832bc
Author: Grzegorz Grzybek <gr...@gmail.com>
AuthorDate: Fri May 19 11:30:37 2023 +0200

    [CAMEL-18189] camel-xml-io-dsl handles <bean> element similar to YAML DSL
    
    * <camel-app> is renamed to <camel> root element (alias to <beans>)
---
 .../org/apache/camel/catalog/models.properties     |  2 +-
 .../org/apache/camel/catalog/models/camel-app.json |  6 +-
 .../apache/camel/catalog/schemas/camel-spring.xsd  |  5 +-
 .../java/org/apache/camel/impl/DefaultModel.java   | 74 ++--------------------
 .../services/org/apache/camel/model.properties     |  2 +-
 .../camel/model/app/{camel-app.json => camel.json} |  6 +-
 .../camel/model/app/ApplicationDefinition.java     |  5 +-
 .../camel/support/PropertyBindingSupport.java      | 63 ++++++++++++++++++
 .../java/org/apache/camel/xml/in/ModelParser.java  |  4 +-
 .../java/org/apache/camel/xml/out/ModelWriter.java |  2 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  3 +-
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   | 26 +++++++-
 .../apache/camel/dsl/xml/io/XmlLoadAppTest.java    | 55 +++++++++++++++-
 .../org/apache/camel/dsl/xml/io/beans/Greeter.java |  3 -
 .../camel/dsl/xml/io/beans/GreeterMessage.java     |  8 ++-
 .../beans/{Greeter.java => StandaloneGreeter.java} |  9 +--
 .../org/apache/camel/dsl/xml/io/camel-app1.xml     |  4 +-
 .../org/apache/camel/dsl/xml/io/camel-app2.xml     |  4 +-
 .../dsl/xml/io/{camel-app1.xml => camel-app3.xml}  | 18 ++++--
 .../dsl/xml/io/{camel-app1.xml => camel-app4.xml}  | 18 ++++--
 .../apache/camel/dsl/yaml/common/YamlSupport.java  | 61 ------------------
 .../dsl/yaml/deserializers/ModelDeserializers.java |  2 +-
 .../deserializers/ModelDeserializersResolver.java  |  2 +-
 .../dsl/yaml/deserializers/BeansDeserializer.java  |  2 +-
 .../dsl/yaml/GenerateYamlDeserializersMojo.java    |  6 +-
 .../packaging/ModelXmlParserGeneratorMojo.java     |  4 +-
 .../packaging/ModelXmlWriterGeneratorMojo.java     | 10 +--
 27 files changed, 207 insertions(+), 197 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
index 9322ce4c9e6..ba0d5ba5d26 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
@@ -12,7 +12,7 @@ bearerToken
 bindy
 blacklistServiceFilter
 cachingServiceDiscovery
-camel-app
+camel
 cbor
 choice
 circuitBreaker
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/camel-app.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/camel-app.json
index faea5faeddd..b160d3d1c40 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/camel-app.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/camel-app.json
@@ -1,9 +1,9 @@
 {
   "model": {
     "kind": "model",
-    "name": "camel-app",
-    "title": "Camel-app",
-    "description": "If beans reminds Spring application too much, we can use camel-app (similar to web-app from Servlet API specification).",
+    "name": "camel",
+    "title": "Camel",
+    "description": "If beans reminds Spring application too much, we can use camel.",
     "deprecated": false,
     "label": "configuration",
     "javaType": "org.apache.camel.model.app.ApplicationDefinition",
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
index b7bcf95851a..a1d883d1c55 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
@@ -125,11 +125,10 @@ Deprecated: null
     </xs:annotation>
   </xs:element>
     
-  <xs:element name="camel-app" type="tns:applicationDefinition">
+  <xs:element name="camel" type="tns:applicationDefinition">
     <xs:annotation>
       <xs:documentation xml:lang="en"><![CDATA[
-If beans reminds Spring application too much, we can use camel-app (similar to
-web-app from Servlet API specification).
+If beans reminds Spring application too much, we can use camel.
       ]]></xs:documentation>
     </xs:annotation>
   </xs:element>
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 48a84fb41c7..81bfc255802 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
@@ -28,12 +28,10 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
 import org.apache.camel.Exchange;
 import org.apache.camel.Expression;
 import org.apache.camel.FailedToCreateRouteFromTemplateException;
 import org.apache.camel.NoSuchBeanException;
-import org.apache.camel.PropertyBindingException;
 import org.apache.camel.RouteTemplateContext;
 import org.apache.camel.model.BeanFactoryDefinition;
 import org.apache.camel.model.DataFormatDefinition;
@@ -66,17 +64,14 @@ import org.apache.camel.spi.ExchangeFactory;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.ModelReifierFactory;
 import org.apache.camel.spi.NodeIdFactory;
-import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.RouteTemplateLoaderListener;
 import org.apache.camel.spi.RouteTemplateParameterSource;
 import org.apache.camel.spi.ScriptingLanguage;
 import org.apache.camel.support.CamelContextHelper;
 import org.apache.camel.support.PatternHelper;
-import org.apache.camel.support.PluginHelper;
 import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.support.RouteTemplateHelper;
 import org.apache.camel.support.ScriptHelper;
-import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.AntPathMatcher;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -581,7 +576,7 @@ public class DefaultModel implements Model {
                     bindings.put("rtc", routeTemplateContext);
                     Object local = slan.evaluate(script, bindings, clazz);
                     if (!props.isEmpty()) {
-                        setPropertiesOnTarget(camelContext, local, props);
+                        PropertyBindingSupport.setPropertiesOnTarget(camelContext, local, props);
                     }
                     return local;
                 }));
@@ -598,7 +593,7 @@ public class DefaultModel implements Model {
                             Expression exp = lan.createExpression(text);
                             Object local = exp.evaluate(dummy, clazz);
                             if (!props.isEmpty()) {
-                                setPropertiesOnTarget(camelContext, local, props);
+                                PropertyBindingSupport.setPropertiesOnTarget(camelContext, local, props);
                             }
                             return local;
                         } else {
@@ -654,7 +649,7 @@ public class DefaultModel implements Model {
                             local = PropertyBindingSupport.newInstanceConstructorParameters(camelContext, clazz, params);
                         }
                         if (!props.isEmpty()) {
-                            setPropertiesOnTarget(camelContext, local, props);
+                            PropertyBindingSupport.setPropertiesOnTarget(camelContext, local, props);
                         }
                         return local;
                     } catch (Exception e) {
@@ -673,7 +668,7 @@ public class DefaultModel implements Model {
                         Suppliers.memorize(() -> {
                             Object local = camelContext.getInjector().newInstance(clazz);
                             if (!props.isEmpty()) {
-                                setPropertiesOnTarget(camelContext, local, props);
+                                PropertyBindingSupport.setPropertiesOnTarget(camelContext, local, props);
                             }
                             return local;
                         }));
@@ -699,67 +694,6 @@ public class DefaultModel implements Model {
         }
     }
 
-    /**
-     * Sets the properties to the given target.
-     *
-     * @param context    the context into which the properties must be set.
-     * @param target     the object to which the properties must be set.
-     * @param properties the properties to set.
-     */
-    private static void setPropertiesOnTarget(CamelContext context, Object target, Map<String, Object> properties) {
-        ObjectHelper.notNull(context, "context");
-        ObjectHelper.notNull(target, "target");
-        ObjectHelper.notNull(properties, "properties");
-
-        if (target instanceof CamelContext) {
-            throw new UnsupportedOperationException("Configuring the Camel Context is not supported");
-        }
-
-        PropertyConfigurer configurer = null;
-        if (target instanceof Component) {
-            // the component needs to be initialized to have the configurer ready
-            ServiceHelper.initService(target);
-            configurer = ((Component) target).getComponentPropertyConfigurer();
-        }
-
-        if (configurer == null) {
-            // see if there is a configurer for it
-            configurer = PluginHelper.getConfigurerResolver(context)
-                    .resolvePropertyConfigurer(target.getClass().getSimpleName(), context);
-        }
-
-        try {
-            PropertyBindingSupport.build()
-                    .withMandatory(true)
-                    .withRemoveParameters(false)
-                    .withConfigurer(configurer)
-                    .withIgnoreCase(true)
-                    .withFlattenProperties(true)
-                    .bind(context, target, properties);
-        } catch (PropertyBindingException e) {
-            String key = e.getOptionKey();
-            if (key == null) {
-                String prefix = e.getOptionPrefix();
-                if (prefix != null && !prefix.endsWith(".")) {
-                    prefix = "." + prefix;
-                }
-
-                key = prefix != null
-                        ? prefix + "." + e.getPropertyName()
-                        : e.getPropertyName();
-            }
-
-            // enrich the error with more precise details with option prefix and key
-            throw new PropertyBindingException(
-                    e.getTarget(),
-                    e.getPropertyName(),
-                    e.getValue(),
-                    null,
-                    key,
-                    e.getCause());
-        }
-    }
-
     @Override
     public void addRouteFromTemplatedRoute(TemplatedRouteDefinition templatedRouteDefinition)
             throws Exception {
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 129263b7cd9..8b2374be646 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
@@ -13,7 +13,7 @@ bearerToken
 bindy
 blacklistServiceFilter
 cachingServiceDiscovery
-camel-app
+camel
 cbor
 choice
 circuitBreaker
diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/app/camel-app.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/app/camel.json
similarity index 94%
rename from core/camel-core-model/src/generated/resources/org/apache/camel/model/app/camel-app.json
rename to core/camel-core-model/src/generated/resources/org/apache/camel/model/app/camel.json
index faea5faeddd..b160d3d1c40 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/app/camel-app.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/app/camel.json
@@ -1,9 +1,9 @@
 {
   "model": {
     "kind": "model",
-    "name": "camel-app",
-    "title": "Camel-app",
-    "description": "If beans reminds Spring application too much, we can use camel-app (similar to web-app from Servlet API specification).",
+    "name": "camel",
+    "title": "Camel",
+    "description": "If beans reminds Spring application too much, we can use camel.",
     "deprecated": false,
     "label": "configuration",
     "javaType": "org.apache.camel.model.app.ApplicationDefinition",
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/app/ApplicationDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/app/ApplicationDefinition.java
index e416c7cc3cc..4b065387893 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/app/ApplicationDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/app/ApplicationDefinition.java
@@ -21,10 +21,9 @@ import jakarta.xml.bind.annotation.XmlRootElement;
 import org.apache.camel.spi.Metadata;
 
 /**
- * If "beans" reminds Spring application too much, we can use "camel-app" (similar to "web-app" from Servlet API
- * specification).
+ * If "beans" reminds Spring application too much, we can use "camel".
  */
 @Metadata(label = "configuration")
-@XmlRootElement(name = "camel-app")
+@XmlRootElement(name = "camel")
 public class ApplicationDefinition extends BeansDefinition {
 }
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
index 17c9be43558..6409e48aeb4 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/PropertyBindingSupport.java
@@ -36,11 +36,13 @@ import java.util.TreeMap;
 import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
 import org.apache.camel.PropertyBindingException;
 import org.apache.camel.spi.BeanIntrospection;
 import org.apache.camel.spi.PropertiesComponent;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.support.service.ServiceHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.StringQuoteHelper;
 
@@ -151,6 +153,67 @@ public final class PropertyBindingSupport {
         return PropertyBindingSupport.build().withFlattenProperties(true).bind(camelContext, target, properties);
     }
 
+    /**
+     * Sets the properties to the given target.
+     *
+     * @param context    the context into which the properties must be set.
+     * @param target     the object to which the properties must be set.
+     * @param properties the properties to set.
+     */
+    public static void setPropertiesOnTarget(CamelContext context, Object target, Map<String, Object> properties) {
+        org.apache.camel.util.ObjectHelper.notNull(context, "context");
+        org.apache.camel.util.ObjectHelper.notNull(target, "target");
+        org.apache.camel.util.ObjectHelper.notNull(properties, "properties");
+
+        if (target instanceof CamelContext) {
+            throw new UnsupportedOperationException("Configuring the Camel Context is not supported");
+        }
+
+        PropertyConfigurer configurer = null;
+        if (target instanceof Component) {
+            // the component needs to be initialized to have the configurer ready
+            ServiceHelper.initService(target);
+            configurer = ((Component) target).getComponentPropertyConfigurer();
+        }
+
+        if (configurer == null) {
+            // see if there is a configurer for it
+            configurer = PluginHelper.getConfigurerResolver(context)
+                    .resolvePropertyConfigurer(target.getClass().getSimpleName(), context);
+        }
+
+        try {
+            PropertyBindingSupport.build()
+                    .withMandatory(true)
+                    .withRemoveParameters(false)
+                    .withConfigurer(configurer)
+                    .withIgnoreCase(true)
+                    .withFlattenProperties(true)
+                    .bind(context, target, properties);
+        } catch (PropertyBindingException e) {
+            String key = e.getOptionKey();
+            if (key == null) {
+                String prefix = e.getOptionPrefix();
+                if (prefix != null && !prefix.endsWith(".")) {
+                    prefix = "." + prefix;
+                }
+
+                key = prefix != null
+                        ? prefix + "." + e.getPropertyName()
+                        : e.getPropertyName();
+            }
+
+            // enrich the error with more precise details with option prefix and key
+            throw new PropertyBindingException(
+                    e.getTarget(),
+                    e.getPropertyName(),
+                    e.getValue(),
+                    null,
+                    key,
+                    e.getCause());
+        }
+    }
+
     /**
      * Binds the properties with the given prefix to the target object, and removes the property that was bound from
      * properties. Note that the prefix is removed from the key before the property is bound.
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 4275582c8b3..703cea305c2 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
@@ -1560,7 +1560,7 @@ public class ModelParser extends BaseParser {
     }
     public Optional<ApplicationDefinition> parseApplicationDefinition()
             throws IOException, XmlPullParserException {
-        String tag = getNextTag("beans", "camel-app");
+        String tag = getNextTag("beans", "camel");
         if (tag != null) {
             return Optional.of(doParseApplicationDefinition());
         }
@@ -1572,7 +1572,7 @@ public class ModelParser extends BaseParser {
     }
     public Optional<BeansDefinition> parseBeansDefinition()
             throws IOException, XmlPullParserException {
-        String tag = getNextTag("beans", "camel-app");
+        String tag = getNextTag("beans", "camel");
         if (tag != null) {
             return Optional.of(doParseBeansDefinition());
         }
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 66abe00a04d..cd21cf09aa8 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
@@ -486,7 +486,7 @@ public class ModelWriter extends BaseWriter {
     public void writeApplicationDefinition(
             ApplicationDefinition def)
             throws IOException {
-        doWriteApplicationDefinition("camel-app", def);
+        doWriteApplicationDefinition("camel", def);
     }
     public void writeBeansDefinition(BeansDefinition def) throws IOException {
         doWriteBeansDefinition("beans", def);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 2b59afbf1e1..1e6a564e57f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -91,7 +91,8 @@ public class Run extends CamelCommand {
             "routeTemplate", "routeTemplates",
             "templatedRoute", "templatedRoutes",
             "rest", "rests",
-            "routeConfiguration", "beans"
+            "routeConfiguration",
+            "beans", "camel"
     };
 
     private static final Set<String> ACCEPTED_XML_ROOT_ELEMENTS
diff --git a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
index fb4387dffe1..1709a018e1d 100644
--- a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
+++ b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
@@ -35,6 +35,7 @@ import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.TemplatedRouteDefinition;
 import org.apache.camel.model.TemplatedRoutesDefinition;
 import org.apache.camel.model.app.BeansDefinition;
+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.Injector;
@@ -43,6 +44,7 @@ import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.RoutesLoader;
 import org.apache.camel.support.CachedResource;
+import org.apache.camel.support.PropertyBindingSupport;
 import org.apache.camel.xml.in.ModelParser;
 import org.apache.camel.xml.io.util.XmlStreamDetector;
 import org.apache.camel.xml.io.util.XmlStreamInfo;
@@ -85,7 +87,7 @@ public class XmlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
             @Override
             public void configure() throws Exception {
                 switch (xmlInfo.getRootElementName()) {
-                    case "beans", "camel-app" ->
+                    case "beans", "camel" ->
                         new ModelParser(resource, xmlInfo.getRootElementNamespace())
                                 .parseBeansDefinition()
                                 .ifPresent(this::allInOne);
@@ -150,6 +152,28 @@ public class XmlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
                     }
                 }
 
+                for (RegistryBeanDefinition bean : app.getBeans()) {
+                    String type = bean.getType();
+                    String name = bean.getName();
+                    if (name == null || "".equals(name.trim())) {
+                        name = type;
+                    }
+                    if (type != null && !type.startsWith("#")) {
+                        type = "#class:" + type;
+                        try {
+                            final Object target = PropertyBindingSupport.resolveBean(getCamelContext(), type);
+
+                            if (bean.getProperties() != null && !bean.getProperties().isEmpty()) {
+                                PropertyBindingSupport.setPropertiesOnTarget(getCamelContext(), target, bean.getProperties());
+                            }
+                            getCamelContext().getRegistry().unbind(name);
+                            getCamelContext().getRegistry().bind(name, target);
+                        } catch (Exception e) {
+                            LOG.warn("Problem creating bean {}", type, e);
+                        }
+                    }
+                }
+
                 app.getRests().forEach(r -> {
                     List<RestDefinition> list = new ArrayList<>();
                     list.add(r);
diff --git a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadAppTest.java b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadAppTest.java
index 8034a36f4b0..ddfe78459ea 100644
--- a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadAppTest.java
+++ b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlLoadAppTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.dsl.xml.io;
 
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.dsl.xml.io.beans.GreeterMessage;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.support.PluginHelper;
@@ -32,7 +33,8 @@ public class XmlLoadAppTest {
         try (DefaultCamelContext context = new DefaultCamelContext()) {
             context.start();
 
-            // load route from XML and add them to the existing camel context
+            // load route from XML and add them both to the existing camel context
+            // only first XML declares component scanning (to put beans into the registry)
             String[] contexts = new String[] {
                     "camel-app1.xml",
                     "camel-app2.xml"
@@ -48,6 +50,10 @@ public class XmlLoadAppTest {
             assertNotNull(context.getRoute("r2"), "Loaded r2 route should be there");
             assertEquals(2, context.getRoutes().size());
 
+            // tweak bean in registry
+            GreeterMessage gm = context.getRegistry().findSingleByType(GreeterMessage.class);
+            gm.setMsg("Hello");
+
             // test that loaded route works
             MockEndpoint y1 = context.getEndpoint("mock:y1", MockEndpoint.class);
             y1.expectedBodiesReceived("Hello World");
@@ -61,4 +67,51 @@ public class XmlLoadAppTest {
         }
     }
 
+    @Test
+    public void testLoadCamelAppWithBeansAndDI() throws Exception {
+        try (DefaultCamelContext context = new DefaultCamelContext()) {
+            context.start();
+
+            // camel-app3 registers two beans and 2nd one uses @BeanInject on first one
+
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
+                    "/org/apache/camel/dsl/xml/io/camel-app3.xml");
+
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
+
+            assertNotNull(context.getRoute("r3"), "Loaded r3 route should be there");
+            assertEquals(1, context.getRoutes().size());
+
+            // test that loaded route works
+            MockEndpoint y3 = context.getEndpoint("mock:y3", MockEndpoint.class);
+            y3.expectedBodiesReceived("Hello World");
+            context.createProducerTemplate().sendBody("direct:x3", "I'm World");
+            y3.assertIsSatisfied();
+        }
+    }
+
+    @Test
+    public void testLoadCamelAppWithBeansAndFlattenedProperties() throws Exception {
+        try (DefaultCamelContext context = new DefaultCamelContext()) {
+            context.start();
+
+            // camel-app4 registers one bean, where its dependency is created from the flattened properties
+            // and using org.apache.camel.spi.Injector.newInstance()
+
+            Resource resource = PluginHelper.getResourceLoader(context).resolveResource(
+                    "/org/apache/camel/dsl/xml/io/camel-app4.xml");
+
+            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
+
+            assertNotNull(context.getRoute("r4"), "Loaded r4 route should be there");
+            assertEquals(1, context.getRoutes().size());
+
+            // test that loaded route works
+            MockEndpoint y4 = context.getEndpoint("mock:y4", MockEndpoint.class);
+            y4.expectedBodiesReceived("Hello World");
+            context.createProducerTemplate().sendBody("direct:x4", "I'm World");
+            y4.assertIsSatisfied();
+        }
+    }
+
 }
diff --git a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java
index 6bef9a02efa..0cfcd38045e 100644
--- a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java
+++ b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java
@@ -27,9 +27,6 @@ public class Greeter implements Processor {
 
     private GreeterMessage message;
 
-    public Greeter() {
-    }
-
     @BeanInject
     public void setMessage(GreeterMessage message) {
         this.message = message;
diff --git a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/GreeterMessage.java b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/GreeterMessage.java
index f7344b34913..368f24a9c38 100644
--- a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/GreeterMessage.java
+++ b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/GreeterMessage.java
@@ -21,8 +21,14 @@ import org.apache.camel.BindToRegistry;
 @BindToRegistry
 public class GreeterMessage {
 
+    private String msg;
+
     public String getMsg() {
-        return "Hello";
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
     }
 
 }
diff --git a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/StandaloneGreeter.java
similarity index 86%
copy from dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java
copy to dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/StandaloneGreeter.java
index 6bef9a02efa..92cdba2496e 100644
--- a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/Greeter.java
+++ b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/beans/StandaloneGreeter.java
@@ -16,21 +16,14 @@
  */
 package org.apache.camel.dsl.xml.io.beans;
 
-import org.apache.camel.BeanInject;
-import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.util.StringHelper;
 
-@BindToRegistry("bean-from-registry")
-public class Greeter implements Processor {
+public class StandaloneGreeter implements Processor {
 
     private GreeterMessage message;
 
-    public Greeter() {
-    }
-
-    @BeanInject
     public void setMessage(GreeterMessage message) {
         this.message = message;
     }
diff --git a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
index e163f0cd11a..787a3f9ff8d 100644
--- a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
+++ b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
@@ -17,7 +17,7 @@
     limitations under the License.
 
 -->
-<camel-app xmlns="http://camel.apache.org/schema/spring">
+<camel xmlns="http://camel.apache.org/schema/spring">
 
     <component-scan base-package="org.apache.camel.dsl.xml.io.beans" />
 
@@ -27,4 +27,4 @@
         <to uri="mock:y1"/>
     </route>
 
-</camel-app>
+</camel>
diff --git a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app2.xml b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app2.xml
index 968495ac991..c6eb123ca5a 100644
--- a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app2.xml
+++ b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app2.xml
@@ -17,7 +17,7 @@
     limitations under the License.
 
 -->
-<camel-app xmlns:s="http://www.springframework.org/schema/beans">
+<camel xmlns:s="http://www.springframework.org/schema/beans">
 
     <route id="r2">
         <from uri="direct:x2"/>
@@ -25,4 +25,4 @@
         <to uri="mock:y2"/>
     </route>
 
-</camel-app>
+</camel>
diff --git a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app3.xml
similarity index 66%
copy from dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
copy to dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app3.xml
index e163f0cd11a..621bcf1d207 100644
--- a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
+++ b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app3.xml
@@ -17,14 +17,20 @@
     limitations under the License.
 
 -->
-<camel-app xmlns="http://camel.apache.org/schema/spring">
+<camel xmlns="http://camel.apache.org/schema/spring" xmlns:s="http://www.springframework.org/schema/beans">
 
-    <component-scan base-package="org.apache.camel.dsl.xml.io.beans" />
+    <bean type="org.apache.camel.dsl.xml.io.beans.GreeterMessage">
+        <properties>
+            <property key="msg" value="Hello" />
+        </properties>
+    </bean>
 
-    <route id="r1">
-        <from uri="direct:x1"/>
+    <bean name="bean-from-registry" type="org.apache.camel.dsl.xml.io.beans.Greeter" />
+
+    <route id="r3">
+        <from uri="direct:x3"/>
         <bean ref="bean-from-registry" />
-        <to uri="mock:y1"/>
+        <to uri="mock:y3"/>
     </route>
 
-</camel-app>
+</camel>
diff --git a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app4.xml
similarity index 65%
copy from dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
copy to dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app4.xml
index e163f0cd11a..646e7dba0dd 100644
--- a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app1.xml
+++ b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/camel-app4.xml
@@ -17,14 +17,18 @@
     limitations under the License.
 
 -->
-<camel-app xmlns="http://camel.apache.org/schema/spring">
+<camel xmlns="http://camel.apache.org/schema/spring" xmlns:s="http://www.springframework.org/schema/beans">
 
-    <component-scan base-package="org.apache.camel.dsl.xml.io.beans" />
+    <bean name="xml-bean-from-registry" type="org.apache.camel.dsl.xml.io.beans.StandaloneGreeter">
+        <properties>
+            <property key="message.msg" value="Hello" />
+        </properties>
+    </bean>
 
-    <route id="r1">
-        <from uri="direct:x1"/>
-        <bean ref="bean-from-registry" />
-        <to uri="mock:y1"/>
+    <route id="r4">
+        <from uri="direct:x4"/>
+        <bean ref="xml-bean-from-registry" />
+        <to uri="mock:y4"/>
     </route>
 
-</camel-app>
+</camel>
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
index 874eb41909c..1c2b53f465f 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-common/src/main/java/org/apache/camel/dsl/yaml/common/YamlSupport.java
@@ -24,8 +24,6 @@ import java.util.TreeMap;
 import java.util.function.Function;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.Component;
-import org.apache.camel.PropertyBindingException;
 import org.apache.camel.dsl.yaml.common.exception.InvalidEndpointException;
 import org.apache.camel.dsl.yaml.common.exception.InvalidNodeTypeException;
 import org.apache.camel.dsl.yaml.common.exception.UnsupportedFieldException;
@@ -33,11 +31,6 @@ import org.apache.camel.dsl.yaml.common.exception.UnsupportedNodeTypeException;
 import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.spi.CamelContextCustomizer;
 import org.apache.camel.spi.EndpointUriFactory;
-import org.apache.camel.spi.PropertyConfigurer;
-import org.apache.camel.support.PluginHelper;
-import org.apache.camel.support.PropertyBindingSupport;
-import org.apache.camel.support.service.ServiceHelper;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 import org.snakeyaml.engine.v2.api.ConstructNode;
@@ -58,60 +51,6 @@ public final class YamlSupport {
     private YamlSupport() {
     }
 
-    public static void setPropertiesOnTarget(CamelContext context, Object target, Map<String, Object> properties) {
-        ObjectHelper.notNull(context, "context");
-        ObjectHelper.notNull(target, "target");
-        ObjectHelper.notNull(properties, "properties");
-
-        if (target instanceof CamelContext) {
-            throw new UnsupportedOperationException("Configuring the Camel Context is not supported");
-        }
-
-        PropertyConfigurer configurer = null;
-        if (target instanceof Component) {
-            // the component needs to be initialized to have the configurer ready
-            ServiceHelper.initService(target);
-            configurer = ((Component) target).getComponentPropertyConfigurer();
-        }
-
-        if (configurer == null) {
-            // see if there is a configurer for it
-            configurer = PluginHelper.getConfigurerResolver(context)
-                    .resolvePropertyConfigurer(target.getClass().getSimpleName(), context);
-        }
-
-        try {
-            PropertyBindingSupport.build()
-                    .withMandatory(true)
-                    .withRemoveParameters(false)
-                    .withConfigurer(configurer)
-                    .withIgnoreCase(true)
-                    .withFlattenProperties(true)
-                    .bind(context, target, properties);
-        } catch (PropertyBindingException e) {
-            String key = e.getOptionKey();
-            if (key == null) {
-                String prefix = e.getOptionPrefix();
-                if (prefix != null && !prefix.endsWith(".")) {
-                    prefix = "." + prefix;
-                }
-
-                key = prefix != null
-                        ? prefix + "." + e.getPropertyName()
-                        : e.getPropertyName();
-            }
-
-            // enrich the error with more precise details with option prefix and key
-            throw new PropertyBindingException(
-                    e.getTarget(),
-                    e.getPropertyName(),
-                    e.getValue(),
-                    null,
-                    key,
-                    e.getCause());
-        }
-    }
-
     public static CamelContextCustomizer customizer(Collection<CamelContextCustomizer> customizers) {
         return new CamelContextCustomizer() {
             @Override
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 229062f100c..c21941957bd 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
@@ -589,7 +589,7 @@ public final class ModelDeserializers extends YamlDeserializerSupport {
     }
 
     @YamlType(
-            nodes = "camel-app",
+            nodes = "camel",
             types = org.apache.camel.model.app.ApplicationDefinition.class,
             order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
             properties = {
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
index 0b0785c531d..0165a5f5ffe 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
@@ -22,7 +22,7 @@ public final class ModelDeserializersResolver implements YamlDeserializerResolve
             case "api-key": return new ModelDeserializers.ApiKeyDefinitionDeserializer();
             case "apiKey": return new ModelDeserializers.ApiKeyDefinitionDeserializer();
             case "org.apache.camel.model.rest.ApiKeyDefinition": return new ModelDeserializers.ApiKeyDefinitionDeserializer();
-            case "camel-app": return new ModelDeserializers.ApplicationDefinitionDeserializer();
+            case "camel": return new ModelDeserializers.ApplicationDefinitionDeserializer();
             case "org.apache.camel.model.app.ApplicationDefinition": return new ModelDeserializers.ApplicationDefinitionDeserializer();
             case "avro": return new ModelDeserializers.AvroDataFormatDeserializer();
             case "org.apache.camel.model.dataformat.AvroDataFormat": return new ModelDeserializers.AvroDataFormatDeserializer();
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/BeansDeserializer.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/BeansDeserializer.java
index ea6ab6fdc6f..e4bb570b140 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/BeansDeserializer.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/BeansDeserializer.java
@@ -85,7 +85,7 @@ public class BeansDeserializer extends YamlDeserializerSupport implements Constr
         final Object target = PropertyBindingSupport.resolveBean(context, bean.getType());
 
         if (bean.getProperties() != null && !bean.getProperties().isEmpty()) {
-            YamlSupport.setPropertiesOnTarget(context, target, bean.getProperties());
+            PropertyBindingSupport.setPropertiesOnTarget(context, target, bean.getProperties());
         }
 
         return target;
diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
index 54fab99f323..6aebfb59411 100644
--- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
+++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
@@ -858,10 +858,8 @@ public class GenerateYamlDeserializersMojo extends GenerateYamlSupportMojo {
             if (adapterClassInfo.superClassType().kind() == Type.Kind.PARAMETERIZED_TYPE) {
                 List<Type> arguments = adapterClassInfo.superClassType().asParameterizedType().arguments();
                 if (arguments.size() == 2) {
-                    // extends XmlAdapter<BeanPropertiesDefinition, Map<String, Object>>
-//                    Type type = arguments.get(0);
-//                    cb.addStatement("$L val = new $L().unmarshal(asType(node, $L.class))",
-//                            field.type().name().toString(), adapterClass, type.name());
+                    // this is for extends XmlAdapter<BeanPropertiesDefinition, Map<String, Object>>
+                    // we can't use JaxbUnmarshaller here (as in XML DSL) and we have to convert to map directly
                     Type type = arguments.get(1);
                     if (type.name().toString().equals("java.util.Map")) {
                         cb.addStatement("$L val = asMap(node)", field.type().name().toString());
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
index ebf277f8a3c..9fb32117d77 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlParserGeneratorMojo.java
@@ -536,14 +536,14 @@ public class ModelXmlParserGeneratorMojo extends AbstractGeneratorMojo {
             });
 
             if (clazz == beansDefinitionClass || clazz == applicationDefinitionClass) {
-                // for beans/camel-app we want public methods to be invoked by camel-xml-io-dsl
+                // for beans/camel we want public methods to be invoked by camel-xml-io-dsl
 
                 parser.addMethod().setPublic()
                         .setReturnType(new GenericType(Optional.class, new GenericType(clazz)))
                         .setName("parse" + name)
                         .addThrows(IOException.class)
                         .addThrows(XML_PULL_PARSER_EXCEPTION)
-                        .setBody(String.format("String tag = getNextTag(\"%s\", \"%s\");", "beans", "camel-app"),
+                        .setBody(String.format("String tag = getNextTag(\"%s\", \"%s\");", "beans", "camel"),
                                 "if (tag != null) {",
                                 String.format("    return Optional.of(doParse%s());", name),
                                 "}",
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java
index 3e510dc9d8b..4fa3a337388 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ModelXmlWriterGeneratorMojo.java
@@ -800,7 +800,7 @@ public class ModelXmlWriterGeneratorMojo extends AbstractGeneratorMojo {
         } else if (accessType == XmlAccessType.FIELD) {
             return m -> m.getDeclaringClass() == clazz
                     && ((isSetter(m) || isGetter(m)) && isXmlBindAnnotated(m)
-                            || isField(m) && /*isNotAnyXml(m) && */!Modifier.isStatic(m.getModifiers()) && !Modifier.isTransient(m.getModifiers()));
+                            || isField(m) && !Modifier.isStatic(m.getModifiers()) && !Modifier.isTransient(m.getModifiers()));
         } else if (accessType == XmlAccessType.PUBLIC_MEMBER) {
             return m -> m.getDeclaringClass() == clazz
                     && (Modifier.isPublic(m.getModifiers()) || isXmlBindAnnotated(m));
@@ -812,13 +812,7 @@ public class ModelXmlWriterGeneratorMojo extends AbstractGeneratorMojo {
 
     private boolean isXmlBindAnnotated(Member m) {
         return Stream.of(((AnnotatedElement) m).getAnnotations())
-                .anyMatch(a -> a.getClass().getAnnotatedInterfaces()[0].getType().getTypeName().startsWith("jakarta.xml.bind.annotation.")
-                        /*&& !a.getClass().getAnnotatedInterfaces()[0].getType().getTypeName().endsWith("XmlAnyElement")*/);
-    }
-
-    private boolean isNotAnyXml(Member m) {
-        return Stream.of(((AnnotatedElement) m).getAnnotations())
-                .noneMatch(a -> a.getClass().getAnnotatedInterfaces()[0].getType().getTypeName().equals("jakarta.xml.bind.annotation.XmlAnyElement"));
+                .anyMatch(a -> a.getClass().getAnnotatedInterfaces()[0].getType().getTypeName().startsWith("jakarta.xml.bind.annotation."));
     }
 
     private boolean isField(Member member) {