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

Daniel Keir Haywood updated ISIS-2553:
--------------------------------------
    Description: 
We have some duplication between classes that describe elements of our 
metamodel.  We also have a legacy of names that relate to physical aspects (eg 
PACKAGE) whereas internally we are now using logical names (derived from 
@DomainObject(objectType=), in other words ObjectSpecIdFacet) throughout.  And 
it would probably be safe to promote all of this to the applib once clean - we 
currently only expose strings.

Andi's summary of what we have:
 # {{Identifier }}(AppLib): identifies an application feature, that is a type 
(class) or a type's member (action, property or collection)
 # {{TypeIdentifier (}}AppLib): introduced this weekend, to effectively amend 
the \{{Identifier }}with an additional field, that provides the logical name of 
the type (aka *object-type*); immutable as much as possible, but allows for 
lazy evaluation of the logical name, as it requires the meta-model to be 
populated
 # {{ObjectSpecId}}: (internal) class that wraps the logical name (String) of 
the corresponding type (aka *object-type*)
 # {{ApplicationFeatureId}}: (internal) Similar to Identifier, but splits the 
logical type name or member name into its parts: PACKAGE, CLASS, MEMBER which 
with logical name support now need to be interpreted as NAMESPACE, 
LOGICAL-TYPE-SIMPLE-NAME and MEMBER-NAME, where the member part (as I 
understand it) for actions only is that action's name with its parameter list 
omitted.

 

Further discussion:
 * Dan - To me, it looks like TypeIdentifier and ObjectSpecId both describe a 
type (aka ObjectSpecification)
 * Andi - correct
 * Dan -  Meanwhile Identifier is kind of a superclass that represents either 
types or `ApplicationFeatureId`s
  
 * Dan - And we perhaps should rename from PACKAGE to NAMESPACE, etc, if that's 
what these now are.
 * Andi - Was my first thought today when I woke up, renaming those fields 
within ApplicationFeatureId.
  

also note why the distinction between ObjectSpecId and TypeIdentifier: # 
ObjectSpecId: immutable, serializable
 # TypeIdentifier: thread-safe lazy initialization, hence not serializable

  was:
We have some duplication between classes that describe elements of our 
metamodel.  We also have a legacy of names that relate to physical aspects (eg 
PACKAGE) whereas internally we are now using logical names (derived from 
@DomainObject(objectType=), in other words ObjectSpecIdFacet) throughout.  And 
it would probably be safe to promote all of this to the applib once clean - we 
currently only expose strings.

Andi's summary of what we have:


 # {{Identifier }}(AppLib): identifies an application feature, that is a type 
(class) or a type's member (action, property or collection)
 # {{TypeIdentifier (}}AppLib): introduced this weekend, to effectively amend 
the \{{Identifier }}with an additional field, that provides the logical name of 
the type (aka *object-type*); immutable as much as possible, but allows for 
lazy evaluation of the logical name, as it requires the meta-model to be 
populated
 # {{ObjectSpecId}}: (internal) class that wraps the logical name (String) of 
the corresponding type (aka *object-type*)
 # {{ApplicationFeatureId}}: (internal) Similar to Identifier, but splits the 
logical type name or member name into its parts: PACKAGE, CLASS, MEMBER which 
with logical name support now need to be interpreted as NAMESPACE, 
LOGICAL-TYPE-SIMPLE-NAME and MEMBER-NAME, where the member part (as I 
understand it) for actions only is that action's name with its parameter list 
omitted.

 

Further discussion:
 * Dan - To me, it looks like TypeIdentifier and ObjectSpecId both describe a 
type (aka ObjectSpecification)
 * Andi - correct
 * Dan -  Meanwhile Identifier is kind of a superclass that represents either 
types or `ApplicationFeatureId`s
  
 * Dan - And we perhaps should rename from PACKAGE to NAMESPACE, etc, if that's 
what these now are.
 * Andi - Was my first thought today when I woke up, renaming those fields 
within ApplicationFeatureId.
  

also note why the distinction between ObjectSpecId and TypeIdentifier: # 
ObjectSpecId: immutable, serializable
 # TypeIdentifier: thread-safe lazy initialization, hence not serializable


> Rationalize value types representing the metamodel, promote to applib if 
> possible.
> ----------------------------------------------------------------------------------
>
>                 Key: ISIS-2553
>                 URL: https://issues.apache.org/jira/browse/ISIS-2553
>             Project: Isis
>          Issue Type: Improvement
>            Reporter: Daniel Keir Haywood
>            Priority: Minor
>             Fix For: 2.0.0-M6
>
>
> We have some duplication between classes that describe elements of our 
> metamodel.  We also have a legacy of names that relate to physical aspects 
> (eg PACKAGE) whereas internally we are now using logical names (derived from 
> @DomainObject(objectType=), in other words ObjectSpecIdFacet) throughout.  
> And it would probably be safe to promote all of this to the applib once clean 
> - we currently only expose strings.
> Andi's summary of what we have:
>  # {{Identifier }}(AppLib): identifies an application feature, that is a type 
> (class) or a type's member (action, property or collection)
>  # {{TypeIdentifier (}}AppLib): introduced this weekend, to effectively amend 
> the \{{Identifier }}with an additional field, that provides the logical name 
> of the type (aka *object-type*); immutable as much as possible, but allows 
> for lazy evaluation of the logical name, as it requires the meta-model to be 
> populated
>  # {{ObjectSpecId}}: (internal) class that wraps the logical name (String) of 
> the corresponding type (aka *object-type*)
>  # {{ApplicationFeatureId}}: (internal) Similar to Identifier, but splits the 
> logical type name or member name into its parts: PACKAGE, CLASS, MEMBER which 
> with logical name support now need to be interpreted as NAMESPACE, 
> LOGICAL-TYPE-SIMPLE-NAME and MEMBER-NAME, where the member part (as I 
> understand it) for actions only is that action's name with its parameter list 
> omitted.
>  
> Further discussion:
>  * Dan - To me, it looks like TypeIdentifier and ObjectSpecId both describe a 
> type (aka ObjectSpecification)
>  * Andi - correct
>  * Dan -  Meanwhile Identifier is kind of a superclass that represents either 
> types or `ApplicationFeatureId`s
>   
>  * Dan - And we perhaps should rename from PACKAGE to NAMESPACE, etc, if 
> that's what these now are.
>  * Andi - Was my first thought today when I woke up, renaming those fields 
> within ApplicationFeatureId.
>   
> also note why the distinction between ObjectSpecId and TypeIdentifier: # 
> ObjectSpecId: immutable, serializable
>  # TypeIdentifier: thread-safe lazy initialization, hence not serializable



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to