Author: gerdogdu
Date: Mon Nov  1 06:49:03 2010
New Revision: 1029567

URL: http://svn.apache.org/viewvc?rev=1029567&view=rev
Log:
[OWB-482], Small issues, thanks to David Jencks

Modified:
    openwebbeans/trunk/pom.xml
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java

Modified: openwebbeans/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/pom.xml?rev=1029567&r1=1029566&r2=1029567&view=diff
==============================================================================
--- openwebbeans/trunk/pom.xml (original)
+++ openwebbeans/trunk/pom.xml Mon Nov  1 06:49:03 2010
@@ -659,6 +659,16 @@
         </dependencies>
     </dependencyManagement>
 
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.openwebbeans.build-tools</groupId>
+            <artifactId>checkstyle-rules</artifactId>
+            <version>1.0.1-SNAPSHOT</version>
+            <scope>provided</scope>
+        </dependency>
+        
+    </dependencies>
+
     <profiles>
         <profile>
             <id>reporting</id>

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java?rev=1029567&r1=1029566&r2=1029567&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
 Mon Nov  1 06:49:03 2010
@@ -204,10 +204,9 @@ public abstract class AbstractContext im
         if(bag == null)
         {
             createContextualBag(contextual, creationalContext);
+            bag = (BeanInstanceBag<T>)componentInstanceMap.get(contextual);
         }
 
-        bag = (BeanInstanceBag<T>)componentInstanceMap.get(contextual);
-
         //Look for instance
         instance = bag.getBeanInstance();
         if (instance != null)
@@ -224,12 +223,8 @@ public abstract class AbstractContext im
             
             else
             {                
-                //No instance
-                if(instance == null)
-                {
-                    instance = bag.create(contextual);    
-                }
-            }            
+                instance = bag.create(contextual);    
+            }
         }
 
         return  instance;

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java?rev=1029567&r1=1029566&r2=1029567&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
 Mon Nov  1 06:49:03 2010
@@ -18,14 +18,15 @@
  */
 package org.apache.webbeans.portable.events;
 
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.ServiceLoader;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.Extension;
-
 import org.apache.webbeans.config.WebBeansFinder;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.exception.WebBeansException;
@@ -42,8 +43,9 @@ import org.apache.webbeans.util.WebBeans
 public class ExtensionLoader
 {
     /**Map of extensions*/
-    private Map<Bean<?>, Object> extensions = new ConcurrentHashMap<Bean<?>, 
Object>();
-    
+    private final  Map<Bean<?>, Object> extensions = new 
ConcurrentHashMap<Bean<?>, Object>();
+    private final Set<Class<? extends Extension>> extensionClasses = new 
HashSet<Class<? extends Extension>>();
+
     /**
      * Creates a new loader instance.
      */
@@ -71,17 +73,20 @@ public class ExtensionLoader
     {
         ServiceLoader<Extension> loader = ServiceLoader.load(Extension.class, 
WebBeansUtil.getCurrentClassLoader());
         Iterator<Extension> iterator = loader.iterator();
-        
         while(iterator.hasNext())
         {
             Extension ext = iterator.next();
-            try
+            if (!extensionClasses.contains(ext.getClass()))
             {
-                addExtension(ext);
-            }
-            catch (Exception e)
-            {
-                throw new WebBeansException("Error is occured while reading 
Extension service list",e);
+                extensionClasses.add(ext.getClass());
+                try
+                {
+                    addExtension(ext);
+                }
+                catch (Exception e)
+                {
+                    throw new WebBeansException("Error occurred while reading 
Extension service list",e);
+                }
             }
         }        
     }
@@ -108,21 +113,23 @@ public class ExtensionLoader
 
     /**
      * Add a CDI Extension to our internal list.
-     * @param ext
+     * @param ext Extension to add
      */
     public void addExtension(Extension ext)
     {
-        Bean<?> bean = WebBeansUtil.createExtensionComponent(ext.getClass());  
              
+        Bean<?> bean = WebBeansUtil.createExtensionComponent(ext.getClass());
         this.extensions.put(bean, ext);
-        
+
         BeanManagerImpl.getManager().addBean(bean);
     }
 
     /**
      * Clear service list.
+     * TODO since this doesn't remove the beans from the BeanManager it's 
unlikely to allow you to call loadExtensionServices again
      */
     public void clear()
     {
         this.extensions.clear();
-    }    
-}
\ No newline at end of file
+        this.extensionClasses.clear();
+    }
+}


Reply via email to