[ 
https://issues.apache.org/jira/browse/ISIS-970?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dan Haywood updated ISIS-970:
-----------------------------
    Description: 
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
)
{code}
and
{code}
@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
)
{code}
and
{code}
@Collection(
    interaction=
    disabled           = Where.OBJECT_FORMS etc.   // (ignore the When enum)
    disabledReason     = "..."                     // optional, representing 
@Disabled(reason=...)
    typeOf=            = OrderLine.class
)
{code}
and
{code}
@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
)
{code}
and
{code}
@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 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.*

~~~
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


  was:
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
)
{code}
and
{code}
@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
)
{code}
and
{code}
@Collection(
    interaction=
    disabled           = Where.OBJECT_FORMS etc.   // (ignore the When enum)
    disabledReason     = "..."                     // optional, representing 
@Disabled(reason=...)
    typeOf=            = OrderLine.class
)
{code}
and
{code}
@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
)
{code}
and
{code}
@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 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.*

~~~
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



> 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
> )
> {code}
> and
> {code}
> @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
> )
> {code}
> and
> {code}
> @Collection(
>     interaction=
>     disabled           = Where.OBJECT_FORMS etc.   // (ignore the When enum)
>     disabledReason     = "..."                     // optional, representing 
> @Disabled(reason=...)
>     typeOf=            = OrderLine.class
> )
> {code}
> and
> {code}
> @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
> )
> {code}
> and
> {code}
> @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 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.*
> ~~~
> 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)

Reply via email to