I think we originally DID use AnnotatedType. We surely did provide proxies for 
methods in superclasses. Would need to look at the history if/when we lost this.

LieGrue,
strub





> On Thursday, 12 February 2015, 14:48, Romain Manni-Bucau 
> <[email protected]> wrote:
> > sure it should but shouldn't we use annotated type methods instead of
> pure reflection?
> 
> 
> Romain Manni-Bucau
> @rmannibucau
> http://www.tomitribe.com
> http://rmannibucau.wordpress.com
> https://github.com/rmannibucau
> 
> 
> 
> 2015-02-12 14:41 GMT+01:00 Joseph Bergmark <[email protected]>:
>>  I need to write a quick unit test to verify, but I think this may still be
>>  missing non-public inherited methods.
>> 
>>  Previously it only used getDeclaredMethods, which would return all all
>>  private, protected, default and public methods for the class, but did not
>>  contain any inherited methods.  If I'm reading this change correctly it 
> now
>>  adds getMethods which will add public inherited methods but still 
> doesn't
>>  include protected or default methods.
>> 
>>  I wonder if we should walk up the class hierarchy and call
>>  getDeclaredMethods at each step.  Might need to discard private methods
>>  found in superclasses as I'm not sure we need to worry about those 
> being
>>  called on the proxy.
>> 
>>  On Tue, Feb 10, 2015 at 9:57 AM, <[email protected]> wrote:
>> 
>>>  Author: tandraschko
>>>  Date: Tue Feb 10 14:57:07 2015
>>>  New Revision: 1658730
>>> 
>>>  URL: http://svn.apache.org/r1658730
>>>  Log:
>>>  OWB-1036 NormalScoped ASM proxies broken in some cases for partial 
> beans
>>> 
>>>  Added:
>>> 
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClass.java
>>> 
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperClass.java
>>> 
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperInterface.java
>>>  Modified:
>>> 
>>> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
>>> 
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/NormalScopeProxyFactoryTest.java
>>> 
>>>  Modified:
>>> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
>>>  URL:
>>> 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=1658730&r1=1658729&r2=1658730&view=diff
>>> 
>>> 
> ==============================================================================
>>>  ---
>>> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
>>>  (original)
>>>  +++
>>> 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
>>>  Tue Feb 10 14:57:07 2015
>>>  @@ -305,8 +305,22 @@ public final class ClassUtil
>>>                                                Map<String, 
> List<Method>>
>>>  methodMap, List<Method> allMethods,
>>>                                                Class<?> clazz)
>>>       {
>>>  +        List<Method> temp = new
>>>  ArrayList<Method>(Arrays.asList(clazz.getMethods()));
>>>           for (Method method : clazz.getDeclaredMethods())
>>>           {
>>>  +            if (!temp.contains(method))
>>>  +            {
>>>  +                temp.add(method);
>>>  +            }
>>>  +        }
>>>  +
>>>  +        for (Method method : temp)
>>>  +        {
>>>  +                       if (allMethods.contains(method))
>>>  +                       {
>>>  +                               continue;
>>>  +                       }
>>>  +
>>>               if (method.isBridge())
>>>               {
>>>                   // we have no interest in generics bridge methods
>>> 
>>>  Modified:
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/NormalScopeProxyFactoryTest.java
>>>  URL:
>>> 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/NormalScopeProxyFactoryTest.java?rev=1658730&r1=1658729&r2=1658730&view=diff
>>> 
>>> 
> ==============================================================================
>>>  ---
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/NormalScopeProxyFactoryTest.java
>>>  (original)
>>>  +++
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/NormalScopeProxyFactoryTest.java
>>>  Tue Feb 10 14:57:07 2015
>>>  @@ -38,6 +38,7 @@ import java.lang.reflect.Type;
>>>   import java.net.URL;
>>>   import java.net.URLClassLoader;
>>>   import java.util.Set;
>>>  +import
>>>  org.apache.webbeans.test.interceptors.factory.beans.PartialBeanClass;
>>> 
>>>   import static org.junit.Assert.assertNotNull;
>>> 
>>>  @@ -207,6 +208,40 @@ public class NormalScopeProxyFactoryTest
>>> 
>>>       }
>>> 
>>>  +    @Test
>>>  +    public void textPartialBeanProxyCreation() throws Exception
>>>  +    {
>>>  +        NormalScopeProxyFactory pf = new NormalScopeProxyFactory(new
>>>  WebBeansContext());
>>>  +
>>>  +        // we take a fresh URLClassLoader to not blur the test 
> classpath
>>>  with synthetic classes.
>>>  +        ClassLoader classLoader = new URLClassLoader(new URL[0]);
>>>  +
>>>  +        Class<PartialBeanClass> proxyClass =
>>>  pf.createProxyClass(classLoader, PartialBeanClass.class);
>>>  +        Assert.assertNotNull(proxyClass);
>>>  +
>>>  +        PartialBeanClass internalInstance = new PartialBeanClass()
>>>  +        {
>>>  +            @Override
>>>  +            public String willFail2()
>>>  +            {
>>>  +                return "";
>>>  +            }
>>>  +
>>>  +            @Override
>>>  +            public String willFail()
>>>  +            {
>>>  +                return "";
>>>  +            }
>>>  +        };
>>>  +
>>>  +        TestContextualInstanceProvider provider = new
>>>  TestContextualInstanceProvider(internalInstance);
>>>  +
>>>  +        PartialBeanClass proxy = pf.createProxyInstance(proxyClass,
>>>  provider);
>>>  +
>>>  +        proxy.willFail();
>>>  +        proxy.willFail2();
>>>  +        proxy.willFail3();
>>>  +    }
>>> 
>>>       /**
>>>        * Test if protected and package scope methods are proxied as 
> well.
>>> 
>>>  Added:
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClass.java
>>>  URL:
>>> 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClass.java?rev=1658730&view=auto
>>> 
>>> 
> ==============================================================================
>>>  ---
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClass.java
>>>  (added)
>>>  +++
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClass.java
>>>  Tue Feb 10 14:57:07 2015
>>>  @@ -0,0 +1,30 @@
>>>  +/*
>>>  + * Licensed to the Apache Software Foundation (ASF) under one
>>>  + * or more contributor license agreements. See the NOTICE file
>>>  + * distributed with this work for additional information
>>>  + * regarding copyright ownership. The ASF licenses this file
>>>  + * to you under the Apache License, Version 2.0 (the
>>>  + * "License"); you may not use this file except in 
> compliance
>>>  + * with the License. You may obtain a copy of the License at
>>>  + *
>>>  + * http://www.apache.org/licenses/LICENSE-2.0
>>>  + *
>>>  + * Unless required by applicable law or agreed to in writing,
>>>  + * software distributed under the License is distributed on an
>>>  + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>>  + * KIND, either express or implied. See the License for the
>>>  + * specific language governing permissions and limitations
>>>  + * under the License.
>>>  + */
>>>  +package org.apache.webbeans.test.interceptors.factory.beans;
>>>  +
>>>  +import javax.enterprise.context.ApplicationScoped;
>>>  +
>>>  +@ApplicationScoped
>>>  +public abstract class PartialBeanClass extends 
> PartialBeanClassSuperClass
>>>  implements PartialBeanClassSuperInterface
>>>  +{
>>>  +    public String willFail3()
>>>  +    {
>>>  +        return "";
>>>  +    }
>>>  +}
>>> 
>>>  Added:
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperClass.java
>>>  URL:
>>> 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperClass.java?rev=1658730&view=auto
>>> 
>>> 
> ==============================================================================
>>>  ---
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperClass.java
>>>  (added)
>>>  +++
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperClass.java
>>>  Tue Feb 10 14:57:07 2015
>>>  @@ -0,0 +1,24 @@
>>>  +/*
>>>  + * Licensed to the Apache Software Foundation (ASF) under one
>>>  + * or more contributor license agreements. See the NOTICE file
>>>  + * distributed with this work for additional information
>>>  + * regarding copyright ownership. The ASF licenses this file
>>>  + * to you under the Apache License, Version 2.0 (the
>>>  + * "License"); you may not use this file except in 
> compliance
>>>  + * with the License. You may obtain a copy of the License at
>>>  + *
>>>  + * http://www.apache.org/licenses/LICENSE-2.0
>>>  + *
>>>  + * Unless required by applicable law or agreed to in writing,
>>>  + * software distributed under the License is distributed on an
>>>  + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>>  + * KIND, either express or implied. See the License for the
>>>  + * specific language governing permissions and limitations
>>>  + * under the License.
>>>  + */
>>>  +package org.apache.webbeans.test.interceptors.factory.beans;
>>>  +
>>>  +public abstract class PartialBeanClassSuperClass
>>>  +{
>>>  +    public abstract String willFail2();
>>>  +}
>>> 
>>>  Added:
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperInterface.java
>>>  URL:
>>> 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperInterface.java?rev=1658730&view=auto
>>> 
>>> 
> ==============================================================================
>>>  ---
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperInterface.java
>>>  (added)
>>>  +++
>>> 
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/interceptors/factory/beans/PartialBeanClassSuperInterface.java
>>>  Tue Feb 10 14:57:07 2015
>>>  @@ -0,0 +1,24 @@
>>>  +/*
>>>  + * Licensed to the Apache Software Foundation (ASF) under one
>>>  + * or more contributor license agreements. See the NOTICE file
>>>  + * distributed with this work for additional information
>>>  + * regarding copyright ownership. The ASF licenses this file
>>>  + * to you under the Apache License, Version 2.0 (the
>>>  + * "License"); you may not use this file except in 
> compliance
>>>  + * with the License. You may obtain a copy of the License at
>>>  + *
>>>  + * http://www.apache.org/licenses/LICENSE-2.0
>>>  + *
>>>  + * Unless required by applicable law or agreed to in writing,
>>>  + * software distributed under the License is distributed on an
>>>  + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
>>>  + * KIND, either express or implied. See the License for the
>>>  + * specific language governing permissions and limitations
>>>  + * under the License.
>>>  + */
>>>  +package org.apache.webbeans.test.interceptors.factory.beans;
>>>  +
>>>  +public interface PartialBeanClassSuperInterface
>>>  +{
>>>  +    public String willFail();
>>>  +}
>>> 
>>> 
>>> 
> 

Reply via email to