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 2016/01/28 11:27:16 UTC

[1/2] camel git commit: [CAMEL-9545] Dozer classloading may fail with spring based context

Repository: camel
Updated Branches:
  refs/heads/camel-2.16.x 206a46434 -> 2a71f4257
  refs/heads/master 626e08dd9 -> 740a5a73c


[CAMEL-9545] Dozer classloading may fail with spring based context


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2a71f425
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2a71f425
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2a71f425

Branch: refs/heads/camel-2.16.x
Commit: 2a71f4257d508ffd05d2d5f447a65294296eae5c
Parents: 206a464
Author: Thomas Diesler <th...@jboss.com>
Authored: Thu Jan 28 11:18:08 2016 +0100
Committer: Thomas Diesler <th...@jboss.com>
Committed: Thu Jan 28 11:18:08 2016 +0100

----------------------------------------------------------------------
 .../camel/component/dozer/DozerComponent.java   | 27 +++++++++++++-------
 .../camel/component/dozer/DozerEndpoint.java    | 12 ++++-----
 .../dozer/DozerTypeConverterLoader.java         | 17 +++---------
 3 files changed, 27 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2a71f425/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
index 764bf35..f401798 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
@@ -17,53 +17,62 @@
 package org.apache.camel.component.dozer;
 
 import java.lang.reflect.Field;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.converter.dozer.DozerBeanMapperConfiguration;
+import org.apache.camel.converter.dozer.DozerThreadContextClassLoader;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ReflectionHelper;
+import org.dozer.DozerBeanMapper;
 import org.dozer.config.GlobalSettings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class DozerComponent extends UriEndpointComponent {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(DozerComponent.class);
 
     public DozerComponent() {
         super(DozerEndpoint.class);
-        initDozerSettings();
     }
-    
+
     public DozerComponent(CamelContext context) {
         super(context, DozerEndpoint.class);
-        initDozerSettings();
     }
-    
+
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         DozerConfiguration config = new DozerConfiguration();
         config.setName(remaining);
         config.setMappingConfiguration(getAndRemoveOrResolveReferenceParameter(
                 parameters, "mappingConfiguration", DozerBeanMapperConfiguration.class));
         setProperties(config, parameters);
-        
+
         // Validate endpoint parameters
         if (config.getTargetModel() == null) {
             throw new IllegalArgumentException("The targetModel parameter is required for dozer endpoints");
         }
         return new DozerEndpoint(uri, this, config);
     }
