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/02/24 12:04:22 UTC

[isis] branch master updated: ISIS-2963: further unify annot. utility usages

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 c7351a3  ISIS-2963: further unify annot. utility usages
c7351a3 is described below

commit c7351a3e393bda6dbe3a214e0cc82230f6f25e8d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Feb 24 13:02:50 2022 +0100

    ISIS-2963: further unify annot. utility usages
    
    - also fix up associated java-doc
---
 .../commons/internal/reflection/_Annotations.java  | 119 +++++++++++----------
 .../internal/reflection/AnnotationsTest.java       |   4 +-
 .../isis/core/metamodel/facets/FacetFactory.java   |   6 +-
 .../NavigableParentAnnotationFacetFactory.java     |   2 +-
 .../annotation/TitleFacetViaTitleAnnotation.java   |   2 +-
 .../facets/object/value/ValueFacetAbstract.java    |   2 +-
 ...tionEnforcesMetamodelContributionValidator.java |   4 +-
 .../isis/core/metamodel/methods/MethodFinder.java  |   4 +-
 .../TweakDomainEventsForMixinPostProcessor.java    |   4 +-
 .../specloader/specimpl/ObjectActionDefault.java   |   4 +-
 .../specloader/specimpl/ObjectActionMixedIn.java   |   2 +-
 .../specimpl/OneToManyAssociationDefault.java      |   4 +-
 .../specimpl/OneToManyAssociationMixedIn.java      |   2 +-
 .../specimpl/OneToOneAssociationDefault.java       |   4 +-
 .../specimpl/OneToOneAssociationMixedIn.java       |   2 +-
 .../Annotations_getAnnotations_on_Class_Test.java  |   6 +-
 .../Annotations_getAnnotations_on_Field_Test.java  |  16 +--
 .../Annotations_getAnnotations_on_Method_Test.java |  14 +--
 ...notations_getAnnotations_on_Parameter_Test.java |  14 +--
 .../domainmodel/AnnotationSyntesizerTest.java      |   2 +-
 20 files changed, 113 insertions(+), 104 deletions(-)

diff --git a/commons/src/main/java/org/apache/isis/commons/internal/reflection/_Annotations.java b/commons/src/main/java/org/apache/isis/commons/internal/reflection/_Annotations.java
index 9139726..e7b6eca 100644
--- a/commons/src/main/java/org/apache/isis/commons/internal/reflection/_Annotations.java
+++ b/commons/src/main/java/org/apache/isis/commons/internal/reflection/_Annotations.java
@@ -23,10 +23,10 @@ import java.lang.annotation.ElementType;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Target;
 import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.Optional;
 
-import org.springframework.core.annotation.MergedAnnotation;
 import org.springframework.core.annotation.MergedAnnotations;
 import org.springframework.core.annotation.MergedAnnotations.SearchStrategy;
 
