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;


Reply via email to