[webbeans-commits] Webbeans SVN: r1188 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean and 1 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Jan 22 20:21:23 EST 2009


Author: pete.muir at jboss.org
Date: 2009-01-22 20:21:23 -0500 (Thu, 22 Jan 2009)
New Revision: 1188

Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java
   tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
Log:
One more :-)

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-01-23 01:21:07 UTC (rev 1187)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-01-23 01:21:23 UTC (rev 1188)
@@ -25,6 +25,7 @@
 import java.lang.reflect.WildcardType;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -118,6 +119,8 @@
 
    // The Naming (JNDI) access
    private transient final NamingContext namingContext;
+   
+   private final Map<Bean<?>, Bean<?>> specializedBeans;
 
    /**
     * Create a new manager
@@ -139,6 +142,7 @@
       this.eventManager = new EventManager();
       this.ejbDescriptorCache = new EjbDescriptorCache();
       this.injectionPointProvider = new InjectionPointProvider();
+      this.specializedBeans = new HashMap<Bean<?>, Bean<?>>();
 
       List<Class<? extends Annotation>> defaultEnabledDeploymentTypes = new ArrayList<Class<? extends Annotation>>();
       defaultEnabledDeploymentTypes.add(0, Standard.class);
@@ -523,8 +527,12 @@
     */
    public <T> T getInstance(Bean<T> bean)
    {
-      if (MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal())
+      if (specializedBeans.containsKey(bean))
       {
+         return getInstance((Bean<T>) specializedBeans.get(bean));
+      }
+      else if (MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal())
+      {
          return (T) proxyPool.getClientProxy(bean, true);
       }
       else
@@ -784,6 +792,16 @@
    {
       return injectionPointProvider;
    }
+   
+   /**
+    * 
+    * @return
+    */
+   public Map<Bean<?>, Bean<?>> getSpecializedBeans()
+   {
+      // TODO make this unmodifiable after deploy!
+      return specializedBeans;
+   }
 
    // Serialization
 

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-01-23 01:21:07 UTC (rev 1187)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-01-23 01:21:23 UTC (rev 1188)
@@ -132,7 +132,7 @@
       {
          preCheckSpecialization();
          initSpecialization();
-         postCheckSpecialization();
+         postSpecialization();
       }
       initType();
       initPrimitive();
@@ -324,12 +324,15 @@
       }
    }
    
-   protected void postCheckSpecialization()
+   protected void postSpecialization()
    {
       if (getAnnotatedItem().isAnnotationPresent(Named.class) && getSpecializedBean().getAnnotatedItem().isAnnotationPresent(Named.class))
       {
          throw new DefinitionException("Cannot put name on specializing and specialized class");
       }
+      // register the specialized bean
+      // TODO not sure this quite right
+      manager.getSpecializedBeans().put(getSpecializedBean(), this);
    }
    
    protected void preCheckSpecialization()
@@ -570,4 +573,14 @@
          return false;
       }
    }
+   
+   @Override
+   public int hashCode()
+   {
+      int result = 17;
+      result = 31 * result + getTypes().hashCode();
+      result = 31 * result + getBindings().hashCode();
+      return result;
+   }
+   
 }

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java	2009-01-23 01:21:07 UTC (rev 1187)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java	2009-01-23 01:21:23 UTC (rev 1188)
@@ -1,8 +1,10 @@
 package org.jboss.webbeans.tck.unit.inheritance.specialization.simple;
 
+import javax.webbeans.Specializes;
 
 
- at AnotherDeploymentType
+
+ at AnotherDeploymentType @Specializes
 class Office extends Building
 {
    

Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java	2009-01-23 01:21:07 UTC (rev 1187)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java	2009-01-23 01:21:23 UTC (rev 1188)
@@ -80,7 +80,7 @@
       deployBeans(OrganicFarmer_Broken.class);
    }
    
-   @Test(groups="broken") @SpecAssertion(section="4.3.1")
+   @Test @SpecAssertion(section="4.3.1")
    public void testProducerMethodOnSpecializedBeanCalledOnSpecializingBean() throws Exception
    {
       deployBeans(Office.class, Building.class);




More information about the weld-commits mailing list