[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