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 2022/05/24 05:04:21 UTC

[isis] branch master updated: ISIS-3063: adds @Named support on interfaces and abstract types

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 b1a44a0f62 ISIS-3063: adds @Named support on interfaces and abstract types
b1a44a0f62 is described below

commit b1a44a0f62656e764c77283e5a7b292408015f3c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 24 07:04:15 2022 +0200

    ISIS-3063: adds @Named support on interfaces and abstract types
---
 ...LogicalTypeFacetForAnnotationFacetFactory.java} | 20 ++++++---
 .../LogicalTypeFacetForNamedAnnotation.java        | 52 ++++++++++++++++++++++
 .../object/logicaltype/LogicalTypeFacet.java       | 10 ++---
 .../dflt/ProgrammingModelFacetsJava11.java         |  4 +-
 .../metamodel/specloader/SpecificationLoader.java  |  5 ++-
 .../demoapp/dom/_infra/values/ValueHolder.java     |  4 +-
 .../domain/objects/other/mixins/CountHolder.java   |  4 +-
 .../types/isis/blobs/holder/IsisBlobHolder.java    |  5 ++-
 .../types/isis/clobs/holder/IsisClobHolder.java    |  5 ++-
 .../holder/IsisLocalResourcePathHolder.java        |  5 ++-
 .../isis/markups/holder/IsisMarkupHolder.java      |  5 ++-
 .../isis/passwords/holder/IsisPasswordHolder.java  |  5 ++-
 .../asciidocs/holder/IsisAsciiDocHolder.java       |  5 ++-
 .../cal/holder/IsisCalendarEventHolder.java        |  5 ++-
 .../markdowns/holder/IsisMarkdownHolder.java       |  5 ++-
 .../images/holder/JavaAwtBufferedImageHolder.java  |  4 +-
 .../booleans/holder/WrapperBooleanHolder.java      |  4 +-
 .../javalang/bytes/holder/WrapperByteHolder.java   |  4 +-
 .../characters/holder/WrapperCharacterHolder.java  |  4 +-
 .../doubles/holder/WrapperDoubleHolder.java        |  4 +-
 .../javalang/floats/holder/WrapperFloatHolder.java |  4 +-
 .../integers/holder/WrapperIntegerHolder.java      |  4 +-
 .../javalang/longs/holder/WrapperLongHolder.java   |  4 +-
 .../javalang/shorts/holder/WrapperShortHolder.java |  4 +-
 .../strings/holder/JavaLangStringHolder.java       |  4 +-
 .../holder/JavaMathBigDecimalHolder.java           |  4 +-
 .../holder/JavaMathBigIntegerHolder.java           |  4 +-
 .../javanet/urls/holder/JavaNetUrlHolder.java      |  4 +-
 .../javasqldate/holder/JavaSqlDateHolder.java      |  4 +-
 .../holder/JavaSqlTimestampHolder.java             |  4 +-
 .../holder/JavaTimeLocalDateHolder.java            |  4 +-
 .../holder/JavaTimeLocalDateTimeHolder.java        |  4 +-
 .../holder/JavaTimeLocalTimeHolder.java            |  4 +-
 .../holder/JavaTimeOffsetDateTimeHolder.java       |  4 +-
 .../holder/JavaTimeOffsetTimeHolder.java           |  4 +-
 .../holder/JavaTimeZonedDateTimeHolder.java        |  4 +-
 .../javautildate/holder/JavaUtilDateHolder.java    |  4 +-
 .../javautil/uuids/holder/JavaUtilUuidHolder.java  |  4 +-
 .../jodadatetime/holder/JodaDateTimeHolder.java    |  4 +-
 .../jodalocaldate/holder/JodaLocalDateHolder.java  |  4 +-
 .../holder/JodaLocalDateTimeHolder.java            |  4 +-
 .../jodalocaltime/holder/JodaLocalTimeHolder.java  |  4 +-
 .../booleans/holder/PrimitiveBooleanHolder.java    |  5 ++-
 .../bytes/holder/PrimitiveByteHolder.java          |  4 +-
 .../chars/holder/PrimitiveCharHolder.java          |  4 +-
 .../doubles/holder/PrimitiveDoubleHolder.java      |  4 +-
 .../floats/holder/PrimitiveFloatHolder.java        |  4 +-
 .../primitive/ints/holder/PrimitiveIntHolder.java  |  4 +-
 .../longs/holder/PrimitiveLongHolder.java          |  4 +-
 .../shorts/holder/PrimitiveShortHolder.java        |  4 +-
 .../testdomain/model/good/ProperInterface.java     |  5 ++-
 .../testdomain/model/good/ProperInterface2.java    |  5 ++-
 52 files changed, 180 insertions(+), 110 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForAnnotationFacetFactory.java
