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 2014/05/23 20:18:35 UTC
[1/2] git commit: ISIS-777: computing of object actions/associations
should now be thread-safe
Repository: isis
Updated Branches:
refs/heads/master 75059c44a -> bf63ac195
ISIS-777: computing of object actions/associations should now be thread-safe
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d5cf401f
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d5cf401f
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d5cf401f
Branch: refs/heads/master
Commit: d5cf401fe9547b464a11bf7919612a0b96512cfe
Parents: 75059c4
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri May 23 19:16:28 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri May 23 19:16:28 2014 +0100
----------------------------------------------------------------------
.../metamodel/spec/feature/ObjectAction.java | 84 ++++++++++--
.../spec/feature/ObjectAssociation.java | 91 ++++++++++++-
.../specimpl/ObjectSpecificationAbstract.java | 128 ++++++++++---------
.../dflt/ObjectSpecificationDefault.java | 2 +-
4 files changed, 233 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/d5cf401f/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAction.java
----------------------------------------------------------------------
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 9c05b51..881ef75 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
@@ -20,9 +20,8 @@
package org.apache.isis.core.metamodel.spec.feature;
import java.util.List;
-
+import com.google.common.base.Predicate;
import com.google.common.base.Strings;
-
import org.apache.isis.applib.annotation.ActionSemantics;
import org.apache.isis.applib.annotation.Bulk;
import org.apache.isis.applib.annotation.When;
@@ -205,6 +204,47 @@ public interface ObjectAction extends ObjectMember {
// //////////////////////////////////////////////////////
+ // Predicates
+ // //////////////////////////////////////////////////////
+
+ public static final class Predicates {
+
+ private Predicates(){}
+
+ public static final Predicate<ObjectAction> VISIBLE_AT_LEAST_SOMETIMES =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.VISIBLE_AT_LEAST_SOMETIMES);
+
+ public static Predicate<ObjectAction> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.dynamicallyVisible(session, target, where));
+ }
+
+ public static Predicate<ObjectAction> withId(final String actionId) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.withId(actionId));
+ }
+
+ public static Predicate<ObjectAction> withNoValidationRules() {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.withNoValidationRules());
+ }
+
+ public static Predicate<ObjectAction> ofType(final ActionType type) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.ofType(type));
+ }
+
+ public static Predicate<ObjectAction> bulk() {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.bulk());
+ }
+
+ public static Predicate<ObjectAction> notBulkOnly() {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.notBulkOnly());
+ }
+
+ public static Predicate<ObjectAction> memberOrderOf(ObjectAssociation association) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.memberOrderOf(association));
+ }
+ }
+
+
+ // //////////////////////////////////////////////////////
// Filters
// //////////////////////////////////////////////////////
@@ -212,8 +252,11 @@ public interface ObjectAction extends ObjectMember {
public static final class Filters {
private Filters(){}
-
- @SuppressWarnings("deprecation")
+
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static final Filter<ObjectAction> VISIBLE_AT_LEAST_SOMETIMES = new Filter<ObjectAction>() {
@Override
public boolean accept(final ObjectAction action) {
@@ -222,7 +265,10 @@ public interface ObjectAction extends ObjectMember {
}
};
- @SuppressWarnings("deprecation")
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAction> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
return new Filter<ObjectAction>() {
@Override
@@ -233,7 +279,10 @@ public interface ObjectAction extends ObjectMember {
};
}
- @SuppressWarnings("deprecation")
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAction> withId(final String actionId) {
return new Filter<ObjectAction>(){
@Override
@@ -243,7 +292,10 @@ public interface ObjectAction extends ObjectMember {
};
}
- @SuppressWarnings("deprecation")
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAction> withNoValidationRules() {
return new Filter<ObjectAction>(){
@Override
@@ -253,7 +305,10 @@ public interface ObjectAction extends ObjectMember {
}};
}
- @SuppressWarnings("deprecation")
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAction> ofType(final ActionType type) {
return new Filter<ObjectAction>(){
@Override
@@ -263,7 +318,10 @@ public interface ObjectAction extends ObjectMember {
};
}
- @SuppressWarnings("deprecation")
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAction> bulk() {
return new Filter<ObjectAction>(){
@@ -288,8 +346,11 @@ public interface ObjectAction extends ObjectMember {
return true;
}};
}
-
- @SuppressWarnings("deprecation")
+
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAction> notBulkOnly() {
return new Filter<ObjectAction>(){
@@ -321,6 +382,5 @@ public interface ObjectAction extends ObjectMember {
}
};
}
-
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d5cf401f/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 8790990..39c80a5 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
@@ -145,6 +145,62 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
}
};
}
+
+ /**
+ * Only fields that are for properties (ie 1:1 associations)
+ */
+ public final static Predicate<ObjectAssociation> PROPERTIES =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.PROPERTIES);
+
+ /**
+ * Only fields that are for reference properties (ie 1:1 associations)
+ */
+ public final static Predicate<ObjectAssociation> REFERENCE_PROPERTIES =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.REFERENCE_PROPERTIES);
+
+ /**
+ * Only fields that are for properties (ie 1:1 associations)
+ */
+ public final static Predicate<ObjectAssociation> WHERE_VISIBLE_IN_COLLECTION_TABLE =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.WHERE_VISIBLE_IN_COLLECTION_TABLE);
+
+ /**
+ * Only fields that are for properties (ie 1:1 associations)
+ */
+ public final static Predicate<ObjectAssociation> WHERE_VISIBLE_IN_STANDALONE_TABLE =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.WHERE_VISIBLE_IN_STANDALONE_TABLE);
+
+ /**
+ * All fields (that is, excludes out nothing).
+ */
+ public final static Predicate<ObjectAssociation> ALL =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.ALL);
+
+ /**
+ * Only fields that are for collections (ie 1:m associations)
+ */
+ public final static Predicate<ObjectAssociation> COLLECTIONS =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.COLLECTIONS);
+
+ /**
+ * Only properties that are visible statically, ie have not been
+ * unconditionally hidden at compile time.
+ */
+ public static final Predicate<ObjectAssociation> VISIBLE_AT_LEAST_SOMETIMES =
+ org.apache.isis.applib.filter.Filters.asPredicate(Filters.VISIBLE_AT_LEAST_SOMETIMES);
+
+ public static final Predicate<ObjectAssociation> staticallyVisible(final Where context) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.staticallyVisible(context));
+ }
+
+ public static final Predicate<ObjectAssociation> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.dynamicallyVisible(session, target, where));
+ }
+
+ public static final Predicate<ObjectAssociation> enabled(final AuthenticationSession session, final ObjectAdapter adapter, final Where where) {
+ return org.apache.isis.applib.filter.Filters.asPredicate(Filters.enabled(session, adapter, where));
+ }
+
}
// //////////////////////////////////////////////////////
@@ -158,7 +214,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only fields that are for properties (ie 1:1 associations)
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public final static Filter<ObjectAssociation> PROPERTIES = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation association) {
@@ -168,7 +227,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only fields that are for reference properties (ie 1:1 associations)
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public final static Filter<ObjectAssociation> REFERENCE_PROPERTIES = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation association) {
@@ -179,7 +241,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only fields that are for properties (ie 1:1 associations)
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public final static Filter<ObjectAssociation> WHERE_VISIBLE_IN_COLLECTION_TABLE = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation association) {
@@ -190,7 +255,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only fields that are for properties (ie 1:1 associations)
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public final static Filter<ObjectAssociation> WHERE_VISIBLE_IN_STANDALONE_TABLE = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation association) {
@@ -201,7 +269,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Returns all fields (that is, filters out nothing).
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public final static Filter<ObjectAssociation> ALL = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation property) {
@@ -211,7 +282,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only fields that are for collections (ie 1:m associations)
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public final static Filter<ObjectAssociation> COLLECTIONS = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation property) {
@@ -222,7 +296,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
/**
* Filters only properties that are visible statically, ie have not been
* unconditionally hidden at compile time.
+ *
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
*/
+ @Deprecated
public static final Filter<ObjectAssociation> VISIBLE_AT_LEAST_SOMETIMES = new Filter<ObjectAssociation>() {
@Override
public boolean accept(final ObjectAssociation property) {
@@ -231,6 +308,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
}
};
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static final Filter<ObjectAssociation> staticallyVisible(final Where context) {
return new Filter<ObjectAssociation>() {
@Override
@@ -244,7 +325,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
};
}
-
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAssociation> dynamicallyVisible(final AuthenticationSession session, final ObjectAdapter target, final Where where) {
return new Filter<ObjectAssociation>() {
@Override
@@ -255,7 +339,10 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
};
}
-
+ /**
+ * @deprecated -use {@link com.google.common.base.Predicate equivalent}
+ */
+ @Deprecated
public static Filter<ObjectAssociation> enabled(final AuthenticationSession session, final ObjectAdapter adapter, final Where where) {
return new Filter<ObjectAssociation>() {
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/d5cf401f/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 f05813d..64e8ccb 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
@@ -19,15 +19,12 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
+import java.util.*;
import com.google.common.base.Function;
-import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.isis.applib.Identifier;
@@ -125,10 +122,21 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
private final List<ObjectAssociation> associations = Lists.newArrayList();
private final List<ObjectAction> objectActions = Lists.newArrayList();
-
+ // partitions and caches objectActions by type; updated in sortCacheAndUpdateActions()
+ private final Map<ActionType, List<ObjectAction>> objectActionsByType = createObjectActionsByType();
+
+ private static Map<ActionType, List<ObjectAction>> createObjectActionsByType() {
+ final Map<ActionType, List<ObjectAction>> map = Maps.newHashMap();
+ for (final ActionType type : ActionType.values()) {
+ map.put(type, Lists.<ObjectAction>newArrayList());
+ }
+ return map;
+ }
+
private boolean contributeeAssociationsAdded;
private boolean contributeeActionsAdded;
-
+
+
private final List<ObjectSpecification> interfaces = Lists.newArrayList();
private final SubclassList subclasses = new SubclassList();
@@ -210,7 +218,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
/**
* As provided explicitly within the
- * {@link #IntrospectableSpecificationAbstract(Class, String, SpecificationContext)
+ * {@link #ObjectSpecificationAbstract(Class, String, org.apache.isis.core.metamodel.spec.SpecificationContext, org.apache.isis.core.metamodel.spec.feature.ObjectMemberContext)}
* constructor}.
*
* <p>
@@ -222,11 +230,6 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
return correspondingClass;
}
- /**
- * As provided explicitly within the
- * {@link #IntrospectableSpecificationAbstract(Class, String, SpecificationContext)
- * constructor}.
- */
@Override
public String getShortIdentifier() {
return shortName;
@@ -249,8 +252,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
/**
- * Only if {@link #setIntrospected(boolean)} has been called (should be
- * called within {@link #updateFromFacetValues()}.
+ * Only if {@link #setIntrospectionState(org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.IntrospectionState)}
+ * has been called (should be called within {@link #updateFromFacetValues()}.
*/
public IntrospectionState getIntrospectionState() {
return introspected;
@@ -327,14 +330,24 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
protected void sortAndUpdateAssociations(final List<ObjectAssociation> associations) {
final List<ObjectAssociation> orderedAssociations = sortAssociations(associations);
- this.associations.clear();
- this.associations.addAll(orderedAssociations);
+ synchronized (this.associations) {
+ this.associations.clear();
+ this.associations.addAll(orderedAssociations);
+ }
}
- protected void sortAndUpdateActions(final List<ObjectAction> objectActions) {
+ protected void sortCacheAndUpdateActions(final List<ObjectAction> objectActions) {
final List<ObjectAction> orderedActions = sortActions(objectActions);
- this.objectActions.clear();
- this.objectActions.addAll(orderedActions);
+ synchronized (this.objectActions){
+ this.objectActions.clear();
+ this.objectActions.addAll(orderedActions);
+
+ for (final ActionType type : ActionType.values()) {
+ final List<ObjectAction> objectActionForType = objectActionsByType.get(type);
+ objectActionForType.clear();
+ objectActionForType.addAll(Collections2.filter(objectActions, ObjectAction.Predicates.ofType(type)));
+ }
+ }
}
// //////////////////////////////////////////////////////////////////////
@@ -458,8 +471,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
// //////////////////////////////////////////////////////////////////////
/**
- * Expect to be populated using {@link #setSingularName(String)}, but has
- * default name as well.
+ * The name according to any available {@link org.apache.isis.core.metamodel.facets.named.NamedFacet},
+ * but falling back to {@link #getFullIdentifier()} otherwise.
*/
@Override
public String getSingularName() {
@@ -468,8 +481,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
/**
- * Expect to be populated using {@link #setPluralName(String)} but has
- * default name as well.
+ * The pluralized name according to any available {@link org.apache.isis.core.metamodel.facets.object.plural.PluralFacet},
+ * else <tt>null</tt>.
*/
@Override
public String getPluralName() {
@@ -478,8 +491,8 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
}
/**
- * Expect to be populated using {@link #setDescribedAs(String)} but has
- * default name as well.
+ * The description according to any available {@link org.apache.isis.core.metamodel.facets.object.plural.PluralFacet},
+ * else empty string (<tt>""</tt>).
*/
@Override
public String getDescription() {
@@ -641,17 +654,20 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
// //////////////////////////////////////////////////////////////////////
@Override
- public List<ObjectAssociation> getAssociations(final Contributed contributee) {
- if(contributee.isIncluded() && !contributeeAssociationsAdded) {
- List<ObjectAssociation> associations = Lists.newArrayList(this.associations);
- final List<ObjectAssociation> contributeeAssociations = createContributeeAssociations();
- associations.addAll(contributeeAssociations);
- sortAndUpdateAssociations(associations);
- contributeeAssociationsAdded = true;
+ public List<ObjectAssociation> getAssociations(final Contributed contributed) {
+ // the "contributed.isIncluded()" guard is required because we cannot do this too early;
+ // there must be a session available
+ if(contributed.isIncluded() && !contributeeAssociationsAdded) {
+ synchronized (this.associations) {
+ List<ObjectAssociation> associations = Lists.newArrayList(this.associations);
+ associations.addAll(createContributeeAssociations());
+ sortAndUpdateAssociations(associations);
+ contributeeAssociationsAdded = true;
+ }
}
final List<ObjectAssociation> associations = Lists.newArrayList(this.associations);
return Lists.newArrayList(Iterables.filter(
- associations, ContributeeMember.Predicates.regularElse(contributee)));
+ associations, ContributeeMember.Predicates.regularElse(contributed)));
}
@@ -750,34 +766,32 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
final List<ActionType> types,
final Contributed contributed,
final Filter<ObjectAction> filter) {
+
+ // update our list of actions if requesting for contributed actions
+ // and they have not yet been added
+ // the "contributed.isIncluded()" guard is required because we cannot do this too early;
+ // there must be a session available
if(contributed.isIncluded() && !contributeeActionsAdded) {
- final List<ObjectAction> actions = Lists.newArrayList(this.objectActions);
- actions.addAll(createContributeeActions());
- sortAndUpdateActions(actions);
- contributeeActionsAdded = true;
+ synchronized (this.objectActions) {
+ final List<ObjectAction> actions = Lists.newArrayList(this.objectActions);
+ actions.addAll(createContributeeActions());
+ sortCacheAndUpdateActions(actions);
+ contributeeActionsAdded = true;
+ }
}
-
+
final List<ObjectAction> actions = Lists.newArrayList();
for (final ActionType type : types) {
- final Predicate<ObjectAction> predicate =
- Filters.asPredicate(Filters.and(
- ObjectAction.Filters.ofType(type),
- filter));
- for (ObjectAction objectAction : objectActions) {
- if(predicate.apply(objectAction)) {
- actions.add(objectAction);
- }
- }
- // an NPE here somehow???
-// @SuppressWarnings("unchecked")
-// final Collection<ObjectAction> filterActions =
-// Collections2.filter(objectActions, predicate);
-// actions.addAll(filterActions);
+ final Collection<ObjectAction> filterActions =
+ Collections2.filter(objectActionsByType.get(type), Filters.asPredicate(filter));
+ actions.addAll(filterActions);
}
- return Lists.newArrayList(Iterables.filter(
- actions, ContributeeMember.Predicates.regularElse(contributed)));
+ return Lists.newArrayList(
+ Iterables.filter(
+ actions,
+ ContributeeMember.Predicates.regularElse(contributed)));
}
-
+
@Override
public List<ObjectAction> getObjectActions(
final Contributed contributed) {
@@ -1045,7 +1059,7 @@ public abstract class ObjectSpecificationAbstract extends FacetHolderImpl implem
/**
- * @param the number of the parameter that matches, or -1 if none.
+ * @param serviceAction - number of the parameter that matches, or -1 if none.
*/
private int contributeeParameterMatchOf(final ObjectAction serviceAction) {
final List<ObjectActionParameter> params = serviceAction.getParameters();
http://git-wip-us.apache.org/repos/asf/isis/blob/d5cf401f/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 3db9b93..77a4c55 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
@@ -167,7 +167,7 @@ public class ObjectSpecificationDefault extends ObjectSpecificationAbstract impl
if(isNotIntrospected()) {
final List<ObjectAction> actions = createActions(metadataProperties);
- sortAndUpdateActions(actions);
+ sortCacheAndUpdateActions(actions);
}
if(isNotIntrospected()) {
[2/2] git commit: ISIS-776: FixtureScripts#findFixtureScriptFor
Posted by da...@apache.org.
ISIS-776: FixtureScripts#findFixtureScriptFor
... moved up from todo app, also overloaded to search by fixture class name (instead of its qualifed name)
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/bf63ac19
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/bf63ac19
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/bf63ac19
Branch: refs/heads/master
Commit: bf63ac195ec81a8217611f4ee93687e750775d56
Parents: d5cf401
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri May 23 19:18:28 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri May 23 19:18:28 2014 +0100
----------------------------------------------------------------------
.../applib/fixturescripts/FixtureResult.java | 2 ++
.../applib/fixturescripts/FixtureScripts.java | 19 +++++++++++++++++++
.../fixture/todo/ToDoItemsFixturesService.java | 16 +++-------------
3 files changed, 24 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/bf63ac19/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java
index 095327f..647a114 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureResult.java
@@ -20,8 +20,10 @@ package org.apache.isis.applib.fixturescripts;
import org.apache.isis.applib.AbstractViewModel;
import org.apache.isis.applib.annotation.MemberOrder;
+import org.apache.isis.applib.annotation.Paged;
import org.apache.isis.applib.annotation.Title;
+@Paged(500)
public class FixtureResult extends AbstractViewModel {
@Override
http://git-wip-us.apache.org/repos/asf/isis/blob/bf63ac19/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
index fd00004..acb4d7c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScripts.java
@@ -182,6 +182,25 @@ public abstract class FixtureScripts extends AbstractService {
return fixtureScript.validateRun(parameters);
}
+ protected FixtureScript findFixtureScriptFor(String qualifiedName) {
+ List<FixtureScript> fixtureScripts = fixtureScriptList;
+ for (FixtureScript fs : fixtureScripts) {
+ if(fs.getQualifiedName().contains(qualifiedName)) {
+ return fs;
+ }
+ }
+ return null;
+ }
+ protected FixtureScript findFixtureScriptFor(Class<? extends FixtureScript> fixtureScriptClass) {
+ List<FixtureScript> fixtureScripts = fixtureScriptList;
+ for (FixtureScript fs : fixtureScripts) {
+ if(fixtureScriptClass.isAssignableFrom(fs.getClass())) {
+ return fs;
+ }
+ }
+ return null;
+ }
+
// //////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/bf63ac19/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index 5b5722b..914eee8 100644
--- a/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/application/quickstart_wicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -18,6 +18,8 @@
*/
package fixture.todo;
+import fixture.todo.scenarios.RecreateToDoItemsAndCompleteSeveralForCurrent;
+
import java.util.List;
import org.apache.isis.applib.annotation.MemberOrder;
@@ -49,18 +51,6 @@ public class ToDoItemsFixturesService extends FixtureScripts {
@Prototype
@MemberOrder(sequence="20")
public List<FixtureResult> recreateToDoItemsForCurrent() {
- return findFixtureScriptFor("recreate-current").run(null);
- }
- public String disableRecreateToDoItemsForCurrent() {
- return findFixtureScriptFor("recreate-current") == null? "Could not find fixture script 'recreate-current'": null;
- }
- private FixtureScript findFixtureScriptFor(String qualifiedName) {
- List<FixtureScript> fixtureScripts = choices0RunFixtureScript();
- for (FixtureScript fs : fixtureScripts) {
- if(fs.getQualifiedName().contains(qualifiedName)) {
- return fs;
- }
- }
- return null;
+ return findFixtureScriptFor(RecreateToDoItemsAndCompleteSeveralForCurrent.class).run(null);
}
}