...
- this removes the duplication between the
placeOrder(...)
parameter list and the list of members inPlaceOrderParameters
class. - the
@Parameter
andsyntax would be required by the framework to identify PlaceOrderParameters as a container of parameters (as opposed to a reference object or custom value type)@MemberOrder
...
Code Block |
---|
@Action public class Customer_placeOrder { private final Customer target; // target public Customer_placeOrder(Customer target) { ... } @Value @Accessors(fluent = true) public static class PlaceOrderParameters { // to assist supporting methods @Parameter() @MemberOrder(1) Product product; @Parameter() @MemberOrder(2) int quantity; } public static class PlaceOrderEvent extends ActionDomainEvent<Customer> {} @Action(domainEvent = PlaceOrderEvent.class) // event publishing public Customer act(PlaceOrderParameters params) { ... } // execution public boolean hideAct() { ... } // supporting methods public String disableAct() { ... } public String disable1Act(PlaceOrderParameters params) { ... } public Collection<Product> choices0Act() { ... } public Product default0Act() { ... } public int default1Act() { ... } public String validate1Act(PlaceOrderParameters params) { ... } public String validateAct(PlaceOrderParameters params) { ... } } |
...
Code Block |
---|
@Action public class Customer_placeOrder { private final Customer target; // target public Customer_placeOrder(Customer target) { ... } @Value @Accessors(fluent = true) public static class PlaceOrderParameters { // to assist supporting methods @Parameter() @MemberOrder(1) Product product; @Parameter() @MemberOrder(2) int quantity; } public static class PlaceOrderEvent extends ActionDomainEvent<Customer> {} @Action(domainEvent = PlaceOrderEvent.class) // event publishing public Customer act(PlaceOrderParameters params) { ... } // execution public boolean hideAct(PlaceOrderParameters params) { ... } // supporting methods public String disableAct(PlaceOrderParameters params) { ... } public String disable1Act(PlaceOrderParameters params) { ... } public Collection<Product> choices0Act(PlaceOrderParameters params) { ... } public Product default0Act(PlaceOrderParameters params) { ... } public int default1Act(PlaceOrderParameters params) { ... } public String validate1Act(PlaceOrderParameters params) { ... } public String validateAct(PlaceOrderParameters params) { ... } } |
...
Code Block |
---|
@Action public class Customer_placeOrder { private final Customer target; // target ... @Value @Accessors(fluent = true) public static class PlaceOrderParameters { @Parameter() @MemberOrder(1) Product product; @Parameter() @MemberOrder(2) int quantity; public Customer act(Customer customer) { ... } // execution public boolean hideAct(Customer customer) { ... } // supporting methods public String disableAct(Customer customer) { ... } public String disable1Act(Customer customer) { ... } public Collection<Product> choices0Act(Customer customer) { ... } public Product default0Act(Customer customer) { ... } public int default1Act(Customer customer) { ... } public String validate1Act(Customer customer) { ... } public String validateAct(Customer customer) { ...} } ... public static class PlaceOrderEvent extends ActionDomainEvent<Customer> {} @Action(domainEvent = PlaceOrderEvent.class) // event publishing public Customer act(PlaceOrderParameters params) { return params.act(this); } // remainder is just boilerplate public boolean hideAct(PlaceOrderParameters params) { return params.hide(this); } public String disableAct(PlaceOrderParameters params) { return params.disable(this); } public String disable1Act(PlaceOrderParameters params) { return params.disable1(this); } public Collection<Product> choices0Act(PlaceOrderParameters params) { return params.choices0(this); } public Product default0Act(PlaceOrderParameters params) { return params.default0(this); } public int default1Act(PlaceOrderParameters params) { return params.default1(this); } public String validate1Act(PlaceOrderParameters params) { return params.validate1(this); } public String validateAct(PlaceOrderParameters params) { params.validate(this); } } |
...
Code Block |
---|
@Action public class Customer_placeOrder { private final Customer target; // target ... @Parameter() @MemberOrder(1) // supporting methods support Product product; @Parameter() @MemberOrder(2) int quantity; public static class PlaceOrderEvent extends ActionDomainEvent<Customer> {} @Action(domainEvent = PlaceOrderEvent.class) // event publishing public Customer act() { ... } // execution public boolean hideAct() { ... } // supporting methods public String disableAct() { ... } public String disable1Act() { ... } public Collection<Product> choices0Act() { ... } public Product default0Act() { ... } public int default1Act() { ... } public String validate1Act() { ... } public String validateAct() { ... } } |
...
Code Block | ||
---|---|---|
| ||
@Action public class Customer_placeOrder extends ActionDomainEvent<Customer> { // ??? this looks very odd private final Customer target; // target ... @Parameter() @MemberOrder(1) // supporting methods support Product product; @Parameter() @MemberOrder(2) int quantity; @Action(domainEvent = Customer_placeOrder.class) // ??? I wonder if this is valid syntactically public Customer act() { ... } // execution ??? these methods would be available to the subscriber public boolean hideAct() { ... } // supporting methods ??? these methods would be available to the subscriber public String disableAct() { ... } public String disable1Act() { ... } public Collection<Product> choices0Act() { ... } public Product default0Act() { ... } public int default1Act() { ... } public String validate1Act() { ... } public String validateAct() { ... } } |
...