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;