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/06/22 08:40:34 UTC

[isis] branch master updated: ISIS-2742: remove some utilities from 'Annotations'

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 5afdd20  ISIS-2742: remove some utilities from 'Annotations'
5afdd20 is described below

commit 5afdd20c9af9e49b68c6967c150b1ec2a79e58e0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jun 22 10:40:22 2021 +0200

    ISIS-2742: remove some utilities from 'Annotations'
---
 .../ViewModelSemanticCheckingFacetFactory.java     |  5 +--
 .../annotation/FacetsFacetAnnotationFactory.java   |  3 +-
 .../RemoveAnnotatedMethodsFacetFactory.java        |  7 ++--
 .../RegExFacetForPatternAnnotationOnParameter.java |  3 +-
 .../RegExFacetForPatternAnnotationOnProperty.java  |  3 +-
 .../regex/RegExFacetForPropertyAnnotation.java     |  3 +-
 .../jdo/metamodel/JdoProgrammingModel.java         |  4 +-
 .../jdo/metamodel/beans/JdoBeanTypeClassifier.java |  3 +-
 ...JdoDatastoreIdentityAnnotationFacetFactory.java | 17 ++++----
 .../JdoDatastoreIdentityFacetAbstract.java         |  6 +--
 .../JdoDatastoreIdentityFacetAnnotation.java       | 20 ++++++++-
 .../JdoDatastoreIdentityFacetImpl.java             | 32 ---------------
 .../JdoDiscriminatorAnnotationFacetFactory.java    |  5 +--
 .../query/JdoQueryAnnotationFacetFactory.java      |  5 +--
 ...ferredFromJdoColumnAnnotationFacetFactory.java} |  4 +-
 ...vedFromJdoColumnAnnotationFacetFactoryTest.java |  4 +-
 .../table/JpaTableAnnotationFacetFactory.java      |  3 +-
 .../applib/modules/ModuleWithFixturesService.java  | 47 +++++++++++++---------
 18 files changed, 77 insertions(+), 97 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
index 0b65253..b5e4fb7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ViewModelSemanticCheckingFacetFactory.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 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.specloader.validator.ValidationFailure;
 
