You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/01/18 12:19:11 UTC

svn commit: r1232834 - /camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java

Author: davsclaus
Date: Wed Jan 18 11:19:10 2012
New Revision: 1232834

URL: http://svn.apache.org/viewvc?rev=1232834&view=rev
Log:
CAMEL-4913: camel-blueprint now supports using custom namespaces in the xml file.

Modified:
    camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java

Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java?rev=1232834&r1=1232833&r2=1232834&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java Wed Jan 18 11:19:10 2012
@@ -51,6 +51,7 @@ import org.apache.camel.Produce;
 import org.apache.camel.blueprint.BlueprintCamelContext;
 import org.apache.camel.blueprint.CamelContextFactoryBean;
 import org.apache.camel.blueprint.CamelRouteContextFactoryBean;
+import org.apache.camel.builder.xml.Namespaces;
 import org.apache.camel.core.xml.AbstractCamelContextFactoryBean;
 import org.apache.camel.core.xml.AbstractCamelFactoryBean;
 import org.apache.camel.impl.CamelPostProcessorHelper;
@@ -75,6 +76,7 @@ import org.apache.camel.spi.CamelContext
 import org.apache.camel.spi.ComponentResolver;
 import org.apache.camel.spi.DataFormatResolver;
 import org.apache.camel.spi.LanguageResolver;
+import org.apache.camel.spi.NamespaceAware;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.blueprint.KeyStoreParametersFactoryBean;
 import org.apache.camel.util.blueprint.SSLContextParametersFactoryBean;
@@ -233,9 +235,34 @@ public class CamelNamespaceHandler imple
         regProcessor.addDependsOn(".camelBlueprint.processor.bean." + contextId);
         regProcessor.addProperty("blueprintContainer", createRef(context, "blueprintContainer"));
         context.getComponentDefinitionRegistry().registerComponentDefinition(regProcessor);
+
+        // lets inject the namespaces into any namespace aware POJOs
+        injectNamespaces(element, binder);
+
         return ctx;
     }
 
+    protected void injectNamespaces(Element element, Binder<Node> binder) {
+        NodeList list = element.getChildNodes();
+        Namespaces namespaces = null;
+        int size = list.getLength();
+        for (int i = 0; i < size; i++) {
+            Node child = list.item(i);
+            if (child instanceof Element) {
+                Element childElement = (Element) child;
+                Object object = binder.getJAXBNode(child);
+                if (object instanceof NamespaceAware) {
+                    NamespaceAware namespaceAware = (NamespaceAware) object;
+                    if (namespaces == null) {
+                        namespaces = new Namespaces(element);
+                    }
+                    namespaces.configure(namespaceAware);
+                }
+                injectNamespaces(childElement, binder);
+            }
+        }
+    }
+
     private Metadata parseRouteContextNode(Element element, ParserContext context) {
         // now parse the routes with JAXB
         Binder<Node> binder;