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 2014/02/03 10:39:28 UTC

[1/2] git commit: CAMEL-7161: camel-dozer - Can cause dead-lock in init when using spring

Updated Branches:
  refs/heads/camel-2.12.x c4b133165 -> ddabc95e6
  refs/heads/master ed07738ac -> 30842e35c


CAMEL-7161: camel-dozer - Can cause dead-lock in init when using spring


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

Branch: refs/heads/master
Commit: 30842e35c6086ec860674f31ca7148502fb0defa
Parents: ed07738
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Feb 3 10:39:44 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 3 10:39:44 2014 +0100

----------------------------------------------------------------------
 .../dozer/DozerTypeConverterLoader.java         | 47 +++++++++++++++++---
 1 file changed, 42 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/30842e35/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 317dfa8..edad108 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
@@ -30,6 +30,8 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.TypeConverter;
 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;
@@ -58,7 +60,7 @@ import static org.dozer.classmap.MappingDirection.ONE_WAY;
  * The queried types are used to register the {@link TypeConverter} with the
  * context via its {@link TypeConverterRegistry}.
  */
-public class DozerTypeConverterLoader implements CamelContextAware {
+public class DozerTypeConverterLoader extends ServiceSupport implements CamelContextAware {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
     private CamelContext camelContext;
@@ -82,7 +84,12 @@ public class DozerTypeConverterLoader implements CamelContextAware {
      *                     {@link DozerTypeConverter} in
      */
     public DozerTypeConverterLoader(CamelContext camelContext) {
-        init(camelContext, null);
+        this.camelContext = camelContext;
+        try {
+            camelContext.addService(this);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
     }
 
     /**
@@ -111,7 +118,14 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         log.info("Using DozerBeanMapperConfiguration: {}", configuration);
         DozerBeanMapper mapper = createDozerBeanMapper(configuration);
 
-        init(camelContext, mapper);
+        this.camelContext = camelContext;
+        this.mapper = mapper;
+
+        try {
+            camelContext.addService(this);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
     }
 
     /**
@@ -125,7 +139,14 @@ public class DozerTypeConverterLoader implements CamelContextAware {
      */
     @Deprecated
     public DozerTypeConverterLoader(CamelContext camelContext, DozerBeanMapper mapper) {
-        init(camelContext, mapper);
+        this.camelContext = camelContext;
+        this.mapper = mapper;
+
+        try {
+            camelContext.addService(this);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
     }
 
     /**
@@ -307,7 +328,14 @@ public class DozerTypeConverterLoader implements CamelContextAware {
      * @param camelContext the CamelContext
      */
     public void setCamelContext(CamelContext camelContext) {
-        init(camelContext, null);
+        if (this.camelContext == null) {
+            this.camelContext = camelContext;
+            try {
+                camelContext.addService(this);
+            } catch (Exception e) {
+                throw ObjectHelper.wrapRuntimeCamelException(e);
+            }
+        }
     }
 
     public DozerBeanMapper getMapper() {
@@ -332,4 +360,13 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         return url;
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        init(camelContext, mapper);
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }


[2/2] git commit: CAMEL-7161: camel-dozer - Can cause dead-lock in init when using spring

Posted by da...@apache.org.
CAMEL-7161: camel-dozer - Can cause dead-lock in init when using spring


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

Branch: refs/heads/camel-2.12.x
Commit: ddabc95e6e77bd9e8f3d4c0867981ed3fae3232b
Parents: c4b1331
Author: Claus Ibsen <da...@apache.org>
Authored: Mon Feb 3 10:39:44 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Mon Feb 3 10:40:16 2014 +0100

----------------------------------------------------------------------
 .../dozer/DozerTypeConverterLoader.java         | 47 +++++++++++++++++---
 1 file changed, 42 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ddabc95e/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 317dfa8..edad108 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
@@ -30,6 +30,8 @@ import org.apache.camel.CamelContextAware;
 import org.apache.camel.TypeConverter;
 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;
@@ -58,7 +60,7 @@ import static org.dozer.classmap.MappingDirection.ONE_WAY;
  * The queried types are used to register the {@link TypeConverter} with the
  * context via its {@link TypeConverterRegistry}.
  */
-public class DozerTypeConverterLoader implements CamelContextAware {
+public class DozerTypeConverterLoader extends ServiceSupport implements CamelContextAware {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
     private CamelContext camelContext;
@@ -82,7 +84,12 @@ public class DozerTypeConverterLoader implements CamelContextAware {
      *                     {@link DozerTypeConverter} in
      */
     public DozerTypeConverterLoader(CamelContext camelContext) {
-        init(camelContext, null);
+        this.camelContext = camelContext;
+        try {
+            camelContext.addService(this);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
     }
 
     /**
@@ -111,7 +118,14 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         log.info("Using DozerBeanMapperConfiguration: {}", configuration);
         DozerBeanMapper mapper = createDozerBeanMapper(configuration);
 
-        init(camelContext, mapper);
+        this.camelContext = camelContext;
+        this.mapper = mapper;
+
+        try {
+            camelContext.addService(this);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
     }
 
     /**
@@ -125,7 +139,14 @@ public class DozerTypeConverterLoader implements CamelContextAware {
      */
     @Deprecated
     public DozerTypeConverterLoader(CamelContext camelContext, DozerBeanMapper mapper) {
-        init(camelContext, mapper);
+        this.camelContext = camelContext;
+        this.mapper = mapper;
+
+        try {
+            camelContext.addService(this);
+        } catch (Exception e) {
+            throw ObjectHelper.wrapRuntimeCamelException(e);
+        }
     }
 
     /**
@@ -307,7 +328,14 @@ public class DozerTypeConverterLoader implements CamelContextAware {
      * @param camelContext the CamelContext
      */
     public void setCamelContext(CamelContext camelContext) {
-        init(camelContext, null);
+        if (this.camelContext == null) {
+            this.camelContext = camelContext;
+            try {
+                camelContext.addService(this);
+            } catch (Exception e) {
+                throw ObjectHelper.wrapRuntimeCamelException(e);
+            }
+        }
     }
 
     public DozerBeanMapper getMapper() {
@@ -332,4 +360,13 @@ public class DozerTypeConverterLoader implements CamelContextAware {
         return url;
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        init(camelContext, mapper);
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        // noop
+    }
 }