[jboss-cvs] JBossAS SVN: r64331 - in projects/microcontainer/trunk/kernel/src: resources/tests/org/jboss/test/kernel/inject/test and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jul 27 13:28:17 EDT 2007
Author: alesj
Date: 2007-07-27 13:28:17 -0400 (Fri, 27 Jul 2007)
New Revision: 64331
Added:
projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjection.xml
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/support/GenericsTestObject.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjectionTestCase.java
Modified:
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java
projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java
projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/ContextualInjectionTestSuite.java
Log:
Generics support.
"Yes. Ales asked the same question a couple of months ago,
but this example wasn't committed then." :-)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractArrayMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -59,7 +59,7 @@
// No type specified
if (info == null)
{
- info = getElementClassInfo(cl);
+ info = getElementClassInfo(cl, null);
if (info == null)
return null;
info = info.getArrayType(0);
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractBeanMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -609,7 +609,7 @@
children.addAll(uninstallCallbacks);
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
throw new IllegalArgumentException("Cannot determine inject class type: " + this);
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractCollectionMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -29,8 +29,8 @@
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
import org.jboss.beans.metadata.spi.ValueMetaData;
+import org.jboss.reflect.spi.TypeInfo;
import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.reflect.spi.TypeInfo;
import org.jboss.util.JBossObject;
import org.jboss.util.JBossStringBuilder;
@@ -83,7 +83,7 @@
{
Collection result = getTypeInstance(info, cl, Collection.class);
- TypeInfo elementTypeInfo = getElementClassInfo(cl);
+ TypeInfo elementTypeInfo = getElementClassInfo(cl, info);
for (int i = 0; i < collection.size(); ++i)
{
ValueMetaData vmd = (ValueMetaData) collection.get(i);
@@ -92,7 +92,7 @@
return result;
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
if (elementType != null)
{
@@ -192,14 +192,24 @@
* Get the class info for the element type
*
* @param cl the classloader
+ * @param info the type info
* @return the class info
* @throws Throwable for any error
*/
- protected ClassInfo getElementClassInfo(ClassLoader cl) throws Throwable
+ protected TypeInfo getElementClassInfo(ClassLoader cl, TypeInfo info) throws Throwable
{
- if (elementType == null)
- return null;
+ if (elementType != null)
+ return configurator.getClassInfo(elementType, cl);
- return configurator.getClassInfo(elementType, cl);
+ // null is excluded
+ if (info instanceof ClassInfo)
+ {
+ ClassInfo classInfo = (ClassInfo)info;
+ TypeInfo[] types = classInfo.getActualTypeArguments();
+ if (types != null)
+ return types[0];
+ }
+
+ return null;
}
}
\ No newline at end of file
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractConstructorMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -38,6 +38,7 @@
import org.jboss.reflect.spi.ClassInfo;
import org.jboss.reflect.spi.ConstructorInfo;
import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.TypeInfo;
import org.jboss.util.JBossObject;
import org.jboss.util.JBossStringBuilder;
@@ -175,7 +176,7 @@
children.add(factory);
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
if (factory != null || factoryClassName != null)
{
@@ -196,7 +197,7 @@
ParameterMetaData parameter = (ParameterMetaData) previous;
String[] parameterTypes = Configurator.getParameterTypes(false, parameters);
MethodInfo methodInfo = Configurator.findMethodInfo(classInfo, factoryMethod, parameterTypes, factoryClassName != null, true);
- return applyCollectionOrMapCheck(methodInfo.getParameterTypes()[parameter.getIndex()].getType());
+ return applyCollectionOrMapCheck(methodInfo.getParameterTypes()[parameter.getIndex()]);
}
else
{
@@ -208,13 +209,13 @@
ParameterMetaData parameter = (ParameterMetaData) previous;
String[] paramTypes = Configurator.getParameterTypes(false, parameters);
ConstructorInfo ci = Configurator.findConstructorInfo(beanInfo.getClassInfo(), paramTypes);
- return applyCollectionOrMapCheck(ci.getParameterTypes()[parameter.getIndex()].getType());
+ return applyCollectionOrMapCheck(ci.getParameterTypes()[parameter.getIndex()]);
}
else
{
// currently value constructor supports only values that are instances of class itself
// this will add another instance with the same class to context
- Class type = beanInfo.getClassInfo().getType();
+ ClassInfo type = beanInfo.getClassInfo();
log.warn("Constructing bean from injection value: results in multiple beans with same class type - " + type);
return type;
/*
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractFeatureMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -22,18 +22,21 @@
package org.jboss.beans.metadata.plugins;
import java.io.Serializable;
+import java.util.Collection;
import java.util.Iterator;
+import java.util.Map;
import java.util.Set;
-import java.util.Collection;
-import java.util.Map;
import org.jboss.beans.metadata.spi.AnnotationMetaData;
import org.jboss.beans.metadata.spi.FeatureMetaData;
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
-import org.jboss.util.collection.CollectionsFactory;
import org.jboss.util.JBossObject;
import org.jboss.util.JBossStringBuilder;
+import org.jboss.util.collection.CollectionsFactory;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
/**
* General metadata.
@@ -101,14 +104,23 @@
vistor.describeVisit(this);
}
- protected Class applyCollectionOrMapCheck(Class clazz) throws Throwable
+ protected TypeInfo applyCollectionOrMapCheck(TypeInfo typeInfo) throws Throwable
{
- // todo - some generics check
- if (Collection.class.isAssignableFrom(clazz) || Map.class.isAssignableFrom(clazz))
+ TypeInfoFactory tif = typeInfo.getTypeInfoFactory();
+ boolean isMapTypeInfo = tif.getTypeInfo(Map.class).isAssignableFrom(typeInfo);
+ // cannot determine on map, since we don't know if we are key or value
+ if (typeInfo instanceof ClassInfo && isMapTypeInfo == false)
{
+ ClassInfo classInfo = (ClassInfo)typeInfo;
+ TypeInfo[] types = classInfo.getActualTypeArguments();
+ if (types != null)
+ return types[0];
+ }
+ if (tif.getTypeInfo(Collection.class).isAssignableFrom(typeInfo) || isMapTypeInfo)
+ {
throw new IllegalArgumentException("Should not be here - set element/value class type in collection/map: " + this);
}
- return clazz;
+ return typeInfo;
}
@SuppressWarnings("unchecked")
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractInjectionValueMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -281,7 +281,7 @@
if (node instanceof TypeProvider)
{
TypeProvider typeProvider = (TypeProvider)node;
- Class injectionClass = typeProvider.getType(visitor, this);
+ Class injectionClass = typeProvider.getType(visitor, this).getType();
// set when required
ControllerState whenRequired = whenRequiredState;
if (whenRequired == null)
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractLifecycleMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -35,6 +35,7 @@
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.reflect.spi.ClassInfo;
import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.TypeInfo;
import org.jboss.util.JBossObject;
import org.jboss.util.JBossStringBuilder;
@@ -161,14 +162,14 @@
children.addAll(parameters);
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
ParameterMetaData parameter = (ParameterMetaData) previous;
KernelControllerContext context = visitor.getControllerContext();
String method = (methodName != null ? methodName : type);
String[] parameterTypes = Configurator.getParameterTypes(false, parameters);
MethodInfo methodInfo = Configurator.findMethodInfo(getClassInfo(context), method, parameterTypes);
- return applyCollectionOrMapCheck(methodInfo.getParameterTypes()[parameter.getIndex()].getType());
+ return applyCollectionOrMapCheck(methodInfo.getParameterTypes()[parameter.getIndex()]);
}
protected ClassInfo getClassInfo(KernelControllerContext context) throws Throwable
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractMapMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -192,7 +192,7 @@
return children.iterator();
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
if (keyType != null)
{
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractParameterMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -34,6 +34,7 @@
import org.jboss.kernel.spi.dependency.KernelController;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.util.JBossStringBuilder;
+import org.jboss.reflect.spi.TypeInfo;
/**
* Metadata for a parameter.
@@ -164,7 +165,7 @@
children.add(value);
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
if (type != null)
{
@@ -172,7 +173,7 @@
ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
KernelController controller = (KernelController) context.getController();
KernelConfigurator configurator = controller.getKernel().getConfigurator();
- return applyCollectionOrMapCheck(configurator.getClassInfo(type, cl).getType());
+ return applyCollectionOrMapCheck(configurator.getClassInfo(type, cl));
}
else
{
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractPropertyMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -35,6 +35,7 @@
import org.jboss.kernel.spi.config.KernelConfigurator;
import org.jboss.kernel.spi.dependency.KernelControllerContext;
import org.jboss.util.JBossStringBuilder;
+import org.jboss.reflect.spi.TypeInfo;
/**
* Metadata for a property.
@@ -177,7 +178,7 @@
children.add(value);
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
String type = getType();
if (type != null)
@@ -185,7 +186,7 @@
KernelControllerContext context = visitor.getControllerContext();
ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
KernelConfigurator configurator = context.getKernel().getConfigurator();
- return configurator.getClassInfo(type, cl).getType();
+ return configurator.getClassInfo(type, cl);
}
// check properties
KernelControllerContext context = visitor.getControllerContext();
@@ -197,7 +198,7 @@
PropertyInfo pi = (PropertyInfo) it.next();
if (getName().equals(pi.getName()))
{
- return applyCollectionOrMapCheck(pi.getType().getType());
+ return applyCollectionOrMapCheck(pi.getType());
}
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractTypeMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -331,11 +331,11 @@
return configurator.getClassInfo(classType, cl);
}
- protected Class getClass(MetaDataVisitor visitor, String classType) throws Throwable
+ protected ClassInfo getClass(MetaDataVisitor visitor, String classType) throws Throwable
{
KernelControllerContext context = visitor.getControllerContext();
ClassLoader cl = Configurator.getClassLoader(context.getBeanMetaData());
- return getClassInfo(classType, cl).getType();
+ return getClassInfo(classType, cl);
}
}
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/AbstractValueMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -102,7 +102,7 @@
vistor.describeVisit(this);
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
Stack<MetaDataVisitorNode> visitorNodeStack = visitor.visitorNodeStack();
// see AbstractInjectionValueMetaData.describeVisit
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/StringValueMetaData.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -106,7 +106,7 @@
return null;
}
- public Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
+ public TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable
{
if (getType() != null)
{
Modified: projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/main/org/jboss/beans/metadata/plugins/TypeProvider.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -23,6 +23,7 @@
import org.jboss.beans.metadata.spi.MetaDataVisitor;
import org.jboss.beans.metadata.spi.MetaDataVisitorNode;
+import org.jboss.reflect.spi.TypeInfo;
/**
* @author <a href="mailto:ales.justin at genera-lynx.com">Ales Justin</a>
@@ -30,16 +31,16 @@
public interface TypeProvider
{
// error msg
- static final String ERROR_MSG = "Node not of TypeProvider instance, cannot determine class type.";
+ static final String ERROR_MSG = "Node not of TypeProvider instance, cannot determine type info.";
/**
- * Get the injectee class type.
+ * Get the injectee type info.
*
* @param visitor meda data visitor
* @param previous previous node in the stack
- * @return class type for injection ByClass
+ * @return TypeInfo type info for injection ByClass
* @throws Throwable if could not determine class
*/
- Class getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable;
+ TypeInfo getType(MetaDataVisitor visitor, MetaDataVisitorNode previous) throws Throwable;
}
Added: projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjection.xml
===================================================================
--- projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjection.xml (rev 0)
+++ projects/microcontainer/trunk/kernel/src/resources/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjection.xml 2007-07-27 17:28:17 UTC (rev 64331)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+ xmlns="urn:jboss:bean-deployer">
+
+ <bean name="testObject" class="org.jboss.test.kernel.inject.support.GenericsTestObject">
+ <property name="collection">
+ <collection><inject/></collection>
+ </property>
+ <property name="list">
+ <list><inject/></list>
+ </property>
+ <property name="set">
+ <set><inject/></set>
+ </property>
+ </bean>
+
+ <bean name="duplicateTester" class="org.jboss.test.kernel.inject.support.DuplicateTester"/>
+
+</deployment>
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/support/GenericsTestObject.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/support/GenericsTestObject.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/support/GenericsTestObject.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -0,0 +1,66 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.inject.support;
+
+import java.util.Collection;
+import java.util.Set;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:ales.justin at gmail.com">Ales Justin</a>
+ */
+public class GenericsTestObject
+{
+ private Collection<TesterInterface> collection;
+ private Set<TesterInterface> set;
+ private List<TesterInterface> list;
+
+ public Collection<TesterInterface> getCollection()
+ {
+ return collection;
+ }
+
+ public void setCollection(Collection<TesterInterface> collection)
+ {
+ this.collection = collection;
+ }
+
+ public Set<TesterInterface> getSet()
+ {
+ return set;
+ }
+
+ public void setSet(Set<TesterInterface> set)
+ {
+ this.set = set;
+ }
+
+ public List<TesterInterface> getList()
+ {
+ return list;
+ }
+
+ public void setList(List<TesterInterface> list)
+ {
+ this.list = list;
+ }
+}
Modified: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/ContextualInjectionTestSuite.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/ContextualInjectionTestSuite.java 2007-07-27 17:20:23 UTC (rev 64330)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/ContextualInjectionTestSuite.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -52,10 +52,12 @@
suite.addTest(BadCardinalityCallbackTestCase.suite());
suite.addTest(CandidateContextualInjectionTestCase.suite());
/*
+ TODO
suite.addTest(AdditionAnnotationCallbackTestCase.suite());
suite.addTest(CollectionAnnotationCallbackTestCase.suite());
suite.addTest(CardinalityAnnotationCallbackTestCase.suite());
*/
+ suite.addTest(GenericsContextualInjectionTestCase.suite());
return suite;
}
Added: projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjectionTestCase.java
===================================================================
--- projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjectionTestCase.java (rev 0)
+++ projects/microcontainer/trunk/kernel/src/tests/org/jboss/test/kernel/inject/test/GenericsContextualInjectionTestCase.java 2007-07-27 17:28:17 UTC (rev 64331)
@@ -0,0 +1,68 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.kernel.inject.test;
+
+import java.util.Collection;
+
+import junit.framework.Test;
+import org.jboss.test.kernel.inject.support.GenericsTestObject;
+import org.jboss.test.kernel.inject.support.TesterInterface;
+
+/**
+ * Generics injection.
+ *
+ * @author <a href="mailto:ales.justin at gmail.com">Ales Justin</a>
+ */
+public class GenericsContextualInjectionTestCase extends SingleContextualInjectionAdapter
+{
+ public GenericsContextualInjectionTestCase(String name)
+ {
+ super(name);
+ }
+
+ public static Test suite()
+ {
+ return suite(GenericsContextualInjectionTestCase.class);
+ }
+
+ protected String getResource()
+ {
+ return "GenericsContextualInjection.xml";
+ }
+
+ protected void checkInjection()
+ {
+ GenericsTestObject testBean = (GenericsTestObject)getBean("testObject");
+ assertNotNull(testBean);
+ TesterInterface tester = (TesterInterface)getBean("duplicateTester");
+ checkCollection(testBean.getCollection(), tester);
+ checkCollection(testBean.getList(), tester);
+ checkCollection(testBean.getSet(), tester);
+ }
+
+ protected void checkCollection(Collection<TesterInterface> collection, TesterInterface tester)
+ {
+ assertNotNull(collection);
+ assertFalse(collection.isEmpty());
+ assertEquals(collection.iterator().next(), tester);
+ }
+}
More information about the jboss-cvs-commits
mailing list