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;