You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Daniel Keir Haywood (Jira)" <ji...@apache.org> on 2020/03/24 16:11:00 UTC

[jira] [Created] (ISIS-2329) Support nested non-static mixins, with domain event class declared within.

Daniel Keir Haywood created ISIS-2329:
-----------------------------------------

             Summary: Support nested non-static mixins, with domain event class declared within.
                 Key: ISIS-2329
                 URL: https://issues.apache.org/jira/browse/ISIS-2329
             Project: Isis
          Issue Type: Improvement
    Affects Versions: 2.0.0-M3
            Reporter: Daniel Keir Haywood
             Fix For: 2.0.0-M4


To support this, need to allow action domain events to have 1-arg constructor, being the mixee. 

eg, at the moment, in simpleapp, I can refactor updateName into a mixin:
{code:java}
public static class UpdateNameActionDomainEvent 
  extends SimpleModule.ActionDomainEvent<SimpleObject.updateName> { }

@Action(semantics = IDEMPOTENT,
        command = CommandReification.ENABLED, publishing = Publishing.DISABLED,
        associateWith = "name", domainEvent = UpdateNotesActionDomainEvent.class)
public class updateName {

    public SimpleObject act(@Name final String name) {
        setName(name);
        return SimpleObject.this;
    }

    public String default0Act() {
        return getName();
    }
}
 {code}
but the  UpdateNameActionDomainEvent has to remain outside for now.  Instead, I'd like to write:
{code:java}
@Action(semantics = IDEMPOTENT,
        command = CommandReification.ENABLED, publishing = Publishing.DISABLED,
        associateWith = "name", domainEvent = UpdateNotesActionDomainEvent.class)
public class updateName {

   public class UpdateNameActionDomainEvent 
     extends SimpleModule.ActionDomainEvent<SimpleObject.updateName> { } 

    public SimpleObject act(@Name final String name) {
        setName(name);
        return SimpleObject.this;
    }

    public String default0Act() {
        return getName();
    }
}
 {code}
The fix should be quite simple: improve the instantiation logic in DomainEventHelper to handle events with 1 arg as well as 0 args and 3 args.



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