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/01/29 17:21:17 UTC

[isis] branch master updated: ISIS-2510: metamodel fixes regarding interfaces

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 22e87ac  ISIS-2510: metamodel fixes regarding interfaces
22e87ac is described below

commit 22e87ac278cec6ef7d44a0c8001b4047587483f2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 29 18:20:55 2021 +0100

    ISIS-2510: metamodel fixes regarding interfaces
---
 .../specloader/specimpl/ObjectMemberContainer.java     | 18 +++++++-----------
 .../model/good/ProperMemberInheritanceInterface.java   |  2 +-
 .../domainmodel/DomainModelTest_usingGoodDomain.java   | 18 +++++++++++++++++-
 3 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java
index 588edc5..f649d50 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectMemberContainer.java
@@ -58,10 +58,6 @@ implements
     @Override
     public Optional<ObjectAction> getAction(String id, @Nullable ActionType type) {
 
-        if(isTypeHierarchyRoot()) {
-            return Optional.empty(); // stop search as we reached the Object class, which does not contribute actions 
-        }
-        
         val declaredAction = getDeclaredAction(id); // no inheritance nor type considered
                 
         if(declaredAction.isPresent()) {
@@ -72,8 +68,10 @@ implements
             }
             return declaredAction; 
         }
-        
-        return superclass().getAction(id, type);
+
+        return isTypeHierarchyRoot()
+                ? Optional.empty() // stop searching
+                : superclass().getAction(id, type);
     }
     
     @Override
@@ -98,17 +96,15 @@ implements
     @Override
     public Optional<ObjectAssociation> getAssociation(String id) {
 
-        if(isTypeHierarchyRoot()) {
-            return Optional.empty(); // stop search as we reached the Object class, which does not contribute associations 
-        }
-        
         val declaredAssociation = getDeclaredAssociation(id); // no inheritance considered
                 
         if(declaredAssociation.isPresent()) {
             return declaredAssociation; 
         }
         
-        return superclass().getAssociation(id);
+        return isTypeHierarchyRoot()
+               ? Optional.empty() // stop searching 
+               : superclass().getAssociation(id);
     }
     
     @Override
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberInheritanceInterface.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberInheritanceInterface.java
index fcba459..75b35e0 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberInheritanceInterface.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/good/ProperMemberInheritanceInterface.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 
-interface ProperMemberInheritanceInterface {
+public interface ProperMemberInheritanceInterface {
     
     default String title() {
         return "inherited title";
diff --git a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
index df12271..329e4e4 100644
--- a/regressiontests/stable/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
+++ b/regressiontests/stable/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingGoodDomain.java
@@ -49,6 +49,7 @@ import org.apache.isis.core.metamodel.specloader.specimpl.IntrospectionState;
 import org.apache.isis.schema.metamodel.v2.DomainClassDto;
 import org.apache.isis.testdomain.conf.Configuration_headless;
 import org.apache.isis.testdomain.model.good.Configuration_usingValidDomain;
+import org.apache.isis.testdomain.model.good.ProperMemberInheritanceInterface;
 import org.apache.isis.testdomain.model.good.ProperMemberInheritance_usingAbstract;
 import org.apache.isis.testdomain.model.good.ProperMemberInheritance_usingInterface;
 import org.apache.isis.testdomain.model.good.ProperMemberSupport;
@@ -189,6 +190,10 @@ class DomainModelTest_usingGoodDomain {
     @MethodSource("provideProperMemberInheritanceTypes")
     void metamodelContributingMembers_shouldBeInheritable(Class<?> type) {
         
+        if(type.isInterface()) {
+            System.out.println("if");
+        }
+        
         val holderSpec = specificationLoader.loadSpecification(type, 
                         IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
         
@@ -216,6 +221,11 @@ class DomainModelTest_usingGoodDomain {
     @MethodSource("provideProperMemberInheritanceTypes")
     void metamodelContributingActions_shouldBeUnique_whenOverridden(Class<?> type) {
         
+        if(type.isInterface()
+                && type.getSuperclass()==null) {
+            return; // not implemented for interface that don't extend from others 
+        }
+        
         val holderSpec = specificationLoader.loadSpecification(type, 
                 IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
         
@@ -235,6 +245,11 @@ class DomainModelTest_usingGoodDomain {
     @MethodSource("provideProperMemberInheritanceTypes")
     void metamodelContributingProperties_shouldBeUnique_whenOverridden(Class<?> type) {
         
+        if(type.isInterface()
+                && type.getSuperclass()==null) {
+            return; // not implemented for interface that don't extend from others 
+        }
+        
         val holderSpec = specificationLoader.loadSpecification(type, 
                         IntrospectionState.TYPE_AND_MEMBERS_INTROSPECTED);
         
@@ -260,7 +275,8 @@ class DomainModelTest_usingGoodDomain {
     static Stream<Arguments> provideProperMemberInheritanceTypes() {
         return Stream.of(
                 Arguments.of(ProperMemberInheritance_usingAbstract.class),
-                Arguments.of(ProperMemberInheritance_usingInterface.class)
+                Arguments.of(ProperMemberInheritance_usingInterface.class),
+                Arguments.of(ProperMemberInheritanceInterface.class)
         );
     }