[webbeans-commits] Webbeans SVN: r1181 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap and 6 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Thu Jan 22 13:08:43 EST 2009
Author: pete.muir at jboss.org
Date: 2009-01-22 13:08:43 -0500 (Thu, 22 Jan 2009)
New Revision: 1181
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java
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/AbstractClassBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
tck/trunk/impl/pom.xml
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
tck/trunk/pom.xml
Log:
Reimplement basic specialization and enable basic tests
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-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -31,7 +31,6 @@
import javax.webbeans.Event;
import javax.webbeans.InjectionPoint;
import javax.webbeans.Named;
-import javax.webbeans.Specializes;
import javax.webbeans.Standard;
import javax.webbeans.Stereotype;
import javax.webbeans.manager.Bean;
@@ -157,15 +156,9 @@
protected void initBindingTypes()
{
this.bindingTypes = new HashSet<Annotation>();
- boolean specialization = getAnnotatedItem().isAnnotationPresent(Specializes.class);
this.bindingTypes.addAll(getAnnotatedItem().getMetaAnnotations(BindingType.class));
- if (specialization)
+ if (bindingTypes.size() == 0)
{
- this.bindingTypes.addAll(getSpecializedType().getBindings());
- log.trace("Using binding types " + bindingTypes + " specified by annotations and specialized supertype");
- }
- else if (bindingTypes.size() == 0)
- {
log.trace("Adding default @Current binding type");
this.bindingTypes.add(new CurrentLiteral());
}
@@ -205,13 +198,8 @@
protected void initName()
{
boolean beanNameDefaulted = false;
- boolean specialization = getAnnotatedItem().isAnnotationPresent(Specializes.class);
if (getAnnotatedItem().isAnnotationPresent(Named.class))
{
- if (specialization)
- {
- throw new DefinitionException("Name specified for specialized bean");
- }
String javaName = getAnnotatedItem().getAnnotation(Named.class).value();
if ("".equals(javaName))
{
@@ -225,12 +213,7 @@
return;
}
}
- else if (specialization)
- {
- this.name = getSpecializedType().getName();
- log.trace("Using supertype name");
- return;
- }
+
if (beanNameDefaulted || getMergedStereotypes().isBeanNameDefaulted())
{
@@ -458,16 +441,6 @@
}
/**
- * Gets the specializes type of the bean
- *
- * @return The specialized type
- */
- protected AbstractBean<? extends T, E> getSpecializedType()
- {
- throw new UnsupportedOperationException();
- }
-
- /**
* Gets the type of the bean
*
* @return The type
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -31,6 +31,7 @@
import javax.webbeans.Produces;
import javax.webbeans.Production;
import javax.webbeans.ScopeType;
+import javax.webbeans.Specializes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.context.DependentInstancesStore;
@@ -289,10 +290,22 @@
@Override
protected String getDefaultName()
{
- String name = Strings.decapitalize(getType().getSimpleName());
+ String name = Strings.decapitalize(getSpecializedType().getSimpleName());
log.trace("Default name of " + type + " is " + name);
return name;
}
+
+ private AnnotatedClass<?> getSpecializedType()
+ {
+ if (annotatedItem.isAnnotationPresent(Specializes.class))
+ {
+ return annotatedItem.getSuperclass();
+ }
+ else
+ {
+ return annotatedItem;
+ }
+ }
/**
* Gets the injectable fields
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -268,29 +268,6 @@
}
/**
- * Gets the specializes type of the bean
- *
- * @return The specialized type
- */
- @SuppressWarnings("unchecked")
- @Override
- protected AbstractBean<? extends T, Class<T>> getSpecializedType()
- {
- // TODO: lots of validation!
- Class<?> superclass = getAnnotatedItem().getType().getSuperclass();
- if (superclass != null)
- {
- // TODO look up this bean and do this via init
- return (EnterpriseBean) EnterpriseBean.of(superclass, manager);
- }
- else
- {
- throw new RuntimeException();
- }
-
- }
-
- /**
* Validates the bean type
*/
private void checkEnterpriseBeanTypeAllowed()
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -436,27 +436,6 @@
}
/**
- * Returns the specializes type of the bean
- *
- * @return The specialized type
- */
- @SuppressWarnings("unchecked")
- protected AbstractBean<? extends T, Class<T>> getSpecializedType()
- {
- // TODO lots of validation!
- Class<?> superclass = getAnnotatedItem().getType().getSuperclass();
- if (superclass != null)
- {
- // TODO look up this bean and do this via init
- return (SimpleBean) SimpleBean.of(superclass, manager);
- }
- else
- {
- throw new RuntimeException();
- }
- }
-
- /**
* Returns the post-construct method
*
* @return The post-construct method
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -12,10 +12,12 @@
import javax.webbeans.DeploymentType;
import javax.webbeans.Fires;
import javax.webbeans.Initializer;
+import javax.webbeans.Named;
import javax.webbeans.Observes;
import javax.webbeans.Obtains;
import javax.webbeans.Produces;
import javax.webbeans.Realizes;
+import javax.webbeans.Specializes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.AbstractBean;
@@ -34,6 +36,7 @@
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedMethod;
+import org.jboss.webbeans.introspector.WrappedAnnotatedClass;
import org.jboss.webbeans.introspector.WrappedAnnotatedField;
import org.jboss.webbeans.introspector.WrappedAnnotatedMethod;
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
@@ -72,6 +75,10 @@
public void addClass(Class<?> clazz)
{
AnnotatedClass<?> annotatedClass = AnnotatedClassImpl.of(clazz);
+ if (annotatedClass.isAnnotationPresent(Specializes.class))
+ {
+ annotatedClass = specializeClass(annotatedClass);
+ }
if (manager.getEjbDescriptorCache().containsKey(clazz))
{
createBean(EnterpriseBean.of(annotatedClass, manager), annotatedClass);
@@ -333,4 +340,13 @@
};
}
+ private static <T> AnnotatedClass<T> specializeClass(final AnnotatedClass<T> clazz)
+ {
+ Set<Annotation> extraAnnotations = new HashSet<Annotation>();
+ extraAnnotations.addAll(clazz.getSuperclass().getDeclaredMetaAnnotations(BindingType.class));
+ extraAnnotations.add(clazz.getSuperclass().getAnnotation(Named.class));
+ Set<Annotation> extraDeclaredAnnotations = Collections.emptySet();
+ return new WrappedAnnotatedClass<T>(clazz, extraAnnotations, extraDeclaredAnnotations);
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -17,8 +17,6 @@
package org.jboss.webbeans.introspector;
-import java.lang.annotation.Annotation;
-import java.util.Set;
/**
* AnnotatedType provides a uniform access to a type defined either in Java or
@@ -44,6 +42,6 @@
*/
public boolean isEquivalent(Class<?> clazz);
- public AnnotatedType<T> wrap(Set<Annotation> annotations);
+ public String getSimpleName();
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -5,7 +5,7 @@
import java.util.List;
import java.util.Set;
-public abstract class ForwardingAnnotatedClass<T> extends ForwardingAnnotatedItem<T, Class<T>> implements AnnotatedClass<T>
+public abstract class ForwardingAnnotatedClass<T> extends ForwardingAnnotatedType<T> implements AnnotatedClass<T>
{
protected abstract AnnotatedClass<T> delegate();
@@ -84,15 +84,5 @@
{
return delegate().isParameterizedType();
}
-
- public boolean isEquivalent(Class<?> clazz)
- {
- return delegate().isEquivalent(clazz);
- }
- public AnnotatedClass<T> wrap(Set<Annotation> annotations)
- {
- throw new UnsupportedOperationException();
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -19,4 +19,9 @@
return delegate().isEquivalent(clazz);
}
+ public String getSimpleName()
+ {
+ return delegate().getSimpleName();
+ }
+
}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+public class WrappedAnnotatedClass<T> extends ForwardingAnnotatedClass<T>
+{
+
+ private final AnnotatedClass<T> delegate;
+ private AnnotationStore annotationStore;
+
+ public WrappedAnnotatedClass(AnnotatedClass<T> clazz, Set<Annotation> extraAnnotations, Set<Annotation> extraDeclaredAnnotations)
+ {
+ this.delegate = clazz;
+ this.annotationStore = AnnotationStore.wrap(clazz.getAnnotationStore(), extraAnnotations, extraDeclaredAnnotations);
+ }
+
+ @Override
+ protected AnnotatedClass<T> delegate()
+ {
+ return delegate;
+ }
+
+ @Override
+ public AnnotationStore getAnnotationStore()
+ {
+ return annotationStore;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -20,6 +20,7 @@
import java.lang.reflect.Modifier;
import org.jboss.webbeans.introspector.AnnotatedClass;
+import org.jboss.webbeans.introspector.AnnotatedType;
import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Reflections;
@@ -32,7 +33,7 @@
*
* @param <T>
*/
-public abstract class AbstractAnnotatedType<T> extends AbstractAnnotatedItem<T, Class<T>>
+public abstract class AbstractAnnotatedType<T> extends AbstractAnnotatedItem<T, Class<T>> implements AnnotatedType<T>
{
// The superclass abstraction of the type
@@ -40,6 +41,8 @@
// The name of the type
private final String name;
+ private final String _simpleName;
+
// Cached string representation
private String toString;
private final boolean _public;
@@ -53,6 +56,7 @@
{
super(annotatedItemHelper);
this.name = type.getName();
+ this._simpleName = type.getSimpleName();
if (type.getSuperclass() != null)
{
this.superclass = AnnotatedClassImpl.of(type.getSuperclass());
@@ -135,5 +139,10 @@
toString = "Abstract annotated type " + getName();
return toString;
}
+
+ public String getSimpleName()
+ {
+ return _simpleName;
+ }
}
Modified: tck/trunk/impl/pom.xml
===================================================================
--- tck/trunk/impl/pom.xml 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/impl/pom.xml 2009-01-22 18:08:43 UTC (rev 1181)
@@ -11,6 +11,7 @@
<groupId>org.jboss.webbeans.tck</groupId>
<artifactId>webbeans-tck-impl</artifactId>
<name>Web Beans TCK</name>
+
<dependencies>
<dependency>
@@ -40,8 +41,22 @@
</dependency>
<dependency>
- <groupId>javax.ejb</groupId>
- <artifactId>ejb-api</artifactId>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-api</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-jaxrpc</artifactId>
+ <groupId>jbossws</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-transaction-api</artifactId>
+ <groupId>org.jboss.javaee</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-jaxrpc</artifactId>
+ <groupId>jboss.jbossws</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -32,20 +32,20 @@
private static Annotation LANDOWNER_LITERAL = new AnnotationLiteral<Landowner>() {};
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.2.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.2.7"})
public void testSpecializingBeanHasBindingsOfSpecializedAndSpecializingBean()
{
- deployBeans(LazyFarmer.class);
+ deployBeans(Farmer.class, LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).size() == 1;
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getTypes().contains(LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getBindings().size() == 2;
assert annotationSetMatches( manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getBindings(), Landowner.class, Lazy.class);
}
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.2.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.2.7"})
public void testSpecializingBeanHasNameOfSpecializedBean()
{
- deployBeans(LazyFarmer.class);
+ deployBeans(Farmer.class, LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).size() == 1;
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getTypes().contains(LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getName().equals("farmer");
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-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -32,7 +32,7 @@
private static Annotation LANDOWNER_LITERAL = new AnnotationLiteral<Landowner>() {};
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.3.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.3.7"})
public void testSpecializingBeanHasBindingsOfSpecializedAndSpecializingBean()
{
deployBeans(LazyFarmer.class);
@@ -42,7 +42,7 @@
assert annotationSetMatches( manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getBindings(), Landowner.class, Lazy.class);
}
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.3.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.3.7"})
public void testSpecializingBeanHasNameOfSpecializedBean()
{
deployBeans(LazyFarmer.class);
Modified: tck/trunk/pom.xml
===================================================================
--- tck/trunk/pom.xml 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/pom.xml 2009-01-22 18:08:43 UTC (rev 1181)
@@ -73,64 +73,59 @@
</dependency>
<dependency>
- <groupId>javax.ejb</groupId>
- <artifactId>ejb-api</artifactId>
- <version>3.0</version>
- </dependency>
-
- <dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>
-
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
-
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.0.1B</version>
</dependency>
-
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
-
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.2</version>
</dependency>
-
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2_10</version>
</dependency>
-
<dependency>
<groupId>org.jboss.webbeans</groupId>
<artifactId>webbeans-api</artifactId>
<version>${webbeans.version}</version>
</dependency>
-
<dependency>
<groupId>org.jboss.webbeans.tck</groupId>
<artifactId>webbeans-tck-api</artifactId>
<version>${webbeans.tck.version}</version>
</dependency>
-
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>tck-utils</artifactId>
<version>0.9-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-api</artifactId>
+ <version>3.1.0-Alpha1</version>
+ <exclusions>
+ <exclusion>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
More information about the weld-commits
mailing list