[webbeans-commits] Webbeans SVN: r143 - in ri/trunk: webbeans-ri/src/test/java/org/jboss/webbeans/test and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-10-24 11:13:35 -0400 (Fri, 24 Oct 2008)
New Revision: 143
Modified:
ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java
ri/trunk/webbeans-api/src/main/java/javax/webbeans/TypeLiteral.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/SimpleComponentModelTest.java
Log:
Allow any level of subclassing of AnnotationLiteral and TypeLiteral
Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java 2008-10-24 13:22:31 UTC (rev 142)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java 2008-10-24 15:13:35 UTC (rev 143)
@@ -28,83 +28,72 @@
*/
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
-// TODO Check members for equals, hashCode and toString()
public abstract class AnnotationLiteral<T extends Annotation> implements
Annotation
{
+
+ private Class<T> annotationType;
protected AnnotationLiteral()
{
- if (!(getClass().getSuperclass() == AnnotationLiteral.class))
+ Class<?> annotationLiteralSubclass = getAnnotationLiteralSubclass(this.getClass());
+ if (annotationLiteralSubclass == null)
{
- throw new RuntimeException(
- "Not a direct subclass of AnnotationLiteral");
+ throw new RuntimeException(getClass() + "is not a subclass of AnnotationLiteral ");
}
- if (!(getClass().getGenericSuperclass() instanceof ParameterizedType))
+ annotationType = getTypeParameter(annotationLiteralSubclass);
+ if (annotationType == null)
{
- throw new RuntimeException(
- "Missing type parameter in AnnotationLiteral");
+ throw new RuntimeException(getClass() + " is missing type parameter in AnnotationLiteral");
+
}
}
-
+
@SuppressWarnings("unchecked")
- private static <T> Class<T> getAnnotationType(Class<?> clazz)
+ private static Class<?> getAnnotationLiteralSubclass(Class<?> clazz)
{
- ParameterizedType parameterized = (ParameterizedType) clazz
- .getGenericSuperclass();
- return (Class<T>) parameterized.getActualTypeArguments()[0];
+ Class<?> superclass = clazz.getSuperclass();
+ if (superclass.equals(AnnotationLiteral.class))
+ {
+ return clazz;
+ }
+ else if (superclass.equals(Object.class))
+ {
+ return null;
+ }
+ else
+ {
+ return (getAnnotationLiteralSubclass(superclass));
+ }
}
- /*
- // Alternative impl of getAnnotationType
- private static <T> Class<T> getAnnotationType(Class<?> clazz)
+ @SuppressWarnings("unchecked")
+ private static <T> Class<T> getTypeParameter(Class<?> annotationLiteralSuperclass)
{
-
- Type type = clazz.getGenericSuperclass();
- Class<T> annotationType = null;
+ Type type = annotationLiteralSuperclass.getGenericSuperclass();
if (type instanceof ParameterizedType)
{
ParameterizedType parameterizedType = (ParameterizedType) type;
if (parameterizedType.getActualTypeArguments().length == 1)
{
- annotationType = (Class<T>) parameterizedType
+ return (Class<T>) parameterizedType
.getActualTypeArguments()[0];
}
}
- if (annotationType == null && clazz != Object.class)
- {
- return getAnnotationType(clazz.getSuperclass());
- } else
- {
- return annotationType;
- }
+ return null;
}
- *
- */
- // TODO: equals(), hashCode()
-
- private Class<T> annotationType;
-
-
-
public Class<? extends Annotation> annotationType()
{
- annotationType = getAnnotationType(getClass());
- if (annotationType == null)
- {
- throw new RuntimeException(
- "Unable to determine type of annotation literal for " + getClass());
- }
return annotationType;
}
@Override
public String toString()
{
- String annotationName = "@" + annotationType().getName() + "()";
- return annotationName;
+ return "@" + annotationType().getName() + "()";
}
@Override
Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/TypeLiteral.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/TypeLiteral.java 2008-10-24 13:22:31 UTC (rev 142)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/TypeLiteral.java 2008-10-24 15:13:35 UTC (rev 143)
@@ -26,39 +26,88 @@
* with actual type parameters.
*
* @author Gavin King
+ * @author Pete Muir
*
* @param <T>
* the type, including all actual type parameters
*/
-public abstract class TypeLiteral<T> {
+public abstract class TypeLiteral<T>
+{
- protected TypeLiteral() {
- if (!(getClass().getSuperclass() == TypeLiteral.class)) {
- throw new RuntimeException("Not a direct subclass of TypeLiteral");
+ private Type actualType;
+
+ protected TypeLiteral()
+ {
+ Class<?> typeLiteralSubclass = getTypeLiteralSubclass(this.getClass());
+ if (typeLiteralSubclass == null)
+ {
+ throw new RuntimeException(getClass() + " is not a subclass of TypeLiteral");
}
- if (!(getClass().getGenericSuperclass() instanceof ParameterizedType)) {
- throw new RuntimeException("Missing type parameter in TypeLiteral");
+ actualType = getTypeParameter(typeLiteralSubclass);
+ if (actualType == null)
+ {
+ throw new RuntimeException(getClass() + " is missing type parameter in TypeLiteral");
}
}
- public final Type getType() {
- ParameterizedType parameterized = (ParameterizedType) getClass()
- .getGenericSuperclass();
- return parameterized.getActualTypeArguments()[0];
+ public final Type getType()
+ {
+ return actualType;
}
@SuppressWarnings("unchecked")
public final Class<T> getRawType() {
Type type = getType();
- if (type instanceof Class) {
+ if (type instanceof Class)
+ {
return (Class<T>) type;
- } else if (type instanceof ParameterizedType) {
+ }
+ else if (type instanceof ParameterizedType)
+ {
return (Class<T>) ((ParameterizedType) type).getRawType();
- } else if (type instanceof GenericArrayType) {
+ }
+ else if (type instanceof GenericArrayType)
+ {
return (Class<T>) Object[].class;
- } else {
+ }
+ else
+ {
throw new RuntimeException("Illegal type");
}
}
+
+ @SuppressWarnings("unchecked")
+ private static Class<?> getTypeLiteralSubclass(Class<?> clazz)
+ {
+ Class<?> superclass = clazz.getSuperclass();
+ if (superclass.equals(TypeLiteral.class))
+ {
+ return clazz;
+ }
+ else if (superclass.equals(Object.class))
+ {
+ return null;
+ }
+ else
+ {
+ return (getTypeLiteralSubclass(superclass));
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private static Type getTypeParameter(Class<?> superclass)
+ {
+ Type type = superclass.getGenericSuperclass();
+ if (type instanceof ParameterizedType)
+ {
+ ParameterizedType parameterizedType = (ParameterizedType) type;
+ if (parameterizedType.getActualTypeArguments().length == 1)
+ {
+ return parameterizedType.getActualTypeArguments()[0];
+ }
+ }
+ return null;
+ }
+
// TODO: equals(), hashCode()
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/SimpleComponentModelTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/SimpleComponentModelTest.java 2008-10-24 13:22:31 UTC (rev 142)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/SimpleComponentModelTest.java 2008-10-24 15:13:35 UTC (rev 143)
@@ -48,22 +48,7 @@
public class SimpleComponentModelTest extends AbstractTest
{
- private class NamedAnnotationLiteral extends AnnotationLiteral<Named> implements Named
- {
-
- private String value;
-
- public NamedAnnotationLiteral(String value)
- {
- this.value = value;
- }
-
- public String value()
- {
- return value;
- }
-
- }
+ private abstract class NamedAnnotationLiteral extends AnnotationLiteral<Named> implements Named {}
// **** TESTS FOR DEPLOYMENT TYPE **** //
@@ -149,7 +134,14 @@
public void testDefaultXmlNamed()
{
Map<Class<? extends Annotation>, Annotation> annotations = new HashMap<Class<? extends Annotation>, Annotation>();
- annotations.put(Named.class, new NamedAnnotationLiteral(""));
+ annotations.put(Named.class, new NamedAnnotationLiteral() {
+
+ public String value()
+ {
+ return "";
+ }
+
+ });
AnnotatedType<SeaBass> annotatedItem = new SimpleAnnotatedType<SeaBass>(SeaBass.class, annotations);
SimpleComponentModel<SeaBass> trout = new SimpleComponentModel<SeaBass>(new SimpleAnnotatedType<SeaBass>(SeaBass.class), annotatedItem, manager);
@@ -161,7 +153,14 @@
public void testNonDefaultXmlNamed()
{
Map<Class<? extends Annotation>, Annotation> annotations = new HashMap<Class<? extends Annotation>, Annotation>();
- annotations.put(Named.class, new NamedAnnotationLiteral("aTrout"));
+ annotations.put(Named.class, new NamedAnnotationLiteral(){
+
+ public String value()
+ {
+ return "aTrout";
+ }
+
+ });
AnnotatedType<SeaBass> annotatedItem = new SimpleAnnotatedType<SeaBass>(SeaBass.class, annotations);
SimpleComponentModel<SeaBass> trout = new SimpleComponentModel<SeaBass>(new SimpleAnnotatedType<SeaBass>(SeaBass.class), annotatedItem, manager);
@@ -192,7 +191,14 @@
Map<Class<? extends Annotation>, Annotation> orderXmlAnnotations = new HashMap<Class<? extends Annotation>, Annotation>();
orderXmlAnnotations.put(Current.class, new CurrentAnnotationLiteral());
orderXmlAnnotations.put(Synchronous.class, new SynchronousAnnotationLiteral());
- orderXmlAnnotations.put(Named.class, new NamedAnnotationLiteral ("currentSynchronousOrder"));
+ orderXmlAnnotations.put(Named.class, new NamedAnnotationLiteral (){
+
+ public String value()
+ {
+ return "currentSynchronousOrder";
+ }
+
+ });
AnnotatedType currentSynchronousOrderAnnotatedItem = new SimpleAnnotatedType(Order.class, orderXmlAnnotations);
SimpleComponentModel<Order> order = new SimpleComponentModel<Order>(new SimpleAnnotatedType(Order.class), currentSynchronousOrderAnnotatedItem, manager);
17 years, 5 months
[webbeans-commits] Webbeans SVN: r142 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-10-24 09:22:31 -0400 (Fri, 24 Oct 2008)
New Revision: 142
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
Log:
minor
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 13:18:58 UTC (rev 141)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 13:22:31 UTC (rev 142)
@@ -58,7 +58,7 @@
return scopeType;
}
- public <T> void remove(Manager container, Bean<T> bean)
+ public <T> void remove(Manager manager, Bean<T> bean)
{
T instance = beans.get(bean);
@@ -74,11 +74,11 @@
}
}
- public void destroy(Manager container)
+ public void destroy(Manager manager)
{
for (Bean<? extends Object> bean : beans.keySet())
{
- remove(container, bean);
+ remove(manager, bean);
}
}
17 years, 5 months
[webbeans-commits] Webbeans SVN: r141 - in ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans: util and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-10-24 09:18:58 -0400 (Fri, 24 Oct 2008)
New Revision: 141
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanMap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/MapWrapper.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
Log:
Add a BeanMap
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 12:42:57 UTC (rev 140)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 13:18:58 UTC (rev 141)
@@ -1,14 +1,14 @@
package org.jboss.webbeans;
import java.lang.annotation.Annotation;
-import java.util.HashMap;
-import java.util.Map;
import javax.webbeans.ContextNotActiveException;
import javax.webbeans.manager.Bean;
import javax.webbeans.manager.Context;
import javax.webbeans.manager.Manager;
+import org.jboss.webbeans.util.BeanMap;
+
/**
* Basic implementation of javax.webbeans.Context, backed by a HashMap
*
@@ -17,29 +17,24 @@
*/
public class BasicContext implements Context
{
- private Map<Bean<? extends Object>, Object> beans;
+ private BeanMap<Object> beans;
private Class<? extends Annotation> scopeType;
private boolean active;
public BasicContext(Class<? extends Annotation> scopeType)
{
this.scopeType = scopeType;
- beans = new HashMap<Bean<?>, Object>();
+ beans = new BeanMap<Object>();
active = true;
}
- public void add(Bean<?> component, Object instance)
+ public <T> T get(Bean<T> bean, boolean create)
{
- beans.put(component, instance);
- }
-
- public <T> T get(Bean<T> component, boolean create)
- {
if (!active)
{
throw new ContextNotActiveException();
}
- T instance = (T) beans.get(component);
+ T instance = beans.get(bean);
if (instance != null)
{
return instance;
@@ -52,9 +47,9 @@
// TODO should component creation be synchronized?
- instance = component.create();
+ instance = bean.create();
- beans.put(component, instance);
+ beans.put(bean, instance);
return instance;
}
@@ -65,7 +60,7 @@
public <T> void remove(Manager container, Bean<T> bean)
{
- T instance = (T) beans.get(bean);
+ T instance = beans.get(bean);
if (instance != null)
{
@@ -81,12 +76,10 @@
public void destroy(Manager container)
{
- for (Bean c : beans.keySet())
+ for (Bean<? extends Object> bean : beans.keySet())
{
- c.destroy(beans.get(c));
+ remove(container, bean);
}
- beans.clear();
- active = false;
}
public boolean isActive()
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanMap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanMap.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanMap.java 2008-10-24 13:18:58 UTC (rev 141)
@@ -0,0 +1,21 @@
+package org.jboss.webbeans.util;
+
+import java.util.HashMap;
+
+import javax.webbeans.manager.Bean;
+
+public class BeanMap<V> extends MapWrapper<Bean<? extends V>, V>
+{
+
+ public BeanMap()
+ {
+ super(new HashMap<Bean<? extends V>, V>());
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends V> T get(Bean<? extends T> key)
+ {
+ return (T) super.get(key);
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanMap.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/MapWrapper.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/MapWrapper.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/MapWrapper.java 2008-10-24 13:18:58 UTC (rev 141)
@@ -0,0 +1,79 @@
+package org.jboss.webbeans.util;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+public class MapWrapper<K, V> implements Map<K, V>
+{
+
+ private Map<K, V> delegate;
+
+
+
+ public MapWrapper(Map<K, V> delegate)
+ {
+ this.delegate = delegate;
+ }
+
+ public void clear()
+ {
+ delegate.clear();
+ }
+
+ public boolean containsKey(Object key)
+ {
+ return delegate.containsKey(key);
+ }
+
+ public boolean containsValue(Object value)
+ {
+ return delegate.containsValue(value);
+ }
+
+ public Set<Entry<K, V>> entrySet()
+ {
+ return delegate.entrySet();
+ }
+
+ public V get(Object key)
+ {
+ return delegate.get(key);
+ }
+
+ public boolean isEmpty()
+ {
+ return delegate.isEmpty();
+ }
+
+ public Set<K> keySet()
+ {
+ return delegate.keySet();
+ }
+
+ public V put(K key, V value)
+ {
+ return delegate.put(key, value);
+ }
+
+ public void putAll(Map<? extends K, ? extends V> t)
+ {
+ delegate.putAll(t);
+ }
+
+ public V remove(Object key)
+ {
+ return delegate.remove(key);
+ }
+
+ public int size()
+ {
+ return delegate.size();
+ }
+
+ public Collection<V> values()
+ {
+ return delegate.values();
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/MapWrapper.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
17 years, 5 months
[webbeans-commits] Webbeans SVN: r140 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2008-10-24 08:42:57 -0400 (Fri, 24 Oct 2008)
New Revision: 140
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
Log:
Added add(Bean<?> component, Object instance)
rename values => beans
set active=false when destroy called (correct?)
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 12:20:59 UTC (rev 139)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 12:42:57 UTC (rev 140)
@@ -13,82 +13,89 @@
* Basic implementation of javax.webbeans.Context, backed by a HashMap
*
* @author Shane Bryzak
- *
+ * @author Nicklas Karlsson (nickarls(a)gmail.com)
*/
public class BasicContext implements Context
{
- private Map<Bean<? extends Object>, Object> values;
+ private Map<Bean<? extends Object>, Object> beans;
private Class<? extends Annotation> scopeType;
private boolean active;
-
+
public BasicContext(Class<? extends Annotation> scopeType)
{
this.scopeType = scopeType;
- values = new HashMap<Bean<?>,Object>();
+ beans = new HashMap<Bean<?>, Object>();
active = true;
}
-
- public <T> T get(Bean<T> component, boolean create)
+
+ public void add(Bean<?> component, Object instance)
{
+ beans.put(component, instance);
+ }
+
+ public <T> T get(Bean<T> component, boolean create)
+ {
if (!active)
{
throw new ContextNotActiveException();
}
- T instance = (T) values.get(component);
+ T instance = (T) beans.get(component);
if (instance != null)
{
return instance;
}
-
+
if (!create)
{
return null;
}
-
+
// TODO should component creation be synchronized?
-
+
instance = component.create();
-
- values.put(component, instance);
+
+ beans.put(component, instance);
return instance;
}
- public Class<? extends Annotation> getScopeType()
+ public Class<? extends Annotation> getScopeType()
{
return scopeType;
}
- public <T> void remove(Manager container, Bean<T> bean)
+ public <T> void remove(Manager container, Bean<T> bean)
{
- T instance = (T) values.get(bean);
-
+ T instance = (T) beans.get(bean);
+
if (instance != null)
{
- values.remove(bean);
+ beans.remove(bean);
bean.destroy(instance);
}
else
{
// TODO is this the correct exception to throw? See section 9.1 of spec
- throw new RuntimeException("Component " + bean.getName() + " cannot be removed as it " +
- "does not exist in [" + scopeType + "] context.");
+ throw new RuntimeException("Component " + bean.getName() + " cannot be removed as it " + "does not exist in [" + scopeType + "] context.");
}
}
-
+
public void destroy(Manager container)
{
- for (Bean c : values.keySet())
+ for (Bean c : beans.keySet())
{
- c.destroy(values.get(c));
+ c.destroy(beans.get(c));
}
- values.clear();
+ beans.clear();
+ active = false;
}
-
- public boolean isActive() {
+
+ public boolean isActive()
+ {
return active;
}
-
- public void setActive(boolean active) {
+
+ public void setActive(boolean active)
+ {
this.active = active;
}
17 years, 5 months
[webbeans-commits] Webbeans SVN: r139 - in ri/trunk: webbeans-ri and 2 other directories.
by webbeans-commits@lists.jboss.org
Author: nickarls
Date: 2008-10-24 08:20:59 -0400 (Fri, 24 Oct 2008)
New Revision: 139
Added:
ri/trunk/src/
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ContextTest.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
ri/trunk/webbeans-ri/testng.xml
Log:
Initial context tests
Added active attribute and setter to BasicContext
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 11:07:08 UTC (rev 138)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BasicContext.java 2008-10-24 12:20:59 UTC (rev 139)
@@ -4,6 +4,7 @@
import java.util.HashMap;
import java.util.Map;
+import javax.webbeans.ContextNotActiveException;
import javax.webbeans.manager.Bean;
import javax.webbeans.manager.Context;
import javax.webbeans.manager.Manager;
@@ -18,15 +19,21 @@
{
private Map<Bean<? extends Object>, Object> values;
private Class<? extends Annotation> scopeType;
+ private boolean active;
public BasicContext(Class<? extends Annotation> scopeType)
{
this.scopeType = scopeType;
values = new HashMap<Bean<?>,Object>();
+ active = true;
}
public <T> T get(Bean<T> component, boolean create)
{
+ if (!active)
+ {
+ throw new ContextNotActiveException();
+ }
T instance = (T) values.get(component);
if (instance != null)
{
@@ -78,8 +85,11 @@
}
public boolean isActive() {
- // TODO Auto-generated method stub
- return false;
+ return active;
}
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
}
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ContextTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ContextTest.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ContextTest.java 2008-10-24 12:20:59 UTC (rev 139)
@@ -0,0 +1,53 @@
+package org.jboss.webbeans.test;
+
+import javax.webbeans.ContextNotActiveException;
+import javax.webbeans.RequestScoped;
+import javax.webbeans.manager.Bean;
+import javax.webbeans.manager.Context;
+
+import org.jboss.webbeans.BasicContext;
+import org.jboss.webbeans.BeanImpl;
+import org.jboss.webbeans.introspector.SimpleAnnotatedType;
+import org.jboss.webbeans.model.SimpleComponentModel;
+import org.jboss.webbeans.test.components.Tuna;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.ExpectedExceptions;
+import org.testng.annotations.Test;
+
+/**
+ *
+ * @author Nicklas Karlsson (nickarls(a)gmail.com)
+ *
+ * This class tests a basic context against section 8 of the specification
+ *
+ */
+@SpecVersion("20081020")
+public class ContextTest extends AbstractTest
+{
+ Context context;
+
+ @BeforeMethod
+ public void initContext() {
+ context = new BasicContext(RequestScoped.class);
+ }
+
+ @Test(groups="contexts") @SpecAssertion(section="8.1")
+ public void testGetWithCreateFalseReturnsNull() {
+ Bean<Tuna> tunaBean = new BeanImpl<Tuna>(new SimpleComponentModel<Tuna>(new SimpleAnnotatedType<Tuna>(Tuna.class), getEmptyAnnotatedItem(Tuna.class), super.manager), manager);
+ assert context.get(tunaBean, false) == null;
+ }
+
+ @Test(groups="contexts") @SpecAssertion(section="8.1")
+ public void testGetWithCreateTrueReturnsBean() {
+ Bean<Tuna> tunaBean = new BeanImpl<Tuna>(new SimpleComponentModel<Tuna>(new SimpleAnnotatedType<Tuna>(Tuna.class), getEmptyAnnotatedItem(Tuna.class), super.manager), manager);
+ assert context.get(tunaBean, true) != null;
+ }
+
+ @Test(groups="contexts", expectedExceptions=ContextNotActiveException.class) @SpecAssertion(section="8.1")
+ public void testInactiveContextThrowsContextNotActiveException() {
+ ((BasicContext)context).setActive(false);
+ context.get(null, false);
+ assert true;
+ }
+
+}
Modified: ri/trunk/webbeans-ri/testng.xml
===================================================================
--- ri/trunk/webbeans-ri/testng.xml 2008-10-24 11:07:08 UTC (rev 138)
+++ ri/trunk/webbeans-ri/testng.xml 2008-10-24 12:20:59 UTC (rev 139)
@@ -13,6 +13,7 @@
<exclude name="remoteComponentInXml" />
<exclude name="eventbus" />
<exclude name="injection" />
+ <exclude name="contexts" />
</run>
</groups>
<packages>
17 years, 5 months
[webbeans-commits] Webbeans SVN: r137 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/injectable and 4 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-10-23 19:33:44 -0400 (Thu, 23 Oct 2008)
New Revision: 137
Added:
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Chunky.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Whitefish.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Cod.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Farmer.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Salmon.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/ScottishFish.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Sole.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectableTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/FishFarm.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Haddock.java
Log:
Fixes and tests for type safe resolution
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanImpl.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanImpl.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -78,5 +78,11 @@
// TODO Auto-generated method stub
return false;
}
+
+ @Override
+ public String toString()
+ {
+ return model.toString();
+ }
}
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 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -104,8 +104,16 @@
public <T> Set<Bean<T>> resolveByType(Class<T> apiType,
Annotation... bindingTypes)
{
- return getResolutionManager().get(
+ Set<Bean<T>> beans = getResolutionManager().get(
new SimpleInjectable<T>(apiType, bindingTypes));
+ if (beans == null)
+ {
+ return new HashSet<Bean<T>>();
+ }
+ else
+ {
+ return beans;
+ }
}
public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ResolutionManager.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -1,6 +1,7 @@
package org.jboss.webbeans;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -17,7 +18,8 @@
public ResolutionManager(ManagerImpl manager)
{
- resolvedInjectionPoints = new HashMap<Injectable<?, ?>, Set<?>>();
+ this.resolvedInjectionPoints = new HashMap<Injectable<?, ?>, Set<?>>();
+ this.injectionPoints = new HashSet<Injectable<?,?>>();
this.manager = manager;
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.Set;
+import javax.webbeans.BindingType;
import javax.webbeans.manager.Bean;
import org.jboss.webbeans.ManagerImpl;
@@ -64,14 +65,11 @@
if (bean.getTypes().contains(getType()))
{
List<Annotation> beanBindingTypes = new ArrayList<Annotation>(bean.getBindingTypes());
- for (Annotation annotation : annotatedItem.getAnnotations())
+ if (beanBindingTypes.containsAll(annotatedItem.getAnnotations()))
{
- if (beanBindingTypes.contains(annotation))
- {
- // TODO inspect annotation parameters
- // TODO inspect deployment types
- resolvedBeans.add(bean);
- }
+ // TODO inspect annotation parameters
+ // TODO inspect deployment types
+ resolvedBeans.add(bean);
}
}
}
@@ -81,10 +79,12 @@
@Override
public boolean equals(Object other)
{
+ // TODO Currently you must have any annotation literals on other for this to work, probably need to iterate over the set and check both directions
if (other instanceof Injectable)
{
Injectable<?, ?> that = (Injectable<?, ?>) other;
- return this.getAnnotatedItem().equals(that.getAnnotatedItem());
+ return this.getAnnotatedItem().getType().isAssignableFrom(that.getAnnotatedItem().getType()) &&
+ that.getAnnotatedItem().getAnnotations(BindingType.class).equals(this.getAnnotatedItem().getAnnotations(BindingType.class));
}
else
{
@@ -92,4 +92,10 @@
}
}
+ @Override
+ public int hashCode()
+ {
+ return 0;
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -108,9 +108,15 @@
if (other instanceof AnnotatedItem)
{
AnnotatedItem<?, ?> that = (AnnotatedItem<?, ?>) other;
- return this.getAnnotations().equals(that.getAnnotations()) && this.getDelegate().equals(that.getDelegate());
+ return this.getAnnotations().equals(that.getAnnotations()) && this.getType().equals(that.getType());
}
return false;
}
+
+ @Override
+ public int hashCode()
+ {
+ return getType().hashCode();
+ }
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectableTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectableTest.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InjectableTest.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -3,17 +3,26 @@
import java.util.HashSet;
import java.util.Set;
+import javax.webbeans.AnnotationLiteral;
import javax.webbeans.Current;
import javax.webbeans.manager.Bean;
import org.jboss.webbeans.BeanImpl;
+import org.jboss.webbeans.ResolutionManager;
+import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
import org.jboss.webbeans.injectable.InjectableField;
import org.jboss.webbeans.introspector.SimpleAnnotatedType;
import org.jboss.webbeans.model.SimpleComponentModel;
+import org.jboss.webbeans.test.annotations.Chunky;
+import org.jboss.webbeans.test.annotations.Whitefish;
import org.jboss.webbeans.test.components.Animal;
+import org.jboss.webbeans.test.components.Cod;
import org.jboss.webbeans.test.components.FishFarm;
import org.jboss.webbeans.test.components.Haddock;
+import org.jboss.webbeans.test.components.Salmon;
+import org.jboss.webbeans.test.components.ScottishFish;
import org.jboss.webbeans.test.components.SeaBass;
+import org.jboss.webbeans.test.components.Sole;
import org.jboss.webbeans.test.components.Tuna;
import org.jboss.webbeans.util.Reflections;
import org.testng.annotations.Test;
@@ -45,6 +54,39 @@
}
@Test
+ public void testOneBindingType() throws Exception
+ {
+ InjectableField<ScottishFish> scottishFishField = new InjectableField<ScottishFish>(FishFarm.class.getDeclaredField("scottishFish"));
+ Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleComponentModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedItem(Cod.class), super.manager), manager);
+ Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleComponentModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedItem(Salmon.class), super.manager), manager);
+ Bean<Sole> soleBean = new BeanImpl<Sole>(new SimpleComponentModel<Sole>(new SimpleAnnotatedType<Sole>(Sole.class), getEmptyAnnotatedItem(Sole.class), super.manager), manager);
+ Set<Bean<?>> beans = new HashSet<Bean<?>>();
+ beans.add(codBean);
+ beans.add(salmonBean);
+ beans.add(soleBean);
+ Set<Bean<?>> possibleTargets = scottishFishField.getPossibleBeans(beans);
+ assert possibleTargets.size() == 2;
+ assert possibleTargets.contains(codBean);
+ assert possibleTargets.contains(soleBean);
+ }
+
+ @Test
+ public void testABindingType() throws Exception
+ {
+ InjectableField<Animal> whiteChunkyFishField = new InjectableField<Animal>(FishFarm.class.getDeclaredField("whiteChunkyFish"));
+ Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleComponentModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedItem(Cod.class), super.manager), manager);
+ Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleComponentModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedItem(Salmon.class), super.manager), manager);
+ Bean<Sole> soleBean = new BeanImpl<Sole>(new SimpleComponentModel<Sole>(new SimpleAnnotatedType<Sole>(Sole.class), getEmptyAnnotatedItem(Sole.class), super.manager), manager);
+ Set<Bean<?>> beans = new HashSet<Bean<?>>();
+ beans.add(codBean);
+ beans.add(salmonBean);
+ beans.add(soleBean);
+ Set<Bean<?>> possibleTargets = whiteChunkyFishField.getPossibleBeans(beans);
+ assert possibleTargets.size() == 1;
+ assert possibleTargets.contains(codBean);
+ }
+
+ @Test
public void testMultipleApiTypeWithCurrent() throws Exception
{
InjectableField<Animal> animalField = new InjectableField<Animal>(FishFarm.class.getDeclaredField("animal"));
@@ -59,4 +101,53 @@
assert possibleTargets.contains(haddockBean);
}
+ @Test
+ public void testResolveByType() throws Exception
+ {
+ InjectableField<Animal> whiteChunkyFishField = new InjectableField<Animal>(FishFarm.class.getDeclaredField("whiteChunkyFish"));
+ InjectableField<Animal> animalField = new InjectableField<Animal>(FishFarm.class.getDeclaredField("animal"));
+ InjectableField<ScottishFish> scottishFishField = new InjectableField<ScottishFish>(FishFarm.class.getDeclaredField("scottishFish"));
+ InjectableField<Tuna> tunaField = new InjectableField<Tuna>(FishFarm.class.getDeclaredField("tuna"));
+
+ Bean<Tuna> tunaBean = new BeanImpl<Tuna>(new SimpleComponentModel<Tuna>(new SimpleAnnotatedType<Tuna>(Tuna.class), getEmptyAnnotatedItem(Tuna.class), super.manager), manager);
+ Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleComponentModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedItem(Cod.class), super.manager), manager);
+ Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleComponentModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedItem(Salmon.class), super.manager), manager);
+ Bean<Sole> soleBean = new BeanImpl<Sole>(new SimpleComponentModel<Sole>(new SimpleAnnotatedType<Sole>(Sole.class), getEmptyAnnotatedItem(Sole.class), super.manager), manager);
+ Bean<SeaBass> seaBassBean = new BeanImpl<SeaBass>(new SimpleComponentModel<SeaBass>(new SimpleAnnotatedType<SeaBass>(SeaBass.class), getEmptyAnnotatedItem(SeaBass.class), super.manager), manager);
+ Bean<Haddock> haddockBean = new BeanImpl<Haddock>(new SimpleComponentModel<Haddock>(new SimpleAnnotatedType<Haddock>(Haddock.class), getEmptyAnnotatedItem(Haddock.class), super.manager), manager);
+
+ manager.addBean(tunaBean);
+ manager.addBean(codBean);
+ manager.addBean(salmonBean);
+ manager.addBean(soleBean);
+ manager.addBean(haddockBean);
+ manager.addBean(seaBassBean);
+
+ ResolutionManager resolutionManager = manager.getResolutionManager();
+ resolutionManager.addInjectionPoint(whiteChunkyFishField);
+ resolutionManager.addInjectionPoint(animalField);
+ resolutionManager.addInjectionPoint(scottishFishField);
+ resolutionManager.addInjectionPoint(tunaField);
+
+ resolutionManager.registerInjectionPoints();
+
+ System.out.println("injection points registered");
+
+ assert manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral()).size() == 1;
+ assert manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral()).contains(tunaBean);
+
+ assert manager.resolveByType(Animal.class, new CurrentAnnotationLiteral()).size() == 3;
+ assert manager.resolveByType(Animal.class, new CurrentAnnotationLiteral()).contains(salmonBean);
+ assert manager.resolveByType(Animal.class, new CurrentAnnotationLiteral()).contains(seaBassBean);
+ assert manager.resolveByType(Animal.class, new CurrentAnnotationLiteral()).contains(haddockBean);
+
+ assert manager.resolveByType(Animal.class, new AnnotationLiteral<Chunky>() {}, new AnnotationLiteral<Whitefish>() {}).size() == 1;
+ assert manager.resolveByType(Animal.class, new AnnotationLiteral<Chunky>() {}, new AnnotationLiteral<Whitefish>() {}).contains(codBean);
+
+ assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).size() == 2;
+ assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(codBean);
+ assert manager.resolveByType(ScottishFish.class, new AnnotationLiteral<Whitefish>() {}).contains(soleBean);
+
+ }
+
}
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Chunky.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Chunky.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Chunky.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.test.annotations;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.BindingType;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@BindingType
+public @interface Chunky
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Chunky.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Whitefish.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Whitefish.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Whitefish.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,22 @@
+package org.jboss.webbeans.test.annotations;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.PARAMETER;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import javax.webbeans.BindingType;
+
+@Target( { TYPE, METHOD, PARAMETER, FIELD })
+@Retention(RUNTIME)
+@Documented
+@BindingType
+public @interface Whitefish
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/annotations/Whitefish.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Cod.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Cod.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Cod.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,14 @@
+package org.jboss.webbeans.test.components;
+
+import javax.webbeans.Production;
+
+import org.jboss.webbeans.test.annotations.Chunky;
+import org.jboss.webbeans.test.annotations.Whitefish;
+
+@Production
+@Whitefish
+@Chunky
+public class Cod implements ScottishFish
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Cod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Farmer.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Farmer.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Farmer.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,9 @@
+package org.jboss.webbeans.test.components;
+
+import javax.webbeans.Production;
+
+@Production
+public class Farmer<T>
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Farmer.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/FishFarm.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/FishFarm.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/FishFarm.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -3,6 +3,9 @@
import javax.webbeans.Current;
import javax.webbeans.Production;
+import org.jboss.webbeans.test.annotations.Chunky;
+import org.jboss.webbeans.test.annotations.Whitefish;
+
@Production
public class FishFarm
{
@@ -15,4 +18,13 @@
@Current
private Animal animal;
+ @SuppressWarnings("unused")
+ @Whitefish
+ private ScottishFish scottishFish;
+
+ @Whitefish @Chunky
+ private Animal whiteChunkyFish;
+
+ private Farmer<ScottishFish> scottishFishFarmer;
+
}
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Haddock.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Haddock.java 2008-10-23 23:30:14 UTC (rev 136)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Haddock.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -3,6 +3,8 @@
import javax.webbeans.Named;
import javax.webbeans.Production;
+import org.jboss.webbeans.test.annotations.Whitefish;
+
@Production
@Named
public class Haddock implements Animal
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Salmon.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Salmon.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Salmon.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,11 @@
+package org.jboss.webbeans.test.components;
+
+import javax.webbeans.Production;
+
+import org.jboss.webbeans.test.annotations.Whitefish;
+
+@Production
+public class Salmon implements ScottishFish
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Salmon.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/ScottishFish.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/ScottishFish.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/ScottishFish.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,6 @@
+package org.jboss.webbeans.test.components;
+
+public interface ScottishFish extends Animal
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/ScottishFish.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Sole.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Sole.java (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Sole.java 2008-10-23 23:33:44 UTC (rev 137)
@@ -0,0 +1,12 @@
+package org.jboss.webbeans.test.components;
+
+import javax.webbeans.Production;
+
+import org.jboss.webbeans.test.annotations.Whitefish;
+
+@Production
+@Whitefish
+public class Sole implements ScottishFish
+{
+
+}
Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/components/Sole.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
17 years, 5 months
[webbeans-commits] Webbeans SVN: r136 - ri/trunk/webbeans-api/src/main/java/javax/webbeans.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-10-23 19:30:14 -0400 (Thu, 23 Oct 2008)
New Revision: 136
Modified:
ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java
Log:
A "real" annotation always returns 0 as it's hashCode
Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java 2008-10-23 22:20:25 UTC (rev 135)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java 2008-10-23 23:30:14 UTC (rev 136)
@@ -124,6 +124,6 @@
@Override
public int hashCode()
{
- return annotationType().hashCode();
+ return 0;
}
}
17 years, 5 months
[webbeans-commits] Webbeans SVN: r135 - ri/trunk/webbeans-api/src/main/java/javax/webbeans.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2008-10-23 18:20:25 -0400 (Thu, 23 Oct 2008)
New Revision: 135
Modified:
ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java
Log:
implement equals, hashCode, still need to compare members
Modified: ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java
===================================================================
--- ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java 2008-10-23 21:05:34 UTC (rev 134)
+++ ri/trunk/webbeans-api/src/main/java/javax/webbeans/AnnotationLiteral.java 2008-10-23 22:20:25 UTC (rev 135)
@@ -29,6 +29,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
+// TODO Check members for equals, hashCode and toString()
public abstract class AnnotationLiteral<T extends Annotation> implements
Annotation
{
@@ -102,8 +103,27 @@
@Override
public String toString()
{
- // TODO Make this closer to the spec for Annotation
- String annotationName = "@" + annotationType().getName();
+ String annotationName = "@" + annotationType().getName() + "()";
return annotationName;
}
+
+ @Override
+ public boolean equals(Object other)
+ {
+ if (other instanceof Annotation)
+ {
+ Annotation that = (Annotation) other;
+ return this.annotationType().equals(that.annotationType());
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return annotationType().hashCode();
+ }
}
17 years, 5 months
[webbeans-commits] Webbeans SVN: r134 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans.
by webbeans-commits@lists.jboss.org
Author: gavin.king(a)jboss.com
Date: 2008-10-23 17:05:34 -0400 (Thu, 23 Oct 2008)
New Revision: 134
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
Log:
unused import
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 2008-10-23 21:04:24 UTC (rev 133)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-10-23 21:05:34 UTC (rev 134)
@@ -5,7 +5,6 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import javax.webbeans.DeploymentException;
17 years, 5 months
[webbeans-commits] Webbeans SVN: r133 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans.
by webbeans-commits@lists.jboss.org
Author: gavin.king(a)jboss.com
Date: 2008-10-23 17:04:24 -0400 (Thu, 23 Oct 2008)
New Revision: 133
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
Log:
return self
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 2008-10-23 21:02:27 UTC (rev 132)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-10-23 21:04:24 UTC (rev 133)
@@ -125,10 +125,10 @@
return beans;
}
- public void addContext(Context context)
+ public Manager addContext(Context context)
{
// TODO Auto-generated method stub
-
+ return this;
}
public Manager addDecorator(Decorator decorator)
@@ -143,18 +143,18 @@
return null;
}
- public <T> void addObserver(Observer<T> observer, Class<T> eventType,
+ public <T> Manager addObserver(Observer<T> observer, Class<T> eventType,
Annotation... bindings)
{
// TODO Auto-generated method stub
-
+ return this;
}
- public <T> void addObserver(Observer<T> observer, TypeLiteral<T> eventType,
+ public <T> Manager addObserver(Observer<T> observer, TypeLiteral<T> eventType,
Annotation... bindings)
{
// TODO Auto-generated method stub
-
+ return this;
}
public void fireEvent(Object event, Annotation... bindings)
@@ -163,7 +163,7 @@
}
- public Context getContext(Class<Annotation> scopeType)
+ public Context getContext(Class<? extends Annotation> scopeType)
{
// TODO Auto-generated method stub
return null;
@@ -200,18 +200,18 @@
return null;
}
- public <T> void removeObserver(Observer<T> observer, Class<T> eventType,
+ public <T> Manager removeObserver(Observer<T> observer, Class<T> eventType,
Annotation... bindings)
{
// TODO Auto-generated method stub
-
+ return this;
}
- public <T> void removeObserver(Observer<T> observer,
+ public <T> Manager removeObserver(Observer<T> observer,
TypeLiteral<T> eventType, Annotation... bindings)
{
// TODO Auto-generated method stub
-
+ return this;
}
public Set<Bean<?>> resolveByName(String name)
17 years, 5 months