@@ -54,8 +53,8 @@ extends FacetFactoryAbstract {
         val cls = processClassContext.getCls();
         val facetHolder = processClassContext.getFacetHolder();
 
-        final DomainObjectLayout domainObjectLayout = Annotations.getAnnotation(cls, DomainObjectLayout.class);
-        final DomainObject domainObject = Annotations.getAnnotation(cls, DomainObject.class);
+        final DomainObjectLayout domainObjectLayout = processClassContext.synthesizeOnType(DomainObjectLayout.class).orElse(null);
+        final DomainObject domainObject = processClassContext.synthesizeOnType(DomainObject.class).orElse(null);
         final boolean implementsViewModel = org.apache.isis.applib.ViewModel.class.isAssignableFrom(cls);
         final boolean implementsRecreatableDomainObject = org.apache.isis.applib.RecreatableDomainObject.class.isAssignableFrom(cls);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/facets/annotation/FacetsFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/facets/annotation/FacetsFacetAnnotationFactory.java
index 61006c1..04ecfa4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/facets/annotation/FacetsFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/facets/annotation/FacetsFacetAnnotationFactory.java
@@ -28,7 +28,6 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 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.object.facets.FacetsFacet;
 
@@ -41,7 +40,7 @@ public class FacetsFacetAnnotationFactory extends FacetFactoryAbstract {
 
     @Override
     public void process(final ProcessClassContext processClassContaxt) {
-        final Facets annotation = Annotations.getAnnotation(processClassContaxt.getCls(), Facets.class);
+        final Facets annotation = processClassContaxt.synthesizeOnType(Facets.class).orElse(null);
         FacetUtil.addFacetIfPresent(create(annotation, processClassContaxt.getFacetHolder()));
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/annotation/RemoveAnnotatedMethodsFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/annotation/RemoveAnnotatedMethodsFacetFactory.java
index e780907..3802679 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/annotation/RemoveAnnotatedMethodsFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/ignore/annotation/RemoveAnnotatedMethodsFacetFactory.java
@@ -31,11 +31,11 @@ import javax.inject.Inject;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.commons.internal.reflection._Reflect;
 import org.apache.isis.core.metamodel.commons.ClassUtil;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 
 import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
@@ -93,10 +93,9 @@ extends FacetFactoryAbstract {
             final Method method,
             final Class<T> annotationClass) {
 
-        if (!Annotations.isAnnotationPresent(method, annotationClass)) {
-            return;
+        if(_Reflect.getAnnotation(method, annotationClass, true, true)!=null) {
+            methodRemover.removeMethod(method);
         }
-        methodRemover.removeMethod(method);
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForPatternAnnotationOnParameter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForPatternAnnotationOnParameter.java
index e546a93..b20cf9e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForPatternAnnotationOnParameter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/regex/RegExFacetForPatternAnnotationOnParameter.java
@@ -23,7 +23,6 @@ import java.util.Optional;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacetAbstract;
 
@@ -35,7 +34,7 @@ extends RegExFacetAbstract {
             final Class<?> parameterType,
             final FacetHolder holder) {
 
-        if(!Annotations.isString(parameterType)) {
+        if(!parameterType.equals(String.class)) {
             return null;
         }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java
index c93c72a..7691eb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java
@@ -23,7 +23,6 @@ import java.util.Optional;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacetAbstract;
 
@@ -35,7 +34,7 @@ extends RegExFacetAbstract {
             final Class<?> returnType,
             final FacetHolder holder) {
 
-        if (!Annotations.isString(returnType)) {
+        if (!returnType.equals(String.class)) {
             return null;
         }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java
index 7f55b28..2337c53 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java
@@ -24,7 +24,6 @@ import java.util.Optional;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacetAbstract;
 
@@ -36,7 +35,7 @@ extends RegExFacetAbstract {
             final Class<?> returnType,
             final FacetHolder holder) {
 
-        if (!Annotations.isString(returnType)) {
+        if (!returnType.equals(String.class)) {
             return null;
         }
 
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/JdoProgrammingModel.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/JdoProgrammingModel.java
index 04fc81f..b2df933 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/JdoProgrammingModel.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/JdoProgrammingModel.java
@@ -36,7 +36,7 @@ import org.apache.isis.persistence.jdo.metamodel.facets.object.datastoreidentity
 import org.apache.isis.persistence.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetFactory;
 import org.apache.isis.persistence.jdo.metamodel.facets.object.query.JdoQueryAnnotationFacetFactory;
 import org.apache.isis.persistence.jdo.metamodel.facets.object.version.JdoVersionAnnotationFacetFactory;
-import org.apache.isis.persistence.jdo.metamodel.facets.prop.column.BigDecimalDerivedFromJdoColumnAnnotationFacetFactory;
+import org.apache.isis.persistence.jdo.metamodel.facets.prop.column.BigDecimalInferredFromJdoColumnAnnotationFacetFactory;
 import org.apache.isis.persistence.jdo.metamodel.facets.prop.column.MandatoryFromJdoColumnAnnotationFacetFactory;
 import org.apache.isis.persistence.jdo.metamodel.facets.prop.column.MaxLengthDerivedFromJdoColumnAnnotationFacetFactory;
 import org.apache.isis.persistence.jdo.metamodel.facets.prop.notpersistent.JdoNotPersistentAnnotationFacetFactory;
@@ -82,7 +82,7 @@ public class JdoProgrammingModel implements MetaModelRefiner {
 
         pm.addFactory(step2, new JdoQueryAnnotationFacetFactory(mmc, jdoFacetContext), Marker.JDO);
 
-        pm.addFactory(step2, new BigDecimalDerivedFromJdoColumnAnnotationFacetFactory(mmc), Marker.JDO);
+        pm.addFactory(step2, new BigDecimalInferredFromJdoColumnAnnotationFacetFactory(mmc), Marker.JDO);
         pm.addFactory(step2, new MaxLengthDerivedFromJdoColumnAnnotationFacetFactory(mmc), Marker.JDO);
         // must appear after JdoPrimaryKeyAnnotationFacetFactory (above)
         // and also MandatoryFacetOnPropertyMandatoryAnnotationFactory
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java
index 8d31c09..f5b5388 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/beans/JdoBeanTypeClassifier.java
@@ -28,7 +28,6 @@ import org.apache.isis.applib.services.metamodel.BeanSort;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.config.beans.IsisBeanTypeClassifier;
 import org.apache.isis.core.config.util.LogicalTypeNameUtil;
-import org.apache.isis.core.metamodel.facets.Annotations;
 
 import static org.apache.isis.commons.internal.reflection._Annotations.findNearestAnnotation;
 
@@ -52,7 +51,7 @@ public class JdoBeanTypeClassifier implements IsisBeanTypeClassifier {
             // Whether objects of this type can only be embedded,
             // hence have no ID that binds them to the persistence layer
             final boolean embeddedOnly = Boolean.valueOf(embeddedOnlyAttribute)
-                    || Annotations.getAnnotation(type, EmbeddedOnly.class)!=null;
+                    || findNearestAnnotation(type, EmbeddedOnly.class).isPresent();
             if(embeddedOnly) {
                 return null; // don't categorize as entity ... fall through in the caller's logic
             }
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java
index ba9cf6f..e80bf28 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java
@@ -21,15 +21,15 @@ package org.apache.isis.persistence.jdo.metamodel.facets.object.datastoreidentit
 
 import javax.inject.Inject;
 import javax.jdo.annotations.DatastoreIdentity;
-import javax.jdo.annotations.IdGeneratorStrategy;
 
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 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.persistence.jdo.provider.entities.JdoFacetContext;
 
+import lombok.val;
+
 public class JdoDatastoreIdentityAnnotationFacetFactory
 extends FacetFactoryAbstract {
 
@@ -52,15 +52,12 @@ extends FacetFactoryAbstract {
             return;
         }
 
-        final DatastoreIdentity annotation = Annotations.getAnnotation(cls, DatastoreIdentity.class);
-        if (annotation == null) {
-            return;
-        }
-        IdGeneratorStrategy strategyAttribute = annotation.strategy();
+        val datastoreIdentityIfAny = processClassContext.synthesizeOnType(DatastoreIdentity.class);
+
+        FacetUtil.addFacetIfPresent(
+                JdoDatastoreIdentityFacetAnnotation
+                .create(datastoreIdentityIfAny, processClassContext.getFacetHolder()));
 
-        FacetUtil.addFacet(new JdoDatastoreIdentityFacetAnnotation(
-                strategyAttribute, processClassContext.getFacetHolder()));
-        return;
     }
 
 
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAbstract.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAbstract.java
index 6431a95..86eed4b 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAbstract.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAbstract.java
@@ -27,19 +27,19 @@ import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet;
 
-
 public abstract class JdoDatastoreIdentityFacetAbstract
 extends FacetAbstract
 implements JdoDatastoreIdentityFacet {
 
-
     private static final Class<? extends Facet> type() {
         return JdoDatastoreIdentityFacet.class;
     }
 
     private final IdGeneratorStrategy strategy;
 
-    public JdoDatastoreIdentityFacetAbstract(IdGeneratorStrategy strategy, FacetHolder facetHolder) {
+    protected JdoDatastoreIdentityFacetAbstract(
+            final IdGeneratorStrategy strategy,
+            final FacetHolder facetHolder) {
         super(JdoDatastoreIdentityFacetAbstract.type(), facetHolder);
         this.strategy = strategy;
     }
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAnnotation.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAnnotation.java
index d661afd..798948d 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAnnotation.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetAnnotation.java
@@ -18,14 +18,30 @@
  */
 package org.apache.isis.persistence.jdo.metamodel.facets.object.datastoreidentity;
 
+import java.util.Optional;
+
+import javax.jdo.annotations.DatastoreIdentity;
 import javax.jdo.annotations.IdGeneratorStrategy;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.persistence.jdo.provider.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet;
+
 
+public class JdoDatastoreIdentityFacetAnnotation
+extends JdoDatastoreIdentityFacetAbstract {
 
-public class JdoDatastoreIdentityFacetAnnotation extends JdoDatastoreIdentityFacetImpl {
+    public static Optional<JdoDatastoreIdentityFacet> create(
+            final Optional<DatastoreIdentity> datastoreIdentityIfAny,
+            final FacetHolder facetHolder) {
+
+        return datastoreIdentityIfAny
+                .map(DatastoreIdentity::strategy)
+                .map(strategy->new JdoDatastoreIdentityFacetAnnotation(strategy, facetHolder));
+    }
 
-    public JdoDatastoreIdentityFacetAnnotation(IdGeneratorStrategy strategy, FacetHolder facetHolder) {
+    private JdoDatastoreIdentityFacetAnnotation(
+            final IdGeneratorStrategy strategy,
+            final FacetHolder facetHolder) {
         super(strategy, facetHolder);
     }
 
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetImpl.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetImpl.java
deleted file mode 100644
index 2fb2af7..0000000
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityFacetImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  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.persistence.jdo.metamodel.facets.object.datastoreidentity;
-
-import javax.jdo.annotations.IdGeneratorStrategy;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-
-public class JdoDatastoreIdentityFacetImpl extends JdoDatastoreIdentityFacetAbstract {
-
-    public JdoDatastoreIdentityFacetImpl(IdGeneratorStrategy strategy, FacetHolder facetHolder) {
-        super(strategy, facetHolder);
-    }
-
-}
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 d786feb..4f1d175 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,7 +28,6 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 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.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
@@ -64,7 +63,7 @@ implements ObjectTypeFacetFactory {
             return;
         }
 
-        final Discriminator annotation = Annotations.getAnnotation(cls, Discriminator.class);
+        final Discriminator annotation = processClassContext.synthesizeOnType(Discriminator.class).orElse(null);
         if (annotation == null) {
             return;
         }
@@ -101,7 +100,7 @@ implements ObjectTypeFacetFactory {
             return;
         }
 
-        final Discriminator annotation = Annotations.getAnnotation(processClassContext.getCls(), Discriminator.class);
+        final Discriminator annotation = processClassContext.synthesizeOnType(Discriminator.class).orElse(null);
         if (annotation == null) {
             return;
         }
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java
index 8d76a6a..1715b6d 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java
@@ -29,7 +29,6 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
-import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.persistence.jdo.provider.entities.JdoFacetContext;
@@ -58,7 +57,7 @@ implements MetaModelRefiner {
             return;
         }
 
-        final Queries namedQueriesAnnotation = Annotations.getAnnotation(cls, Queries.class);
+        final Queries namedQueriesAnnotation = processClassContext.synthesizeOnType(Queries.class).orElse(null);
         final FacetHolder facetHolder = processClassContext.getFacetHolder();
 
         if (namedQueriesAnnotation != null) {
@@ -67,7 +66,7 @@ implements MetaModelRefiner {
             return;
         }
 
-        final Query namedQueryAnnotation = Annotations.getAnnotation(cls, Query.class);
+        final Query namedQueryAnnotation = processClassContext.synthesizeOnType(Query.class).orElse(null);
         if (namedQueryAnnotation != null) {
             addFacet(
                     new JdoQueryFacetAnnotation(namedQueryAnnotation, facetHolder));
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java
similarity index 97%
rename from persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
rename to persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java
index 7fc7942..7c6aa6b 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java
@@ -41,7 +41,7 @@ import org.apache.isis.persistence.jdo.provider.metamodel.facets.prop.notpersist
 import lombok.val;
 
 
-public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactory
+public class BigDecimalInferredFromJdoColumnAnnotationFacetFactory
 extends FacetFactoryAbstract
 implements MetaModelRefiner {
 
@@ -49,7 +49,7 @@ implements MetaModelRefiner {
     private static final int DEFAULT_SCALE = BigDecimalValueSemanticsProvider.DEFAULT_SCALE;
 
     @Inject
-    public BigDecimalDerivedFromJdoColumnAnnotationFacetFactory(final MetaModelContext mmc) {
+    public BigDecimalInferredFromJdoColumnAnnotationFacetFactory(final MetaModelContext mmc) {
         super(mmc, FeatureType.PROPERTIES_ONLY);
     }
 
diff --git a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
index cc53ec2..0bee301 100644
--- a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
+++ b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
@@ -35,14 +35,14 @@ import lombok.val;
 public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest
 extends AbstractFacetFactoryTest {
 
-    private BigDecimalDerivedFromJdoColumnAnnotationFacetFactory facetFactory;
+    private BigDecimalInferredFromJdoColumnAnnotationFacetFactory facetFactory;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
 
         val mmc = MetaModelContext_forTesting.buildDefault();
-        facetFactory = new BigDecimalDerivedFromJdoColumnAnnotationFacetFactory(mmc);
+        facetFactory = new BigDecimalInferredFromJdoColumnAnnotationFacetFactory(mmc);
     }
 
     @Override
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 c035662..e591c15 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,7 +26,6 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 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.ObjectTypeFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.domainobject.DomainObjectAnnotationFacetFactory;
@@ -50,7 +49,7 @@ implements ObjectTypeFacetFactory {
     public void process(final ObjectTypeFacetFactory.ProcessObjectTypeContext processClassContext) {
         final Class<?> cls = processClassContext.getCls();
 
-        final Table annotation = Annotations.getAnnotation(cls, Table.class);
+        final Table annotation = processClassContext.synthesizeOnType(Table.class).orElse(null);
         if (annotation == null) {
             return;
         }
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java
index 364f5f9..d5bbb05 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/modules/ModuleWithFixturesService.java
@@ -18,15 +18,19 @@
  */
 package org.apache.isis.testing.fixtures.applib.modules;
 
-import lombok.Data;
-import lombok.extern.log4j.Log4j2;
-import lombok.val;
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.core.metamodel.facets.Annotations;
-import org.apache.isis.subdomains.spring.applib.service.BeanDescriptor;
-import org.apache.isis.subdomains.spring.applib.service.ContextBeans;
-import org.apache.isis.subdomains.spring.applib.service.SpringBeansService;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import javax.annotation.Priority;
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Configuration;
@@ -35,11 +39,16 @@ import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Priority;
-import javax.inject.Inject;
-import javax.inject.Named;
-import java.util.*;
-import java.util.stream.Collectors;
+import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.commons.internal.reflection._Reflect;
+import org.apache.isis.subdomains.spring.applib.service.BeanDescriptor;
+import org.apache.isis.subdomains.spring.applib.service.ContextBeans;
+import org.apache.isis.subdomains.spring.applib.service.SpringBeansService;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+import lombok.Data;
+import lombok.val;
+import lombok.extern.log4j.Log4j2;
 
 /**
  * @since 2.x {@index}
@@ -92,7 +101,7 @@ public class ModuleWithFixturesService {
         return sequenced(modules);
     }
 
-    static List<ModuleWithFixturesDescriptor> modulesWithin(Map<String, ContextBeans> beans) {
+    static List<ModuleWithFixturesDescriptor> modulesWithin(final Map<String, ContextBeans> beans) {
         final List<ModuleWithFixturesDescriptor> descriptors = new ArrayList<>();
         for (Map.Entry<String, ContextBeans> contextEntry : beans.entrySet()) {
             final String contextId = contextEntry.getKey();
@@ -115,7 +124,7 @@ public class ModuleWithFixturesService {
                     final Map<String, ModuleWithFixtures> importedModulesByBeanName = new LinkedHashMap<>();
                     if(annotatedWithConfiguration != null && annotatedWithImport != null) {
 
-                        final Import importAnnot = Annotations.getAnnotation(annotatedWithImport.getClass(), Import.class);
+                        final Import importAnnot = _Reflect.getAnnotation(annotatedWithImport.getClass(), Import.class);
                         if(importAnnot!=null) {
                             final Class<?>[] importedClasses = importAnnot.value();
 
@@ -147,7 +156,7 @@ public class ModuleWithFixturesService {
     }
 
 
-    static List<ModuleWithFixturesDescriptor> sequenced(List<ModuleWithFixturesDescriptor> modules) {
+    static List<ModuleWithFixturesDescriptor> sequenced(final List<ModuleWithFixturesDescriptor> modules) {
         val remaining = new ArrayList<>(modules);
         val sequenced = new ArrayList<ModuleWithFixturesDescriptor>();
 
@@ -169,7 +178,7 @@ public class ModuleWithFixturesService {
         return sequenced;
     }
 
-    static List<String> beanNamesOf(ArrayList<ModuleWithFixturesDescriptor> result) {
+    static List<String> beanNamesOf(final ArrayList<ModuleWithFixturesDescriptor> result) {
         return result.stream().map(ModuleWithFixturesDescriptor::getBeanName).collect(Collectors.toList());
     }
 
@@ -193,7 +202,7 @@ public class ModuleWithFixturesService {
     }
 
     @EventListener(ContextRefreshedEvent.class)
-    public void onContextRefreshed(ContextRefreshedEvent event) {
+    public void onContextRefreshed(final ContextRefreshedEvent event) {
         log.info("onContextRefreshed");
         for (final ModuleWithFixturesDescriptor descriptor : modules()) {
             log.info(descriptor);