You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2010/08/05 16:44:28 UTC

svn commit: r982645 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java

Author: struberg
Date: Thu Aug  5 14:44:28 2010
New Revision: 982645

URL: http://svn.apache.org/viewvc?rev=982645&view=rev
Log:
OWB-432 remove overfluous FINDER 

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java?rev=982645&r1=982644&r2=982645&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java Thu Aug  5 14:44:28 2010
@@ -19,6 +19,7 @@
 package org.apache.webbeans.config;
 
 import org.apache.webbeans.corespi.DefaultSingletonService;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
 import org.apache.webbeans.spi.SingletonService;
 import org.apache.webbeans.util.WebBeansUtil;
 
@@ -29,15 +30,15 @@ import org.apache.webbeans.util.WebBeans
  * @version $Rev$ $Date$
  *
  */
-public final class WebBeansFinder implements SingletonService
+public final class WebBeansFinder
 {   
     //How you use singleton provider ,
     //As a default we use ClassLoader --> Object
-    private SingletonService singletonService = new DefaultSingletonService();
-    
-    //VM based singleton finder instance
-    private static final WebBeansFinder FINDER = new WebBeansFinder();
-    
+    private static SingletonService singletonService = new DefaultSingletonService();
+
+    /** safety mechanism to allow setting a special SingletonService only once */
+    private static boolean customSingletonServiceUsed = false;
+
     /**
      * No instantiate.
      */
@@ -53,63 +54,38 @@ public final class WebBeansFinder implem
     
     public static Object getSingletonInstance(String singletonName, ClassLoader classLoader)
     {
-        return FINDER.get(classLoader, singletonName);
+        return singletonService.get(classLoader, singletonName);
     }
     
     
     public static Object getExistingSingletonInstance(String singletonName, ClassLoader cl)
     {
-        return FINDER.getExist(cl, singletonName);
+        return singletonService.getExist(cl, singletonName);
     }
     
     public static void clearInstances(ClassLoader classLoader)
     {
-        FINDER.clear(classLoader);
+        singletonService.clear(classLoader);
     }
     
     public static Object getSingletonClassLoader(Object object)
     {
-        return FINDER.getKey(object);
+        return singletonService.getKey(object);
     }
     
-    //Thirdt pary frameworks can set singleton instance
-    //For example, OpenEJB could provide its own provider
-    //Based on deployment
-    public synchronized void setSingletonService(SingletonService singletonService)
-    {
-        FINDER.singletonService = singletonService;
-    }
-
-    @Override
-    public void clear(Object key)
-    {
-        this.singletonService.clear(key);
-    }
-
-    @Override
-    public Object get(Object key, String singletonClassName)
-    {
-        return this.singletonService.get(key, singletonClassName);
+    // Thirdt pary frameworks can set singleton instance
+    // For example, OpenEJB could provide its own provider
+    // Based on deployment
+    // this must not get set
+    public static void setSingletonService(SingletonService singletonSvc)
+    {
+        if (customSingletonServiceUsed && !singletonService.equals(singletonSvc))
+        {
+            throw new WebBeansConfigurationException("Already using another custom SingletonService!");
+        }
+        
+        singletonService = singletonSvc;
+        customSingletonServiceUsed = true;
     }
 
-    @Override
-    public Object getExist(Object key, String singletonClassName)
-    {
-        return this.singletonService.getExist(key, singletonClassName);
-    }
-
-    @Override
-    public Object getKey(Object singleton)
-    {
-        return this.singletonService.getKey(singleton);
-    }
-
-    @Override
-    public boolean isExist(Object key, String singletonClassName)
-    {
-        return this.singletonService.isExist(key, singletonClassName);
-    }
-    
-    
-
 }
\ No newline at end of file