Hi Valentin, thanks for the fix. Could you add the Apache header to the two new files please.
Thanks, Jeremy 2009/12/15 <[email protected]>: > Author: mahrwald > Date: Tue Dec 15 10:42:59 2009 > New Revision: 890750 > > URL: http://svn.apache.org/viewvc?rev=890750&view=rev > Log: > ARIES-82 Fix problem with generics in method signatures > > Added: > > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/Primavera.java > > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PrimaveraFactory.java > Modified: > > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BeanRecipe.java > > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/utils/ReflectionUtils.java > > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java > > incubator/aries/trunk/blueprint/blueprint-core/src/test/resources/test-generics.xml > > Modified: > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BeanRecipe.java > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BeanRecipe.java?rev=890750&r1=890749&r2=890750&view=diff > ============================================================================== > --- > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BeanRecipe.java > (original) > +++ > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/container/BeanRecipe.java > Tue Dec 15 10:42:59 2009 > @@ -281,6 +281,8 @@ > it.remove(); > } else if (instance ^ !Modifier.isStatic(mth.getModifiers())) { > it.remove(); > + } else if (mth.isBridge()) { > + it.remove(); > } > } > // Find a direct match with assignment > > Modified: > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/utils/ReflectionUtils.java > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/utils/ReflectionUtils.java?rev=890750&r1=890749&r2=890750&view=diff > ============================================================================== > --- > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/utils/ReflectionUtils.java > (original) > +++ > incubator/aries/trunk/blueprint/blueprint-core/src/main/java/org/apache/aries/blueprint/utils/ReflectionUtils.java > Tue Dec 15 10:42:59 2009 > @@ -22,9 +22,6 @@ > import java.lang.reflect.InvocationTargetException; > import java.lang.reflect.Method; > import java.lang.reflect.Modifier; > -import java.lang.reflect.Type; > -import java.lang.ref.Reference; > -import java.lang.ref.SoftReference; > import java.security.AccessControlContext; > import java.security.AccessController; > import java.security.PrivilegedActionException; > @@ -104,7 +101,7 @@ > List<Method> methods = new ArrayList<Method>(); > for (Method method : clazz.getMethods()) { > Class[] methodParams = method.getParameterTypes(); > - if (name.equals(method.getName()) && > Void.TYPE.equals(method.getReturnType()) && methodParams.length == > paramTypes.length) { > + if (name.equals(method.getName()) && > Void.TYPE.equals(method.getReturnType()) && methodParams.length == > paramTypes.length && !method.isBridge()) { > boolean assignable = true; > for (int i = 0; i < paramTypes.length && assignable; i++) { > assignable &= paramTypes[i] == null || > methodParams[i].isAssignableFrom(paramTypes[i]); > @@ -122,7 +119,7 @@ > if (properties == null) { > List<PropertyDescriptor> props = new > ArrayList<PropertyDescriptor>(); > for (Method method : clazz.getMethods()) { > - if (Modifier.isStatic(method.getModifiers())) { > + if (Modifier.isStatic(method.getModifiers()) || > method.isBridge()) { > continue; > } > String name = method.getName(); > > Modified: > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java?rev=890750&r1=890749&r2=890750&view=diff > ============================================================================== > --- > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java > (original) > +++ > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/WiringTest.java > Tue Dec 15 10:42:59 2009 > @@ -41,6 +41,7 @@ > import org.apache.aries.blueprint.pojos.PojoGenerics; > import org.apache.aries.blueprint.pojos.PojoListener; > import org.apache.aries.blueprint.pojos.PojoRecursive; > +import org.apache.aries.blueprint.pojos.Primavera; > import org.osgi.framework.ServiceRegistration; > import org.osgi.service.blueprint.container.ComponentDefinitionException; > > @@ -333,6 +334,14 @@ > pojo = (PojoGenerics) obj; > > assertEquals(expectedMap, pojo.getMap()); > + > + obj = repository.create("genericPojo"); > + assertTrue(obj instanceof Primavera); > + assertEquals("string", ((Primavera) obj).prop); > + > + obj = repository.create("doubleGenericPojo"); > + assertTrue(obj instanceof Primavera); > + assertEquals("stringToo", ((Primavera) obj).prop); > } > > public void testCircular() throws Exception { > > Added: > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/Primavera.java > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/Primavera.java?rev=890750&view=auto > ============================================================================== > --- > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/Primavera.java > (added) > +++ > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/Primavera.java > Tue Dec 15 10:42:59 2009 > @@ -0,0 +1,13 @@ > +package org.apache.aries.blueprint.pojos; > + > +interface Product<T> { > + void setProperty(T value); > +} > + > +public class Primavera implements Product<String> { > + public String prop; > + > + public void setProperty(String value) { > + prop = value; > + } > +} > > Added: > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PrimaveraFactory.java > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PrimaveraFactory.java?rev=890750&view=auto > ============================================================================== > --- > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PrimaveraFactory.java > (added) > +++ > incubator/aries/trunk/blueprint/blueprint-core/src/test/java/org/apache/aries/blueprint/pojos/PrimaveraFactory.java > Tue Dec 15 10:42:59 2009 > @@ -0,0 +1,19 @@ > +package org.apache.aries.blueprint.pojos; > + > +interface GenericFactory<T,U> { > + T getObject(); > + T getObject(U value); > +} > + > +public class PrimaveraFactory implements GenericFactory<Primavera,String> { > + > + public Primavera getObject() { > + return new Primavera(); > + } > + > + public Primavera getObject(String value) { > + Primavera res = new Primavera(); > + res.setProperty(value); > + return res; > + } > +} > > Modified: > incubator/aries/trunk/blueprint/blueprint-core/src/test/resources/test-generics.xml > URL: > http://svn.apache.org/viewvc/incubator/aries/trunk/blueprint/blueprint-core/src/test/resources/test-generics.xml?rev=890750&r1=890749&r2=890750&view=diff > ============================================================================== > --- > incubator/aries/trunk/blueprint/blueprint-core/src/test/resources/test-generics.xml > (original) > +++ > incubator/aries/trunk/blueprint/blueprint-core/src/test/resources/test-generics.xml > Tue Dec 15 10:42:59 2009 > @@ -80,5 +80,13 @@ > </argument> > </bean> > > + <bean id="genericPojoFactory" > class="org.apache.aries.blueprint.pojos.PrimaveraFactory" /> > + <bean id="genericPojo" factory-ref="genericPojoFactory" > factory-method="getObject"> > + <property name="property" value="string" /> > + </bean> > + > + <bean id="doubleGenericPojo" factory-ref="genericPojoFactory" > factory-method="getObject"> > + <property name="property" value="stringToo" /> > + </bean> > > </blueprint> > > >
