Jean-Louis, why would adding / replacing @Foo remove @Bar at the same time, without an explicit -...@bar? I definitely want to have several annotations on the same field / method / whatever at the same time and only modify some of them :-)
Frank On Tue, Dec 14, 2010 at 8:10 AM, <jeanlouis.pastu...@orange-ftgroup.com> wrote: > > Andy, > Your analysis is deeper than my first idea and more correct. > > <Andy> > @interface Foo { > String value() default "abc"; > int i() default 4; > } > > and this annotated target > > @Foo(value="hello") > int aField; > > declare @field: int aField: +...@foo(value,i=5) > > To 'preserve any value it might already have' > </Andy> > > Ok with this proposal and : > > if aField has @Bar annotation, @Bar is removed and replaced by @Foo, with > the statement above, the default value is set for value ( "abc") or it can > be overrided like : > declare @field: int aField: +...@foo(value="hello",i=5) > > > Do we have the same understanding of the behavior? > > Cordialement / Best regards > > Jean-Louis Pasturel > > > -----Message d'origine----- > De : aspectj-users-boun...@eclipse.org > [mailto:aspectj-users-boun...@eclipse.org] De la part de Andy Clement > Envoyé : lundi 13 décembre 2010 18:57 > À : aspectj-users@eclipse.org > Objet : Re: [aspectj-users] New feature of Aspectj 1.6.11 > > Hi, > > I actually have a whiteboard covered in syntax proposals around this topic > :) > > Yes, for compatibility reasons we have to maintain the existing defined > behaviour without inclusion of any special characters. It will annotate the > target or report an error if the target is already annotated. > > - removes them > > + could be used for replace. > > But then what would you use for augment? > > Suppose I have this annotation: > > @interface Foo { > String value() default "abc"; > int i() default 4; > } > > and this annotated target > > @Foo(value="hello") > int aField; > > What is the syntax for adding a value for 'i' to that annotation, whilst > keeping 'value="hello"' > > declare @field: int aField: +...@foo(i=5) > > according to your rules, that would replace the existing annotation with > yours, losing the 'value' of hello. It almost feels like '+' > should stand for augment (plus meaning 'additive'), but then what else could > we use for replace? > > Perhaps augment could be this? (not providing a new value for 'value' > - but specifying it to say 'preserve any value it might already have') > > declare @field: int aField: +...@foo(value,i=5) > > Andy > > On 11 December 2010 09:47, Pasturel <jean-louis.pastu...@orange.fr> wrote: >> I open a new thread to discuss the new feature of 1.6.11 about declare >> annotation >> >> The M1 comes with the removal of an annotation of field like specified >> in the readme : >> >> declare @field: int Foo.i: -...@anno; >> >> It gives me an idea with the + sign as this : >> declare @field: int Foo.i: +...@anno(param=<newValue>); >> >> that means a force replace : if @Anno exists remove it and replaces >> with the new parametrized @Anno.If not already exists creates it with >> the parametrized Anno. >> >> Without the - sign and without the + sign, it creates the Annotation >> on field or if already exists throws an exception ( that is certainly >> the current behavior => Andy?). >> >> What do you think about that ? >> >> JL PASTUREL >> >> <Andy_Post> >> >> Hi, >> >> I didn't write about using it in that way as we don't 100% yet define >> the rules there - well I might define it as undefined right now:) It >> might work right now but I'd need to confirm I want that ordering to >> remain reliable and stable. Any values you specify for the removal >> are actually not used right now, the removal is done based solely on >> the name - this means you'll get what you want if the removal runs >> first. I might add value matching enforcement later. Yes, at some >> point it will be added across all the declare annotation forms for >> consistency. >> >> Andy >> </Andy_Post> >> >> >> On 9 December 2010 23:14,<jeanlouis.pastu...@orange-ftgroup.com> wrote: >> >>> I see that 1.6.11M1 includes removal Annotation for field. >>> Just a question : >>> Is this kind of declare annotation below, supported in the same aspect : >>> ? >>> >>> �...@aspect >>> public class MyAspect >>> { >>> declare @field: int Foo.i: -...@anno(init=0); >>> declare @field: int Foo.i: @Anno(init=5); >>> ... >>> >>> } >>> >> >> _______________________________________________ >> aspectj-users mailing list >> aspectj-users@eclipse.org >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > > > ********************************* > This message and any attachments (the "message") are confidential and > intended solely for the addressees. > Any unauthorised use or dissemination is prohibited. > Messages are susceptible to alteration. > France Telecom Group shall not be liable for the message if altered, changed > or falsified. > If you are not the intended addressee of this message, please cancel it > immediately and inform the sender. > ******************************** > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users