I might suggest moving the + or - sign inside the annotation to indicate the addition or removal of the annotation's member:
declare @field: int aField: @Foo(+i=5) That way, you can add and remove annotation members all in one shot: declare @field: int aField: +...@bar(-i=5,+goo="messy") etc. -matthew On Tue, Dec 14, 2010 at 4:04 AM, <jeanlouis.pastu...@orange-ftgroup.com>wrote: > > Because i am lazy ;-) and to avoid errors of orders of handling declare > annotation ( order of + and - ). > > > But I aggree it is a fallacious argument > > 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 Frank Pavageau > Envoyé : mardi 14 décembre 2010 10:30 > À : aspectj-users@eclipse.org > Objet : Re: [aspectj-users] New feature of Aspectj 1.6.11 > > 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 > > > > ********************************* > 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 > -- mailto:matt...@matthewadams.me skype:matthewadams12 yahoo:matthewadams aol:matthewadams12 google-talk:matthewadam...@gmail.com<google-talk%3amatthewadam...@gmail.com> msn:matt...@matthewadams.me <msn%3amatt...@matthewadams.me> http://matthewadams.me http://www.linkedin.com/in/matthewadams
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users