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/09/07 11:42:06 UTC

[isis] branch master updated: ISIS-2774: purge ActionChoicesFacet

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 364530c  ISIS-2774: purge ActionChoicesFacet
364530c is described below

commit 364530ca314bf9b6c4fcdfaffa310b731c5fc560
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 13:41:57 2021 +0200

    ISIS-2774: purge ActionChoicesFacet
---
 .../facets/fallback/ActionChoicesFacetNone.java    | 41 ----------------
 .../facets/fallback/FallbackFacetFactory.java      |  1 -
 .../facets/param/choices/ActionChoicesFacet.java   | 38 ---------------
 .../param/choices/ActionChoicesFacetAbstract.java  | 41 ----------------
 ...ctionParameterChoicesFacetViaMethodFactory.java |  8 ----
 .../services/metamodel/DomainMemberDefault.java    | 20 ++++----
 .../specloader/specimpl/ObjectActionDefault.java   | 55 ++++++++--------------
 7 files changed, 29 insertions(+), 175 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/ActionChoicesFacetNone.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/ActionChoicesFacetNone.java
deleted file mode 100644
index 6d08b69..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/ActionChoicesFacetNone.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.fallback;
-
-import org.apache.isis.commons.collections.CanVector;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacetAbstract;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-public class ActionChoicesFacetNone
-extends ActionChoicesFacetAbstract {
-
-    public ActionChoicesFacetNone(final FacetHolder holder) {
-        super(holder, Precedence.FALLBACK);
-    }
-
-    @Override
-    public CanVector<ManagedObject> getChoices(
-            final ManagedObject inObject,
-            final InteractionInitiatedBy interactionInitiatedBy) {
-        return CanVector.empty();
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java
index 74d0e4a..a9efa54 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/fallback/FallbackFacetFactory.java
@@ -94,7 +94,6 @@ public class FallbackFacetFactory extends FacetFactoryAbstract {
         }
         if (featureType.isAction()) {
             addFacet(new ActionDefaultsFacetNone(facetedMethod));
-            addFacet(new ActionChoicesFacetNone(facetedMethod));
         }
         if (featureType.isCollection()) {
             addFacet(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java
deleted file mode 100644
index d91167d..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacet.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.param.choices;
-
-import org.apache.isis.commons.collections.CanVector;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-
-/**
- * Obtain choices for each of the parameters of the action.
- *
- * <p>
- * In the standard Apache Isis Programming Model, corresponds to invoking the
- * <tt>choicesXxx</tt> support method for an action.
- */
-public interface ActionChoicesFacet extends Facet {
-
-    public CanVector<ManagedObject> getChoices(
-            final ManagedObject inObject,
-            final InteractionInitiatedBy interactionInitiatedBy);
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacetAbstract.java
deleted file mode 100644
index eb598b9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/ActionChoicesFacetAbstract.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.param.choices;
-
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public abstract class ActionChoicesFacetAbstract
-extends FacetAbstract
-implements ActionChoicesFacet {
-
-    private static final Class<? extends Facet> type() {
-        return ActionChoicesFacet.class;
-    }
-
-    public ActionChoicesFacetAbstract(final FacetHolder holder) {
-        super(type(), holder);
-    }
-
-    public ActionChoicesFacetAbstract(final FacetHolder holder, final Facet.Precedence precedence) {
-        super(type(), holder, precedence);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
index 85949dc..c6e562e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/choices/methodnum/ActionParameterChoicesFacetViaMethodFactory.java
@@ -22,14 +22,12 @@ import java.util.EnumSet;
 
 import javax.inject.Inject;
 
-import org.apache.isis.applib.exceptions.unrecoverable.MetaModelException;
 import org.apache.isis.core.config.progmodel.ProgrammingModelConstants.MemberSupportPrefix;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.ParamSupportingMethodSearchRequest.ReturnType;
 import org.apache.isis.core.metamodel.facets.ParameterSupport.SearchAlgorithm;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
 import org.apache.isis.core.metamodel.methods.MemberSupportFacetFactoryAbstract;
 
 import lombok.val;
@@ -76,12 +74,6 @@ extends MemberSupportFacetFactoryAbstract {
 
             processMethodContext.removeMethod(choicesMethod);
 
-            if (facetedMethod.containsNonFallbackFacet(ActionChoicesFacet.class)) {
-                val cls = processMethodContext.getCls();
-                throw new MetaModelException(cls + " uses both old and new choices syntax - "
-                        + "must use one or other");
-            }
-
             // add facets directly to parameters, not to actions
             val paramAsHolder = parameters.get(paramIndex);
             val ppmFactory = searchResult.getPpmFactory();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
index d830f06..d60f9eb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/DomainMemberDefault.java
@@ -40,7 +40,6 @@ import org.apache.isis.core.metamodel.facets.actions.validate.ActionValidationFa
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet;
 import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
 import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet;
 import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacet;
@@ -73,19 +72,19 @@ public class DomainMemberDefault implements DomainMember {
         throw _Exceptions.unexpectedCodeReach();
     }
 
-    DomainMemberDefault(ObjectSpecification spec, OneToOneAssociation property) {
+    DomainMemberDefault(final ObjectSpecification spec, final OneToOneAssociation property) {
         this.spec = spec;
         this.member = property;
         this.memberType = MemberType.PROPERTY;
     }
 
-    DomainMemberDefault(ObjectSpecification spec, OneToManyAssociation collection) {
+    DomainMemberDefault(final ObjectSpecification spec, final OneToManyAssociation collection) {
         this.spec = spec;
         this.member = collection;
         this.memberType = MemberType.COLLECTION;
     }
 
-    DomainMemberDefault(ObjectSpecification spec, ObjectAction action) {
+    DomainMemberDefault(final ObjectSpecification spec, final ObjectAction action) {
         this.spec = spec;
         this.member = this.action = action;
         this.memberType = MemberType.ACTION;
@@ -183,6 +182,7 @@ public class DomainMemberDefault implements DomainMember {
             return interpretRowAndFacet(PropertyChoicesFacet.class);
         case COLLECTION:
             return "";
+        case ACTION:
         default:
             val parameters = this.action.getParameters();
             final SortedSet<String> interpretations = _Sets.newTreeSet();
@@ -190,9 +190,9 @@ public class DomainMemberDefault implements DomainMember {
                 final ActionParameterChoicesFacet facet = param.getFacet(ActionParameterChoicesFacet.class);
                 addIfNotEmpty(interpretFacet(facet), interpretations);
             }
-            return !interpretations.isEmpty() ?
-                    interpretations.stream().collect(Collectors.joining(";")) :
-                        interpretRowAndFacet(ActionChoicesFacet.class);
+            return interpretations.isEmpty()
+                    ? ""
+                    : interpretations.stream().collect(Collectors.joining(";"));
         }
     }
 
@@ -228,7 +228,7 @@ public class DomainMemberDefault implements DomainMember {
             }
             return !interpretations.isEmpty()
                     ? String.join(";", interpretations)
-                            : interpretRowAndFacet(ActionDefaultsFacet.class);
+                    : interpretRowAndFacet(ActionDefaultsFacet.class);
         }
     }
 
@@ -246,13 +246,13 @@ public class DomainMemberDefault implements DomainMember {
     // -- COMPARATOR
 
     @Override
-    public int compareTo(DomainMember o) {
+    public int compareTo(final DomainMember o) {
         return comparator.compare(this, o);
     }
 
     // -- HELPER
 
-    private String interpretRowAndFacet(Class<? extends Facet> facetClass) {
+    private String interpretRowAndFacet(final Class<? extends Facet> facetClass) {
         final Facet facet = member.getFacet(facetClass);
         return interpretFacet(facet);
     }
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 216840a..570695a 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
@@ -50,7 +50,6 @@ import org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInv
 import org.apache.isis.core.metamodel.facets.actions.defaults.ActionDefaultsFacet;
 import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
 import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
-import org.apache.isis.core.metamodel.facets.param.choices.ActionChoicesFacet;
 import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
 import org.apache.isis.core.metamodel.interactions.ActionUsabilityContext;
 import org.apache.isis.core.metamodel.interactions.ActionValidityContext;
@@ -478,46 +477,30 @@ implements ObjectAction {
         final int parameterCount = getParameterCount();
         CanVector<ManagedObject> paramChoicesVector;
 
-        final ActionChoicesFacet facet = getFacet(ActionChoicesFacet.class);
         val parameters = getParameters();
 
-        if (!facet.getPrecedence().isFallback()) {
-            // using the old choicesXxx() approach
-            paramChoicesVector = facet.getChoices(target,
-                    interactionInitiatedBy);
-
-            // if no options, or not the right number of pojos, then default
-            if (paramChoicesVector == null) {
-                paramChoicesVector = new CanVector<>(parameterCount);
-            } else if (paramChoicesVector.size() != parameterCount) {
-                throw new DomainModelException(
-                        String.format("Choices array of incompatible size; expected %d elements, but was %d for %s",
-                                parameterCount, paramChoicesVector.size(), facet));
-            }
-        } else {
             // use the new choicesNXxx approach for each param in turn
             // (the reflector will have made sure both aren't installed).
 
-            val emptyPendingArgs = Can.<ManagedObject>empty();
-            paramChoicesVector = new CanVector<>(parameterCount);
-            for (int i = 0; i < parameterCount; i++) {
-                val param = parameters.getElseFail(i);
-                val paramSpec = param.getSpecification();
-                val paramFacet = param.getFacet(ActionParameterChoicesFacet.class);
-
-                if (paramFacet != null && !paramFacet.getPrecedence().isFallback()) {
-
-                    val visibleChoices = paramFacet.getChoices(
-                            paramSpec,
-                            interactionHead(target),
-                            emptyPendingArgs,
-                            interactionInitiatedBy);
-                    ObjectActionParameterAbstract.checkChoicesOrAutoCompleteType(
-                            getSpecificationLoader(), visibleChoices, paramSpec);
-                    paramChoicesVector.set(i, visibleChoices);
-                } else {
-                    paramChoicesVector.set(i, Can.empty());
-                }
+        val emptyPendingArgs = Can.<ManagedObject>empty();
+        paramChoicesVector = new CanVector<>(parameterCount);
+        for (int i = 0; i < parameterCount; i++) {
+            val param = parameters.getElseFail(i);
+            val paramSpec = param.getSpecification();
+            val paramFacet = param.getFacet(ActionParameterChoicesFacet.class);
+
+            if (paramFacet != null && !paramFacet.getPrecedence().isFallback()) {
+
+                val visibleChoices = paramFacet.getChoices(
+                        paramSpec,
+                        interactionHead(target),
+                        emptyPendingArgs,
+                        interactionInitiatedBy);
+                ObjectActionParameterAbstract.checkChoicesOrAutoCompleteType(
+                        getSpecificationLoader(), visibleChoices, paramSpec);
+                paramChoicesVector.set(i, visibleChoices);
+            } else {
+                paramChoicesVector.set(i, Can.empty());
             }
         }
         return paramChoicesVector;