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 2022/08/23 09:08:09 UTC
[isis] branch master updated: ISIS-3165: fixes installation of incompatible choices facet
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 73ab2dcb0a ISIS-3165: fixes installation of incompatible choices facet
73ab2dcb0a is described below
commit 73ab2dcb0af7eef57b7b73cf508635bdcad50d88
Author: andi-huber <ah...@apache.org>
AuthorDate: Tue Aug 23 11:08:03 2022 +0200
ISIS-3165: fixes installation of incompatible choices facet
---
.../choices/ActionParameterChoicesFacetFromChoicesFromFacet.java | 8 ++++++--
.../postprocessors/ObjectSpecificationPostProcessorAbstract.java | 7 -------
.../postprocessors/all/DescribedAsFromTypePostProcessor.java | 2 +-
.../postprocessors/param/ChoicesAndDefaultsPostProcessor.java | 4 ++--
.../postprocessors/param/TypicalLengthFromTypePostProcessor.java | 2 +-
5 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetFromChoicesFromFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetFromChoicesFromFacet.java
index 5ac3a54c63..60355097c3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetFromChoicesFromFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionParameterChoicesFacetFromChoicesFromFacet.java
@@ -28,6 +28,7 @@ import org.apache.isis.core.metamodel.facets.collections.CollectionFacet;
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.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import lombok.val;
@@ -38,12 +39,15 @@ extends ActionParameterChoicesFacetAbstract {
public static Optional<ActionParameterChoicesFacet> create(
final Optional<ChoicesFromFacet> choicesFromFacetIfAny,
final ObjectSpecification actionOwnerSpec,
- final FacetHolder facetHolder) {
+ final ObjectActionParameter param) {
+
return choicesFromFacetIfAny
.map(ChoicesFromFacet::value)
.flatMap(actionOwnerSpec::getCollection)
+ // param type must be assignable from types returned by choices
+ .filter(coll->coll.getElementType().isOfType(param.getElementType()))
.map(coll->
- new ActionParameterChoicesFacetFromChoicesFromFacet(coll, facetHolder));
+ new ActionParameterChoicesFacetFromChoicesFromFacet(coll, param.getFacetHolder()));
}
private final OneToManyAssociation choicesFromCollection;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
index a9bdabc6e0..85bb096859 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
@@ -20,9 +20,7 @@ package org.apache.isis.core.metamodel.postprocessors;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
@@ -51,9 +49,4 @@ implements ObjectSpecificationPostProcessor {
return objectMemberImpl.getFacetedMethod();
}
- protected static FacetHolder peerFor(final ObjectActionParameter param) {
- // TODO: hacky, need to copy facet onto underlying peer, not to the param itself.
- return param.getFacetHolder();
- }
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
index a6a9711fc8..3aa8716da9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
@@ -86,7 +86,7 @@ extends ObjectSpecificationPostProcessorAbstract {
.ifPresent(objectDescribedFacet->
FacetUtil.addFacetIfPresent(
ParamDescribedFacetFromType
- .create(objectDescribedFacet, peerFor(parameter))));
+ .create(objectDescribedFacet, parameter.getFacetHolder())));
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
index df2e9d2d97..e45c952426 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
@@ -75,7 +75,7 @@ extends ObjectSpecificationPostProcessorAbstract {
if(FacetUtil
.addFacetIfPresent(
ActionParameterChoicesFacetFromChoicesFromFacet
- .create(choicesFromFacetIfAny, objectSpecification, peerFor(param)))
+ .create(choicesFromFacetIfAny, objectSpecification, param))
.isPresent()) {
// ActionParameterChoicesFacetFromChoicesFromFacet has precedence over
@@ -88,7 +88,7 @@ extends ObjectSpecificationPostProcessorAbstract {
FacetUtil.addFacetIfPresent(
ActionParameterChoicesFacetFromChoicesFacet
- .create(choicesFacetIfAny, peerFor(param)));
+ .create(choicesFacetIfAny, param.getFacetHolder()));
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
index 7c3fed7d76..a5aa70cb65 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
@@ -53,7 +53,7 @@ extends ObjectSpecificationPostProcessorAbstract {
.ifPresent(typicalLengthFacet ->
FacetUtil.addFacet(
TypicalLengthFacetOnParameterFromType
- .createWhilePostprocessing(typicalLengthFacet, peerFor(parameter))));
+ .createWhilePostprocessing(typicalLengthFacet, parameter.getFacetHolder())));
}
@Override