[
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:
To summarize my understanding: # {{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}}: class that wraps the logical name (String) of the
corresponding type (aka *object-type*)
# {{ApplicationFeatureId}}: 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.
> 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)