I have prototyped this change - see attached patch. Let me know if this is 
consistent with what you are envisioning. I added a static findAnnotation() 
method to BeanAdapter. WTKXSerializer uses this method to locate an IDProperty 
annotation and, if present, uses the value to set the given property.

Note that we may not be able to apply this change to Pivot 1.5.1. Adding the 
name property requires a change to the ComponentListener interface, which would 
break backwards compatibility. We could potentially add the ID annotation 
handling to 1.5.1, though.

G


On Jun 9, 2010, at 10:36 AM, aappddeevv wrote:

> It does not traverse or at least I ran into the same issue. Never could
> figure out what should really happen. 
> 
> If you look at the patch I submitted for the @DefaultProperty issue, I had
> to traverse to find the default property, which is often 1 or 2 levels up
> from the subclass that the client implements.
> 
> It may be time to create yet another AnnotationUtils static helper class.
> 
> 
> 
> -----Original Message-----
> From: Greg Brown [mailto:gkbr...@mac.com] 
> Sent: Wednesday, June 09, 2010 10:23 AM
> To: u...@pivot.apache.org
> Subject: Re: Component names inside the containers
> 
> I actually started prototyping this last night. I ran into what appears to
> be a bug in Class#getAnnotation(), but I'm not sure. The Javadoc for this
> method isn't specific, but the Javadoc for getDeclaredAnnotations() implies
> that getAnnotation() and getAnnotations() will traverse the class hierarchy
> looking for annotations, but getDeclaredAnnotations() will not. However, I
> have not found that to be the case in practice. I can walk up the class
> hierarchy myself, but I'm wondering if I'm simply misunderstanding
> something. Any ideas?
> 
> 
> On Jun 9, 2010, at 4:08 AM, Dirk Möbius wrote:
> 
>> Greg Brown <gkbr...@mac.com> wrote:
>>> After thinking this through a bit, I am starting to think that your idea
> to use an annotation here might make sense. I believe you suggested
> something along the lines of:
>>> 
>>> @IDProperty(name="foo")
>> 
>> Yes, or simply @Id, or @WtkxId to make clear that the wtkx:id gets
> injected.
>> @BxId also comes to mind, because you announced that WtkxSerializer will
> be renamed to BeanSerializer.
>> 
>> Note that if you use "value" as annotation parameter, you can omit it in
> the usage:
>> 
>> @IDProperty("foo")
>> 
>> You could also set the value "id" as default:
>> 
>> public interface @Id {
>> String value() = "id";
>> }
>> 
>> Thus, you only need to annotate a class with
>> 
>> @Id
>> public class Component {
>> ...
>> }
>> 
>> and it is assumed to have a getId()/setId() pair.
>> 
>> Btw. my previous post about this is here (dated 05/07):
>> 
> http://mail-archives.apache.org/mod_mbox/pivot-user/201005.mbox/%3C201005070
> 92329.13532v1k8xha1...@www.premium-webmail.de%3e
>> 
>>> If this attribute is specified, WTKXSerializer would propagate the ID
> value to the given property. This would avoid the name duplication and would
> be a fairly trivial change. I'm still not convinced that it is absolutely
> necessary, but it is nice to have and obviously has some use cases. Also, I
> believe Spring offers a similar feature via the BeanNameAware interface, so
> it would be nice to have a comparable feature.
>> 
>> Yes, it's like BeanNameAware, but annotations are less invasive because
> they don't prescribe a certain method name.
>> 
>> Dirk.
>> 
>>> 
>>> G
>>> 
>>> On Jun 8, 2010, at 6:03 PM, Dirk Möbius wrote:
>>> 
>>>> Greg Brown wrote:
>>>>> We don't actually need an annotation for this. Simply adding the getter
> and setter is sufficient to support the "name" attribute.
>>>> 
>>>> Oh, I thought the wtkx:id should be used as the name. So that you don't
> have to set an id AND a name:
>>>> 
>>>> <PushButton wktx:id="myButton"/>
>>>> 
>>>> looks better than:
>>>> 
>>>> <PushButton wktx:id="myButton" name="myButton"/>
>>>> 
>>>> I thought it would have been considered as a general good thing to have
> the wtkx:id injected into any object instance (of any type, in case it's
> annotated).
>>>> 
>>>> Dirk.
>>> 
>>> 
>> 
>> 
>> 
>> -- 
>> Dirk Möbius
>> 
>> SCOOP GmbH
>> Am Kielshof 29
>> D-51105 Köln
>> Fon   +49 221 801916-0
>> Fax   +49 221 801916-17
>> Mobil +49 170 7363035
>> www.scoop-gmbh.de
>> Sitz der Gesellschaft: Köln
>> Handelsregister: Köln
>> Handelsregisternummer: HRB 36623
>> Geschäftsführer:
>> Dr. Oleg Balovnev
>> Frank Heinen
>> Dr. Wolfgang Reddig
>> Roland Scheel
>> 
>> 
> 

Reply via email to