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

Reply via email to