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 2013/01/21 17:09:11 UTC
svn commit: r1436442 - in /camel/branches/camel-2.10.x: ./
components/camel-castor/src/main/java/org/apache/camel/dataformat/castor/AbstractCastorDataFormat.java
Author: davsclaus
Date: Mon Jan 21 16:09:11 2013
New Revision: 1436442
URL: http://svn.apache.org/viewvc?rev=1436442&view=rev
Log:
CAMEL-5358: Fixing camel-castor to work in OSGi.
Modified:
camel/branches/camel-2.10.x/ (props changed)
camel/branches/camel-2.10.x/components/camel-castor/src/main/java/org/apache/camel/dataformat/castor/AbstractCastorDataFormat.java
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Merged /camel/trunk:r1436441
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.10.x/components/camel-castor/src/main/java/org/apache/camel/dataformat/castor/AbstractCastorDataFormat.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-castor/src/main/java/org/apache/camel/dataformat/castor/AbstractCastorDataFormat.java?rev=1436442&r1=1436441&r2=1436442&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-castor/src/main/java/org/apache/camel/dataformat/castor/AbstractCastorDataFormat.java (original)
+++ camel/branches/camel-2.10.x/components/camel-castor/src/main/java/org/apache/camel/dataformat/castor/AbstractCastorDataFormat.java Mon Jan 21 16:09:11 2013
@@ -48,14 +48,14 @@ public abstract class AbstractCastorData
public static final String DEFAULT_ENCODING = "UTF-8";
private String encoding = DEFAULT_ENCODING;
- private XMLContext xmlContext;
private String mappingFile;
private String[] classNames;
private String[] packages;
private boolean validation;
- private Marshaller marshaller;
- private Unmarshaller unmarshaller;
+ private volatile XMLContext xmlContext;
+ private volatile Marshaller marshaller;
+ private volatile Unmarshaller unmarshaller;
public AbstractCastorDataFormat() {
}
@@ -74,12 +74,17 @@ public abstract class AbstractCastorData
return getUnmarshaller(exchange).unmarshal(reader);
}
- public XMLContext getXmlContext(ClassResolver resolver) throws Exception {
+ public XMLContext getXmlContext(ClassResolver resolver, ClassLoader contetClassLoader) throws Exception {
if (xmlContext == null) {
xmlContext = new XMLContext();
if (ObjectHelper.isNotEmpty(getMappingFile())) {
- Mapping xmlMap = new Mapping();
+ Mapping xmlMap;
+ if (contetClassLoader != null) {
+ xmlMap = new Mapping(contetClassLoader);
+ } else {
+ xmlMap = new Mapping();
+ }
xmlMap.loadMapping(resolver.loadResourceAsURL(getMappingFile()));
xmlContext.addMapping(xmlMap);
}
@@ -100,7 +105,7 @@ public abstract class AbstractCastorData
public Unmarshaller getUnmarshaller(Exchange exchange) throws Exception {
if (this.unmarshaller == null) {
- this.unmarshaller = getXmlContext(exchange.getContext().getClassResolver()).createUnmarshaller();
+ this.unmarshaller = getXmlContext(exchange.getContext().getClassResolver(), exchange.getContext().getApplicationContextClassLoader()).createUnmarshaller();
this.unmarshaller.setValidation(isValidation());
}
return this.unmarshaller;
@@ -108,7 +113,7 @@ public abstract class AbstractCastorData
public Marshaller getMarshaller(Exchange exchange) throws Exception {
if (this.marshaller == null) {
- this.marshaller = getXmlContext(exchange.getContext().getClassResolver()).createMarshaller();
+ this.marshaller = getXmlContext(exchange.getContext().getClassResolver(), exchange.getContext().getApplicationContextClassLoader()).createMarshaller();
this.marshaller.setValidation(isValidation());
}
return this.marshaller;