Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
core-1.7.0
-
None
Description
specifically:
@DomainObject( auditing = ENABLED etc. (AuditingPolicy) // instead of @Audited publishing = ENABLED etc. (PublishingPolicy) // instead of @PublishedObject publishingPayloadFactory = SomePayloadFactory.class // instead of @PublishedObject(payloadFactory=...) autoCompleteRepository = SomeRepository.class // instead of @AutoComplete(repository=...) autoCompleteAction = "autoComplete" // instead of @AutoComplete(action=...) bounded = true|false // instead of @Bounded. takes precedence over autoComplete editing = ENABLED etc (EditingPolicy) // instead of @Immutable editingDisabledReason = "..." // instead of "Always disabled" message inferred from @Immutable objectType = "CUS" // instead of @ObjectType nature = JDO_ENTITY | EXTERNAL_ENTITY | VIEW_MODEL // instead of @ViewModel, defaults to JDO_ENTITY )
and
@Property( domainEvent = ToDoItem.DueBy.class // instead of @PropertyInteraction hidden = Where.NOWHERE etc // instead of @Hidden(where=...); ignore the When enum editing = ENABLED etc (EditingPolicy) // instead of @Disabled; ignore Where and When enums editingDisabledReason = "..." // instead of @Disabled(reason=...) maxLength = 20 // instead of @MaxLength; default of -1 indicates not specified mustSatisfy = {SomeSpecification.class} // instead of @MustSatisfy notPersisted = true|false // instead of @NotPersisted; defaults to false optional = DEFAULT|TRUE|FALSE // instead of @Optional and @Mandatory. regexPattern = ".+\@.+" // instead of @RegEx(validation=...) regexPatternFlags = 1 // superset of @RegEx(caseSensitive=...) )
where cardinality defaults to mandatory unless Column(allowsNull="true") is set.
and
@Collection( domainEvent = ToDoItem.Dependencies.class // instead of @CollectionInteraction hidden = Where.NOWHERE etc // instead of @Hidden(where=...); ignore the When enum editing = ENABLED etc (EditingPolicy) // instead of @Disabled; ignore Where and When enums editingDisabledReason = "..." // instead of @Disabled(reason=...) typeOf = OrderLine.class // instead of @TypeOf )
and
@Action( domainEvent = ToDoItem.Completed.class // instead of @ActionInteraction hidden = Where.NOWHERE etc // instead of @Hidden(where=...); ignore the When enum semantics = Semantics.SAFE etc. // instead of @ActionSemantics invokeOn = InvokeOn.OBJECTS_AND_COLLECTIONS // instead of @Bulk and @Bulk(appliesTo=...) command = ENABLED|DISABLED|AS_CONFIGURED // instead of @Command commandPersistence = Persistence.PERSISTED // instead of @Command(persistence=...) commandExecuteIn = ExecuteIn.FOREGROUND // instead of @Command(executeIn=...) publishing = ENABLED etc. (PublishingPolicy) // instead of @PublishedAction publishingPayloadFactory = SomePayloadFactory.class // instead of @PublishedAction(payloadFactory=...) restrictTo = Environment.DEVELOPMENT // instead of @Prototype typeOf = OrderLine.class // instead of @TypeOf )
nb: @Disabled is no longer provided for actions (use imperative disableXxx() method instead if required)
and
@Parameter( maxLength = 20 // instead of @MaxLength; default of -1 indicates not specified minLength = 3 // instead of @MinLength mustSatisfy = {SomeSpecification.class} // instead of @MustSatisfy optional = DEFAULT|TRUE|FALSE // instead of @Optional and @Mandatory. regexPattern = ".+\@.+" // instead of @RegEx(validation=...) regexPatternFlags = 1 // superset of @RegEx(caseSensitive=...) )
for ISIS-964:
@DomainObjectLayout {
bookmarking = NEVER (BookmarkingPolicy) // instead of @BookmarkPolicy
}
and
@ActionLayout {
bookmarking = NEVER (BookmarkingPolicy) // instead of @BookmarkPolicy
}
and remove
@ActionLayout {
prototype = true|false
}
This would result in the fully supported non-deprecated Isis annotations reducing substantially:
- @DomainService and @DomainServiceLayout
- @DomainObject and @DomainObjectLayout
- @Property and @PropertyLayout
- @Collection and @CollectionLayout
- @Action and @ActionLayout
- @Parameter and @ParameterLayout
with two further additional UI hints:
- @Title
- @MemberGroupLayout
All the above @XxxLayout annotations can instead be specified using a .layout.json file.
The following 3rd-party annotations also supported:
- @javax.validation.constraints.Digits
- @javax.enterprise.context.RequestScoped
- @javax.jdo.annotations.*
There are also some annotations that need sorting out for contributed actions, specifically:
- @NotContributed(As.xxx)
- @NotInServiceMenu
... for these, see ISIS-968
Also need to figure out the best way to capture the semantics of properties and collections that are contributees (whose semantics are inferred from the contributing action)
~~~
There are still a number of partially supported annotations, mostly pertaining to value types and other DDD ideas). Need to decide what to do with them; deprecate/remove or keep and fully implement? They are:
- @Value
- @Defaulted
- @Encodeable
- @EqualByContent
- @Parseable
- @Aggregated
- @NotPersistable
- @Facets