@@ -48,6 +48,8 @@ public final class _Annotations {
     /**
      * Determine if the specified annotation is either directly present or meta-present.
      * <p>
+     * Also includes annotated fields, getter methods might be associated with.
+     * <p>
      * Perform a full search of the entire type hierarchy,
      * including super-classes and implemented interfaces.
      * Super-class annotations do not need to be meta-annotated with {@link Inherited}.
@@ -61,55 +63,23 @@ public final class _Annotations {
             final AnnotatedElement annotatedElement,
             final Class<A> annotationType) {
 
-        return collect(annotatedElement, SearchStrategy.TYPE_HIERARCHY)
-                .isPresent(annotationType);
-    }
-
-    /**
-     * Optionally creates a type-safe synthesized version of this annotation based on presence.
-     * <p>
-     * Does support attribute inheritance.
-     *
-     * @param <A>
-     * @param annotatedElement
-     * @param annotationType
-     * @return non-null
-     */
-    public static <A extends Annotation> Optional<A> synthesizeInherited(
-            final AnnotatedElement annotatedElement,
-            final Class<A> annotationType) {
-
         val collected = collect(annotatedElement, SearchStrategy.TYPE_HIERARCHY);
 
-        if(!collected.isPresent(annotationType)) {
-
-            // also handle fields, getter methods might be associated with
-            if(annotatedElement instanceof Method &&
-                    searchAnnotationOnField(annotationType) ) {
-
-                val method = (Method) annotatedElement;
-
-                val fieldForGetter = _ClassCache.getInstance()
-                        .fieldForGetter(method.getDeclaringClass(), (Method) annotatedElement)
-                        .orElse(null);
-                if(fieldForGetter!=null) {
-                    return synthesizeInherited(fieldForGetter, annotationType);
-                }
-            }
-
-            return Optional.empty();
+        if(collected.isPresent(annotationType)) {
+            return true;
         }
 
-        val proxy = _Annotations_SynthesizedMergedAnnotationInvocationHandler
-                .createProxy(collected, annotationType);
-
-        return Optional.of(proxy);
+        // also handle annotated fields, getter methods might be associated with
+        return annotatedFieldForAnnotatedElement(annotatedElement, annotationType)
+        .map(fieldForGetter->isPresent(fieldForGetter, annotationType))
+        .orElse(false);
     }
 
-
     /**
      * Optionally create a type-safe synthesized version of this annotation based on presence.
      * <p>
+     * Also includes annotated fields, getter methods might be associated with.
+     * <p>
      * Perform a full search of the entire type hierarchy,
      * including super-classes and implemented interfaces.
      * Super-class annotations do not need to be meta-annotated with {@link Inherited}.
@@ -123,16 +93,14 @@ public final class _Annotations {
             final AnnotatedElement annotatedElement,
             final Class<A> annotationType) {
 
-        val synthesized = collect(annotatedElement, SearchStrategy.TYPE_HIERARCHY)
-                .get(annotationType)
-                .synthesize(MergedAnnotation::isPresent);
-
-        return synthesized;
+        return synthesize(annotatedElement, annotationType, SearchStrategy.TYPE_HIERARCHY);
     }
 
     /**
      * Optionally create a type-safe synthesized version of this annotation based on presence.
      * <p>
+     * Also includes annotated fields, getter methods might be associated with.
+     * <p>
      * Find only directly declared annotations,
      * without considering {@link Inherited} annotations and
      * without searching super-classes or implemented interfaces.
@@ -146,27 +114,47 @@ public final class _Annotations {
             final AnnotatedElement annotatedElement,
             final Class<A> annotationType) {
 
-        val synthesized = collect(annotatedElement, SearchStrategy.DIRECT)
-                .get(annotationType)
-                .synthesize(MergedAnnotation::isPresent);
-
-        return synthesized;
+        return synthesize(annotatedElement, annotationType, SearchStrategy.DIRECT);
     }
 
-
     // -- HELPER
 
     /**
-     * @apiNote don't expose Spring's MergedAnnotations
+     * Optionally create a type-safe synthesized version of this annotation based on presence.
+     * <p>
+     * Also includes annotated fields, getter methods might be associated with.
      */
-    static MergedAnnotations collect(
+    private static <A extends Annotation> Optional<A> synthesize(
+            final AnnotatedElement annotatedElement,
+            final Class<A> annotationType,
+            final SearchStrategy searchStrategy) {
+
+        val collected = collect(annotatedElement, searchStrategy);
+
+        if(!collected.isPresent(annotationType)) {
+
+            // also handle annotated fields, getter methods might be associated with
+            return annotatedFieldForAnnotatedElement(annotatedElement, annotationType)
+            .flatMap(fieldForGetter->synthesize(fieldForGetter, annotationType, searchStrategy));
+        }
+
+        val proxy = _Annotations_SynthesizedMergedAnnotationInvocationHandler
+                .createProxy(collected, annotationType);
+
+        return Optional.of(proxy);
+    }
+
+    /**
+     * @apiNote don't publicly expose Spring's {@link MergedAnnotations}
+     */
+    private static MergedAnnotations collect(
             final AnnotatedElement annotatedElement,
             final SearchStrategy searchStrategy) {
         val collected = MergedAnnotations.from(annotatedElement, searchStrategy);
         return collected;
     }
 
-    private static boolean searchAnnotationOnField(final Class<? extends Annotation> annotationType) {
+    private static boolean isAnnotationAllowedOnField(final Class<? extends Annotation> annotationType) {
         val target = annotationType.getAnnotation(Target.class);
         if(target==null) {
             return false;
@@ -179,4 +167,25 @@ public final class _Annotations {
         return false;
     }
 
+    private static <A extends Annotation> Optional<Field> annotatedFieldForAnnotatedElement(
+            final AnnotatedElement annotatedElement,
+            final Class<A> annotationType){
+
+        return annotatedElement instanceof Method
+                ? annotatedFieldForGetter((Method)annotatedElement, annotationType)
+                : Optional.empty();
+    }
+
+    private static <A extends Annotation> Optional<Field> annotatedFieldForGetter(
+            final Method method,
+            final Class<A> annotationType){
+
+        return (method.getName().startsWith("get")
+                    || method.getName().startsWith("is"))
+                && isAnnotationAllowedOnField(annotationType)
+                ? _ClassCache.getInstance()
+                        .fieldForGetter(method.getDeclaringClass(), method)
+                : Optional.empty();
+    }
+
 }
diff --git a/commons/src/test/java/org/apache/isis/commons/internal/reflection/AnnotationsTest.java b/commons/src/test/java/org/apache/isis/commons/internal/reflection/AnnotationsTest.java
index a06f39a..7717940 100644
--- a/commons/src/test/java/org/apache/isis/commons/internal/reflection/AnnotationsTest.java
+++ b/commons/src/test/java/org/apache/isis/commons/internal/reflection/AnnotationsTest.java
@@ -50,7 +50,7 @@ class AnnotationsTest {
                 .filter(m->m.getName().equals("action"))
                 // using filter over peek here, because peek is unreliable with 'count()' terminal
                 .filter(m->{
-                    val syn = _Annotations.synthesizeInherited(m, DisplayName.class);
+                    val syn = _Annotations.synthesize(m, DisplayName.class);
                     assertNotNull(syn);
                     assertTrue(syn.isPresent());
                     assertEquals("hi", syn.get().value());
@@ -70,7 +70,7 @@ class AnnotationsTest {
                 .filter(m->m.getName().equals("action"))
                 // using filter over peek here, because peek is unreliable with 'count()' terminal
                 .filter(m->{
-                    val syn = _Annotations.synthesizeInherited(m, DisplayName.class);
+                    val syn = _Annotations.synthesize(m, DisplayName.class);
                     assertNotNull(syn);
                     assertTrue(syn.isPresent());
                     assertEquals("hi", syn.get().value());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
index cc3779c..03a8f39 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/FacetFactory.java
@@ -98,7 +98,7 @@ public interface FacetFactory {
          * @since 2.0
          */
         public <A extends Annotation> Optional<A> synthesizeOnType(final Class<A> annotationType) {
-            return _Annotations.synthesizeInherited(cls, annotationType);
+            return _Annotations.synthesize(cls, annotationType);
         }
 
     }
@@ -256,7 +256,7 @@ public interface FacetFactory {
          * @since 2.0
          */
         public <A extends Annotation> Optional<A> synthesizeOnMethod(final Class<A> annotationType) {
-            return _Annotations.synthesizeInherited(getMethod(), annotationType);
+            return _Annotations.synthesize(getMethod(), annotationType);
         }
 
         /**
@@ -390,7 +390,7 @@ public interface FacetFactory {
          * @since 2.0
          */
         public <A extends Annotation> Optional<A> synthesizeOnParameter(final Class<A> annotationType) {
-            return _Annotations.synthesizeInherited(parameter, annotationType);
+            return _Annotations.synthesize(parameter, annotationType);
         }
 
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactory.java
index 7c1b047..2a3d507 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/navparent/annotation/NavigableParentAnnotationFacetFactory.java
@@ -113,7 +113,7 @@ implements MetaModelRefiner {
 
     private static boolean isNavigableParentFlagSet(final AnnotatedElement annotatedElement){
         return _Annotations
-                .synthesizeInherited(annotatedElement, PropertyLayout.class)
+                .synthesize(annotatedElement, PropertyLayout.class)
                 .map(propertyLayout->propertyLayout.navigable().isParent())
                 .orElse(false);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 64330ea..3368ada 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -190,7 +190,7 @@ implements ImperativeFacet {
             final AnnotatedElement annotatedElement,
             final Consumer<Title> onTitleFound){
         return _Annotations
-                .synthesizeInherited(annotatedElement, Title.class)
+                .synthesize(annotatedElement, Title.class)
                 .map(title->{onTitleFound.accept(title); return true;})
                 .orElse(false);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index ded29fc..0a6b7e4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -284,7 +284,7 @@ implements ValueFacet<T> {
 
             val qualifiersOnBean =
             _Annotations
-            .synthesizeInherited(valueSemantics.getClass(), Qualifier.class) //TODO memoize somewhere
+            .synthesize(valueSemantics.getClass(), Qualifier.class) //TODO memoize somewhere
             .map(Qualifier::value)
             .stream()
             .map(_Strings::emptyToNull)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java
index ca5b830..a1fbb61 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java
@@ -114,7 +114,7 @@ extends MetaModelVisitingValidatorAbstract {
         .streamDeclaredMethodsHaving(
                 type,
                 "domain-include",
-                method->_Annotations.synthesizeInherited(method, Domain.Include.class).isPresent())
+                method->_Annotations.synthesize(method, Domain.Include.class).isPresent())
         // filter away those that are recognized
         .filter(Predicate.not(memberMethods::contains))
         .filter(Predicate.not(supportMethods::contains))
@@ -163,7 +163,7 @@ extends MetaModelVisitingValidatorAbstract {
         val inheritedMethodsWithDomainIncludeSemantics =
             _Reflect.streamInheritedMethods(method)
             .filter(m->!Objects.equals(method.toString(), m.toString())) // exclude self
-            .filter(m->_Annotations.synthesizeInherited(m, Domain.Include.class).isPresent())
+            .filter(m->_Annotations.synthesize(m, Domain.Include.class).isPresent())
             .collect(Collectors.toSet());
 
         if(!inheritedMethodsWithDomainIncludeSemantics.isEmpty()) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java
index 8b3b13f..95e9844 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/MethodFinder.java
@@ -262,13 +262,13 @@ public class MethodFinder {
             final Class<? extends Annotation> annotationType,
             final Can<Class<? extends Annotation>> conflictingAnnotations) {
 
-        val isMarkerAnnotationPresent = _Annotations.synthesizeInherited(method, annotationType).isPresent();
+        val isMarkerAnnotationPresent = _Annotations.synthesize(method, annotationType).isPresent();
         if(isMarkerAnnotationPresent) {
 
             val isConflictingAnnotationPresent = conflictingAnnotations
             .stream()
             .anyMatch(conflictingAnnotationType->
-                    _Annotations.synthesizeInherited(method, conflictingAnnotationType).isPresent());
+                    _Annotations.synthesize(method, conflictingAnnotationType).isPresent());
 
             // do not pickup this method if conflicting - so meta-model validation will fail later on
             return !isConflictingAnnotationPresent;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java
index 20fd593..e4c1138 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java
@@ -109,7 +109,7 @@ extends ObjectSpecificationPostProcessorAbstract {
                 // ignoring stuff which is deprecated for Isis v2
 
                 final Property propertyAnnot =
-                        _Annotations.synthesizeInherited(method, Property.class)
+                        _Annotations.synthesize(method, Property.class)
                         .orElse(null);
 
                 if(propertyAnnot != null) {
@@ -150,7 +150,7 @@ extends ObjectSpecificationPostProcessorAbstract {
                 // ignoring stuff which is deprecated for Isis v2
 
                 final Collection collectionAnnot =
-                        _Annotations.synthesizeInherited(method, Collection.class)
+                        _Annotations.synthesize(method, Collection.class)
                                 .orElse(null);
 
                 if(collectionAnnot != null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
index 135502d..e90fe2c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -535,8 +535,8 @@ implements ObjectAction {
 
     private boolean calculateIsExplicitlyAnnotated() {
         val javaMethod = getFacetedMethod().getMethod();
-        return _Annotations.synthesizeInherited(javaMethod, Action.class).isPresent()
-                || _Annotations.synthesizeInherited(javaMethod, ActionLayout.class).isPresent();
+        return _Annotations.synthesize(javaMethod, Action.class).isPresent()
+                || _Annotations.synthesize(javaMethod, ActionLayout.class).isPresent();
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index cf15f46..47de4a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -177,7 +177,7 @@ implements MixedInMember {
     private boolean calculateIsExplicitlyAnnotated() {
         val javaMethod = getFacetedMethod().getMethod();
         return super.isExplicitlyAnnotated() // legacy programming style
-                || _Annotations.synthesizeInherited(javaMethod, Domain.Include.class).isPresent();
+                || _Annotations.synthesize(javaMethod, Domain.Include.class).isPresent();
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index e645c39..1c02b2a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -185,8 +185,8 @@ implements OneToManyAssociation {
 
     private boolean calculateIsExplicitlyAnnotated() {
         val javaMethod = getFacetedMethod().getMethod();
-        return _Annotations.synthesizeInherited(javaMethod, Collection.class).isPresent()
-                || _Annotations.synthesizeInherited(javaMethod, CollectionLayout.class).isPresent();
+        return _Annotations.synthesize(javaMethod, Collection.class).isPresent()
+                || _Annotations.synthesize(javaMethod, CollectionLayout.class).isPresent();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 4b658bf..590f700 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -181,7 +181,7 @@ implements MixedInMember {
     private boolean calculateIsExplicitlyAnnotated() {
         val javaMethod = getFacetedMethod().getMethod();
         return super.isExplicitlyAnnotated() // legacy programming style
-                || _Annotations.synthesizeInherited(javaMethod, Domain.Include.class).isPresent();
+                || _Annotations.synthesize(javaMethod, Domain.Include.class).isPresent();
     }
 
     private ExecutionPublisher getPublishingServiceInternal() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index c1ab3b3..5506f56 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -340,8 +340,8 @@ implements OneToOneAssociation {
 
     private boolean calculateIsExplicitlyAnnotated() {
         val javaMethod = getFacetedMethod().getMethod();
-        return _Annotations.synthesizeInherited(javaMethod, Property.class).isPresent()
-                || _Annotations.synthesizeInherited(javaMethod, PropertyLayout.class).isPresent();
+        return _Annotations.synthesize(javaMethod, Property.class).isPresent()
+                || _Annotations.synthesize(javaMethod, PropertyLayout.class).isPresent();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 92968c7..ebf2502 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -166,7 +166,7 @@ implements MixedInMember {
     private boolean calculateIsExplicitlyAnnotated() {
         val javaMethod = getFacetedMethod().getMethod();
         return super.isExplicitlyAnnotated() // legacy programming style
-                || _Annotations.synthesizeInherited(javaMethod, Domain.Include.class).isPresent();
+                || _Annotations.synthesize(javaMethod, Domain.Include.class).isPresent();
     }
 
     private ExecutionPublisher getPublisherDispatchService() {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Class_Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Class_Test.java
index 5f87350..2f9590d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Class_Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Class_Test.java
@@ -202,7 +202,7 @@ public class Annotations_getAnnotations_on_Class_Test {
         class SomeDomainObject {}
 
         val synthesized = _Annotations
-                .synthesizeInherited(SomeDomainObject.class, DomainObj.class);
+                .synthesize(SomeDomainObject.class, DomainObj.class);
 
         assertThat(synthesized.isPresent(), is(true));
         assertThat(synthesized.get().publishng(), is(DomainObj.Publishng.NO));
@@ -216,7 +216,7 @@ public class Annotations_getAnnotations_on_Class_Test {
         class SomeDomainObject {}
 
         val synthesized = _Annotations
-                .synthesizeInherited(SomeDomainObject.class, DomainObj.class);
+                .synthesize(SomeDomainObject.class, DomainObj.class);
 
         assertThat(synthesized.isPresent(), is(true));
         assertThat(synthesized.get().publishng(), is(DomainObj.Publishng.YES));
@@ -233,7 +233,7 @@ public class Annotations_getAnnotations_on_Class_Test {
         class SomeDomainObject {}
 
         val synthesized = _Annotations
-                .synthesizeInherited(SomeDomainObject.class, DomainObj.class);
+                .synthesize(SomeDomainObject.class, DomainObj.class);
 
         assertThat(synthesized.isPresent(), is(true));
         assertThat(synthesized.get().publishng(), is(DomainObj.Publishng.YES));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Field_Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Field_Test.java
index ea641d4..3e6c7b3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Field_Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Field_Test.java
@@ -73,13 +73,13 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
         
         val field = SomeDomainObject.class.getDeclaredField("name");
-        val nearestF = _Annotations.synthesizeInherited(field, Property.class);
+        val nearestF = _Annotations.synthesize(field, Property.class);
         
         assertThat(nearestF.isPresent(), is(true));
         assertThat(nearestF.get().executionPublishing(), is(Publishing.ENABLED));
         
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.ENABLED));
@@ -97,7 +97,7 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.ENABLED));
@@ -115,7 +115,7 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.ENABLED));
@@ -134,7 +134,7 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.ENABLED));
@@ -153,7 +153,7 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.DISABLED));
@@ -173,7 +173,7 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.DISABLED));
@@ -194,7 +194,7 @@ public class Annotations_getAnnotations_on_Field_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("getName");
-        val nearestM = _Annotations.synthesizeInherited(method, Property.class);
+        val nearestM = _Annotations.synthesize(method, Property.class);
 
         assertThat(nearestM.isPresent(), is(true));
         assertThat(nearestM.get().executionPublishing(), is(Publishing.ENABLED));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Method_Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Method_Test.java
index 2b61982..4972ac5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Method_Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Method_Test.java
@@ -78,7 +78,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -93,7 +93,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -108,7 +108,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -124,7 +124,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -140,7 +140,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.NO));
@@ -157,7 +157,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.NO));
@@ -175,7 +175,7 @@ public class Annotations_getAnnotations_on_Method_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method, DomainObj.class);
+        val nearest = _Annotations.synthesize(method, DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Parameter_Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Parameter_Test.java
index e6d0d43..3fd97b8 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Parameter_Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/Annotations_getAnnotations_on_Parameter_Test.java
@@ -81,7 +81,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -99,7 +99,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -116,7 +116,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -134,7 +134,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
@@ -152,7 +152,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.NO));
@@ -171,7 +171,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.NO));
@@ -191,7 +191,7 @@ public class Annotations_getAnnotations_on_Parameter_Test {
         }
 
         val method = SomeDomainObject.class.getMethod("updateName", String.class);
-        val nearest = _Annotations.synthesizeInherited(method.getParameters()[0], DomainObj.class);
+        val nearest = _Annotations.synthesize(method.getParameters()[0], DomainObj.class);
 
         assertThat(nearest.isPresent(), is(true));
         assertThat(nearest.get().publishng(), is(DomainObj.Publishng.YES));
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/AnnotationSyntesizerTest.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/AnnotationSyntesizerTest.java
index c2e4814..69af2cb 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/AnnotationSyntesizerTest.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/AnnotationSyntesizerTest.java
@@ -69,7 +69,7 @@ class AnnotationSyntesizerTest {
         val actionMethod = ReflectionUtils.findMethod(InvalidPropertyAnnotationOnAction.class, "exportToJson");
         assertNotNull(actionMethod);
 
-        val action = _Annotations.synthesizeInherited(actionMethod, Action.class).get();
+        val action = _Annotations.synthesize(actionMethod, Action.class).get();
         val domainEvent = action.domainEvent();
 
         if(!ActionDomainEvent.class.isAssignableFrom(domainEvent)) {