On Wed, Nov 14, 2018 at 5:12 PM Vincent Massol <[email protected]> wrote:

> I thought about something like this but I discarded it as I find this
> complicated for something that should be relatively simple.


I don't think it's that complicated because:

* Conflicting parameters should be an exception, not the rule. What other
macros, besides include / display, need this?
* If you just want to group macro parameters for display then you only need
to use the @Group annotation. You don't need to implement a ParameterGroup.
The ParameterGroup is needed only for conflicting parameters (ATM).

Thanks,
Marius


> I’d prefer to have some simple annotations if possible. In other words, if
> feels a bit of over-engineering for the need. Now I have to admit that I
> stopped following this thread after the original proposal so maybe I’m just
> completely off :)
>
> Thanks
> -Vincent
>
> > On 14 Nov 2018, at 15:51, Marius Dumitru Florea <
> [email protected]> wrote:
> >
> > WDYT about:
> >
> > -----8<----- IncludeMacroParameters ----------
> > @Group("target")
> > page
> >
> > @Group("target/entityReference")
> > reference
> >
> > @Group("target/entityReference")
> > type
> >
> > @Group("target")
> > document
> >
> > section
> >
> > context
> > ----->8---------------
> >
> > That is: specify *only* the group hierarchy in the macro parameter
> > descriptor. This would produce the following hierarchy:
> >
> > * <target>
> > ** page
> > ** <entityReference>
> > *** reference
> > *** type
> > ** document
> > * section
> > * context
> >
> > Next, for the cases where we want to customize the behavior of a group,
> we
> > introduce a component role ParameterGroup. For instance, for the "target"
> > parameter group of the Include Macro we would create
> >
> > @Named("include/target")
> > public class TargetParameterGroup  implements ParameterGroup {}
> >
> > To specify that the members of a parameter group are exclusive we can
> > either use a method in the ParameterGroup interface (e.g. isExclusive())
> or
> > use an annotation on the implementation TargetParameterGroup.
> >
> > Thanks,
> > Marius
> >
> >
> > On Tue, Nov 13, 2018 at 12:03 PM Adel Atallah <[email protected]>
> > wrote:
> >
> >> Hello,
> >>
> >> I'd like to briefly summarize the situation so that we can make some
> >> progress.
> >>
> >> What we have:
> >> * We define "parameters" in a macro by creating a Java Bean, which
> >> provides all the getters and setters of the parameters we want.
> >> * We can use annotations on these getters/setters to define some
> >> behavior or metadata for these parameters (description, mandatory,
> >> deprecated...)
> >>
> >> What we want:
> >> * Being able to handle conflicting parameters. For instance when we
> >> deprecate a parameter and add a new one to replace it, we should be
> >> able to either use the deprecated parameter or the new one but not
> >> both.
> >> * We also want to group parameters that are related to each other.
> >>
> >> What we proposed:
> >> * Use annotations on the parameters to express the conflict.
> >> * Marius proposed to see the problem as a boolean expression such as:
> >> (page XOR (reference AND type) XOR document) OR section OR context.
> >> This would translate as: the user can use the 'section' and/or
> >> 'context' parameters (if they want), can use only one of these
> >> parameters: 'page', ('reference' and 'type') or 'document', where
> >> 'reference' and 'type' depend on each other and you can't use one
> >> without the other.
> >> * You can see on previous e-mails the kind of annotations we proposed
> >> to solve the issue.
> >>
> >> Thanks,
> >> Adel
> >>
>
>

Reply via email to