I have attached a patch here, with some tests
https://jira.jboss.org/jira/browse/WELDX-53
This patch also fixes a few other minor issues namely:
bytes were being coerced into shorts
type coercion was only happening on method invocation, not in the .equals method
Stuart
________________________________________
From: Shane Bryzak [sbryzak(a)redhat.com]
Sent: Wednesday, 2 December 2009 10:45 AM
To: Stuart Douglas
Cc: seam-dev(a)lists.jboss.org
Subject: Re: [seam-dev] First cab off the rank!
Actually, my workaround is to just take the value from the memberValues map:
Object value =
memberValues.get(annotationType.getDeclaredMethods()[i].getName());
On 02/12/09 09:38, Shane Bryzak wrote:
> It seems like there is a problem with AnnotationInvocationHandler -
> inside the toString() method an instance of the InvocationHandler is
> being passed to the static invoke() method, however it should be passing
> the proxy object. I can't think of a workaround for this though...
>
> On 02/12/09 08:13, Stuart Douglas wrote:
>
>> Looks fine, I just tested it out it my XML extensions modules and everything
still works.
>>
>>
>>
>> ________________________________________
>> From: Pete Muir [pmuir(a)redhat.com]
>> Sent: Wednesday, 2 December 2009 12:32 AM
>> To: Stuart Douglas
>> Cc: seam-dev(a)lists.jboss.org
>> Subject: Re: [seam-dev] First cab off the rank!
>>
>> Ok, I merged this into the Weld extensions module and pushed a snapshot to the
maven repo, please check it for me :-)
>>
>> On 30 Nov 2009, at 21:53, Stuart Douglas wrote:
>>
>>
>>
>>> There are only two, AnnotationCache and AnnotationInvocationHandler, I have
attached them in a zip. I was not sure what package you want to put them in so I have left
them as is.
>>>
>>> AnnotationCache provides the public interface, and as the name suggests
caches proxy instances so that a new one is not created each time.
>>>
>>> Stuart
>>>
>>>
>>>
>>> ________________________________________
>>> From: Pete Muir [pmuir(a)redhat.com]
>>> Sent: Monday, 30 November 2009 11:34 PM
>>> To: Stuart Douglas
>>> Subject: Re: [seam-dev] First cab off the rank!
>>>
>>> Stuart, can we merge this stuff into Weld extensions? Can you give me a
pointer to which classes to merge, or better yet a patch?
>>>
>>> On 30 Nov 2009, at 07:08, Stuart Douglas wrote:
>>>
>>>
>>>
>>>> Forgot to CC to seam-dev again.
>>>> ________________________________________
>>>> From: Stuart Douglas
>>>> Sent: Monday, 30 November 2009 6:06 PM
>>>> To: Shane Bryzak
>>>> Subject: RE: [seam-dev] First cab off the rank!
>>>>
>>>> No, it will support them, the special case stuff for the primitives is so
you don't have to be that careful about your types. e.g. :
>>>>
>>>> public @interface SomeAnnotation
>>>> {
>>>> long value();
>>>> }
>>>>
>>>> you can do
>>>>
>>>> map.put("value",10);
>>>>
>>>> rather than
>>>>
>>>> map.put("value",new Long(10));
>>>>
>>>> Feel free to steal it, most of was stoled from AnnotationLiteral anyway.
I think it would be good to get stuff like this and Gavin's Reannotated* classes and
put them in some kind of extension utils module.
>>>>
>>>> Stuart
>>>>
>>>>
>>>> ________________________________________
>>>> From: Shane Bryzak [sbryzak(a)redhat.com]
>>>> Sent: Monday, 30 November 2009 5:58 PM
>>>> To: Stuart Douglas
>>>> Cc: Gavin King; seam-dev(a)lists.jboss.org
>>>> Subject: Re: [seam-dev] First cab off the rank!
>>>>
>>>> Looks good Stuart, I might have to steal some of your code - it
doesn't
>>>> seem to support enum or class member values though, is that right?
>>>>
>>>> On 30/11/09 14:31, Stuart Douglas wrote:
>>>>
>>>>
>>>>> I have done up a quick and dirty one using JDK proxies, that seems to
work ok (all my XML config tests pass and most of the code was stolen from
AnnotationLiteral).
>>>>>
>>>>> The class that creates the proxy:
>>>>>
>>>>>
http://bazaar.launchpad.net/~stuart-baileyroberts/jbraze/trunk/annotate/h...
>>>>>
>>>>> The InvocationHandler:
>>>>>
>>>>>
http://bazaar.launchpad.net/~stuart-baileyroberts/jbraze/trunk/annotate/h...
>>>>>
>>>>> To create an instance you go
>>>>>
>>>>> AnnotationCache.getAnnotation(MyAnnotation.class,memberValues);
>>>>>
>>>>> where memberValues is a<String,Object> map of the
annotations member values.
>>>>>
>>>>> Stuart
>>>>> ________________________________________
>>>>> From: Gavin King [gavin.king(a)gmail.com]
>>>>> Sent: Monday, 30 November 2009 2:53 PM
>>>>> To: Stuart Douglas; Weld-Dev
>>>>> Subject: Re: [seam-dev] First cab off the rank!
>>>>>
>>>>> On Sun, Nov 29, 2009 at 10:39 PM, Gavin
King<gavin.king(a)gmail.com> wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Yes, you're right. So you would need to implement the
annotation @interface.
>>>>>>
>>>>>> On Sun, Nov 29, 2009 at 10:27 PM, Stuart Douglas
>>>>>> <stuart(a)baileyroberts.com.au> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> What about for @NonBinding members? Won't implementations
need to perform their own equality check if there are non binding members?
>>>>>>>
>>>>>>> Stuart
>>>>>>>
>>>>>>> ________________________________________
>>>>>>> From: Gavin King [gavin.king(a)gmail.com]
>>>>>>> Sent: Monday, 30 November 2009 1:22 PM
>>>>>>> To: Shane Bryzak
>>>>>>> Cc: Stuart Douglas; seam-dev(a)lists.jboss.org
>>>>>>> Subject: Re: [seam-dev] First cab off the rank!
>>>>>>>
>>>>>>> Yeah. Probably you could just stick the members in an array.
You
>>>>>>> probably don't need to actually implement the annotation
interface.
>>>>>>> You would only need to implement Annotation.
>>>>>>>
>>>>>>> Well, the spec does not say explicitly that this would work,
but it
>>>>>>> seems fairly safe.
>>>>>>>
>>>>>>> Sent from my iPhone
>>>>>>>
>>>>>>> On Nov 29, 2009, at 9:07 PM, Shane
Bryzak<sbryzak(a)redhat.com> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Good point - isn't this simply a case though of
implementing the
>>>>>>>> equals() and hashCode() methods and checking that the
members are
>>>>>>>> equal,
>>>>>>>> i.e. the same way that AnnotationLiteral does it?
>>>>>>>>
>>>>>>>> On 30/11/09 06:36, Stuart Douglas wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Does it still work when the annotation has members?
That was why I
>>>>>>>>> needed the javassist.
>>>>>>>>>
>>>>>>>>> Stuart
>>>>>>>>>
>>>>>>>>> ________________________________________
>>>>>>>>> From: seam-dev-bounces(a)lists.jboss.org [seam-dev-
>>>>>>>>> bounces(a)lists.jboss.org] On Behalf Of Shane Bryzak
>>>>>>>>> [sbryzak(a)redhat.com]
>>>>>>>>> Sent: Monday, 30 November 2009 5:34 AM
>>>>>>>>> To: Gavin King
>>>>>>>>> Cc: seam-dev(a)lists.jboss.org
>>>>>>>>> Subject: Re: [seam-dev] First cab off the rank!
>>>>>>>>>
>>>>>>>>> Nope, just wrote my own impl of Annotation which I
could then pass
>>>>>>>>> into
>>>>>>>>> BeanManager.getBeans().
>>>>>>>>>
>>>>>>>>> On 30/11/09 04:32, Gavin King wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> You used a jdk dynamicproxy? Probably a better
idea.
>>>>>>>>>>
>>>>>>>>>> Sent from my iPhone
>>>>>>>>>>
>>>>>>>>>> On Nov 29, 2009, at 1:01 PM, Shane
Bryzak<sbryzak(a)redhat.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Done, although I didn't need to use
Javassist. ;)
>>>>>>>>>>>
>>>>>>>>>>> On 30/11/09 02:38, Gavin King wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Stuart has some code to do this using
javassist.
>>>>>>>>>>>>
>>>>>>>>>>>> On Sun, Nov 29, 2009 at 2:00 AM, Shane
Bryzak<sbryzak(a)redhat.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Almost got this working, however I
need to be able to
>>>>>>>>>>>>> reflectively
>>>>>>>>>>>>> create an
>>>>>>>>>>>>> AnnotationLiteral, given a String
containing the fully qualified
>>>>>>>>>>>>> name of the
>>>>>>>>>>>>> qualifier. Anyone done this before?
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> seam-dev mailing list
>>>>>>>>> seam-dev(a)lists.jboss.org
>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/seam-dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> seam-dev mailing list
>>>>>>>> seam-dev(a)lists.jboss.org
>>>>>>>>
https://lists.jboss.org/mailman/listinfo/seam-dev
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Gavin King
>>>>>> gavin.king(a)gmail.com
>>>>>>
http://in.relation.to/Bloggers/Gavin
>>>>>>
http://hibernate.org
>>>>>>
http://seamframework.org
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> Gavin King
>>>>> gavin.king(a)gmail.com
>>>>>
http://in.relation.to/Bloggers/Gavin
>>>>>
http://hibernate.org
>>>>>
http://seamframework.org
>>>>>
>>>>> _______________________________________________
>>>>> seam-dev mailing list
>>>>> seam-dev(a)lists.jboss.org
>>>>>
https://lists.jboss.org/mailman/listinfo/seam-dev
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> seam-dev mailing list
>>>> seam-dev(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/seam-dev
>>>>
>>>>
>>> <annotation-creator.zip>
>>>
>>>
>> _______________________________________________
>> seam-dev mailing list
>> seam-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/seam-dev
>>
>>
> _______________________________________________
> seam-dev mailing list
> seam-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/seam-dev
>
_______________________________________________
seam-dev mailing list
seam-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/seam-dev