similarity index 77%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForAnnotationFacetFactory.java
index 3f8929172a..150f630006 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForAnnotationFacetFactory.java
@@ -19,6 +19,7 @@
 package org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 
 import org.apache.isis.applib.annotation.LogicalTypeName;
 import org.apache.isis.core.metamodel.commons.ClassExtensions;
@@ -30,11 +31,11 @@ import org.apache.isis.core.metamodel.methods.MethodByClassMap;
 
 import lombok.val;
 
-public class LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory
+public class LogicalTypeFacetForAnnotationFacetFactory
 extends FacetFactoryAbstract {
 
     @Inject
-    public LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory(
+    public LogicalTypeFacetForAnnotationFacetFactory(
             final MetaModelContext mmc,
             final MethodByClassMap postConstructMethodsCache) {
         super(mmc, FeatureType.OBJECTS_ONLY);
@@ -42,20 +43,25 @@ extends FacetFactoryAbstract {
 
     @Override
     public void process(final ProcessClassContext processClassContext) {
-        val logicalTypeNameIfAny = processClassContext.synthesizeOnType(LogicalTypeName.class);
+
         val cls = processClassContext.getCls();
+        val facetHolder = processClassContext.getFacetHolder();
 
+        // deprecated annotation @LogicalTypeName
         if(cls.isInterface()
                 || ClassExtensions.isAbstract(cls)) {
-
-            val facetHolder = processClassContext.getFacetHolder();
-
+            val logicalTypeNameIfAny = processClassContext.synthesizeOnType(LogicalTypeName.class);
             FacetUtil.addFacetIfPresent(
                     LogicalTypeFacetForLogicalTypeNameAnnotation
                     .create(logicalTypeNameIfAny, cls, facetHolder));
-
         }
 
+        val namedIfAny = processClassContext.synthesizeOnType(Named.class);
+
+        FacetUtil.addFacetIfPresent(
+                LogicalTypeFacetForNamedAnnotation
+                .create(namedIfAny, cls, facetHolder));
+
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForNamedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForNamedAnnotation.java
new file mode 100644
index 0000000000..b72c99a315
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/logicaltype/LogicalTypeFacetForNamedAnnotation.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype;
+
+import java.util.Optional;
+
+import javax.inject.Named;
+
+import org.apache.isis.applib.id.LogicalType;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
+import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacetAbstract;
+
+public class LogicalTypeFacetForNamedAnnotation
+extends LogicalTypeFacetAbstract {
+
+    public static Optional<LogicalTypeFacet> create(
+            final Optional<Named> namedIfAny,
+            final Class<?> correspondingClass,
+            final FacetHolder holder) {
+
+        return namedIfAny
+                .map(annot->annot.value())
+                .filter(_Strings::isNotEmpty)
+                .map(logicalTypeName -> new LogicalTypeFacetForNamedAnnotation(
+                        LogicalType.eager(correspondingClass, logicalTypeName),
+                        holder));
+    }
+
+    private LogicalTypeFacetForNamedAnnotation(
+            final LogicalType logicalType,
+            final FacetHolder holder) {
+        super(logicalType, holder, Precedence.DEFAULT);
+    }
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java
index 3c615f49c5..e5b7f0827b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeFacet.java
@@ -18,15 +18,15 @@
  */
 package org.apache.isis.core.metamodel.facets.object.logicaltype;
 
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 
 /**
- * Corresponds to the value of {@link DomainObject#logicalTypeName()} or
- * {@link LogicalTypeName#value()}, that specifies the <i>logical type name</i>
- * of a domain object.
+ * Corresponds to the value of {@link Named#value()},
+ * that specifies the <i>logical type name</i>
+ * of a domain object or interface or abstract type.
  * <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.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index a8dc92b7eb..e0fb1088af 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -45,7 +45,7 @@ import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.
 import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.choices.enums.ChoicesFacetFromEnumFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.domainobject.logicaltype.LogicalTypeFacetForAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.DomainObjectLayoutFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotationFactory;
 import org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacetFactory;
@@ -191,7 +191,7 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ViewModelFacetFactory(mmc, postConstructMethodsCache));
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new JaxbFacetFactory(mmc));
 
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new LogicalTypeFacetForLogicalTypeNameAnnotationFacetFactory(mmc, postConstructMethodsCache));
+        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new LogicalTypeFacetForAnnotationFacetFactory(mmc, postConstructMethodsCache));
 
         // must come after RecreatableObjectFacetFactory
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new DomainObjectAnnotationFacetFactory(mmc, postConstructMethodsCache));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index fe2f4c7e9e..78a784d09c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -21,10 +21,11 @@ package org.apache.isis.core.metamodel.specloader;
 import java.util.Optional;
 import java.util.function.Consumer;
 
+import javax.inject.Named;
+
 import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.Identifier;
-import org.apache.isis.applib.annotation.LogicalTypeName;
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.commons.collections.Can;
@@ -150,7 +151,7 @@ public interface SpecificationLoader {
 
     /**
      * The lookup may also fail (result with null), when there is no concrete or abstract resolvable type,
-     * that matches given {@code logicalTypeName}. Eg. when using {@link LogicalTypeName} on an interface,
+     * that matches given {@code logicalTypeName}. Eg. when using {@link Named} on an interface,
      * while overriding with a different logical-type-name on the concrete or abstract type.
      */
     @Nullable
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java
index 78341ec0b4..dfc653ed06 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/values/ValueHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom._infra.values;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.ValueHolder")
+@Named("demo.ValueHolder")
 public interface ValueHolder<T> {
 
     T value();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder.java
index 08df39ec6e..19eac8b43d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/other/mixins/CountHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.domain.objects.other.mixins;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.CountHolder")
+@Named("demo.CountHolder")
 //tag::class[]
 public interface CountHolder {
     int getCount();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java
index ede24fa96a..5e530fe2f8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/blobs/holder/IsisBlobHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isis.blobs.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.value.Blob;
 
-@LogicalTypeName("demo.IsisBlobHolder")
+@Named("demo.IsisBlobHolder")
 //tag::class[]
 public interface IsisBlobHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java
index f9340a8f97..07051fde2b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/clobs/holder/IsisClobHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isis.clobs.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.value.Clob;
 
-@LogicalTypeName("demo.IsisClobHolder")
+@Named("demo.IsisClobHolder")
 //tag::class[]
 public interface IsisClobHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java
index cece8207d4..292cae0e06 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/localresourcepaths/holder/IsisLocalResourcePathHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isis.localresourcepaths.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.value.LocalResourcePath;
 
-@LogicalTypeName("demo.IsisLocalResourcePathHolder")
+@Named("demo.IsisLocalResourcePathHolder")
 //tag::class[]
 public interface IsisLocalResourcePathHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder.java
index b1b145665c..f038114da6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/markups/holder/IsisMarkupHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isis.markups.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.value.Markup;
 
-@LogicalTypeName("demo.IsisMarkupHolder")
+@Named("demo.IsisMarkupHolder")
 //tag::class[]
 public interface IsisMarkupHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder.java
index 37d41cc6ed..f4c6320d4e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isis/passwords/holder/IsisPasswordHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isis.passwords.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.value.Password;
 
-@LogicalTypeName("demo.IsisPasswordHolder")
+@Named("demo.IsisPasswordHolder")
 //tag::class[]
 public interface IsisPasswordHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder.java
index 2b6407a52f..54b926a2fa 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/asciidocs/holder/IsisAsciiDocHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isisext.asciidocs.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.valuetypes.asciidoc.applib.value.AsciiDoc;
 
-@LogicalTypeName("demo.IsisAsciiDocHolder")
+@Named("demo.IsisAsciiDocHolder")
 //tag::class[]
 public interface IsisAsciiDocHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/holder/IsisCalendarEventHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/holder/IsisCalendarEventHolder.java
index 8d7c567a80..c32b7284b3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/holder/IsisCalendarEventHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/holder/IsisCalendarEventHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isisext.cal.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.extensions.fullcalendar.applib.value.CalendarEvent;
 
-@LogicalTypeName("demo.IsisCalendarEventHolder")
+@Named("demo.IsisCalendarEventHolder")
 //tag::class[]
 public interface IsisCalendarEventHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java
index 04415638a4..5b9b2dcafd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/markdowns/holder/IsisMarkdownHolder.java
@@ -18,10 +18,11 @@
  */
 package demoapp.dom.types.isisext.markdowns.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.valuetypes.markdown.applib.value.Markdown;
 
-@LogicalTypeName("demo.IsisMarkdownHolder")
+@Named("demo.IsisMarkdownHolder")
 //tag::class[]
 public interface IsisMarkdownHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder.java
index e3c1a06aca..fabd3adbc0 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javaawt/images/holder/JavaAwtBufferedImageHolder.java
@@ -20,9 +20,9 @@ package demoapp.dom.types.javaawt.images.holder;
 
 import java.awt.image.BufferedImage;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaAwtBufferedImageHolder")
+@Named("demo.JavaAwtBufferedImageHolder")
 //tag::class[]
 public interface JavaAwtBufferedImageHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder.java
index b74c13635a..f5bb57d4e6 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/booleans/holder/WrapperBooleanHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.booleans.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperBooleanHolder")
+@Named("demo.WrapperBooleanHolder")
 //tag::class[]
 public interface WrapperBooleanHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder.java
index c8fc00cba4..e742108e61 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/bytes/holder/WrapperByteHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.bytes.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperByteHolder")
+@Named("demo.WrapperByteHolder")
 //tag::class[]
 public interface WrapperByteHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder.java
index 6011e7c76b..af7d920df3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/characters/holder/WrapperCharacterHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.characters.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperCharacterHolder")
+@Named("demo.WrapperCharacterHolder")
 //tag::class[]
 public interface WrapperCharacterHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder.java
index 53f4a37fbd..8ba13b4e56 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/doubles/holder/WrapperDoubleHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.doubles.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperDoubleHolder")
+@Named("demo.WrapperDoubleHolder")
 //tag::class[]
 public interface WrapperDoubleHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder.java
index df2734fb1b..14f1c1979a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/floats/holder/WrapperFloatHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.floats.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperFloatHolder")
+@Named("demo.WrapperFloatHolder")
 //tag::class[]
 public interface WrapperFloatHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder.java
index 85473ff873..ef121655ce 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/integers/holder/WrapperIntegerHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.integers.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperIntegerHolder")
+@Named("demo.WrapperIntegerHolder")
 //tag::class[]
 public interface WrapperIntegerHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder.java
index 47255b875e..5ef90747ad 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/longs/holder/WrapperLongHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.longs.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperLongHolder")
+@Named("demo.WrapperLongHolder")
 //tag::class[]
 public interface WrapperLongHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder.java
index 257c0beb7e..793454d4e9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/shorts/holder/WrapperShortHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.shorts.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.WrapperShortHolder")
+@Named("demo.WrapperShortHolder")
 //tag::class[]
 public interface WrapperShortHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder.java
index d5ef0d87b4..9239581fa9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javalang/strings/holder/JavaLangStringHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javalang.strings.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaLangStringHolder")
+@Named("demo.JavaLangStringHolder")
 //tag::class[]
 public interface JavaLangStringHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder.java
index 3675cd5aab..8ce1dcc86b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigdecimals/holder/JavaMathBigDecimalHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javamath.bigdecimals.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaMathBigDecimalHolder")
+@Named("demo.JavaMathBigDecimalHolder")
 //tag::class[]
 public interface JavaMathBigDecimalHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder.java
index fe385f3909..9d077feff9 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javamath/bigintegers/holder/JavaMathBigIntegerHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javamath.bigintegers.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaMathBigIntegerHolder")
+@Named("demo.JavaMathBigIntegerHolder")
 //tag::class[]
 public interface JavaMathBigIntegerHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder.java
index a80b71992f..dc5859cc2e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javanet/urls/holder/JavaNetUrlHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javanet.urls.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaNetUrlHolder")
+@Named("demo.JavaNetUrlHolder")
 //tag::class[]
 public interface JavaNetUrlHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder.java
index 85fee85d71..a03f707b0b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqldate/holder/JavaSqlDateHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javasql.javasqldate.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaSqlDateHolder")
+@Named("demo.JavaSqlDateHolder")
 //tag::class[]
 public interface JavaSqlDateHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder.java
index 0912ee6b12..1f171f3295 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javasql/javasqltimestamp/holder/JavaSqlTimestampHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javasql.javasqltimestamp.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaSqlTimestampHolder")
+@Named("demo.JavaSqlTimestampHolder")
 //tag::class[]
 public interface JavaSqlTimestampHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder.java
index a5de7716a4..eb568c597f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldate/holder/JavaTimeLocalDateHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javatime.javatimelocaldate.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaTimeLocalDateHolder")
+@Named("demo.JavaTimeLocalDateHolder")
 //tag::class[]
 public interface JavaTimeLocalDateHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/holder/JavaTimeLocalDateTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/holder/JavaTimeLocalDateTimeHolder.java
index 31baf745d3..fa44a50dd3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/holder/JavaTimeLocalDateTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaldatetime/holder/JavaTimeLocalDateTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javatime.javatimelocaldatetime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaTimeLocalDateTimeHolder")
+@Named("demo.JavaTimeLocalDateTimeHolder")
 //tag::class[]
 public interface JavaTimeLocalDateTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/holder/JavaTimeLocalTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/holder/JavaTimeLocalTimeHolder.java
index fd922ee0a9..ecef868645 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/holder/JavaTimeLocalTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimelocaltime/holder/JavaTimeLocalTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javatime.javatimelocaltime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaTimeLocalTimeHolder")
+@Named("demo.JavaTimeLocalTimeHolder")
 //tag::class[]
 public interface JavaTimeLocalTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/holder/JavaTimeOffsetDateTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/holder/JavaTimeOffsetDateTimeHolder.java
index 2503ddcc51..10a5e7abb5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/holder/JavaTimeOffsetDateTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsetdatetime/holder/JavaTimeOffsetDateTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javatime.javatimeoffsetdatetime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaTimeOffsetDateTimeHolder")
+@Named("demo.JavaTimeOffsetDateTimeHolder")
 //tag::class[]
 public interface JavaTimeOffsetDateTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/holder/JavaTimeOffsetTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/holder/JavaTimeOffsetTimeHolder.java
index 9ba49ea49c..d8a4f0112f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/holder/JavaTimeOffsetTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimeoffsettime/holder/JavaTimeOffsetTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javatime.javatimeoffsettime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaTimeOffsetTimeHolder")
+@Named("demo.JavaTimeOffsetTimeHolder")
 //tag::class[]
 public interface JavaTimeOffsetTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/holder/JavaTimeZonedDateTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/holder/JavaTimeZonedDateTimeHolder.java
index 6f3fdd4b7d..42ac354f2c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/holder/JavaTimeZonedDateTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javatime/javatimezoneddatetime/holder/JavaTimeZonedDateTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javatime.javatimezoneddatetime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaTimeZonedDateTimeHolder")
+@Named("demo.JavaTimeZonedDateTimeHolder")
 //tag::class[]
 public interface JavaTimeZonedDateTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/holder/JavaUtilDateHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/holder/JavaUtilDateHolder.java
index 6fc2ac322e..f75dbc505a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/holder/JavaUtilDateHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/javautildate/holder/JavaUtilDateHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javautil.javautildate.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaUtilDateHolder")
+@Named("demo.JavaUtilDateHolder")
 //tag::class[]
 public interface JavaUtilDateHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/holder/JavaUtilUuidHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/holder/JavaUtilUuidHolder.java
index feb616bdfa..50e2c9a04a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/holder/JavaUtilUuidHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/javautil/uuids/holder/JavaUtilUuidHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.javautil.uuids.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JavaUtilUuidHolder")
+@Named("demo.JavaUtilUuidHolder")
 //tag::class[]
 public interface JavaUtilUuidHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/holder/JodaDateTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/holder/JodaDateTimeHolder.java
index 549b213b45..8519a71e58 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/holder/JodaDateTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodadatetime/holder/JodaDateTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.jodatime.jodadatetime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JodaDateTimeHolder")
+@Named("demo.JodaDateTimeHolder")
 //tag::class[]
 public interface JodaDateTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/holder/JodaLocalDateHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/holder/JodaLocalDateHolder.java
index bde3c85f1f..4a86031be3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/holder/JodaLocalDateHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldate/holder/JodaLocalDateHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.jodatime.jodalocaldate.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JodaLocalDateHolder")
+@Named("demo.JodaLocalDateHolder")
 //tag::class[]
 public interface JodaLocalDateHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/holder/JodaLocalDateTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/holder/JodaLocalDateTimeHolder.java
index c7741b318e..78dfb413e5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/holder/JodaLocalDateTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaldatetime/holder/JodaLocalDateTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.jodatime.jodalocaldatetime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JodaLocalDateTimeHolder")
+@Named("demo.JodaLocalDateTimeHolder")
 //tag::class[]
 public interface JodaLocalDateTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaltime/holder/JodaLocalTimeHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaltime/holder/JodaLocalTimeHolder.java
index bf3ceda63c..627399006e 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaltime/holder/JodaLocalTimeHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/jodatime/jodalocaltime/holder/JodaLocalTimeHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.jodatime.jodalocaltime.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.JodaLocalTimeHolder")
+@Named("demo.JodaLocalTimeHolder")
 //tag::class[]
 public interface JodaLocalTimeHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java
index 28c9609965..fff8dee8de 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/booleans/holder/PrimitiveBooleanHolder.java
@@ -18,11 +18,12 @@
  */
 package demoapp.dom.types.primitive.booleans.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
-@LogicalTypeName("demo.PrimitiveBooleanHolder")
+@Named("demo.PrimitiveBooleanHolder")
 //tag::class[]
 public interface PrimitiveBooleanHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java
index 04a922cae6..20065a03d7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/bytes/holder/PrimitiveByteHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.bytes.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveByteHolder")
+@Named("demo.PrimitiveByteHolder")
 //tag::class[]
 public interface PrimitiveByteHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder.java
index 692da423f9..64841e76be 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/chars/holder/PrimitiveCharHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.chars.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveCharHolder")
+@Named("demo.PrimitiveCharHolder")
 //tag::class[]
 public interface PrimitiveCharHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java
index 2379b50dfe..7de5894403 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/doubles/holder/PrimitiveDoubleHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.doubles.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveDoubleHolder")
+@Named("demo.PrimitiveDoubleHolder")
 //tag::class[]
 public interface PrimitiveDoubleHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java
index f3a03db281..ee95abcfe8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/floats/holder/PrimitiveFloatHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.floats.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveFloatHolder")
+@Named("demo.PrimitiveFloatHolder")
 //tag::class[]
 public interface PrimitiveFloatHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
index f6aad7795c..475ce72575 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/ints/holder/PrimitiveIntHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.ints.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveIntHolder")
+@Named("demo.PrimitiveIntHolder")
 //tag::class[]
 public interface PrimitiveIntHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
index d295627831..2b04da6ae2 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/longs/holder/PrimitiveLongHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.longs.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveLongHolder")
+@Named("demo.PrimitiveLongHolder")
 //tag::class[]
 public interface PrimitiveLongHolder {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java
index fa3f271175..77fee11203 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/primitive/shorts/holder/PrimitiveShortHolder.java
@@ -18,9 +18,9 @@
  */
 package demoapp.dom.types.primitive.shorts.holder;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
 
-@LogicalTypeName("demo.PrimitiveShortHolder")
+@Named("demo.PrimitiveShortHolder")
 //tag::class[]
 public interface PrimitiveShortHolder {
 
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface.java
index 6e7ebc45cd..e80d14b2b7 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface.java
@@ -18,10 +18,11 @@
  */
 package org.apache.isis.testdomain.model.good;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.annotation.Property;
 
-@LogicalTypeName("isis.testdomain.ProperInterface")
+@Named("isis.testdomain.ProperInterface")
 public interface ProperInterface {
 
     // -- read/write exemplar
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface2.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface2.java
index 5d15fd5ce6..d9d03bf0c5 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface2.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperInterface2.java
@@ -18,10 +18,11 @@
  */
 package org.apache.isis.testdomain.model.good;
 
-import org.apache.isis.applib.annotation.LogicalTypeName;
+import javax.inject.Named;
+
 import org.apache.isis.applib.annotation.Property;
 
-@LogicalTypeName("isis.testdomain.ProperInterface2")
+@Named("isis.testdomain.ProperInterface2")
 public interface ProperInterface2
 extends ProperInterface {