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>
>
>
>