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