-    
-    private void initDozerSettings() {
+
+    public static DozerBeanMapper createDozerBeanMapper(List<String> mappingFiles) {
+        GlobalSettings settings = GlobalSettings.getInstance();
+        try {
+            LOG.info("Configuring GlobalSettings to use Camel classloader: {}", DozerThreadContextClassLoader.class.getName());
+            Field field = settings.getClass().getDeclaredField("classLoaderBeanName");
+            ReflectionHelper.setField(field, settings, DozerThreadContextClassLoader.class.getName());
+        } catch (Exception e) {
+            throw new IllegalStateException("Cannot configure Dozer GlobalSettings to use DozerThreadContextClassLoader as classloader due " + e.getMessage(), e);
+        }
         try {
-            GlobalSettings settings = GlobalSettings.getInstance();
             LOG.info("Configuring GlobalSettings to enable EL");
             Field field = settings.getClass().getDeclaredField("elEnabled");
             ReflectionHelper.setField(field, settings, true);
         } catch (NoSuchFieldException nsfEx) {
             throw new IllegalStateException("Failed to enable EL in global Dozer settings", nsfEx);
         }
+        return new DozerBeanMapper(mappingFiles);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/2a71f425/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
index 02e1775..f315bfb 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.dozer;
 
 import java.io.InputStream;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -86,15 +87,15 @@ public class DozerEndpoint extends DefaultEndpoint {
     public void setConfiguration(DozerConfiguration configuration) {
         this.configuration = configuration;
     }
-    
+
     CustomMapper getCustomMapper() {
         return customMapper;
     }
-    
+
     VariableMapper getVariableMapper() {
         return variableMapper;
     }
-    
+
     ExpressionMapper getExpressionMapper() {
         return expressionMapper;
     }
@@ -119,9 +120,9 @@ public class DozerEndpoint extends DefaultEndpoint {
         super.doStop();
         // noop
     }
-    
+
     private DozerBeanMapper createDozerBeanMapper() throws Exception {
-        DozerBeanMapper answer = new DozerBeanMapper();
+        DozerBeanMapper answer = DozerComponent.createDozerBeanMapper(Collections.<String>emptyList());
         InputStream mapStream = null;
         try {
             LOG.info("Loading Dozer mapping file {}.", configuration.getMappingFile());
@@ -131,7 +132,6 @@ public class DozerEndpoint extends DefaultEndpoint {
         } finally {
             IOHelper.close(mapStream);
         }
-
         return answer;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/2a71f425/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
index 9d6d3ae..f9396a9 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.converter.dozer;
 
-import java.lang.reflect.Field;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -28,17 +27,16 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.component.dozer.DozerComponent;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ReflectionHelper;
 import org.apache.camel.util.ResourceHelper;
 import org.dozer.DozerBeanMapper;
 import org.dozer.Mapper;
 import org.dozer.classmap.ClassMap;
 import org.dozer.classmap.MappingFileData;
-import org.dozer.config.GlobalSettings;
 import org.dozer.loader.api.BeanMappingBuilder;
 import org.dozer.loader.xml.MappingFileReader;
 import org.dozer.loader.xml.XMLParserFactory;
@@ -101,15 +99,6 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
      * @param configuration dozer mapping bean configuration.
      */
     public DozerTypeConverterLoader(CamelContext camelContext, DozerBeanMapperConfiguration configuration) {
-        GlobalSettings settings = GlobalSettings.getInstance();
-        try {
-            log.info("Configuring GlobalSettings to use Camel classloader: {}", DozerThreadContextClassLoader.class.getName());
-            Field field = settings.getClass().getDeclaredField("classLoaderBeanName");
-            ReflectionHelper.setField(field, settings, DozerThreadContextClassLoader.class.getName());
-        } catch (Exception e) {
-            throw new IllegalStateException("Cannot configure Dozer GlobalSettings to use CamelToDozerClassResolverAdapter as classloader due " + e.getMessage(), e);
-        }
-
         ClassLoader tccl = Thread.currentThread().getContextClassLoader();
         try {
             ClassLoader appcl = camelContext.getApplicationContextClassLoader();
@@ -241,9 +230,9 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
     public static DozerBeanMapper createDozerBeanMapper(DozerBeanMapperConfiguration configuration) {
         DozerBeanMapper mapper;
         if (configuration.getMappingFiles() != null) {
-            mapper = new DozerBeanMapper(configuration.getMappingFiles());
+            mapper = DozerComponent.createDozerBeanMapper(configuration.getMappingFiles());
         } else {
-            mapper = new DozerBeanMapper();
+            mapper = DozerComponent.createDozerBeanMapper(Collections.<String>emptyList());
         }
         if (configuration.getCustomConverters() != null) {
             mapper.setCustomConverters(configuration.getCustomConverters());


[2/2] camel git commit: [CAMEL-9545] Dozer classloading may fail with spring based context

Posted by da...@apache.org.
[CAMEL-9545] Dozer classloading may fail with spring based context


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/740a5a73
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/740a5a73
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/740a5a73

Branch: refs/heads/master
Commit: 740a5a73c2ead8b56ce10e4f112b55fec75e8101
Parents: 626e08d
Author: Thomas Diesler <th...@jboss.com>
Authored: Thu Jan 28 11:18:08 2016 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Thu Jan 28 11:25:56 2016 +0100

----------------------------------------------------------------------
 .../camel/component/dozer/DozerComponent.java   | 27 +++++++++++++-------
 .../camel/component/dozer/DozerEndpoint.java    | 12 ++++-----
 .../dozer/DozerTypeConverterLoader.java         | 17 +++---------
 3 files changed, 27 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/740a5a73/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
index 764bf35..f401798 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerComponent.java
@@ -17,53 +17,62 @@
 package org.apache.camel.component.dozer;
 
 import java.lang.reflect.Field;
+import java.util.List;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.converter.dozer.DozerBeanMapperConfiguration;
+import org.apache.camel.converter.dozer.DozerThreadContextClassLoader;
 import org.apache.camel.impl.UriEndpointComponent;
 import org.apache.camel.util.ReflectionHelper;
+import org.dozer.DozerBeanMapper;
 import org.dozer.config.GlobalSettings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class DozerComponent extends UriEndpointComponent {
-    
+
     private static final Logger LOG = LoggerFactory.getLogger(DozerComponent.class);
 
     public DozerComponent() {
         super(DozerEndpoint.class);
-        initDozerSettings();
     }
-    
+
     public DozerComponent(CamelContext context) {
         super(context, DozerEndpoint.class);
-        initDozerSettings();
     }
-    
+
     protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
         DozerConfiguration config = new DozerConfiguration();
         config.setName(remaining);
         config.setMappingConfiguration(getAndRemoveOrResolveReferenceParameter(
                 parameters, "mappingConfiguration", DozerBeanMapperConfiguration.class));
         setProperties(config, parameters);
-        
+
         // Validate endpoint parameters
         if (config.getTargetModel() == null) {
             throw new IllegalArgumentException("The targetModel parameter is required for dozer endpoints");
         }
         return new DozerEndpoint(uri, this, config);
     }
-    
-    private void initDozerSettings() {
+
+    public static DozerBeanMapper createDozerBeanMapper(List<String> mappingFiles) {
+        GlobalSettings settings = GlobalSettings.getInstance();
+        try {
+            LOG.info("Configuring GlobalSettings to use Camel classloader: {}", DozerThreadContextClassLoader.class.getName());
+            Field field = settings.getClass().getDeclaredField("classLoaderBeanName");
+            ReflectionHelper.setField(field, settings, DozerThreadContextClassLoader.class.getName());
+        } catch (Exception e) {
+            throw new IllegalStateException("Cannot configure Dozer GlobalSettings to use DozerThreadContextClassLoader as classloader due " + e.getMessage(), e);
+        }
         try {
-            GlobalSettings settings = GlobalSettings.getInstance();
             LOG.info("Configuring GlobalSettings to enable EL");
             Field field = settings.getClass().getDeclaredField("elEnabled");
             ReflectionHelper.setField(field, settings, true);
         } catch (NoSuchFieldException nsfEx) {
             throw new IllegalStateException("Failed to enable EL in global Dozer settings", nsfEx);
         }
+        return new DozerBeanMapper(mappingFiles);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/740a5a73/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
index 2d48d11..9e056b1 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/component/dozer/DozerEndpoint.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.dozer;
 
 import java.io.InputStream;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -89,15 +90,15 @@ public class DozerEndpoint extends DefaultEndpoint {
     public void setConfiguration(DozerConfiguration configuration) {
         this.configuration = configuration;
     }
-    
+
     CustomMapper getCustomMapper() {
         return customMapper;
     }
-    
+
     VariableMapper getVariableMapper() {
         return variableMapper;
     }
-    
+
     ExpressionMapper getExpressionMapper() {
         return expressionMapper;
     }
@@ -122,9 +123,9 @@ public class DozerEndpoint extends DefaultEndpoint {
         super.doStop();
         // noop
     }
-    
+
     private DozerBeanMapper createDozerBeanMapper() throws Exception {
-        DozerBeanMapper answer = new DozerBeanMapper();
+        DozerBeanMapper answer = DozerComponent.createDozerBeanMapper(Collections.<String>emptyList());
         InputStream mapStream = null;
         try {
             LOG.info("Loading Dozer mapping file {}.", configuration.getMappingFile());
@@ -134,7 +135,6 @@ public class DozerEndpoint extends DefaultEndpoint {
         } finally {
             IOHelper.close(mapStream);
         }
-
         return answer;
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/740a5a73/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
----------------------------------------------------------------------
diff --git a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
index 9d6d3ae..f9396a9 100644
--- a/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
+++ b/components/camel-dozer/src/main/java/org/apache/camel/converter/dozer/DozerTypeConverterLoader.java
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.converter.dozer;
 
-import java.lang.reflect.Field;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -28,17 +27,16 @@ import java.util.Map;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.TypeConverter;
+import org.apache.camel.component.dozer.DozerComponent;
 import org.apache.camel.spi.ClassResolver;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.support.ServiceSupport;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.ReflectionHelper;
 import org.apache.camel.util.ResourceHelper;
 import org.dozer.DozerBeanMapper;
 import org.dozer.Mapper;
 import org.dozer.classmap.ClassMap;
 import org.dozer.classmap.MappingFileData;
-import org.dozer.config.GlobalSettings;
 import org.dozer.loader.api.BeanMappingBuilder;
 import org.dozer.loader.xml.MappingFileReader;
 import org.dozer.loader.xml.XMLParserFactory;
@@ -101,15 +99,6 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
      * @param configuration dozer mapping bean configuration.
      */
     public DozerTypeConverterLoader(CamelContext camelContext, DozerBeanMapperConfiguration configuration) {
-        GlobalSettings settings = GlobalSettings.getInstance();
-        try {
-            log.info("Configuring GlobalSettings to use Camel classloader: {}", DozerThreadContextClassLoader.class.getName());
-            Field field = settings.getClass().getDeclaredField("classLoaderBeanName");
-            ReflectionHelper.setField(field, settings, DozerThreadContextClassLoader.class.getName());
-        } catch (Exception e) {
-            throw new IllegalStateException("Cannot configure Dozer GlobalSettings to use CamelToDozerClassResolverAdapter as classloader due " + e.getMessage(), e);
-        }
-
         ClassLoader tccl = Thread.currentThread().getContextClassLoader();
         try {
             ClassLoader appcl = camelContext.getApplicationContextClassLoader();
@@ -241,9 +230,9 @@ public class DozerTypeConverterLoader extends ServiceSupport implements CamelCon
     public static DozerBeanMapper createDozerBeanMapper(DozerBeanMapperConfiguration configuration) {
         DozerBeanMapper mapper;
         if (configuration.getMappingFiles() != null) {
-            mapper = new DozerBeanMapper(configuration.getMappingFiles());
+            mapper = DozerComponent.createDozerBeanMapper(configuration.getMappingFiles());
         } else {
-            mapper = new DozerBeanMapper();
+            mapper = DozerComponent.createDozerBeanMapper(Collections.<String>emptyList());
         }
         if (configuration.getCustomConverters() != null) {
             mapper.setCustomConverters(configuration.getCustomConverters());