You're welcome - I'm glad to contribute!

Regards,
Jakob

2010/9/29 Rohit Kelapure <[email protected]>:
> This is an excellent patch.  Thanks Jakob!
>
> We ran into a similar issue discovered by Paul Reder where in
>   
> org.apache.webbeans.inject.impl.InjectionPointImpl.readObject(ObjectInputStream)
>
> the owner bean filtering
>   this.ownerBean = BeanManagerImpl.getManager().getBeans(beanClass,
> anns.toArray(new Annotation[0])).iterator().next();
>
> did NOT work.because checkEquality does NOT correctly compare the
> owner bean deserialized annotations with the resolvedComponent
> qualifiers.
>
> how this patch affects InjectionPointImpl deserialization ...
> method hierarchy -->
> org.apache.webbeans.util.AnnotationUtil.checkEquality(String, String,
> List<String>)
>   org.apache.webbeans.util.AnnotationUtil.hasAnnotationMember(Class<?
> extends Annotation>, Annotation, Annotation)
>       
> org.apache.webbeans.container.InjectionResolver.findByQualifier(Set<Bean<?>>,
> Annotation...)
>          
> org.apache.webbeans.container.InjectionResolver.implResolveByType(Type,
> Annotation...)
>               org.apache.webbeans.container.BeanManagerImpl.getBeans(Type,
> Annotation...)
>
> org.apache.webbeans.inject.impl.InjectionPointImpl.readObject(ObjectInputStream)
>
>
> --Thanks,
> Rohit Kelapure
>
> On Tue, Sep 28, 2010 at 5:24 PM, Jakob Korherr (JIRA) <[email protected]> wrote:
>>
>>     [ 
>> https://issues.apache.org/jira/browse/OWB-462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
>>  ]
>>
>> Jakob Korherr updated OWB-462:
>> ------------------------------
>>
>>    Attachment: OWB-462.patch
>>
>> The patch contains the refactored code and some test cases.
>>
>>> Refactor AnnotationUtil.hasAnnotationMember()
>>> ---------------------------------------------
>>>
>>>                 Key: OWB-462
>>>                 URL: https://issues.apache.org/jira/browse/OWB-462
>>>             Project: OpenWebBeans
>>>          Issue Type: Task
>>>          Components: Core
>>>    Affects Versions: 1.0.0-alpha-2
>>>            Reporter: Jakob Korherr
>>>            Assignee: Gurkan Erdogdu
>>>         Attachments: OWB-462.patch
>>>
>>>
>>> We needed a method to compare qualifiers for MyFaces CODI and stumbled upon 
>>> AnnotationUtil.hasAnnotationMember().
>>> However this method is really messy, because it uses the String 
>>> representation of an annotation to compare it and thus fails in various 
>>> cases (e.g. when using annotation instances which implement toString() 
>>> differently or by using array values in the qualifier). Furthermore it does 
>>> not detect @Nonbinding fields correctly, if there is more than one 
>>> annotation on the annotation-method.
>>> Also it's kinda weird that the method takes the Annotation-Class as an 
>>> extra parameter, but it could just get it from one of the Annotation 
>>> instances. I checked all usages and found out that this argument can be 
>>> dropped. In addition I think it's better to rename the method to 
>>> isQualifierEqual() - the usage is just a lot clearer.
>>> I implemented a custom solution for MyFaces CODI and I think it should also 
>>> be applied here.
>>
>> --
>> This message is automatically generated by JIRA.
>> -
>> You can reply to this email to add a comment to the issue online.
>>
>>
>



-- 
Jakob Korherr

blog: http://www.jakobk.com
twitter: http://twitter.com/jakobkorherr
work: http://www.irian.at

Reply via email to