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/04/14 12:28:31 UTC

[isis] branch master updated: ISIS-2493: more fixes

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 794c4b3  ISIS-2493: more fixes
794c4b3 is described below

commit 794c4b3dc9ba08fb42d4592ced11eb921be859da
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Apr 14 14:28:18 2021 +0200

    ISIS-2493: more fixes
---
 .../facets/actions/action/ActionOverloadingValidator.java      |  4 ++++
 .../metamodel/specloader/specimpl/ObjectMemberContainer.java   | 10 +++++-----
 .../model/good/ProperMemberInheritanceInterface.java           |  2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionOverloadingValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionOverloadingValidator.java
index 537fd22..0498263 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionOverloadingValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionOverloadingValidator.java
@@ -55,6 +55,10 @@ extends MetaModelVisitingValidatorAbstract {
             
             if(!overloadedNames.isEmpty()) {
             
+                //XXX there is a small chance of a false positive with method overriding, 
+                // when the method signatures are not exactly the same;
+                // meaning, when the parameter classes differ
+                
                 ValidationFailure.raiseFormatted(
                         spec,
                         "Action method overloading is not allowed, "
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 6d35724..163de52 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
@@ -24,7 +24,6 @@ import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
-import org.apache.isis.applib.Identifier;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.core.metamodel.facetapi.FacetHolderImpl;
@@ -88,19 +87,20 @@ implements
                         streamDeclaredActions(types, contributed), 
                         superclass().streamActions(types, contributed));
         
-        val actionIdentifier = _Sets.<Identifier>newHashSet();
+        val actionSignatures = _Sets.<String>newHashSet();
         val actionIds = _Sets.<String>newHashSet();
         
         return actionStream
         
-        // as of contributing super-classes (and mixins?) same actions might appear more than once 
-        .filter(action->actionIdentifier.add(action.getIdentifier()))
+        // as of contributing super-classes same actions might appear more than once (overriding) 
+        .filter(action->actionSignatures.add(
+                action.getIdentifier().getMemberNameAndParameterClassNamesIdentityString()))
         
         // ensure we don't emit duplicates
         .filter(action->{
             val isUnique = actionIds.add(action.getId());
             if(!isUnique) {
-                onActionOverloaded.accept(action); 
+                onActionOverloaded.accept(action);
             }
             return isUnique;
         }); 
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 75b35e0..9d10348 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
@@ -63,7 +63,7 @@ public interface ProperMemberInheritanceInterface {
     
     @Action
     @ActionLayout(named = "foo", describedAs = "bar")
-    default void sampleActionOverride(String x) {
+    default void sampleActionOverrideWithParam(String x) {
     }
     
     @Property