You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2014/06/13 21:36:11 UTC

git commit: Updates to make sure extensions are only loaded once if multiple threads request the same extension at the same time.

Repository: cxf
Updated Branches:
  refs/heads/master 7d4f8ea0c -> 7f60c6cfc


Updates to make sure extensions are only loaded once if multiple threads request the same extension at the same time.


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

Branch: refs/heads/master
Commit: 7f60c6cfcfc74f52a331fe6cdd20fb570e8aa56c
Parents: 7d4f8ea
Author: Daniel Kulp <dk...@apache.org>
Authored: Fri Jun 13 15:29:11 2014 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Fri Jun 13 15:29:11 2014 -0400

----------------------------------------------------------------------
 core/src/main/java/org/apache/cxf/bus/extension/Extension.java  | 5 ++++-
 .../java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java | 4 +++-
 2 files changed, 7 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/7f60c6cf/core/src/main/java/org/apache/cxf/bus/extension/Extension.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/bus/extension/Extension.java b/core/src/main/java/org/apache/cxf/bus/extension/Extension.java
index d608a14..85e0860 100644
--- a/core/src/main/java/org/apache/cxf/bus/extension/Extension.java
+++ b/core/src/main/java/org/apache/cxf/bus/extension/Extension.java
@@ -43,7 +43,7 @@ public class Extension {
     protected boolean deferred;
     protected Collection<String> namespaces = new ArrayList<String>();
     protected Object args[];
-    protected Object obj;
+    protected volatile Object obj;
     protected boolean optional;
     protected boolean notFound;
     
@@ -197,6 +197,9 @@ public class Extension {
         return clazz;
     }
     public Object load(ClassLoader cl, Bus b) {
+        if (obj != null) {
+            return obj;
+        }
         Class<?> cls = getClassObject(cl);
         try {
             if (notFound) {

http://git-wip-us.apache.org/repos/asf/cxf/blob/7f60c6cf/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java b/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
index 71ae65d..79b88a6 100644
--- a/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
+++ b/core/src/main/java/org/apache/cxf/bus/extension/ExtensionManagerImpl.java
@@ -195,12 +195,14 @@ public class ExtensionManagerImpl implements ExtensionManager, ConfiguredBeanLoc
             Class<?> cls = null;
             if (null != e.getInterfaceName() && !"".equals(e.getInterfaceName())) {
                 cls = e.loadInterface(loader);
+            }  else {
+                cls = e.getClassObject(loader);
             }
     
             if (null != activated && null != cls && null != activated.get(cls)) {
                 return;
             }
-     
+            
             Object obj = e.load(loader, bus);
             if (obj == null) {
                 return;