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;