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