Dan Haywood created ISIS-970:
--------------------------------
Summary: Introduce new annotations to collect together all non-UI
(layout) hints, and deprecate old annotations
Key: ISIS-970
URL: https://issues.apache.org/jira/browse/ISIS-970
Project: Isis
Issue Type: Improvement
Components: Core
Affects Versions: core-1.7.0
Reporter: Dan Haywood
Assignee: Dan Haywood
Fix For: core-1.8.0
specifically:
{code}
@DomainObject(
audited = true|false
auditedDisabled = true|false // representing
@Audited(disabled=true)
published = SomePayloadFactory.class // probably factor out
PayloadFactory.Default so similar to interaction
autoComplete = SomeRepository.class
bookmarkable = BookmarkPolicy.ROOT // or CHILD
bounded = true|false // do not combine with autoComplete
immutable = When.ALWAYS // or perhaps true|false; defaults
to ? perhaps true ?
objectType = "CUS"
viewModel = true|false // defaults to false
)
@Property(
interaction = ToDoItem.DueBy.class // or
PropertyInteractionEvent.Default.class for default
disabled = Where.OBJECT_FORMS etc. // (ignore the When enum)
disabledReason = "..." // optional, representing
@Disabled(reason=...)
maxLength = 20
mustSatisfy = {SomeSpecification.class}
notPersisted = true|false // defaults to false
optional = true|false // defaults to false (ie
mandatory)
regex = "abc.*def" // ignore the validation and
caseSensitive attributes
)
@Collection(
interaction=
disabled = Where.OBJECT_FORMS etc. // (ignore the When enum)
disabledReason = "..." // optional, representing
@Disabled(reason=...)
typeOf= = OrderLine.class
)
@Action(
interaction = ToDoItem.Completed.class // or
ActionInteractionEvent.Default.class for default
disabled = Where.OBJECT_FORMS etc. // (ignore the When enum)
disabledReason = "..." // optional, representing
@Disabled(reason=...)
semantics = Of.SAFE // or IDEMPOTENT,
NON_IDEMPOTENT
bulk = AppliesTo.BULK_ONLY // or BULK_AND_REGULAR
command = true|false
commandPersistence = Persistence.PERSISTED // representing
@Command(persistence=...)
commandExecuteIn = ExecuteIn.FOREGROUND // representing
@Command(executeIn=...)
commandDisabled = true|false // representing
@Command(disabled=true)
published = SomePayloadFactory.class // probably factor out
PayloadFactory.Default so similar to interaction
)
@Parameter(
minLength = 3
mustSatisfy = {SomeSpecification.class}
optional = true|false // defaults to false (ie
mandatory)
regex = "abc.*def" // ignore the validation and
caseSensitive attributes
)
{code}
This would result in the full complement of Isis annotations being:
- @DomainService and @DomainServiceLayout (see ISIS-968)
- @DomainObject and @DomainObjectLayout
- @Property and @PropertyLayout
- @Collection and @CollectionLayout
- @Action and @ActionLayout
- @Parameter and @ParameterLayout
also additional UI hints:
- @Title
- @MemberGroupLayout
3rd-party annotations
@javax.validation.constraints.Digits
@javax.enterprise.context.RequestScoped
@javax.jdo.annotations.*
Need to decide what to do with remaining annotations (mostly pertaining to
value types and other DDD ideas); remove or keep? They are:
- @Value
- @Defaulted
- @Encodeable
- @EqualByContent
- @Parseable
- @Aggregated
- @NotPersistable
- @Facets
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)