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 2013/09/03 09:23:50 UTC
[4/7] git commit: ISIS-503: inlining methods, simplifying
ISIS-503: inlining methods, simplifying
DeweyOrderSet now acts on IdentifiedHolder, rather than FacetedMethod.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/c8cd5337
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/c8cd5337
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/c8cd5337
Branch: refs/heads/master
Commit: c8cd533721a147c46dcdb948d8cdf632673dd5ea
Parents: 04662a6
Author: Dan Haywood <da...@apache.org>
Authored: Tue Sep 3 07:03:01 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Tue Sep 3 07:03:01 2013 +0100
----------------------------------------------------------------------
.../core/metamodel/layout/DeweyOrderSet.java | 46 ++++-------
.../MemberIdentifierComparator.java | 5 +-
.../dflt/ObjectSpecificationDefault.java | 81 +++++++-------------
.../ordering/memberorder/DeweyOrderSetTest.java | 17 ++--
4 files changed, 56 insertions(+), 93 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/c8cd5337/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
index 25ab33f..1b69237 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/DeweyOrderSet.java
@@ -33,6 +33,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberIdentifierComparator;
@@ -73,25 +75,25 @@ import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderCompara
*/
public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object> {
- public static DeweyOrderSet createOrderSet(final List<FacetedMethod> facetedMethods) {
+ public static DeweyOrderSet createOrderSet(final List<? extends IdentifiedHolder> facetedMethods) {
- final SortedMap<String, SortedSet<FacetedMethod>> sortedMembersByGroup = Maps.newTreeMap();
- final SortedSet<FacetedMethod> nonAnnotatedGroup = Sets.newTreeSet(new MemberIdentifierComparator());
+ final SortedMap<String, SortedSet<IdentifiedHolder>> sortedMembersByGroup = Maps.newTreeMap();
+ final SortedSet<IdentifiedHolder> nonAnnotatedGroup = Sets.newTreeSet(new MemberIdentifierComparator());
// spin over all the members and put them into a Map of SortedSets
// any non-annotated members go into additional nonAnnotatedGroup set.
- for (final FacetedMethod facetedMethod : facetedMethods) {
+ for (final IdentifiedHolder facetedMethod : facetedMethods) {
final MemberOrderFacet memberOrder = facetedMethod.getFacet(MemberOrderFacet.class);
if (memberOrder == null) {
nonAnnotatedGroup.add(facetedMethod);
continue;
}
- final SortedSet<FacetedMethod> sortedMembersForGroup = getSortedSet(sortedMembersByGroup, memberOrder.name());
+ final SortedSet<IdentifiedHolder> sortedMembersForGroup = getSortedSet(sortedMembersByGroup, memberOrder.name());
sortedMembersForGroup.add(facetedMethod);
}
// add the non-annotated group to the first "" group.
- final SortedSet<FacetedMethod> defaultSet = getSortedSet(sortedMembersByGroup, "");
+ final SortedSet<IdentifiedHolder> defaultSet = getSortedSet(sortedMembersByGroup, "");
defaultSet.addAll(nonAnnotatedGroup);
// create OrderSets, wiring up parents and children.
@@ -158,11 +160,10 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
* @param groupName
* @return
*/
- private static SortedSet<FacetedMethod> getSortedSet(final SortedMap<String, SortedSet<FacetedMethod>> sortedMembersByGroup, final String groupName) {
- SortedSet<FacetedMethod> sortedMembersForGroup;
- sortedMembersForGroup = sortedMembersByGroup.get(groupName);
+ private static SortedSet<IdentifiedHolder> getSortedSet(final SortedMap<String, SortedSet<IdentifiedHolder>> sortedMembersByGroup, final String groupName) {
+ SortedSet<IdentifiedHolder> sortedMembersForGroup = sortedMembersByGroup.get(groupName);
if (sortedMembersForGroup == null) {
- sortedMembersForGroup = new TreeSet<FacetedMethod>(new MemberOrderComparator(true));
+ sortedMembersForGroup = new TreeSet<IdentifiedHolder>(new MemberOrderComparator(true));
sortedMembersByGroup.put(groupName, sortedMembersForGroup);
}
return sortedMembersForGroup;
@@ -202,8 +203,6 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
* <p>
* For example, if supplied <tt>abc,def,ghi</tt> in the constructor, then
* this will return <tt>ghi</tt>.
- *
- * @return
*/
public String getGroupName() {
return groupName;
@@ -216,8 +215,6 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
* <p>
* For example, if supplied <tt>abc,def,ghi</tt> in the constructor, then
* this will return the same string <tt>abc,def,ghi</tt>.
- *
- * @return
*/
public String getGroupFullName() {
return groupFullName;
@@ -231,8 +228,6 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
* <p>
* For example, if supplied <tt>abc,def,ghi</tt> in the constructor, then
* this will return <tt>abc,def</tt>.
- *
- * @return
*/
public String getGroupPath() {
return groupPath;
@@ -240,9 +235,6 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
/**
* Splits name by comma, then title case the last component.
- *
- * @param groupFullName
- * @return
*/
private static String deriveGroupName(final String groupFullName) {
final StringTokenizer tokens = new StringTokenizer(groupFullName, ",", false);
@@ -260,10 +252,7 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
}
/**
- * Everything upto the last comma, else empty string if none.
- *
- * @param groupFullName
- * @return
+ * Everything up to the last comma, else empty string if none.
*/
private static String deriveGroupPath(final String groupFullName) {
final int lastComma = groupFullName.lastIndexOf(",");
@@ -301,8 +290,6 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
/**
* Returns a copy of the elements, in sequence.
- *
- * @return
*/
public List<Object> elementList() {
return new ArrayList<Object>(elements);
@@ -327,7 +314,7 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
}
}
- // ///////////////////////// compareTo //////////////////////
+ // ///////////////////////// reorderChildren //////////////////////
public void reorderChildren(List<String> requiredOrder) {
final LinkedHashMap<String,DeweyOrderSet> orderSets = Maps.newLinkedHashMap();
@@ -360,10 +347,9 @@ public class DeweyOrderSet implements Comparable<DeweyOrderSet>, Iterable<Object
}
-
-
-
- // ///////////////////////// compareTo //////////////////////
+ // //////////////////////////////////////
+ // compareTo, equals, hashCode, toString
+ // //////////////////////////////////////
/**
* Natural ordering is to compare by {@link #getGroupFullName()}.
http://git-wip-us.apache.org/repos/asf/isis/blob/c8cd5337/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberIdentifierComparator.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberIdentifierComparator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberIdentifierComparator.java
index a098e9f..b9aa154 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberIdentifierComparator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/memberorderfacet/MemberIdentifierComparator.java
@@ -23,18 +23,19 @@ import java.io.Serializable;
import java.util.Comparator;
import org.apache.isis.applib.Identifier;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
/**
* Compares {@link FacetedMethod}) by {@link FacetedMethod#getIdentifier()}
*
*/
-public class MemberIdentifierComparator implements Comparator<FacetedMethod>, Serializable {
+public class MemberIdentifierComparator implements Comparator<IdentifiedHolder>, Serializable {
private static final long serialVersionUID = 1L;
@Override
- public int compare(final FacetedMethod o1, final FacetedMethod o2) {
+ public int compare(final IdentifiedHolder o1, final IdentifiedHolder o2) {
final Identifier identifier1 = o1.getIdentifier();
final Identifier identifier2 = o2.getIdentifier();
return identifier1.compareTo(identifier2);
http://git-wip-us.apache.org/repos/asf/isis/blob/c8cd5337/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index 89ec23f..37b264c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -46,6 +46,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.ImperativeFacetUtils;
@@ -181,13 +182,27 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
final List<FacetedMethod> actionFacetedMethods = facetedMethodsBuilder.getActionFacetedMethods(properties);
if(isNotIntrospected()) {
- final DeweyOrderSet associationOrderSet = createAssociationOrderSetFor(this, associationFacetedMethods);
- updateAssociations(asFlattenedAssociations(associationOrderSet));
+ final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(associationFacetedMethods);
+ final MemberGroupLayoutFacet memberGroupLayoutFacet = this.getFacet(MemberGroupLayoutFacet.class);
+
+ if(memberGroupLayoutFacet != null) {
+ final List<String> groupOrder = Lists.newArrayList();
+ groupOrder.addAll(memberGroupLayoutFacet.getLeft());
+ groupOrder.addAll(memberGroupLayoutFacet.getMiddle());
+ groupOrder.addAll(memberGroupLayoutFacet.getRight());
+
+ orderSet.reorderChildren(groupOrder);
+ }
+ final List<ObjectAssociation> associations = Lists.newArrayList();
+ convertToAssociations(orderSet, associations);
+ updateAssociations(associations);
}
if(isNotIntrospected()) {
- final DeweyOrderSet actionOrderSet = createActionOrderSetFor(this, actionFacetedMethods);
- updateObjectActions(asObjectActions(actionOrderSet));
+ final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(actionFacetedMethods);
+ final List<ObjectAction> actions = Lists.newArrayList();
+ convertToObjectActions(orderSet, actions);
+ updateObjectActions(actions);
}
if(isNotIntrospected()) {
@@ -199,33 +214,6 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
}
}
- private static DeweyOrderSet createAssociationOrderSetFor(final ObjectSpecification spec, final List<FacetedMethod> associationMethods) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("MemberLayoutArrangerUsingMemberOrderFacet: createAssociationOrderSetFor " + spec.getFullIdentifier());
- }
-
- final DeweyOrderSet orderSet = DeweyOrderSet.createOrderSet(associationMethods);
- final MemberGroupLayoutFacet memberGroupLayoutFacet = spec.getFacet(MemberGroupLayoutFacet.class);
-
- if(memberGroupLayoutFacet != null) {
- final List<String> groupOrder = Lists.newArrayList();
- groupOrder.addAll(memberGroupLayoutFacet.getLeft());
- groupOrder.addAll(memberGroupLayoutFacet.getMiddle());
- groupOrder.addAll(memberGroupLayoutFacet.getRight());
-
- orderSet.reorderChildren(groupOrder);
- }
- return orderSet;
- }
-
- private static DeweyOrderSet createActionOrderSetFor(final ObjectSpecification spec, final List<FacetedMethod> actionFacetedMethodList) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("MemberLayoutArrangerUsingMemberOrderFacet: createActionOrderSetFor " + spec.getFullIdentifier());
- }
-
- return DeweyOrderSet.createOrderSet(actionFacetedMethodList);
- }
-
private boolean isNotIntrospected() {
return !(getIntrospectionState() == IntrospectionState.INTROSPECTED);
}
@@ -244,54 +232,41 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
}
}
- private List<ObjectAssociation> asFlattenedAssociations(final DeweyOrderSet orderSet) {
- if (orderSet == null) {
- return null;
- }
- final List<ObjectAssociation> associations = Lists.newArrayList();
- addAssociations(orderSet, associations);
-
- return associations;
- }
-
- private void addAssociations(final DeweyOrderSet orderSet, final List<ObjectAssociation> associations) {
+ private void convertToAssociations(final DeweyOrderSet orderSet, final List<ObjectAssociation> associationsToAppendTo) {
for (final Object element : orderSet) {
if (element instanceof FacetedMethod) {
final FacetedMethod facetMethod = (FacetedMethod) element;
if (facetMethod.getFeatureType().isCollection()) {
- associations.add(createCollection(facetMethod));
+ associationsToAppendTo.add(createCollection(facetMethod));
} else if (facetMethod.getFeatureType().isProperty()) {
- associations.add(createProperty(facetMethod));
+ associationsToAppendTo.add(createProperty(facetMethod));
}
} else if (element instanceof DeweyOrderSet) {
// just flatten.
DeweyOrderSet childOrderSet = (DeweyOrderSet) element;
- addAssociations(childOrderSet, associations);
+ convertToAssociations(childOrderSet, associationsToAppendTo);
} else {
throw new UnknownTypeException(element);
}
}
}
- private List<ObjectAction> asObjectActions(final DeweyOrderSet orderSet) {
- if (orderSet == null) {
- return null;
- }
- final List<ObjectAction> actions = Lists.newArrayList();
+ private void convertToObjectActions(final DeweyOrderSet orderSet, final List<ObjectAction> actionsToAppendTo) {
for (final Object element : orderSet) {
if (element instanceof FacetedMethod) {
final FacetedMethod facetedMethod = (FacetedMethod) element;
if (facetedMethod.getFeatureType().isAction()) {
- actions.add(createAction(facetedMethod));
+ actionsToAppendTo.add(createAction(facetedMethod));
}
} else if (element instanceof DeweyOrderSet) {
final DeweyOrderSet set = ((DeweyOrderSet) element);
- actions.addAll(asObjectActions(set));
+ final List<ObjectAction> actions = Lists.newArrayList();
+ convertToObjectActions(set, actions);
+ actionsToAppendTo.addAll(actions);
} else {
throw new UnknownTypeException(element);
}
}
- return actions;
}
private OneToOneAssociationImpl createProperty(final FacetedMethod facetedMethod) {
http://git-wip-us.apache.org/repos/asf/isis/blob/c8cd5337/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java
index 38733a0..8ac5694 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/ordering/memberorder/DeweyOrderSetTest.java
@@ -26,6 +26,7 @@ import junit.framework.TestSuite;
import com.google.common.collect.ImmutableList;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.layout.DeweyOrderSet;
import org.apache.isis.core.progmodel.facets.members.order.MemberOrderFacetAnnotation;
@@ -64,14 +65,14 @@ public class DeweyOrderSetTest extends TestCase {
}
}
- private final FacetedMethod lastNameMember = FacetedMethod.createForProperty(Customer.class, "Last Name");
- private final FacetedMethod firstNameMember = FacetedMethod.createForProperty(Customer.class, "First Name");
- private final FacetedMethod houseNumberMember = FacetedMethod.createForProperty(Customer.class, "House Number");
- private final FacetedMethod streetNameMember = FacetedMethod.createForProperty(Customer.class, "Street Name");
- private final FacetedMethod postalTownMember = FacetedMethod.createForProperty(Customer.class, "Postal Town");
- private final List<FacetedMethod> lastNameAndFirstName = ImmutableList.of(lastNameMember, firstNameMember);
- private final List<FacetedMethod> nameAndAddressMembers = ImmutableList.of(lastNameMember, firstNameMember, houseNumberMember, streetNameMember, postalTownMember);
- private final List<FacetedMethod> lastNameFirstNameAndPostalTown = ImmutableList.of(lastNameMember, firstNameMember, postalTownMember);
+ private final IdentifiedHolder lastNameMember = FacetedMethod.createForProperty(Customer.class, "Last Name");
+ private final IdentifiedHolder firstNameMember = FacetedMethod.createForProperty(Customer.class, "First Name");
+ private final IdentifiedHolder houseNumberMember = FacetedMethod.createForProperty(Customer.class, "House Number");
+ private final IdentifiedHolder streetNameMember = FacetedMethod.createForProperty(Customer.class, "Street Name");
+ private final IdentifiedHolder postalTownMember = FacetedMethod.createForProperty(Customer.class, "Postal Town");
+ private final List<IdentifiedHolder> lastNameAndFirstName = ImmutableList.of(lastNameMember, firstNameMember);
+ private final List<IdentifiedHolder> nameAndAddressMembers = ImmutableList.of(lastNameMember, firstNameMember, houseNumberMember, streetNameMember, postalTownMember);
+ private final List<IdentifiedHolder> lastNameFirstNameAndPostalTown = ImmutableList.of(lastNameMember, firstNameMember, postalTownMember);
@Override
protected void setUp() {