You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by Jeremy Hughes <hu...@apache.org> on 2009/12/15 14:40:03 UTC
Re: svn commit: r890750 - in /incubator/aries/trunk/blueprint/blueprint-core/src:
main/java/org/apache/aries/blueprint/container/ main/java/org/apache/aries/blueprint/utils/
test/java/org/apache/aries/blueprint/ test/java/org/apache/aries/blueprint/p
Hi Valentin, thanks for the fix. Could you add the Apache header to
the two new files please.
Thanks,
Jeremy
2009/12/15 <ma...@apache.org>:
> 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>
>
>
>