You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/05/17 07:05:52 UTC

[isis] branch master updated: ISIS-2681: rename ObjectSpecIdFacet -> ObjectTypeFacet

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new e193f57  ISIS-2681: rename ObjectSpecIdFacet -> ObjectTypeFacet
e193f57 is described below

commit e193f57d42f60fba0a7075d210146619fd86dd3f
Author: ahuber@apache.org <ah...@luna>
AuthorDate: Mon May 17 09:04:56 2021 +0200

    ISIS-2681: rename ObjectSpecIdFacet -> ObjectTypeFacet
---
 .../org/apache/isis/applib/id/LogicalType.java     | 102 ++++++++++-----------
 .../services/metamodel/MetaModelService.java       |  14 ++-
 .../core/metamodel/IsisModuleCoreMetamodel.java    |   4 +-
 ...cetFactory.java => ObjectTypeFacetFactory.java} |  13 ++-
 .../DomainObjectAnnotationFacetFactory.java        |  12 +--
 ... ObjectTypeFacetForDomainObjectAnnotation.java} |  12 +--
 ...ObjectSpecIdFacet.java => ObjectTypeFacet.java} |   9 +-
 ...tAbstract.java => ObjectTypeFacetAbstract.java} |  12 +--
 ...ator.java => ObjectTypeMalformedValidator.java} |   4 +-
 ...va => ObjectTypeFacetDerivedFromClassName.java} |  10 +-
 ...bjectTypeFacetDerivedFromClassNameFactory.java} |  30 +++---
 ...jectTypeFacetDerivedFromIoCNamingStrategy.java} |   6 +-
 ...t.java => ObjectTypeFacetOnStandaloneList.java} |   6 +-
 .../dflt/ProgrammingModelFacetsJava8.java          |   4 +-
 .../metamodel/MetaModelServiceDefault.java         |   6 +-
 .../specloader/LogicalTypeResolverDefault.java     |  14 +--
 .../specloader/SpecificationLoaderDefault.java     |   4 +-
 .../specloader/facetprocessor/FacetProcessor.java  |  18 ++--
 .../specloader/specimpl/IntrospectionState.java    |   4 +-
 .../specimpl/ObjectSpecificationAbstract.java      |   6 +-
 .../specimpl/dflt/ObjectSpecificationDefault.java  |   2 +-
 .../DomainObjectAnnotationFacetFactoryTest.java    |  20 ++--
 .../ObjectTypeAnnotationFacetFactoryTest.java      |  12 +--
 ...tTypeFacetDerivedFromClassNameFactoryTest.java} |  18 ++--
 .../testspec/ObjectSpecificationStub.java          |   4 +-
 .../dom/CustomerAsProxiedByDataNucleus.java        |   4 +-
 .../facets/entity/JdoEntityFacetFactory.java       |   8 +-
 .../JdoDiscriminatorAnnotationFacetFactory.java    |  16 ++--
 ...ferredFromJdoDiscriminatorValueAnnotation.java} |   8 +-
 ...peFacetForJdoPersistenceCapableAnnotation.java} |  14 +--
 ...doPersistenceCapableAnnotationFacetFactory.java |  12 +--
 ...JdoDiscriminatorAnnotationFacetFactoryTest.java |  18 ++--
 ...rsistenceCapableAnnotationFacetFactoryTest.java |  16 ++--
 ...java => ObjectTypeFacetForTableAnnotation.java} |  14 +--
 .../table/JpaTableAnnotationFacetFactory.java      |  12 +--
 .../service/swagger/internal/Generation.java       |   4 +-
 36 files changed, 244 insertions(+), 228 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java b/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
index d8d9bde..e555577 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/id/LogicalType.java
@@ -39,22 +39,22 @@ import lombok.val;
 /**
  * A generalization of Java's class type to also hold a logical name, which can be supplied lazily.
  * <p>
- * Equality is driven by the corresponding class exclusively, meaning the logical name is ignored 
+ * Equality is driven by the corresponding class exclusively, meaning the logical name is ignored
  * in order to not cause any side-effects on logical name memoization eg. it happening too early.
  * <p>
- * Meta-model validators will take care, that there is no logical name ambiguity: 
- * There cannot be any LogicalTypes sharing the same corresponding class while having different 
- * logical names. 
- * 
+ * Meta-model validators will take care, that there is no logical name ambiguity:
+ * There cannot be any LogicalTypes sharing the same corresponding class while having different
+ * logical names.
+ *
  * @apiNote thread-safe and serializable
  * @since 2.0 {@index}
  */
 @ToString
-public final class LogicalType 
-implements 
+public final class LogicalType
+implements
     Comparable<LogicalType>,
     Serializable {
-    
+
     private static final long serialVersionUID = 1L;
 
     /**
@@ -62,89 +62,89 @@ implements
      */
     @Getter
     private final Class<?> correspondingClass;
-    
+
     @ToString.Exclude
     private final Supplier<String> logicalNameProvider;
-    
+
     @ToString.Exclude // lazy, so don't use in toString (keep free from side-effects)
     private String logicalName;
 
     // -- FACTORIES
-    
+
     /**
      * Returns a new TypeIdentifier based on the corresponding class
-     * and a {@code logicalNameProvider} for lazy logical name lookup.  
+     * and a {@code logicalNameProvider} for lazy logical name lookup.
      */
     public static LogicalType lazy(
-            final @NonNull Class<?> correspondingClass, 
+            final @NonNull Class<?> correspondingClass,
             final @NonNull Supplier<String> logicalNameProvider) {
-        
+
         return new LogicalType(correspondingClass, logicalNameProvider);
     }
-    
+
     /**
      * Returns a new TypeIdentifier based on the corresponding class
-     * and (ahead of time) known {@code logicalName}. 
+     * and (ahead of time) known {@code logicalName}.
      */
     public static LogicalType eager(
-            final @NonNull Class<?> correspondingClass, 
+            final @NonNull Class<?> correspondingClass,
             final String logicalName) {
-        
+
         return new LogicalType(correspondingClass, logicalName);
     }
-    
+
     /**
-     * Use the corresponding class's fully qualified name for the {@code logicalName}. 
+     * Use the corresponding class's fully qualified name for the {@code logicalName}.
      * Most likely used in testing scenarios.
      */
     public static LogicalType fqcn(
             final @NonNull Class<?> correspondingClass) {
-        
+
         return eager(correspondingClass, correspondingClass.getName());
     }
-    
+
     // -- HIDDEN CONSTRUTORS
-    
+
     private LogicalType(
-            final @NonNull Class<?> correspondingClass, 
+            final @NonNull Class<?> correspondingClass,
             final @NonNull Supplier<String> logicalNameProvider) {
-        
+
         this.correspondingClass = correspondingClass;
         this.logicalNameProvider = logicalNameProvider;
     }
-    
+
     private LogicalType(
-            final @NonNull Class<?> correspondingClass, 
+            final @NonNull Class<?> correspondingClass,
             final String logicalName) {
-        
+
         this.correspondingClass = correspondingClass;
         this.logicalName = requireNonEmpty(logicalName);
         this.logicalNameProvider = null;
     }
-    
+
     /**
      * Canonical name of the corresponding class.
      */
     public String getClassName() {
         return getCorrespondingClass().getCanonicalName();
     }
-    
+
     /**
-     * Returns the (unique) logical-type-name, as per the 
-     * {@link ObjectSpecIdFacet}.
+     * Returns the logical-type-name (unique amongst non-abstract classes), as per the
+     * {@link ObjectTypeFacet}.
      *
      * <p>
      * This will typically be the value of the {@link DomainObject#objectType()} annotation attribute.
      * If none has been specified then will default to the fully qualified class name (with
-     * {@link ClassSubstitutorRegistry class name substituted} if necessary to allow for runtime 
+     * {@link ClassSubstitutorRegistry class name substituted} if necessary to allow for runtime
      * bytecode enhancement.
      *
-     * <p> 
-     * The {@link ObjectSpecification} can be retrieved using 
+     * <p>
+     * The {@link ObjectSpecification} can be retrieved using
      * {@link SpecificationLoader#lookupBySpecIdElseLoad(String)}} passing the logical-type-name as argument.
-     * 
+     *
      * @see ClassSubstitutorRegistry
-     * @see ObjectSpecIdFacet
+     * @see ObjectTypeFacet
      * @see ObjectSpecification
      * @see SpecificationLoader
      */
@@ -155,12 +155,12 @@ implements
         }
         return logicalName;
     }
