You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/03/03 20:47:34 UTC
[41/50] [abbrv] isis git commit: ISIS-993: ensure that actions
associated to properties/collections/fieldsets are added in the correct order
when normalizing grid.
ISIS-993: ensure that actions associated to properties/collections/fieldsets are added in the correct order when normalizing grid.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/e417a8ab
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/e417a8ab
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/e417a8ab
Branch: refs/heads/master
Commit: e417a8ab5984393394113066a7ad1ea8379bcab2
Parents: e014bf8
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Mon Feb 29 11:10:50 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Feb 29 11:13:43 2016 +0000
----------------------------------------------------------------------
.../bootstrap3/GridNormalizerServiceBS3.java | 31 ++++++++++++++++----
.../spec/feature/ObjectAssociation.java | 4 +++
.../metamodel/spec/feature/ObjectMember.java | 24 +++++++++++++++
.../specimpl/ObjectSpecificationAbstract.java | 3 +-
4 files changed, 55 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/e417a8ab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
index c57212a..0f7fa85 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridNormalizerServiceBS3.java
@@ -62,6 +62,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -423,7 +424,7 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
return oneToManyAssociationById.get(collectionId);
}
})
- .toSortedList(ObjectAssociation.Comparators.byMemberOrderSequence())
+ .toSortedList(ObjectMember.Comparators.byMemberOrderSequence())
);
final ImmutableList<String> sortedMissingCollectionIds = FluentIterable.from(sortedCollections)
@@ -447,7 +448,21 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
final List<String> associatedActionIds = Lists.newArrayList();
- FluentIterable.from(possiblyMissingActionIds)
+ List<ObjectAction> sortedPossiblyMissingActions = Lists.newArrayList(
+ FluentIterable.from(possiblyMissingActionIds)
+ .transform(new Function<String, ObjectAction>() {
+ @Nullable @Override public ObjectAction apply(@Nullable final String actionId) {
+ return objectActionById.get(actionId);
+ }
+ })
+ .toSortedList(ObjectMember.Comparators.byMemberOrderSequence()));
+
+ List<String> sortedPossiblyMissingActionIds =
+ FluentIterable.from(sortedPossiblyMissingActions)
+ .transform(ObjectMember.Functions.getId())
+ .toList();
+
+ FluentIterable.from(sortedPossiblyMissingActionIds)
.forEach(
new Consumer<String>() {
@Override
@@ -523,7 +538,7 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
// ... the missing actions are those in the second tuple, excluding those associated (via @MemberOrder#name)
// to a property or collection.
- final List<String> missingActionIds = Lists.newArrayList(possiblyMissingActionIds);
+ final List<String> missingActionIds = Lists.newArrayList(sortedPossiblyMissingActionIds);
missingActionIds.removeAll(associatedActionIds);
for (String surplusActionId : surplusActionIds) {
@@ -533,7 +548,7 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
if(!missingActionIds.isEmpty()) {
final BS3Col bs3Col = colForUnreferencedActionsRef.get();
if(bs3Col != null) {
- addActionsTo(bs3Col, missingActionIds);
+ addActionsTo(bs3Col, missingActionIds, actionLayoutDataById);
} else {
final FieldSet fieldSet = fieldSetForUnreferencedActionsRef.get();
if(fieldSet != null) {
@@ -587,14 +602,18 @@ public class GridNormalizerServiceBS3 extends GridNormalizerServiceAbstract<BS3G
protected void addActionsTo(
final BS3Col bs3Col,
- final List<String> actionIds) {
+ final List<String> actionIds,
+ final LinkedHashMap<String, ActionLayoutData> actionLayoutDataById) {
for (String actionId : actionIds) {
List<ActionLayoutData> actions = bs3Col.getActions();
if(actions == null) {
actions = Lists.newArrayList();
bs3Col.setActions(actions);
}
- actions.add(new ActionLayoutData(actionId));
+ final ActionLayoutData actionLayoutData = new ActionLayoutData(actionId);
+ actions.add(actionLayoutData);
+ actionLayoutDataById.put(actionId, actionLayoutData);
+ actionLayoutData.setOwner(bs3Col);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e417a8ab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index ae31903..922144b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -410,6 +410,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
// //////////////////////////////////////////////////////
public static class Comparators {
+ /**
+ * Use {@link ObjectMember.Comparators#byMemberOrderSequence()} instead.
+ */
+ @Deprecated
public static Comparator<ObjectAssociation> byMemberOrderSequence() {
return new Comparator<ObjectAssociation>() {
private final DeweyOrderComparator deweyOrderComparator = new DeweyOrderComparator();
http://git-wip-us.apache.org/repos/asf/isis/blob/e417a8ab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
index 9d8fa15..147cc61 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectMember.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.spec.feature;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
@@ -33,6 +34,8 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
+import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
+import org.apache.isis.core.metamodel.util.DeweyOrderComparator;
/**
* Provides reflective access to an action or a field on a domain object.
@@ -185,4 +188,25 @@ public interface ObjectMember extends ObjectFeature {
}
}
+ // //////////////////////////////////////////////////////
+ // Comparators
+ // //////////////////////////////////////////////////////
+
+ public static class Comparators {
+ public static Comparator<ObjectMember> byMemberOrderSequence() {
+ return new Comparator<ObjectMember>() {
+ private final DeweyOrderComparator deweyOrderComparator = new DeweyOrderComparator();
+ @Override
+ public int compare(final ObjectMember o1, final ObjectMember o2) {
+ final MemberOrderFacet o1Facet = o1.getFacet(MemberOrderFacet.class);
+ final MemberOrderFacet o2Facet = o2.getFacet(MemberOrderFacet.class);
+ return o1Facet == null? +1:
+ o2Facet == null? -1:
+ deweyOrderComparator.compare(o1Facet.sequence(), o2Facet.sequence());
+ }
+ };
+ }
+
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/e417a8ab/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
index 708e700..68eaf9b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectSpecificationAbstract.java
@@ -95,6 +95,7 @@ import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.ObjectMemberDependencies;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -712,7 +713,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return Lists.newArrayList(
FluentIterable.from(allAssociations)
.filter(Filters.asPredicate(filter))
- .toSortedList(ObjectAssociation.Comparators.byMemberOrderSequence())
+ .toSortedList(ObjectMember.Comparators.byMemberOrderSequence())
);
}