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/05/14 17:54:03 UTC

[isis] branch master updated: ISIS-2661: fixes choicesFrom post processing

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 1004874  ISIS-2661: fixes choicesFrom post processing
1004874 is described below

commit 1004874fb47ea71baf8585f7e0f237b1842a4831
Author: ahuber@apache.org <ah...@luna>
AuthorDate: Fri May 14 19:53:49 2021 +0200

    ISIS-2661: fixes choicesFrom post processing
---
 ...ectionParamDefaultsAndChoicesPostProcessor.java |   2 +-
 .../core/metamodel/spec/feature/ObjectAction.java  | 111 ++++++++-------------
 .../models/EntityCollectionModelParented.java      |   2 +-
 3 files changed, 43 insertions(+), 72 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/collparam/DeriveCollectionParamDefaultsAndChoicesPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/collparam/DeriveCollectionParamDefaultsAndChoicesPostProcessor.java
index 471bf4c..27bbda9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/collparam/DeriveCollectionParamDefaultsAndChoicesPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/collparam/DeriveCollectionParamDefaultsAndChoicesPostProcessor.java
@@ -74,7 +74,7 @@ extends ObjectSpecificationPostProcessorAbstract {
                 new ObjectActionParameter.Predicates.ScalarParameter(specification);
 
         objectSpecification.streamActions(actionTypes, MixedIn.INCLUDED)
-        .filter(ObjectAction.Predicates.associatedWith(collection))
+        .filter(ObjectAction.Predicates.choicesFromAndHavingCollectionParameterFor(collection))
         .forEach(action->{
 
             val parameters = action.getParameters();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
index c3dab4e..de1a389 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
@@ -349,7 +349,7 @@ public interface ObjectAction extends ObjectMember {
             val spec = adapter.getSpecification();
 
             return spec.streamRuntimeActions(MixedIn.INCLUDED)
-            .filter(ObjectAction.Predicates.isNotInAnyLayoutGroup(spec))
+            .filter(ObjectAction.Predicates.isNotInAnyExistingLayoutGroup(spec))
             .filter(ObjectAction.Predicates.dynamicallyVisible(adapter,
                     InteractionInitiatedBy.USER, Where.ANYWHERE))
             .filter(ObjectAction.Predicates.isNotWizard(spec));
@@ -362,7 +362,7 @@ public interface ObjectAction extends ObjectMember {
             val spec = adapter.getSpecification();
 
             return spec.streamRuntimeActions(MixedIn.INCLUDED)
-            .filter(ObjectAction.Predicates.isSameLayoutGroup(association))
+            .filter(ObjectAction.Predicates.isSameLayoutGroupAs(association))
             .filter(ObjectAction.Predicates.isNotWizard(spec))
             .sorted(Comparators.byMemberOrderSequence(false));
         }
@@ -406,9 +406,22 @@ public interface ObjectAction extends ObjectMember {
             return (ObjectAction oa) -> oa.getType() == type;
         }
 
-        public static Predicate<ObjectAction> associatedWith(final ObjectAssociation association) {
-            //return new AssociateWith(objectAssociation);
-            return isSameLayoutGroup(association);
+        public static Predicate<ObjectAction> isSameLayoutGroupAs(ObjectAssociation association) {
+            final String assocName = association.getName();
+            final String assocId = association.getId();
+            return (ObjectAction objectAction) -> {
+
+                val layoutGroupFacet = objectAction.getFacet(LayoutGroupFacet.class);
+                if (layoutGroupFacet == null) {
+                    return false;
+                }
+                val layoutGroupId = layoutGroupFacet.getGroupId();
+                if (_Strings.isNullOrEmpty(layoutGroupId)) {
+                    return false;
+                }
+                return layoutGroupId.equalsIgnoreCase(assocName)
+                        || layoutGroupId.equalsIgnoreCase(assocId);
+            };
         }
 
         public static Predicate<ObjectAction> choicesFromAndHavingCollectionParameterFor(
@@ -424,31 +437,29 @@ public interface ObjectAction extends ObjectMember {
 
         // -- HELPER
 
-//        private static class AssociateWith implements Predicate<ObjectAction> {
-//            private final @NonNull String memberId;
-//            private final @NonNull String memberName;
-//
-//            public AssociateWith(final @NonNull ObjectAssociation objectAssociation) {
-//                this.memberId = _Strings.nullToEmpty(objectAssociation.getId()).toLowerCase();
-//                this.memberName = _Strings.nullToEmpty(objectAssociation.getName()).toLowerCase();;
-//            }
-//
-//            @Override
-//            public boolean test(final ObjectAction objectAction) {
-//                val associatedWithFacet = objectAction.getFacet(AssociateWithFacet.class);
-//                if(associatedWithFacet == null) {
-//                    return false;
-//                }
-//                val associatedMemberName = associatedWithFacet.value();
-//                if (associatedMemberName == null) {
-//                    return false;
-//                }
-//                val memberNameLowerCase = associatedMemberName.toLowerCase();
-//                return Objects.equals(memberName, memberNameLowerCase)
-//                        || Objects.equals(memberId, memberNameLowerCase);
-//            }
-//
-//        }
+        private static Predicate<ObjectAction> isNotInAnyExistingLayoutGroup(final ObjectSpecification spec) {
+
+            final Set<String> associationNamesAndIds = _Sets.newHashSet();
+
+            spec.streamAssociations(MixedIn.INCLUDED)
+            .forEach(ass->{
+                associationNamesAndIds.add(_Strings.lower(ass.getName()));
+                associationNamesAndIds.add(_Strings.lower(ass.getId()));
+            });
+
+            return (ObjectAction objectAction) -> {
+
+                val layoutGroupFacet = objectAction.getFacet(LayoutGroupFacet.class);
+                if (layoutGroupFacet == null) {
+                    return true;
+                }
+                val layoutGroupId = layoutGroupFacet.getGroupId();
+                if (_Strings.isNullOrEmpty(layoutGroupId)) {
+                    return true;
+                }
+                return !associationNamesAndIds.contains(layoutGroupId.toLowerCase());
+            };
+        }
 
         private static class ChoicesFrom implements Predicate<ObjectAction> {
             private final @NonNull String memberId;
@@ -514,47 +525,7 @@ public interface ObjectAction extends ObjectMember {
             };
         }
 
-        private static Predicate<ObjectAction> isSameLayoutGroup(ObjectAssociation association) {
-            final String assocName = association.getName();
-            final String assocId = association.getId();
-            return (ObjectAction objectAction) -> {
-
-                val layoutGroupFacet = objectAction.getFacet(LayoutGroupFacet.class);
-                if (layoutGroupFacet == null) {
-                    return false;
-                }
-                val fieldSetId = layoutGroupFacet.getGroupId();
-                if (_Strings.isNullOrEmpty(fieldSetId)) {
-                    return false;
-                }
-                return fieldSetId.equalsIgnoreCase(assocName)
-                        || fieldSetId.equalsIgnoreCase(assocId);
-            };
-        }
-
-        private static Predicate<ObjectAction> isNotInAnyLayoutGroup(final ObjectSpecification spec) {
-
-            final Set<String> associationNamesAndIds = _Sets.newHashSet();
-
-            spec.streamAssociations(MixedIn.INCLUDED)
-            .forEach(ass->{
-                associationNamesAndIds.add(_Strings.lower(ass.getName()));
-                associationNamesAndIds.add(_Strings.lower(ass.getId()));
-            });
-
-            return (ObjectAction objectAction) -> {
 
-                val layoutGroupFacet = objectAction.getFacet(LayoutGroupFacet.class);
-                if (layoutGroupFacet == null) {
-                    return true;
-                }
-                val fieldSetId = layoutGroupFacet.getGroupId();
-                if (_Strings.isNullOrEmpty(fieldSetId)) {
-                    return true;
-                }
-                return !associationNamesAndIds.contains(fieldSetId.toLowerCase());
-            };
-        }
     }
 
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java
index bfca18f..9e280f0 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java
@@ -104,7 +104,7 @@ implements
         final OneToManyAssociation collection = managedCollection.getCollection();
         val associatedActions = managedCollection.getOwner().getSpecification()
                 .streamRuntimeActions(MixedIn.INCLUDED)
-                .filter(ObjectAction.Predicates.associatedWith(collection))
+                .filter(ObjectAction.Predicates.isSameLayoutGroupAs(collection))
                 .sorted(this::deweyOrderCompare)
                 .collect(Can.toCan());
         return associatedActions;