|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
002
Importing the generated app into an IDE
|
|
|
|
|
|
|
|
|
|
|
|
003
Walking through the main classes that make up the SimpleApp: SimpleObject persistent entity, HomePageViewModel`view model and `SimpleObjects domain service (repository).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fixture scripts, rules, tests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
006
Implementing business rulesfor domain object members, using supporting methods ("see it, use it, do it")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
009
Using the Swagger UI to access the REST API automatically exposed for domain services, entities, and/or view models
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
012
Implementing business logic using a (no-arg) action, and associating with a property using either the @MemberOrder annotations or using dynamic (XML) layouts.
|
|
|
|
|
|
|
|
|
|
|
|
Titles and icons, UI event subscribers
|
|
|
|
|
|
|
|
|
|
|
|
|
Using the title(), cssClass() so that end-users can distinguish domain objects within the UI.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
016
How to implement a derived collection on a domain object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hints and end-user features
|
|
|
|
|
|
|
|
|
|
|
|
|
019
Demonstrates how Apache Causeway' Web UI (Wicket viewer) remembers the state of rendered domain objects, and how the end-user of the
application can clear these UI hints using the (framework-provided) "clear hints" mixin action.
|
|
|
|
|
|
|
|
|
|
|
|
020
Demonstrates how the end-user can copy and share URLs for domain objects - including UI hints - using Apache Causeway' Web UI (Wicket viewer).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Decoupling (mixins & subscribers)
|
|
|
|
|
|
|
|
|
|
|
|
|
022
Shows how to refactor a domain object to move an action implementation out of the domain object itself, and instead implement as a mixin (useful for decoupling).
|
|
|
|
|
|
|
|
|
|
|
|
023
Shows how to refactor a domain object to move (derived) collections out of the domain object and reimplement as a mixin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
025
Using a domain event subscriber to hide functionality, in this case the "clear hints" action automatically provided by the framework.
|
|
|
|
|
|
|
|
|
|
|
|
Titles using the @Title annotation
|
026
Using the @Title annotation (instead of the title() reserved method) to obtain the title of a domain object, so that the end-user can distinguish one object from another.
|
|
|
|
|
|
|
|
|
|
|
|
Integration testing of mixins
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
028
Using Project Lombok to remove boilerplate from your domain objects (getters and setters).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
030
How to validate action parameters using a supporting validate…() method.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Instantiating/Initializing Objects
|
|
|
|
|
|
|
|
|
|
|
|
|
Property and parameter choices
|
|
|
|
|
|
|
|
|
|
|
|
|
033
How to provide a set of choices (a drop-down list) when editing a property.
|
|
|
|
|
|
|
|
|
|
|
|
034
How to provide a set of choices (a drop-down list) when invoking an action.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
036
How to use an enum for choices (drop down list) for both a property or an action parameter.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
037
How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to @PropertyLayout#hidden()).
|
|
|
|
|
|
|
|
|
|
|
|
038
How to hide properties as columns in tables, using CSS.
|
|
|
|
|
|
|
|
|
|
|
|
Fixture scripts defaults / fake data
|
|
|
|
|
|
|
|
|
|
|
|
|
039
Using the FixtureScript defaultParam(…) method to reflectively default parameters to fixture scripts that have not been set by the caller.
|
|
|
|
|
|
|
|
|
|
|
|
040
Using the (non-ASF) Incode Platform's fakedata module’s FakeDataService to provide fake (random) names within a fixture script.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
041
Using BigDecimal as a property within a domain object, also demonstrating the "summary" view within the Web UI (Wicket viewer).
|
|
|
|
|
|
|
|
|
|
|
|
042
How to use the @Digits annotation for action parameters of type java.math.BigDecimal .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
043
How to use the supporting defaultXxx(…) supporting method to provide a default argument value for action parameters.
|
|
|
|
|
|
|
|
|
|
|
|
044
How to use @DomainObject#bounding() so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
|
|
|
|
|
|
|
|
|
|
|
|
045
How to use the choicesXxx(…) supporting method to provide a drop-down list for parameters to actions that are for reference types (domain entities or view models).
|
|
|
|
|
|
|
|
|
|
|
|
046
How to use the autoCompleteXxx(…) supporting method to provide a drop-down list for parameters to actions that are for reference types (domain entities or view models).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
047
Configuring an Apache Causeway app to allow tables of objects to be downloaded as an Excel spreadsheet, using the (non-ASF) Incode Platform's excel wicket component.
|
|
|
|
|
|
|
|
|
|
|
|
048
Configuring an Apache Causeway app to allow tables of domain objects with date information to be rendered on a full-page
calendar, using the (non-ASF) Incode Platform's fullcalendar2 wicket
component.
|
|
|
|
|
|
|
|
|
|
|
|
049
Using the @Programmatic annotation to exclude methods from a domain object
(eg implementing methods of an interface as defined by the (non-ASF) Incode Platform's fullcalendar2 wicket component) that would
otherwise be part of the Apache Causeway metamodel (and thus show up in the UI).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
054
How to expose information from underlying domain entities referenced by a (JAXB) view model using derived properties
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
056
The (very simple) steps required to rename a domain entity class.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
058
How to rename various elements (collections, title) of the home page view model,
for an improved initial page.
|
|
|
|
|
|
|
|
|
|
|
|
059
How to rename the application name as it appears in the header.
|
|
|
|
|
|
|
|
|
|
|
|
060
Updating the logo for the application as it appears in the header.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
061
Refactoring a mixin action, teasing out its separate responsibilities in order to decouple the code and uncover new concepts.
|
|
|
|
|
|
|
|
|
|
|
|
062
Separating out the responsibilities of the persistent domain entities from those of view models that act upon those domain entities.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
063
How to implement a bidirectional 1-to-many association between two domain entities.
|
|
|
|
|
|
|
|
|
|
|
|
064
How domain entities can be automatically persisted just by being associated with an already persistent entity.
|
|
|
|
|
|
|
|
|
|
|
|
065
How bidirectional relationships between domain entities can be automatically maintained.
|
|
|
|
|
|
|
|
|
|
|
|
066
How deleting one persistent entity can, if required, automatically delete another associated entity.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
067
Improving the layout of domain entities by adding a metadata fieldset.
|
|
|
|
|
|
|
|
|
|
|
|