[ 
https://issues.apache.org/jira/browse/ISIS-1998?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16947221#comment-16947221
 ] 

ASF subversion and git services commented on ISIS-1998:
-------------------------------------------------------

Commit 0262ea20b6379f604ca1c629c3fb0b91c5789b4c in isis's branch 
refs/heads/ISIS-2062 from Andi Huber
[ https://gitbox.apache.org/repos/asf?p=isis.git;h=0262ea2 ]

ISIS-1998: infers intent when using @Property with mixins ...

- when @Property at type level: infers @Action(semantics=SAFE) and
@Mixin(methodName="proc")
- when @Property at method level: infers @Action(semantics=SAFE), but
@Mixin at type level is still required


> Simplify syntax way for mixins, to better express intent using @Action, 
> @Collection and @Property
> -------------------------------------------------------------------------------------------------
>
>                 Key: ISIS-1998
>                 URL: https://issues.apache.org/jira/browse/ISIS-1998
>             Project: Isis
>          Issue Type: New Feature
>    Affects Versions: 1.16.2
>            Reporter: Daniel Keir Haywood
>            Assignee: Andi Huber
>            Priority: Major
>             Fix For: 2.0.0
>
>
> For regular action mixins, we currently write:
>  {code}
> @Mixin(method="act")
> public class Contributee_someAction() {
>     private final Contributee contributee;  // constructor omitted
>     @Action(...)
>     @ActionLayout(...)
>     public ReturnValue act(.... ) { ... }
> }
> {code}
> instead, the proposal is:
> {code}
> @Action(...)              // presence of Action on class implies this is a 
> mixin; 
> @ActionLayout(...)
> public class Contributee_someAction() {
>     private final Contributee contributee;
>     public ReturnValue act( ... ) { ... }   // no need for annotations here.  
>  "act" assumed
> }
> {code}
> The details of the @Action and @ActionLayout facets are "copied" down to the 
> "act" method.
> for properties, we currently write:
> {code}
> @Mixin(method="prop")
> public class Contributee_someProperty() {
>     private final Contributee contributee;  
>     @Action(semantics=SAFE)   // required
>     @ActionLayout(contributed=ASSOCIATION)  // required
>     @Property(...)
>     @PropertyLayout(...)
>     public ReturnValue prop( /* no args */ ) { ... }
> }
> {code}
> instead we'd rather write:
> {code}
> @Property(...)     // implies this class is a mixin
> @PropertyLayout(...)
> public class Contributee_someProperty()
>     private final Contributee contributee;
>     public ReturnValue prop() { ... }                    // "prop" is assumed
> }
> {code}
> The boilerplate (and confusing) @Action(SAFE) and 
> @ActionLayout(AS_ASSOCIATION) are implied.  The facets from @Property and 
> @PropertyLayout are copied down to the "prop" method
> And finally, for collections, we currently write:
> {code}
> @Mixin(method="coll")
> public class Contributee_someCollection() {
>     private final Contributee contributee;  
>     @Action(semantics=SAFE)   // required
>     @ActionLayout(contributed=ASSOCIATION)  // required
>     @Collection(...)
>     @CollectionLayout(...)
>     public List<ReturnValue> coll( /* no args */ ) { ... }
> }
> {code}
> instead we'd rather write:
> {code}
> @Collection(...)     // implies this class is a mixin
> @CollectionLayout(...)
> public class Contributee_someCollection()
>     private final Contributee contributee;
>     public List<ReturnValue> coll() { ... }                    // "coll" is 
> assumed
> }
> {code}
> similar to properties.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to