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)
);
}