It seems @Model is more popular than @Support, only inconvenience is a naming 
clash with [1]. 

I'll bring another aspect to the table, that is prefixes like 'hide', 
'disable', ... could/should be allowed for Actions. We can discuss how 
following domain-object examples should get interpreted by the framework. 
(Comments according to what I think makes most sense) ...

public class Object1 {

    @Property @Getter @Setter
    private String myProperty;
    
    // proper supporting-method naming, will get picked up by the framework and 
added 
    // to the metamodel (no annotation required)
    public boolean hideMyProperty() { 
        return false;
    }
    
}

public class Object2 {

    @Property @Getter @Setter
    private String myProperty;
    
    // allowed, nothing wrong with that, might either be picked up as an action
    // or gets ignored, depending on the framework's configuration,
    // whether the @Action annotation is mandatory or not;
    // however, this is no supporting-method!
    public boolean hideWhatever() { 
        return false;
    }
    
}

public class Object3 {

    @Property @Getter @Setter
    private String myProperty;
    
    // will fail, because this method is clearly orphaned
    @Model 
    public boolean hideWhatever() { 
        return false;
    }
    
}

[1] https://docs.oracle.com/javaee/7/api/javax/enterprise/inject/Model.html

On 2019/09/23 05:54:52, Andi Huber <[email protected]> wrote: 
> Yes, there are lots of cases already covered, but not those, when you get the 
> intended supporting-method's prefix wrong.
> 
> Typically, when writing new domain-code I'd start with some properties and 
> actions and then eventually add supporting-methods. At the time of writing 
> these, I have a clear intent, that I want these to be added to the model no 
> matter what, and I want to be warned when I get something wrong. This 
> annotation (@Support or @Model) should allow me to express this intent. 
> (However you don't have to, its optional.)
> 
> @Brian: You brought the 'addChild(Child ...)' example, where your intent is 
> to have this as an Action? If so, the framework should be able to undersand 
> this intent, when the addChild method is annotated with @Action. Otherwise we 
> have a bug.
> 
> Cheers, Andi
> 
> On 2019/09/23 03:58:28, Dan Haywood <[email protected]> wrote: 
> > I'm afraid that I don't understand the idea.
> > 
> > There are already config properties that enable fail-fast validation that
> > detect orphaned supporting methods (and other checks besides).  Why do we
> > need an annotation to ask for this to be done? It just adds clutter in my
> > view?
> > 
> > D.
> > 
> > On Sun, 22 Sep 2019, 21:07 Brian K, <[email protected]> wrote:
> > 
> > > I like the @Support annotation, not @Action, because validate is not an
> > > action.
> > >
> > > Most of my frustration on this front has been inadvertently creating a
> > > supporting function.  like:
> > > addChild(Child child){...}
> > >
> > > Can these patterns be optional when the annotations are active?   Maybe a
> > > isis.properties switch?
> > >
> > > Thanks!
> > > Brian
> > >
> > > On Sun, Sep 22, 2019 at 3:19 AM Andi Huber <[email protected]> wrote:
> > >
> > > > If we would not have the freedom of introducing a new annotation,
> > > > @Action(type=Supporting)
> > > > would be a good choice as well, but we also have supporting methods for
> > > > Properties and Collections!
> > > >
> > > > But since we have @Action, @Property and @Collection all with good
> > > > justification to stand and represent their own kind, we might as well
> > > > introduce a new one here!?
> > > >
> > > > I was also thinking about @Model, which is a bit more generic and may
> > > > allow for more flexible use later on.
> > > >
> > > > On 2019/09/22 08:47:20, "Rade, Joerg / Kuehne + Nagel / HAM GI-DP"
> > > > <[email protected]> wrote:
> > > > > Hi Andi,
> > > > >
> > > > > I like the idea of using an annotation, because it makes the
> > > programming
> > > > model more consistent.
> > > > >
> > > > > Maybe @Action(type=Supporting) ?
> > > > >
> > > > > -j
> > > > > -----Ursprüngliche Nachricht-----
> > > > > Von: Andi Huber [mailto:[email protected]]
> > > > > Gesendet: Sonntag, 22. September 2019 10:01
> > > > > An: [email protected]
> > > > > Betreff: Extending the Programming Model with @Support?
> > > > >
> > > > > Hi folks,
> > > > >
> > > > > we are still making progress towards Apache Isis Version 2. While most
> > > > of the work goes into technical topics that stay under the hood, like
> > > > decoupling from JDO, there are also some changes to the programming
> > > model,
> > > > that will affect you and require migration of your domain-code.
> > > > >
> > > > > We have no concrete release plan yet, we thought maybe October for a
> > > > preview, we'll see.
> > > > >
> > > > > Anyway I do have a questions regarding the programming model:
> > > > >
> > > > > Have you ever run into the issue of misspelling a supporting-method
> > > > within your domain-code
> > > > > eg. verifyMyAction(...) instead of correct validateMyAction(...) then
> > > > spending some time to troubleshot this? What an inconvenience!
> > > > >
> > > > > My proposed solution to this is to introduce a new annotation to make 
> > > > > a
> > > > contract with the domain-model (meta-model) :
> > > > >
> > > > > @Action
> > > > > public void myAction() {
> > > > >
> > > > > }
> > > > >
> > > > > @Support // <-- to enforce a contract with the domain-model
> > > > > public boolean hideMyAction() {
> > > > >     ...
> > > > > }
> > > > >
> > > > > * The 'hideMyAction' method is termed 'supporting-method'. We have 
> > > > > lots
> > > > of variants of these. (validateX, disableX, ...)
> > > > > * This contract allows for a check whether the intended
> > > > supporting-method gets picked up by the framework and is not ignored.
> > > That
> > > > way we can emit a validation failure, if a support-method is misspelled
> > > or
> > > > does have any other deficiencies.
> > > > > * The @Support annotation is optional, does not require you to migrate
> > > > your domain-code.
> > > > >
> > > > > Do you like the concept? Should we use a better name for the
> > > annotation?
> > > > Can we reuse/repurpose any existing annotation?
> > > > >
> > > > > Any thoughts?
> > > > >
> > > > > Cheers, Andi
> > > > >
> > > > > Kühne + Nagel (AG & Co.) KG
> > > > > Rechtsform: Kommanditgesellschaft, Bremen HRA 21928, USt-IdNr.: DE
> > > > 812773878.
> > > > > Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Holger Ketz (Vors. ),
> > > > Martin Brinkmann, Lars-Olof Grün, Matthias Knicky, Nicholas Minde,
> > > Johannes
> > > > Trimborn, Lars Wedel, Matthias Weiner.
> > > > > Persönlich haftende Gesellschafterin: Kühne & Nagel A.G., Rechtsform:
> > > > Aktiengesellschaft nach luxemburgischem Recht, HR-Nr.: B 18745,
> > > > Geschäftsführendes Verwaltungsratsmitglied: Karl Gernandt.
> > > > > Geschäftsleitung Region Europa: Dr. Hansjörg Rodi (Vors.), Mart Ambur,
> > > > Tom Ban, Dominic Edmonds, Thierry Held, Uwe Hött, Richard Huhn,
> > > Jan-Hendrik
> > > > Köstergarten, Heiko Schuhmacher.
> > > > >
> > > > > Wir arbeiten ausschließlich auf Grundlage der Allgemeinen Deutschen
> > > > Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die ADSp 2017 weichen in
> > > > Ziffer 23 hinsichtlich des Haftungshöchstbetrages für Güterschäden (§ 
> > > > 431
> > > > HGB) vom Gesetz ab, indem sie die Haftung bei multimodalen Transporten
> > > > unter Einschluss einer Seebeförderung und bei unbekanntem Schadenort auf
> > > 2
> > > > SZR/kg und im Übrigen die Regelhaftung von 8,33 SZR/kg zusätzlich auf
> > > 1,25
> > > > Millionen Euro je Schadenfall sowie 2,5 Millionen Euro je
> > > Schadenereignis,
> > > > mindestens aber 2 SZR/kg, beschränken. Die ADSp sind auf unserer 
> > > > Webseite
> > > > als Download erhältlich. Auf Anfrage senden wir Ihnen diese auch gerne
> > > zu.
> > > > >
> > > >
> > >
> > 
> 

Reply via email to