You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/09/01 11:34:30 UTC
svn commit: r809931 -
/camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
Author: ningjiang
Date: Tue Sep 1 09:34:29 2009
New Revision: 809931
URL: http://svn.apache.org/viewvc?rev=809931&view=rev
Log:
CAMEL-1966 Fixed the multi-thread issue of CamelNamespaceHandler
Modified:
camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
Modified: camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=809931&r1=809930&r2=809931&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original)
+++ camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Tue Sep 1 09:34:29 2009
@@ -62,7 +62,6 @@
protected BeanDefinitionParser endpointParser = new BeanDefinitionParser(EndpointFactoryBean.class);
protected BeanDefinitionParser beanPostProcessorParser = new BeanDefinitionParser(CamelBeanPostProcessor.class);
protected Set<String> parserElementNames = new HashSet<String>();
- protected Binder<Node> binder;
private JAXBContext jaxbContext;
private Map<String, BeanDefinitionParser> parserMap = new HashMap<String, BeanDefinitionParser>();
@@ -139,15 +138,9 @@
return parserElementNames;
}
- protected Object parseUsingJaxb(Element element, ParserContext parserContext) {
+ protected Object parseUsingJaxb(Element element, ParserContext parserContext, Binder<Node> binder) {
try {
- binder = getJaxbContext().createBinder();
return binder.unmarshal(element);
- /*
- * Unmarshaller unmarshaller =
- * getJaxbContext().createUnmarshaller(); return
- * unmarshaller.unmarshal(element);
- */
} catch (JAXBException e) {
throw new BeanDefinitionStoreException("Failed to parse JAXB element: " + e, e);
}
@@ -200,9 +193,15 @@
contextId = "camelContext";
element.setAttribute("id", contextId);
}
-
+
+ Binder<Node> binder = null;
+ try {
+ binder = getJaxbContext().createBinder();
+ } catch (JAXBException e) {
+ throw new BeanDefinitionStoreException("Failed to create the JAXB binder :" + e, e);
+ }
// now lets parse the routes with JAXB
- Object value = parseUsingJaxb(element, parserContext);
+ Object value = parseUsingJaxb(element, parserContext, binder);
if (value instanceof CamelContextFactoryBean) {
// set the property value with the JAXB parsed value
@@ -265,7 +264,7 @@
// lets inject the namespaces into any namespace aware POJOs
- injectNamespaces(element);
+ injectNamespaces(element, binder);
if (!createdBeanPostProcessor) {
// no bean processor element so lets create it by ourself
Element childElement = element.getOwnerDocument().createElement("beanPostProcessor");
@@ -275,7 +274,7 @@
}
}
- protected void injectNamespaces(Element element) {
+ protected void injectNamespaces(Element element, Binder<Node> binder) {
NodeList list = element.getChildNodes();
Namespaces namespaces = null;
int size = list.getLength();
@@ -291,7 +290,7 @@
}
namespaces.configure(namespaceAware);
}
- injectNamespaces(childElement);
+ injectNamespaces(childElement, binder);
}
}
}