-    
+
     /**
      * The logical type name consists of 2 parts, the <i>namespace</i> and the <i>logical simple name</i>.
      * <p>
      * Returns the <i>logical simple name</i> part.
-     * @implNote the result is not memoized, to keep it simple 
+     * @implNote the result is not memoized, to keep it simple
      */
     public String getLogicalTypeSimpleName() {
         val logicalTypeName = getLogicalTypeName();
@@ -169,7 +169,7 @@ implements
             ? logicalTypeName.substring(lastDot + 1)
             : logicalTypeName;
     }
-    
+
     /**
      * The logical type name consists of 2 parts, the <i>namespace</i> and the <i>logical simple name</i>.
      * <p>
@@ -183,11 +183,11 @@ implements
             ? logicalTypeName.substring(0, lastDot)
             : "";
     }
-    
+
     /**
      * The logical type name consists of 2 parts, the <i>namespace</i> and the <i>logical simple name</i>.
-     * Returns a concatenation of <i>namespace</i>, {@code delimiter} and the <i>logical simple name</i>, 
-     * whereas in the absence of a <i>namespace</i> returns a concatenation of {@code root} and the 
+     * Returns a concatenation of <i>namespace</i>, {@code delimiter} and the <i>logical simple name</i>,
+     * whereas in the absence of a <i>namespace</i> returns a concatenation of {@code root} and the
      * <i>logical simple name</i>.
      * @param root
      * @param delimiter
@@ -205,7 +205,7 @@ implements
             return root + logicalTypeName;
         }
     }
-    
+
     // -- OBJECT CONTRACT
 
     @Override
@@ -218,7 +218,7 @@ implements
         }
         return false;
     }
-    
+
     public boolean isEqualTo(final @Nullable LogicalType other) {
         if(other==null) {
             return false;
@@ -253,7 +253,7 @@ implements
         private static final long serialVersionUID = 1L;
         private final @NonNull Class<?> correspondingClass;
         private final @NonNull String logicalTypeName;
-        
+
         private SerializationProxy(LogicalType typeIdentifier) {
             this.correspondingClass = typeIdentifier.getCorrespondingClass();
             this.logicalTypeName = typeIdentifier.getLogicalTypeName();
@@ -263,16 +263,16 @@ implements
             return LogicalType.eager(correspondingClass, logicalTypeName);
         }
     }
-    
+
     // -- HELPER
-    
+
     private String requireNonEmpty(final String logicalName) {
         if(_Strings.isEmpty(logicalName)) {
-            throw _Exceptions.illegalArgument("logical name for type %s cannot be empty", 
+            throw _Exceptions.illegalArgument("logical name for type %s cannot be empty",
                     getCorrespondingClass().getName());
         }
         return logicalName;
     }
-    
-    
+
+
 }
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
index 76c8387..9c49f7b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelService.java
@@ -28,19 +28,24 @@ import org.apache.isis.schema.metamodel.v2.MetamodelDto;
 /**
  * This service provides a formal API into the framework's metamodel.
  *
- * @apiNote This API is currently extremely limited, but the intention is to extend it gradually as use cases emerge.
+ * @apiNote This API is currently extremely limited, but the intention is to extend it
+ * gradually as use cases emerge.
  *
  * @since 1.x {@index}
  */
 public interface MetaModelService {
 
     /**
-     * Provides a reverse lookup of a domain class' object type, as defined by {@link DomainObject#objectType()} (or any other mechanism that corresponds to Isis' <code>ObjectSpecIdFacet</code>).
+     * Provides a reverse lookup of a domain class' object type, as defined by
+     * {@link DomainObject#objectType()} (or any other mechanism that corresponds to Isis'
+     * <code>ObjectSpecIdFacet</code>).
      */
     Class<?> fromObjectType(final String objectType);
 
     /**
-     * Provides a lookup of a domain class' object type, as defined by {@link DomainObject#objectType()} (or any other mechanism that corresponds to Isis' <code>ObjectSpecIdFacet</code>).
+     * Provides a lookup of a domain class' object type, as defined by
+     * {@link DomainObject#objectType()} (or any other mechanism that corresponds to Isis'
+     * <code>ObjectSpecIdFacet</code>).
      */
     String toObjectType(final Class<?> domainType);
 
@@ -58,7 +63,8 @@ public interface MetaModelService {
      * </p>
      *
      * <p>
-     *     Note that {@link MetaModelService#exportMetaModel(Config)} provides a superset of the functionality provided by this method.
+     *     Note that {@link MetaModelService#exportMetaModel(Config)} provides a superset of
+     *     the functionality provided by this method.
      * </p>
      *
      */
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index 9a5e4c2..ad22587 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -24,7 +24,7 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.applib.IsisModuleApplib;
 import org.apache.isis.core.config.IsisModuleCoreConfig;
 import org.apache.isis.core.metamodel.context.MetaModelContexts;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdMalformedValidator;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeMalformedValidator;
 import org.apache.isis.core.metamodel.facets.schema.IsisSchemaMetaModelRefiner;
 import org.apache.isis.core.metamodel.facets.schema.IsisSchemaValueTypeProvider;
 import org.apache.isis.core.metamodel.inspect.IsisModuleCoreMetamodelInspection;
@@ -99,7 +99,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
 
         IsisSchemaMetaModelRefiner.class,
         IsisSchemaValueTypeProvider.class,
-        ObjectSpecIdMalformedValidator.class,
+        ObjectTypeMalformedValidator.class,
 
 })
 public class IsisModuleCoreMetamodel {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ObjectSpecIdFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ObjectTypeFacetFactory.java
similarity index 68%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ObjectSpecIdFacetFactory.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ObjectTypeFacetFactory.java
index 9867b4b..9a23adc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ObjectSpecIdFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/ObjectTypeFacetFactory.java
@@ -20,18 +20,17 @@ package org.apache.isis.core.metamodel.facets;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
-public interface ObjectSpecIdFacetFactory extends FacetFactory {
+public interface ObjectTypeFacetFactory extends FacetFactory {
 
-    // //////////////////////////////////////
-    // process objectSpecId
-    // //////////////////////////////////////
+    // -- process objectType
 
-    public static class ProcessObjectSpecIdContext extends AbstractProcessWithClsContext<FacetHolder> {
-        public ProcessObjectSpecIdContext(final Class<?> cls, final FacetHolder facetHolder) {
+    public static class ProcessObjectTypeContext
+    extends AbstractProcessWithClsContext<FacetHolder> {
+        public ProcessObjectTypeContext(final Class<?> cls, final FacetHolder facetHolder) {
             super(cls, facetHolder);
         }
     }
 
-    void process(final ProcessObjectSpecIdContext processClassContext);
+    void process(ProcessObjectTypeContext processClassContext);
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 80f2f8c..9799643 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -47,7 +47,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation;
@@ -65,7 +65,7 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.domainevents.Pr
 import org.apache.isis.core.metamodel.facets.object.domainobject.editing.EditingEnabledFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.editing.ImmutableFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectTypeFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.mixin.MetaModelValidatorForMixinTypes;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacetForDomainObjectAnnotation;
@@ -88,7 +88,7 @@ extends FacetFactoryAbstract
 implements
     MetaModelRefiner,
     PostConstructMethodCache,
-    ObjectSpecIdFacetFactory {
+    ObjectTypeFacetFactory {
 
     private final MetaModelValidatorForMixinTypes mixinTypeValidator =
             new MetaModelValidatorForMixinTypes("@DomainObject#nature=MIXIN");
@@ -105,7 +105,7 @@ implements
     }
 
     @Override
-    public void process(final ProcessObjectSpecIdContext processClassContext) {
+    public void process(final ProcessObjectTypeContext processClassContext) {
         processObjectType(processClassContext);
     }
 
@@ -256,13 +256,13 @@ implements
                 .create(domainObjectIfAny, getConfiguration(), facetHolder));
     }
 
-    void processObjectType(final ProcessObjectSpecIdContext processClassContext) {
+    void processObjectType(final ProcessObjectTypeContext processClassContext) {
 
         val facetHolder = processClassContext.getFacetHolder();
 
         // check from @DomainObject(objectType=...)
         val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
-        val facet = ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObjectIfAny, facetHolder);
+        val facet = ObjectTypeFacetForDomainObjectAnnotation.create(domainObjectIfAny, facetHolder);
 
         // then add
         super.addFacet(facet);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
similarity index 81%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
index f346619..cc05554 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForDomainObjectAnnotation.java
@@ -24,23 +24,23 @@ import java.util.Optional;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 
-public class ObjectSpecIdFacetForDomainObjectAnnotation extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetForDomainObjectAnnotation extends ObjectTypeFacetAbstract {
 
-    public static ObjectSpecIdFacet create(
+    public static ObjectTypeFacet create(
             final Optional<DomainObject> domainObjectIfAny,
             final FacetHolder holder) {
 
         return domainObjectIfAny
                 .map(DomainObject::objectType)
                 .filter(_Strings::isNotEmpty)
-                .map(objectType -> new ObjectSpecIdFacetForDomainObjectAnnotation(objectType, holder))
+                .map(objectType -> new ObjectTypeFacetForDomainObjectAnnotation(objectType, holder))
                 .orElse(null);
     }
 
-    private ObjectSpecIdFacetForDomainObjectAnnotation(final String value,
+    private ObjectTypeFacetForDomainObjectAnnotation(final String value,
             final FacetHolder holder) {
         super(value, holder);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
similarity index 71%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacet.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
index dad05a7..d63600d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacet.java
@@ -19,13 +19,18 @@
 package org.apache.isis.core.metamodel.facets.object.objectspecid;
 
 
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 
 /**
- * Identifies the type of entity, such that OIDs are self-describing.
+ *  Corresponds to the value of {@link DomainObject#objectType()},
+ *  that specifies the <i>logical type name</i> of a domain object.
+ *  <p>
+ *  The <i>logical type name</i> must be unique among non-abstract classes,
+ *  but is allowed to be shared with interfaces and abstract classes.
  */
-public interface ObjectSpecIdFacet extends Facet {
+public interface ObjectTypeFacet extends Facet {
 
     String value();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
similarity index 84%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetAbstract.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
index 45562fe..c99c3d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetAbstract.java
@@ -25,25 +25,25 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 
-public abstract class ObjectSpecIdFacetAbstract
+public abstract class ObjectTypeFacetAbstract
 extends FacetAbstract
-implements ObjectSpecIdFacet {
+implements ObjectTypeFacet {
 
     public static Class<? extends Facet> type() {
-        return ObjectSpecIdFacet.class;
+        return ObjectTypeFacet.class;
     }
 
     private final String value;
 
-    public ObjectSpecIdFacetAbstract(final String value, final FacetHolder holder) {
+    public ObjectTypeFacetAbstract(final String value, final FacetHolder holder) {
         this(value, holder, Derivation.NOT_DERIVED);
     }
 
-    protected ObjectSpecIdFacetAbstract(
+    protected ObjectTypeFacetAbstract(
             final String value,
             final FacetHolder holder,
             final Derivation derivation) {
-        super(ObjectSpecIdFacetAbstract.type(), holder, derivation);
+        super(ObjectTypeFacetAbstract.type(), holder, derivation);
         this.value = value;
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdMalformedValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeMalformedValidator.java
similarity index 95%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdMalformedValidator.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeMalformedValidator.java
index 9e99cbe..cdaa5e8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdMalformedValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeMalformedValidator.java
@@ -33,7 +33,7 @@ import lombok.val;
  *
  * @since 2.0
  */
-public class ObjectSpecIdMalformedValidator
+public class ObjectTypeMalformedValidator
 implements MetaModelRefiner {
 
     @Override
@@ -46,7 +46,7 @@ implements MetaModelRefiner {
                 return;
             }
 
-            val objectSpecIdFacet = spec.getFacet(ObjectSpecIdFacet.class);
+            val objectSpecIdFacet = spec.getFacet(ObjectTypeFacet.class);
             if(objectSpecIdFacet == null) {
                 return;
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassName.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
similarity index 79%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassName.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
index 4511fcd..3914f4c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassName.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassName.java
@@ -21,14 +21,16 @@ package org.apache.isis.core.metamodel.facets.object.objectspecid.classname;
 
 import org.apache.isis.core.metamodel.commons.ClassUtil;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 
-public class ObjectSpecIdFacetDerivedFromClassName extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetDerivedFromClassName
+extends ObjectTypeFacetAbstract {
 
-    public ObjectSpecIdFacetDerivedFromClassName(final Class<?> cls, final FacetHolder holder) {
+    public ObjectTypeFacetDerivedFromClassName(final Class<?> cls, final FacetHolder holder) {
         this(ClassUtil.getCanonicalName_friendlyToInnerClasses(cls), holder);
     }
-    public ObjectSpecIdFacetDerivedFromClassName(final String value, final FacetHolder holder) {
+
+    public ObjectTypeFacetDerivedFromClassName(final String value, final FacetHolder holder) {
         super(value, holder, Derivation.DERIVED);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
similarity index 84%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
index 48fa5c9..e75b840 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromClassNameFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromClassNameFactory.java
@@ -29,9 +29,9 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorDefault;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
@@ -41,9 +41,9 @@ import org.apache.isis.core.metamodel.specloader.validator.ValidationFailure;
 
 import lombok.val;
 
-public class ObjectSpecIdFacetDerivedFromClassNameFactory
+public class ObjectTypeFacetDerivedFromClassNameFactory
 extends FacetFactoryAbstract
-implements MetaModelRefiner, ObjectSpecIdFacetFactory {
+implements MetaModelRefiner, ObjectTypeFacetFactory {
 
     @Inject
     private ClassSubstitutorRegistry classSubstitutorRegistry =
@@ -51,19 +51,19 @@ implements MetaModelRefiner, ObjectSpecIdFacetFactory {
             new ClassSubstitutorRegistry(Collections.singletonList( new ClassSubstitutorDefault()));
 
 
-    public ObjectSpecIdFacetDerivedFromClassNameFactory() {
+    public ObjectTypeFacetDerivedFromClassNameFactory() {
         super(FeatureType.OBJECTS_ONLY);
     }
-    public ObjectSpecIdFacetDerivedFromClassNameFactory(ClassSubstitutorRegistry classSubstitutorRegistry) {
+    public ObjectTypeFacetDerivedFromClassNameFactory(ClassSubstitutorRegistry classSubstitutorRegistry) {
         this();
         this.classSubstitutorRegistry = classSubstitutorRegistry;
     }
 
     @Override
-    public void process(final ProcessObjectSpecIdContext processClassContext) {
+    public void process(final ProcessObjectTypeContext processClassContext) {
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
         // don't trash existing facet
-        if(facetHolder.containsNonFallbackFacet(ObjectSpecIdFacet.class)) {
+        if(facetHolder.containsNonFallbackFacet(ObjectTypeFacet.class)) {
             return;
         }
         val cls = processClassContext.getCls();
@@ -71,8 +71,8 @@ implements MetaModelRefiner, ObjectSpecIdFacetFactory {
         if(substitute.isNeverIntrospect()) {
             return;
         }
-        val objectSpecIdFacet = createObjectSpecIdFacet(facetHolder, substitute.apply(cls));
-        FacetUtil.addFacet(objectSpecIdFacet);
+        val objectTypeFacet = createObjectTypeFacet(facetHolder, substitute.apply(cls));
+        FacetUtil.addFacet(objectTypeFacet);
     }
 
     @Override
@@ -80,7 +80,7 @@ implements MetaModelRefiner, ObjectSpecIdFacetFactory {
         // now a no-op.
     }
 
-    private static ObjectSpecIdFacet createObjectSpecIdFacet(
+    private static ObjectTypeFacet createObjectTypeFacet(
             final FacetHolder facetHolder,
             final Class<?> substitutedClass) {
 
@@ -88,9 +88,9 @@ implements MetaModelRefiner, ObjectSpecIdFacetFactory {
         val isService = serviceId!=null;
 
         if (isService) {
-            return new ObjectSpecIdFacetDerivedFromIoCNamingStrategy(serviceId, facetHolder);
+            return new ObjectTypeFacetDerivedFromIoCNamingStrategy(serviceId, facetHolder);
         }
-        return new ObjectSpecIdFacetDerivedFromClassName(substitutedClass, facetHolder);
+        return new ObjectTypeFacetDerivedFromClassName(substitutedClass, facetHolder);
     }
 
     private static String getServiceId(final FacetHolder facetHolder) {
@@ -117,8 +117,8 @@ implements MetaModelRefiner, ObjectSpecIdFacetFactory {
                 return;
             }
 
-            val objectSpecIdFacet = objectSpec.getFacet(ObjectSpecIdFacet.class);
-            if(objectSpecIdFacet instanceof ObjectSpecIdFacetDerivedFromClassName) {
+            val objectSpecIdFacet = objectSpec.getFacet(ObjectTypeFacet.class);
+            if(objectSpecIdFacet instanceof ObjectTypeFacetDerivedFromClassName) {
                 ValidationFailure.raiseFormatted(
                         objectSpec,
                         "%s: the object type must be specified explicitly ('%s' config property). "
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromIoCNamingStrategy.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
similarity index 83%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromIoCNamingStrategy.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
index 5c8414d..a555c1e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetDerivedFromIoCNamingStrategy.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetDerivedFromIoCNamingStrategy.java
@@ -20,14 +20,14 @@
 package org.apache.isis.core.metamodel.facets.object.objectspecid.classname;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 
 /**
  * @since 2.0
  */
-public class ObjectSpecIdFacetDerivedFromIoCNamingStrategy extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetDerivedFromIoCNamingStrategy extends ObjectTypeFacetAbstract {
 
-    ObjectSpecIdFacetDerivedFromIoCNamingStrategy(final String value, final FacetHolder holder) {
+    ObjectTypeFacetDerivedFromIoCNamingStrategy(final String value, final FacetHolder holder) {
         super(value, holder);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetOnStandaloneList.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
similarity index 84%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetOnStandaloneList.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
index 3534a55..3ca3c7c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectSpecIdFacetOnStandaloneList.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/objectspecid/classname/ObjectTypeFacetOnStandaloneList.java
@@ -20,11 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.objectspecid.classname;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 
-public class ObjectSpecIdFacetOnStandaloneList extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetOnStandaloneList extends ObjectTypeFacetAbstract {
 
-    public ObjectSpecIdFacetOnStandaloneList(final String value, final FacetHolder holder) {
+    public ObjectTypeFacetOnStandaloneList(final String value, final FacetHolder holder) {
         super(value, holder, Derivation.NOT_DERIVED);
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
index 3b3fdac..ed9a875 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
@@ -66,7 +66,7 @@ import org.apache.isis.core.metamodel.facets.object.ignore.javalang.IteratorFilt
 import org.apache.isis.core.metamodel.facets.object.ignore.javalang.RemoveMethodsFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.layout.LayoutFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.navparent.annotation.NavigableParentAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassNameFactory;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectTypeFacetDerivedFromClassNameFactory;
 import org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImplFactory;
 import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
@@ -178,7 +178,7 @@ public final class ProgrammingModelFacetsJava8 extends ProgrammingModelAbstract
         // FacetFactorys later.
         addFactory(FacetProcessingOrder.A1_FALLBACK_DEFAULTS, FallbackFacetFactory.class);
 
-        addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, ObjectSpecIdFacetDerivedFromClassNameFactory.class);
+        addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, ObjectTypeFacetDerivedFromClassNameFactory.class);
         addFactory(FacetProcessingOrder.B1_OBJECT_NAMING, DomainServiceFacetAnnotationFactory.class);
 
         addFactory(FacetProcessingOrder.C1_METHOD_REMOVING, IteratorFilteringFacetFactory.class);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 34bf1c8..6f7f59c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -44,7 +44,7 @@ import org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
@@ -81,8 +81,8 @@ public class MetaModelServiceDefault implements MetaModelService {
         }
 
         return specificationLoader.specForType(domainType)
-        .flatMap(spec->spec.lookupFacet(ObjectSpecIdFacet.class))
-        .map(ObjectSpecIdFacet::value)
+        .flatMap(spec->spec.lookupFacet(ObjectTypeFacet.class))
+        .map(ObjectTypeFacet::value)
         .orElse(null);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
index 580ae72..7e70f0e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
@@ -24,7 +24,7 @@ import java.util.Optional;
 
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import lombok.NonNull;
@@ -48,8 +48,10 @@ class LogicalTypeResolverDefault implements LogicalTypeResolver {
 
     @Override
     public void register(final @NonNull ObjectSpecification spec) {
+
+        // collect concrete classes (do not collect abstract or anonymous types or interfaces)
         if(!spec.isAbstract()
-                && hasUsableSpecId(spec)) {
+                && hasUsableObjectTypeFacet(spec)) {
 
             logicalTypeByName.merge(spec.getLogicalTypeName(), spec.getLogicalType(), this::mostSpecializedOfConcrete);
         }
@@ -57,10 +59,10 @@ class LogicalTypeResolverDefault implements LogicalTypeResolver {
 
     // -- HELPER
 
-    private boolean hasUsableSpecId(ObjectSpecification spec) {
-        // umm.  It turns out that anonymous inner classes (eg org.estatio.dom.WithTitleGetter$ToString$1)
-        // don't have an ObjectSpecId; hence the guard.
-        return spec.containsNonFallbackFacet(ObjectSpecIdFacet.class);
+    private boolean hasUsableObjectTypeFacet(ObjectSpecification spec) {
+        // anonymous inner classes (eg org.estatio.dom.WithTitleGetter$ToString$1)
+        // don't have an ObjectType; hence the guard.
+        return spec.containsNonFallbackFacet(ObjectTypeFacet.class);
     }
 
     private LogicalType mostSpecializedOfConcrete(final @NonNull LogicalType a, final @NonNull LogicalType b) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 464e49b..c4d5ab1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -306,7 +306,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
         _Blackhole.consume(getOrAssessValidationResult()); // as a side effect memoizes the validation result
 
         stopWatch.stop();
-        log.info("Metamodel created in " + (long)stopWatch.getMillis() + " ms.");
+        log.info("Metamodel created in " + stopWatch.getMillis() + " ms.");
 
         if(isFullIntrospect()) {
             setMetamodelFullyIntrospected(true);
@@ -452,7 +452,7 @@ public class SpecificationLoaderDefault implements SpecificationLoader {
         if(cls!=null) {
 
 //TODO yet it seems we rely on this kind of fallback from several code paths, so lets not emit any warnings yet ...
-//            log.warn("Lookup for ObjectSpecId '{}' failed, but found a matching fully qualified "
+//            log.warn("Lookup for ObjectType '{}' failed, but found a matching fully qualified "
 //                    + "class name to use instead. This warning is an indicator, that {} is not "
 //                    + "discovered by Spring during bootstrapping of this application.",
 //                    objectSpecId.getSpecId(),
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
index a038a92..cb17b0d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/facetprocessor/FacetProcessor.java
@@ -43,8 +43,8 @@ import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessParameterContext;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory.ProcessObjectTypeContext;
 import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodFilteringFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactory;
@@ -238,24 +238,24 @@ public class FacetProcessor {
         return false;
     }
 
-    public void processObjectSpecId(Class<?> cls, FacetHolder facetHolder) {
+    public void processObjectType(Class<?> cls, FacetHolder facetHolder) {
         val factoryList = getObjectSpecIfFacetFactoryList();
         for (val facetFactory : factoryList) {
-            facetFactory.process(new ProcessObjectSpecIdContext(cls, facetHolder));
+            facetFactory.process(new ProcessObjectTypeContext(cls, facetHolder));
         }
     }
 
-    private List<ObjectSpecIdFacetFactory> objectSpecIfFacetFactoryList = null;
+    private List<ObjectTypeFacetFactory> objectSpecIfFacetFactoryList = null;
 
 
-    private List<ObjectSpecIdFacetFactory> getObjectSpecIfFacetFactoryList() {
+    private List<ObjectTypeFacetFactory> getObjectSpecIfFacetFactoryList() {
         if(objectSpecIfFacetFactoryList == null) {
-            val facetFactories = _Lists.<ObjectSpecIdFacetFactory>newArrayList();
+            val facetFactories = _Lists.<ObjectTypeFacetFactory>newArrayList();
 
             factoryListByFeatureType.get().getOrElseEmpty(FeatureType.OBJECT)
             .forEach(facetFactory->{
-                if (facetFactory instanceof ObjectSpecIdFacetFactory) {
-                    val objectSpecIdFacetFactory = (ObjectSpecIdFacetFactory) facetFactory;
+                if (facetFactory instanceof ObjectTypeFacetFactory) {
+                    val objectSpecIdFacetFactory = (ObjectTypeFacetFactory) facetFactory;
                     facetFactories.add(objectSpecIdFacetFactory);
                 }
             });
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java
index f6f926f..3973fe6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/IntrospectionState.java
@@ -18,9 +18,11 @@
  */
 package org.apache.isis.core.metamodel.specloader.specimpl;
 
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
+
 public enum IntrospectionState implements Comparable<IntrospectionState> {
     /**
-     * ObjectSpecIdFacet only.
+     * {@link ObjectTypeFacet} only.
      */
     NOT_INTROSPECTED,
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index b72a59c..e2fd9b8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -61,7 +61,7 @@ import org.apache.isis.core.metamodel.facets.object.icon.IconFacet;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
 import org.apache.isis.core.metamodel.facets.object.navparent.NavigableParentFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.facets.object.parented.ParentedCollectionFacet;
 import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
@@ -222,9 +222,9 @@ implements ObjectSpecification {
     }
 
     private LogicalType lookupLogicalType() {
-        val objectSpecIdFacet = getFacet(ObjectSpecIdFacet.class);
+        val objectSpecIdFacet = getFacet(ObjectTypeFacet.class);
         if(objectSpecIdFacet == null) {
-            throw new IllegalStateException("could not find an ObjectSpecIdFacet for " + this.getFullIdentifier());
+            throw new IllegalStateException("could not find an ObjectTypeFacet for " + this.getFullIdentifier());
         }
         return LogicalType.eager(correspondingClass, objectSpecIdFacet.value());
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 45aeb1a..76e03eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -112,7 +112,7 @@ implements FacetHolder {
         this.facetedMethodsBuilder = new FacetedMethodsBuilder(this, facetProcessor, classSubstitutorRegistry);
         this.classSubstitutorRegistry = classSubstitutorRegistry;
 
-        facetProcessor.processObjectSpecId(correspondingClass, this);
+        facetProcessor.processObjectType(correspondingClass, this);
 
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 549325b..09fafa1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -36,7 +36,7 @@ import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory.ProcessObjectTypeContext;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.facets.object.domainobject.autocomplete.AutoCompleteFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.choices.ChoicesFacetForDomainObjectAnnotation;
@@ -46,10 +46,10 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.editing.Immutab
 import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetForDomainObjectAnnotationAsConfigured;
 import org.apache.isis.core.metamodel.facets.object.domainobject.entitychangepublishing.EntityChangePublishingFacetFromConfiguration;
-import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectTypeFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
 import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
@@ -551,14 +551,14 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
         @Test
         public void whenDomainObjectAndObjectTypeSetToTrue() {
 
-            facetFactory.process(new ProcessObjectSpecIdContext(CustomerWithDomainObjectAndObjectTypeSet.class, facetHolder));
+            facetFactory.process(new ProcessObjectTypeContext(CustomerWithDomainObjectAndObjectTypeSet.class, facetHolder));
 
-            final Facet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+            final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
             Assert.assertNotNull(facet);
 
-            Assert.assertTrue(facet instanceof ObjectSpecIdFacetForDomainObjectAnnotation);
-            final ObjectSpecIdFacetForDomainObjectAnnotation facetForDomainObjectAnnotation =
-                    (ObjectSpecIdFacetForDomainObjectAnnotation) facet;
+            Assert.assertTrue(facet instanceof ObjectTypeFacetForDomainObjectAnnotation);
+            final ObjectTypeFacetForDomainObjectAnnotation facetForDomainObjectAnnotation =
+                    (ObjectTypeFacetForDomainObjectAnnotation) facet;
 
             assertThat(facetForDomainObjectAnnotation.value(), is("CUS"));
 
@@ -570,7 +570,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             facetFactory.process(new ProcessClassContext(CustomerWithDomainObjectButNoObjectType.class, mockMethodRemover, facetHolder));
 
-            final Facet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+            final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
             Assert.assertNull(facet);
 
             expectNoMethodsRemoved();
@@ -581,7 +581,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
 
             facetFactory.process(new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
 
-            final Facet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+            final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
             Assert.assertNull(facet);
 
             expectNoMethodsRemoved();
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
index bb44f2c..304c4cd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
@@ -24,9 +24,9 @@ import org.junit.Test;
 
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext;
-import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory.ProcessObjectTypeContext;
+import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectTypeFacetForDomainObjectAnnotation;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.methods.MethodByClassMap;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -52,12 +52,12 @@ public class ObjectTypeAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
 
         expectNoMethodsRemoved();
 
-        facetFactory.processObjectType(new ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.processObjectType(new ProcessObjectTypeContext(Customer.class, facetHolder));
 
-        final ObjectSpecIdFacet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+        final ObjectTypeFacet facet = facetHolder.getFacet(ObjectTypeFacet.class);
 
         assertThat(facet, is(not(nullValue())));
-        assertThat(facet instanceof ObjectSpecIdFacetForDomainObjectAnnotation, is(true));
+        assertThat(facet instanceof ObjectTypeFacetForDomainObjectAnnotation, is(true));
         assertThat(facet.value(), is("CUS"));
 
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetDerivedFromClassNameFactoryTest.java
similarity index 70%
rename from core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
rename to core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetDerivedFromClassNameFactoryTest.java
index ff596c0..b9775ca 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectSpecIdFacetDerivedFromClassNameFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/objectspecid/ObjectTypeFacetDerivedFromClassNameFactoryTest.java
@@ -24,22 +24,22 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassNameFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectTypeFacetDerivedFromClassName;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectTypeFacetDerivedFromClassNameFactory;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.nullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 
-public class ObjectSpecIdFacetDerivedFromClassNameFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
+public class ObjectTypeFacetDerivedFromClassNameFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
 
-    private ObjectSpecIdFacetDerivedFromClassNameFactory facetFactory;
+    private ObjectTypeFacetDerivedFromClassNameFactory facetFactory;
 
     @Before
     public void setUp() throws Exception {
-        facetFactory = new ObjectSpecIdFacetDerivedFromClassNameFactory();
+        facetFactory = new ObjectTypeFacetDerivedFromClassNameFactory();
     }
 
     public static class Customer {
@@ -49,12 +49,12 @@ public class ObjectSpecIdFacetDerivedFromClassNameFactoryTest extends AbstractFa
     public void installsFacet_passedThroughClassSubstitutor() {
         expectNoMethodsRemoved();
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(CustomerAsProxiedByDataNucleus.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(CustomerAsProxiedByDataNucleus.class, facetHolder));
 
-        final ObjectSpecIdFacet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+        final ObjectTypeFacet facet = facetHolder.getFacet(ObjectTypeFacet.class);
 
         assertThat(facet, is(not(nullValue())));
-        assertThat(facet instanceof ObjectSpecIdFacetDerivedFromClassName, is(true));
+        assertThat(facet instanceof ObjectTypeFacetDerivedFromClassName, is(true));
         assertThat(facet.value(), is(Customer.class.getCanonicalName()));
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
index cc2891e..06897ff 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/testspec/ObjectSpecificationStub.java
@@ -38,7 +38,7 @@ import org.apache.isis.core.metamodel.consent.InteractionResult;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.spec.ActionType;
@@ -132,7 +132,7 @@ implements ObjectSpecification {
     @Override
     public LogicalType getLogicalType() {
         if(logicalType == null) {
-            val logicalTypeName = getFacet(ObjectSpecIdFacet.class).value();
+            val logicalTypeName = getFacet(ObjectTypeFacet.class).value();
             logicalType = LogicalType.eager(correspondingClass, logicalTypeName);
         }
         return logicalType;
diff --git a/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java b/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java
index 6a97209..7a26127 100644
--- a/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java
+++ b/core/metamodel/src/test/java/org/datanucleus/testing/dom/CustomerAsProxiedByDataNucleus.java
@@ -18,7 +18,7 @@
  */
 package org.datanucleus.testing.dom;
 
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetDerivedFromClassNameFactoryTest;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetDerivedFromClassNameFactoryTest;
 
-public class CustomerAsProxiedByDataNucleus extends ObjectSpecIdFacetDerivedFromClassNameFactoryTest.Customer {
+public class CustomerAsProxiedByDataNucleus extends ObjectTypeFacetDerivedFromClassNameFactoryTest.Customer {
 }
diff --git a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacetFactory.java b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacetFactory.java
index 94138ac..5aae7a6 100644
--- a/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacetFactory.java
+++ b/persistence/jdo/datanucleus/src/main/java/org/apache/isis/persistence/jdo/datanucleus/metamodel/facets/entity/JdoEntityFacetFactory.java
@@ -27,26 +27,26 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
 import org.apache.isis.persistence.jdo.datanucleus.metamodel.JdoMetamodelUtil;
 
 import lombok.val;
 
 /**
- * Implements {@link ObjectSpecIdFacetFactory} only because
+ * Implements {@link ObjectTypeFacetFactory} only because
  * is a prereq of {@link DomainObjectAnnotationFacetFactory}.
  */
 public class JdoEntityFacetFactory
 extends FacetFactoryAbstract
-implements ObjectSpecIdFacetFactory {
+implements ObjectTypeFacetFactory {
 
     public JdoEntityFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
     }
 
     @Override
-    public void process(ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext processClassContext) {
+    public void process(ObjectTypeFacetFactory.ProcessObjectTypeContext processClassContext) {
         final Class<?> cls = processClassContext.getCls();
 
         // only applies to JDO entities; ignore any view models
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
index c3ae717..19cf324 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
@@ -28,9 +28,9 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectTypeFacetDerivedFromClassName;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
 import org.apache.isis.persistence.jdo.provider.entities.JdoFacetContext;
 
@@ -39,7 +39,7 @@ import lombok.val;
 
 public class JdoDiscriminatorAnnotationFacetFactory
 extends FacetFactoryAbstract
-implements ObjectSpecIdFacetFactory {
+implements ObjectTypeFacetFactory {
 
     @Inject private ClassSubstitutorRegistry classSubstitutorRegistry;
     @Inject @Setter private JdoFacetContext jdoFacetContext;
@@ -49,7 +49,7 @@ implements ObjectSpecIdFacetFactory {
     }
 
     @Override
-    public void process(final ProcessObjectSpecIdContext processClassContext) {
+    public void process(final ProcessObjectTypeContext processClassContext) {
 
         // only applies to JDO entities; ignore any view models
         final Class<?> cls = processClassContext.getCls();
@@ -64,9 +64,9 @@ implements ObjectSpecIdFacetFactory {
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         final String annotationValue = annotation.value();
-        final ObjectSpecIdFacet facet;
+        final ObjectTypeFacet facet;
         if (!_Strings.isNullOrEmpty(annotationValue)) {
-            facet = new ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation(
+            facet = new ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation(
                     annotationValue, facetHolder);
         } else {
             val substitute = classSubstitutorRegistry.getSubstitution(cls);
@@ -75,7 +75,7 @@ implements ObjectSpecIdFacetFactory {
             }
 
             val substituted = substitute.apply(cls);
-            facet = new ObjectSpecIdFacetDerivedFromClassName(
+            facet = new ObjectTypeFacetDerivedFromClassName(
                             substituted.getCanonicalName(),
                             facetHolder);
 
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
similarity index 84%
rename from persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation.java
rename to persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
index 74f1f53..158701a 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation.java
@@ -19,12 +19,12 @@
 package org.apache.isis.persistence.jdo.metamodel.facets.object.discriminator;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 
-public class ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation
-extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation
+extends ObjectTypeFacetAbstract {
 
-    public ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation(
+    public ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation(
             final String value,
             final FacetHolder holder) {
         super(value, holder);
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForJdoPersistenceCapableAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
similarity index 83%
rename from persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForJdoPersistenceCapableAnnotation.java
rename to persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
index 8cad3c9..3e6d0ca 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForJdoPersistenceCapableAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/domainobject/objectspecid/ObjectTypeFacetForJdoPersistenceCapableAnnotation.java
@@ -23,14 +23,14 @@ import java.util.Locale;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
-public class ObjectSpecIdFacetForJdoPersistenceCapableAnnotation
-extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetForJdoPersistenceCapableAnnotation
+extends ObjectTypeFacetAbstract {
 
-    public static ObjectSpecIdFacet create(
+    public static ObjectTypeFacet create(
             final JdoPersistenceCapableFacet persistenceCapableFacet,
             final FacetHolder holder) {
 
@@ -42,10 +42,10 @@ extends ObjectSpecIdFacetAbstract {
             return null;
         }
         final String objectType = schema.toLowerCase(Locale.ROOT) + "." + persistenceCapableFacet.getTable();
-        return new ObjectSpecIdFacetForJdoPersistenceCapableAnnotation(objectType, holder);
+        return new ObjectTypeFacetForJdoPersistenceCapableAnnotation(objectType, holder);
     }
 
-    private ObjectSpecIdFacetForJdoPersistenceCapableAnnotation(final String value,
+    private ObjectTypeFacetForJdoPersistenceCapableAnnotation(final String value,
             final FacetHolder holder) {
         super(value, holder);
     }
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
index 86457ca..1022ce4 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
@@ -29,20 +29,20 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForJdoPersistenceCapableAnnotation;
+import org.apache.isis.persistence.jdo.metamodel.facets.object.domainobject.objectspecid.ObjectTypeFacetForJdoPersistenceCapableAnnotation;
 import org.apache.isis.persistence.jdo.provider.entities.JdoFacetContext;
 
 import lombok.Setter;
 import lombok.val;
 
 /**
- * Implements {@link ObjectSpecIdFacetFactory} only because is a prereq of {@link DomainObjectAnnotationFacetFactory}.
+ * Implements {@link ObjectTypeFacetFactory} only because is a prereq of {@link DomainObjectAnnotationFacetFactory}.
  */
 public class JdoPersistenceCapableAnnotationFacetFactory
 extends FacetFactoryAbstract
-implements ObjectSpecIdFacetFactory {
+implements ObjectTypeFacetFactory {
 
     @Inject @Setter private JdoFacetContext jdoFacetContext;
 
@@ -51,7 +51,7 @@ implements ObjectSpecIdFacetFactory {
     }
 
     @Override
-    public void process(ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext processClassContext) {
+    public void process(ObjectTypeFacetFactory.ProcessObjectTypeContext processClassContext) {
         final Class<?> cls = processClassContext.getCls();
 
         // only applies to JDO entities; ignore any view models
@@ -89,7 +89,7 @@ implements ObjectSpecIdFacetFactory {
                     annotationSchemaAttribute,
                     annotationTableAttribute, annotationIdentityType, facetHolder);
             FacetUtil.addFacet(jdoPersistenceCapableFacet);
-            FacetUtil.addFacet(ObjectSpecIdFacetForJdoPersistenceCapableAnnotation.create(jdoPersistenceCapableFacet, facetHolder));
+            FacetUtil.addFacet(ObjectTypeFacetForJdoPersistenceCapableAnnotation.create(jdoPersistenceCapableFacet, facetHolder));
         }
 
         return;
diff --git a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
index 4dd4fbd..f845092 100644
--- a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
+++ b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/discriminator/GivenJdoDiscriminatorAnnotationFacetFactoryTest.java
@@ -24,8 +24,8 @@ import javax.jdo.annotations.PersistenceCapable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.persistence.jdo.metamodel.testing.AbstractFacetFactoryTest;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.discriminator.JdoDiscriminatorFacet;
 
@@ -70,16 +70,16 @@ public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFac
         assertTrue(facet instanceof JdoDiscriminatorFacetDefault);
     }
 
-    public void testObjectSpecIdAnnotationPickedUpOnClass() {
+    public void testObjectTypeAnnotationPickedUpOnClass() {
         @Discriminator("CUS")
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
 
-        final Facet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+        final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
         assertNotNull(facet);
-        assertTrue(facet instanceof ObjectSpecIdFacetInferredFromJdoDiscriminatorValueAnnotation);
+        assertTrue(facet instanceof ObjectTypeFacetInferredFromJdoDiscriminatorValueAnnotation);
     }
 
     public void testIfNoEntityAnnotationThenNoFacet() {
@@ -89,7 +89,7 @@ public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFac
 
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
-        final Facet facet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+        final Facet facet = facetHolder.getFacet(ObjectTypeFacet.class);
         assertNull(facet);
     }
 
@@ -98,9 +98,9 @@ public class GivenJdoDiscriminatorAnnotationFacetFactoryTest extends AbstractFac
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
 
-        final ObjectSpecIdFacet discriminatorValueFacet = facetHolder.getFacet(ObjectSpecIdFacet.class);
+        final ObjectTypeFacet discriminatorValueFacet = facetHolder.getFacet(ObjectTypeFacet.class);
         assertEquals("CUS", discriminatorValueFacet.value());
     }
 
diff --git a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
index 249d83d..6aa43f3 100644
--- a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
+++ b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/object/persistencecapable/GivenJdoPersistenceCapableAnnotationFacetFactoryTest.java
@@ -24,7 +24,7 @@ import javax.jdo.annotations.PersistenceCapable;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
 import org.apache.isis.persistence.jdo.metamodel.testing.AbstractFacetFactoryTest;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
 
@@ -63,7 +63,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         final Facet facet = facetHolder.getFacet(JdoPersistenceCapableFacet.class);
@@ -76,7 +76,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         final Facet facet = facetHolder.getFacet(JdoPersistenceCapableFacet.class);
@@ -88,7 +88,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         final JdoPersistenceCapableFacet entityFacet = facetHolder
@@ -101,7 +101,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         final JdoPersistenceCapableFacet entityFacet = facetHolder
@@ -114,7 +114,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         final JdoPersistenceCapableFacet entityFacet = facetHolder
@@ -127,7 +127,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         final JdoPersistenceCapableFacet entityFacet = facetHolder
@@ -140,7 +140,7 @@ extends AbstractFacetFactoryTest {
         abstract class Customer {
         }
 
-        facetFactory.process(new ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext(Customer.class, facetHolder));
+        facetFactory.process(new ObjectTypeFacetFactory.ProcessObjectTypeContext(Customer.class, facetHolder));
         facetFactory.process(new FacetFactory.ProcessClassContext(Customer.class, methodRemover, facetHolder));
 
         assertNoMethodsRemoved();
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectSpecIdFacetForTableAnnotation.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
similarity index 85%
rename from persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectSpecIdFacetForTableAnnotation.java
rename to persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
index 291a403..3dba838 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectSpecIdFacetForTableAnnotation.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/domainobject/objectspecid/ObjectTypeFacetForTableAnnotation.java
@@ -22,14 +22,14 @@ import java.util.Locale;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacetAbstract;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacetAbstract;
 import org.apache.isis.persistence.jpa.metamodel.object.table.JpaTableFacetAnnotation;
 
-public class ObjectSpecIdFacetForTableAnnotation
-extends ObjectSpecIdFacetAbstract {
+public class ObjectTypeFacetForTableAnnotation
+extends ObjectTypeFacetAbstract {
 
-    public static ObjectSpecIdFacet create(
+    public static ObjectTypeFacet create(
             final JpaTableFacetAnnotation tableFacet,
             final FacetHolder holder) {
 
@@ -41,10 +41,10 @@ extends ObjectSpecIdFacetAbstract {
             return null;
         }
         final String objectType = schema.toLowerCase(Locale.ROOT) + "." + tableFacet.getTable();
-        return new ObjectSpecIdFacetForTableAnnotation(objectType, holder);
+        return new ObjectTypeFacetForTableAnnotation(objectType, holder);
     }
 
-    private ObjectSpecIdFacetForTableAnnotation(
+    private ObjectTypeFacetForTableAnnotation(
             final String value,
             final FacetHolder holder) {
         super(value, holder);
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java
index a314e11..ccf18a6 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/object/table/JpaTableAnnotationFacetFactory.java
@@ -26,25 +26,25 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.ObjectSpecIdFacetFactory;
+import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-import org.apache.isis.persistence.jpa.metamodel.object.domainobject.objectspecid.ObjectSpecIdFacetForTableAnnotation;
+import org.apache.isis.persistence.jpa.metamodel.object.domainobject.objectspecid.ObjectTypeFacetForTableAnnotation;
 
 import lombok.val;
 
 /**
- * Implements {@link ObjectSpecIdFacetFactory} only because is a prereq of {@link DomainObjectAnnotationFacetFactory}.
+ * Implements {@link ObjectTypeFacetFactory} only because is a prereq of {@link DomainObjectAnnotationFacetFactory}.
  */
 public class JpaTableAnnotationFacetFactory
 extends FacetFactoryAbstract
-implements ObjectSpecIdFacetFactory {
+implements ObjectTypeFacetFactory {
 
     public JpaTableAnnotationFacetFactory() {
         super(FeatureType.OBJECTS_ONLY);
     }
 
     @Override
-    public void process(ObjectSpecIdFacetFactory.ProcessObjectSpecIdContext processClassContext) {
+    public void process(ObjectTypeFacetFactory.ProcessObjectTypeContext processClassContext) {
         final Class<?> cls = processClassContext.getCls();
 
         final Table annotation = Annotations.getAnnotation(cls, Table.class);
@@ -68,7 +68,7 @@ implements ObjectSpecIdFacetFactory {
                 annotationTableAttribute,
                 facetHolder);
         FacetUtil.addFacet(jdoPersistenceCapableFacet);
-        FacetUtil.addFacet(ObjectSpecIdFacetForTableAnnotation.create(jdoPersistenceCapableFacet, facetHolder));
+        FacetUtil.addFacet(ObjectTypeFacetForTableAnnotation.create(jdoPersistenceCapableFacet, facetHolder));
 
         return;
     }
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
index aa577ea..bd5deb7 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
@@ -36,7 +36,7 @@ import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
 import org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet;
 import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
-import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
+import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectTypeFacet;
 import org.apache.isis.core.metamodel.services.ServiceUtil;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
@@ -761,7 +761,7 @@ class Generation {
     }
 
     static String objectTypeFor(final ObjectSpecification objectSpec) {
-        return objectSpec.getFacet(ObjectSpecIdFacet.class).value();
+        return objectSpec.getFacet(ObjectTypeFacet.class).value();
     }
 
     static StringProperty stringProperty() {