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/02/22 18:54:40 UTC
[isis] branch master updated: ISIS-2540: supposedly fixes previous
attempt to no longer require mixins to hold their mixees
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 76051cd ISIS-2540: supposedly fixes previous attempt to no longer require mixins to hold their mixees
76051cd is described below
commit 76051cd8148aa737886f65da0acf71017bf4ae13
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Feb 22 19:52:35 2021 +0100
ISIS-2540: supposedly fixes previous attempt to no longer require mixins
to hold their mixees
---
.../param/choices/ActionParameterChoicesFacet.java | 3 +-
.../choices/ActionParameterChoicesFacetNone.java | 3 +-
...rameterChoicesFacetDerivedFromChoicesFacet.java | 5 +--
.../ActionParameterChoicesFacetViaMethod.java | 7 ++--
...arameterChoicesFacetFromParentedCollection.java | 20 ++----------
.../specloader/specimpl/ObjectActionDefault.java | 37 ++++------------------
.../specimpl/ObjectActionParameterAbstract.java | 7 ++--
7 files changed, 25 insertions(+), 57 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
index 873e87f..c03f19e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacet.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.param.choices;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.interactions.managed.ActionInteractionHead;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -37,7 +38,7 @@ public interface ActionParameterChoicesFacet extends Facet {
public Can<ManagedObject> getChoices(
ObjectSpecification requiredSpec,
- ManagedObject target,
+ ActionInteractionHead head,
Can<ManagedObject> pendingArgs,
InteractionInitiatedBy interactionInitiatedBy);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
index 27d5617..0bc98bb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetNone.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.param.choices;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.interactions.managed.ActionInteractionHead;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -34,7 +35,7 @@ public class ActionParameterChoicesFacetNone extends ActionParameterChoicesFacet
@Override
public Can<ManagedObject> getChoices(
final ObjectSpecification requiredSpec,
- final ManagedObject adapter,
+ final ActionInteractionHead head,
final Can<ManagedObject> pendingArgs,
final InteractionInitiatedBy interactionInitiatedBy) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
index b620434..67341d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/enums/ActionParameterChoicesFacetDerivedFromChoicesFacet.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.TypedHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.managed.ActionInteractionHead;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -37,7 +38,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
@Override
public Can<ManagedObject> getChoices(
final ObjectSpecification requiredSpec,
- final ManagedObject adapter,
+ final ActionInteractionHead head,
final Can<ManagedObject> pendingArgs,
final InteractionInitiatedBy interactionInitiatedBy) {
@@ -48,7 +49,7 @@ public class ActionParameterChoicesFacetDerivedFromChoicesFacet extends ActionPa
if (choicesFacet == null) {
return Can.empty();
}
- return choicesFacet.getChoices(adapter, interactionInitiatedBy);
+ return choicesFacet.getChoices(head.getTarget(), interactionInitiatedBy);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
index 230070d..18831e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethod.java
@@ -31,6 +31,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.managed.ActionInteractionHead;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -74,13 +75,13 @@ implements ImperativeFacet {
@Override
public Can<ManagedObject> getChoices(
final ObjectSpecification requiredSpec,
- final ManagedObject owningAdapter,
+ final ActionInteractionHead head,
final Can<ManagedObject> pendingArgs,
final InteractionInitiatedBy interactionInitiatedBy) {
final Object collectionOrArray = ppmFactory.isPresent()
- ? ManagedObjects.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, owningAdapter, pendingArgs)
- : ManagedObjects.InvokeUtil.invokeAutofit(method, owningAdapter, pendingArgs);
+ ? ManagedObjects.InvokeUtil.invokeWithPPM(ppmFactory.get(), method, head.getTarget(), pendingArgs)
+ : ManagedObjects.InvokeUtil.invokeAutofit(method, head.getTarget(), pendingArgs);
if (collectionOrArray == null) {
return Can.empty();
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
index 2738fad..5f886cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ActionParameterChoicesFacetFromParentedCollection.java
@@ -22,12 +22,11 @@ package org.apache.isis.core.metamodel.postprocessors.param;
import java.util.Map;
import org.apache.isis.commons.collections.Can;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
-import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacetAbstract;
+import org.apache.isis.core.metamodel.interactions.managed.ActionInteractionHead;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
@@ -49,27 +48,14 @@ extends ActionParameterChoicesFacetAbstract {
@Override
public Can<ManagedObject> getChoices(
final ObjectSpecification requiredSpec,
- final ManagedObject target,
+ final ActionInteractionHead head,
final Can<ManagedObject> pendingArgs,
final InteractionInitiatedBy interactionInitiatedBy) {
- guardAgainstMixin(target);
- val collectionAdapter = otma.get(target, interactionInitiatedBy);
+ val collectionAdapter = otma.get(head.getOwner(), interactionInitiatedBy);
return CollectionFacet.streamAdapters(collectionAdapter).collect(Can.toCan());
}
- /**
- * in the case of a mixin action, the target passed to the facet is actually the mixin itself,
- * not the mixee
- */
- private void guardAgainstMixin(final ManagedObject target) {
- val mixinFacet = target.getSpecification().getFacet(MixinFacet.class);
- if(mixinFacet != null) {
- _Exceptions.unrecoverable("internal error: choices facet invoked on mixin target, "
- + "but should be a mixee target instead");
- }
- }
-
@Override
public void appendAttributesTo(final Map<String, Object> attributeMap) {
super.appendAttributesTo(attributeMap);
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 27aa46a..898d5cb 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
@@ -523,7 +523,12 @@ implements ObjectAction {
val paramFacet = param.getFacet(ActionParameterChoicesFacet.class);
if (paramFacet != null && !paramFacet.isFallback()) {
- val visibleChoices = paramFacet.getChoices(paramSpec, target, emptyPendingArgs, interactionInitiatedBy);
+
+ val visibleChoices = paramFacet.getChoices(
+ paramSpec,
+ interactionHead(target),
+ emptyPendingArgs,
+ interactionInitiatedBy);
ObjectActionParameterAbstract.checkChoicesOrAutoCompleteType(
getSpecificationLoader(), visibleChoices, paramSpec);
paramChoicesVector.set(i, visibleChoices);
@@ -533,36 +538,6 @@ implements ObjectAction {
}
}
return paramChoicesVector;
-
-// final List<Can<ManagedObject>> parameterChoicesAdapters = new ArrayList<>(parameterCount);
-// for (int i = 0; i < parameterCount; i++) {
-//
-// ManagedObject[] choices;
-//
-// final ObjectSpecification paramSpec = parameters.getElseFail(i).getSpecification();
-//
-// if (paramChoicesVector[i] != null && paramChoicesVector[i].length > 0) {
-// ObjectActionParameterAbstract.checkChoicesOrAutoCompleteType(
-// getSpecificationLoader(), paramChoicesVector[i], paramSpec);
-// choices = new ManagedObject[paramChoicesVector[i].length];
-// for (int j = 0; j < paramChoicesVector[i].length; j++) {
-// choices[j] = ManagedObject.of(paramSpec, paramChoicesVector[i][j]);
-// }
-// } else if (paramSpec.isNotCollection()) {
-// choices = new ManagedObject[0];
-// } else {
-// throw new UnknownTypeException(paramSpec);
-// }
-//
-// if (choices.length == 0) {
-// choices = null;
-// }
-//
-// parameterChoicesAdapters.add(Can.ofArray(choices));
-//
-// }
-//
-// return Can.ofCollection(parameterChoicesAdapters);
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 3e14d1a..06b1356 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -222,8 +222,11 @@ implements ObjectActionParameter, HasFacetHolder {
if (choicesFacet == null) {
return Can.empty();
}
-
- val visibleChoices = choicesFacet.getChoices(paramSpec, pendingArgs.getActionTarget(), pendingArgs.getParamValues(), interactionInitiatedBy);
+
+ val visibleChoices = choicesFacet.getChoices(paramSpec,
+ pendingArgs.getHead(),
+ pendingArgs.getParamValues(),
+ interactionInitiatedBy);
checkChoicesOrAutoCompleteType(getSpecificationLoader(), visibleChoices, getSpecification());
return visibleChoices;