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/17 08:44:02 UTC
git commit: ISIS-74: removed BoundedFacet
Updated Branches:
refs/heads/master d82f3d3c7 -> 6d3562286
ISIS-74: removed BoundedFacet
instead, @Bounded implies a ChoicesFacet on the type, from which are derived
PropertyChoicesFacet or ActionParameterChoicesFacet (same as handling of
enums).
Also removed use of deprecated Filter interface in ToDoItem, using guava
Predicate instead.
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/6d356228
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/6d356228
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/6d356228
Branch: refs/heads/master
Commit: 6d35622866ad4b6290892913ea85ce762f707e30
Parents: d82f3d3
Author: Dan Haywood <da...@apache.org>
Authored: Tue Sep 17 07:43:44 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Tue Sep 17 07:43:44 2013 +0100
----------------------------------------------------------------------
.../dnd/tree/ClosedObjectNodeSpecification.java | 7 +-
.../isis/viewer/dnd/tree/TreeDisplayRules.java | 9 +-
.../model/util/ObjectAdapterFunctions.java | 22 +---
.../core/metamodel/adapter/ObjectAdapter.java | 61 +++++++++
.../metamodel/facets/choices/ChoicesFacet.java | 14 +++
.../facets/object/bounded/BoundedFacet.java | 39 ------
.../object/bounded/BoundedFacetUtils.java | 32 -----
.../object/bounded/ChoicesFacetUtils.java | 39 ++++++
.../core/metamodel/spec/ObjectAdapterUtils.java | 36 +++---
.../specloader/ObjectReflectorDefault.java | 4 +-
.../specloader/specimpl/ObjectActionImpl.java | 8 +-
.../specimpl/ObjectActionParameterAbstract.java | 18 ++-
...jectActionParameterParseableContributee.java | 2 +-
.../specimpl/OneToOneAssociationImpl.java | 21 ++--
.../apache/isis/core/metamodel/util/Dump.java | 6 +-
.../object/bounded/BoundedFacetAbstract.java | 75 -----------
.../facets/object/bounded/BoundedFacetImpl.java | 36 ------
.../ChoicesFacetFromBoundedAbstract.java | 124 +++++++++++++++++++
.../BoundedAnnotationFacetFactory.java | 23 ++--
.../annotation/BoundedFacetAnnotation.java | 31 -----
.../ChoicesFacetFromBoundedAnnotation.java | 33 +++++
.../markerifc/BoundedFacetMarkerInterface.java | 31 -----
.../BoundedMarkerInterfaceFacetFactory.java | 17 ++-
...cesFacetFromBoundedFacetMarkerInterface.java | 33 +++++
...acetDerivedFromChoicesFacetFacetFactory.java | 3 +-
...acetDerivedFromChoicesFacetFacetFactory.java | 3 +-
.../BoundedAnnotationFacetFactoryTest.java | 6 +-
.../BoundedMarkerInterfaceFacetFactoryTest.java | 6 +-
.../dom/src/main/java/dom/todo/ToDoItem.java | 33 +++--
29 files changed, 429 insertions(+), 343 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
index 2363173..4a59069 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/ClosedObjectNodeSpecification.java
@@ -23,7 +23,7 @@ import java.util.List;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.spec.feature.Contributed;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
@@ -73,7 +73,10 @@ class ClosedObjectNodeSpecification extends NodeSpecification {
return CAN_OPEN;
}
- if (showObjectContents && fields.get(i).isOneToOneAssociation() && !(BoundedFacetUtils.isBoundedSet(object.getSpecification()))) {
+ // TODO: rather than looking for the ChoicesFacet on the type,
+ // should look for the appropriate PropertyChoicesFacet, ActionParameterChoicesFacet or
+ // PropertyAutoCompleteFacet or ActionParameterAutoCompleteFacet
+ if (showObjectContents && fields.get(i).isOneToOneAssociation() && !(ChoicesFacetUtils.hasChoices(object.getSpecification()))) {
return CAN_OPEN;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/TreeDisplayRules.java
----------------------------------------------------------------------
diff --git a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/TreeDisplayRules.java b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/TreeDisplayRules.java
index 4e4479b..bc5e938 100644
--- a/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/TreeDisplayRules.java
+++ b/component/viewer/dnd/impl/src/main/java/org/apache/isis/viewer/dnd/tree/TreeDisplayRules.java
@@ -22,7 +22,7 @@ package org.apache.isis.viewer.dnd.tree;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.Allow;
import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.viewer.dnd.drawing.Location;
import org.apache.isis.viewer.dnd.view.UserAction;
@@ -80,8 +80,11 @@ public class TreeDisplayRules {
return showCollectionsOnly;
}
- public static boolean canDisplay(final ObjectAdapter object) {
- final boolean lookupView = object != null && BoundedFacetUtils.isBoundedSet(object.getSpecification());
+ private static boolean canDisplay(final ObjectAdapter object) {
+ // TODO: rather than looking for the ChoicesFacet on the type,
+ // should look for the appropriate PropertyChoicesFacet, ActionParameterChoicesFacet or
+ // PropertyAutoCompleteFacet or ActionParameterAutoCompleteFacet
+ final boolean lookupView = object != null && ChoicesFacetUtils.hasChoices(object.getSpecification());
final boolean showNonCollections = !TreeDisplayRules.isCollectionsOnly();
final boolean objectView = object instanceof ObjectAdapter && showNonCollections;
final boolean collectionView = object.getSpecification().isParentedOrFreeCollection();
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
index f764faf..72f1230 100644
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/ObjectAdapterFunctions.java
@@ -24,9 +24,6 @@ import com.google.common.base.Function;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
public final class ObjectAdapterFunctions {
@@ -34,13 +31,12 @@ public final class ObjectAdapterFunctions {
private ObjectAdapterFunctions() {
}
+ /**
+ * Use {@link ObjectAdapter.Functions}
+ */
+ @Deprecated
public static Function<Object, ObjectAdapter> fromPojo(final AdapterManager adapterManager) {
- return new Function<Object, ObjectAdapter>() {
- @Override
- public ObjectAdapter apply(final Object pojo) {
- return adapterManager.adapterFor(pojo);
- }
- };
+ return ObjectAdapter.Functions.adapterForUsing(adapterManager);
}
public static Function<ObjectAdapterMemento, ObjectAdapter> fromMemento() {
@@ -63,12 +59,4 @@ public final class ObjectAdapterFunctions {
};
}
- private static AdapterManager getAdapterManager() {
- return getPersistenceSession().getAdapterManager();
- }
-
- private static PersistenceSession getPersistenceSession() {
- return IsisContext.getPersistenceSession();
- }
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
index e1690ba..7178e11 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/adapter/ObjectAdapter.java
@@ -19,6 +19,11 @@
package org.apache.isis.core.metamodel.adapter;
+import java.util.List;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
+
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
import org.apache.isis.core.metamodel.adapter.oid.CollectionOid;
@@ -238,6 +243,62 @@ public interface ObjectAdapter extends Instance, org.apache.isis.applib.annotati
boolean respondToChangesInPersistentObjects();
+
+
+ public final class Util {
+
+ private Util() {
+ }
+
+ public static Object unwrap(final ObjectAdapter adapter) {
+ return adapter != null ? adapter.getObject() : null;
+ }
+
+ public static String unwrapAsString(final ObjectAdapter adapter) {
+ final Object obj = unwrap(adapter);
+ if (obj == null) {
+ return null;
+ }
+ if (!(obj instanceof String)) {
+ return null;
+ }
+ return (String) obj;
+ }
+
+
+ public static List<Object> unwrap(final List<ObjectAdapter> adapters) {
+ List<Object> objects = Lists.newArrayList();
+ for (ObjectAdapter adapter : adapters) {
+ objects.add(unwrap(adapter));
+ }
+ return objects;
+ }
+
+ }
+
+
+ public static class Functions {
+
+ private Functions(){}
+
+ public static Function<ObjectAdapter, Object> getObject() {
+ return new Function<ObjectAdapter, Object>() {
+ @Override
+ public Object apply(ObjectAdapter input) {
+ return Util.unwrap(input);
+ }
+ };
+ }
+
+ public static Function<Object, ObjectAdapter> adapterForUsing(final AdapterManager adapterManager) {
+ return new Function<Object, ObjectAdapter>() {
+ @Override
+ public ObjectAdapter apply(final Object pojo) {
+ return adapterManager.adapterFor(pojo);
+ }
+ };
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/choices/ChoicesFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/choices/ChoicesFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/choices/ChoicesFacet.java
index 066969f..06ae97f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/choices/ChoicesFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/choices/ChoicesFacet.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.choices;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
public interface ChoicesFacet extends Facet {
@@ -29,4 +30,17 @@ public interface ChoicesFacet extends Facet {
*/
public Object[] getChoices(ObjectAdapter adapter);
+
+
+ public static class Util {
+
+ private Util() {
+ }
+
+ public static boolean hasChoices(final ObjectSpecification specification) {
+ return specification.getFacet(ChoicesFacet.class) != null;
+ }
+
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacet.java
deleted file mode 100644
index d261a6b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacet.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.object.bounded;
-
-import org.apache.isis.core.metamodel.facets.MarkerFacet;
-import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
-import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
-
-/**
- * Whether the number of instances of this class is bounded.
- *
- * <p>
- * Typically viewers will interpret this information by displaying all instances
- * of the class in a drop-down list box or similar widget.
- *
- * <p>
- * In the standard Apache Isis Programming Model, corresponds to annotating the
- * member with <tt>@Bounded</tt>.
- */
-public interface BoundedFacet extends MarkerFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvisor {
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacetUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacetUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacetUtils.java
deleted file mode 100644
index abd5dcc..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/BoundedFacetUtils.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.object.bounded;
-
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public class BoundedFacetUtils {
-
- private BoundedFacetUtils() {
- }
-
- public static boolean isBoundedSet(final ObjectSpecification specification) {
- return specification.getFacet(BoundedFacet.class) != null;
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetUtils.java
new file mode 100644
index 0000000..104aa68
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/bounded/ChoicesFacetUtils.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.metamodel.facets.object.bounded;
+
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+public class ChoicesFacetUtils {
+
+ private ChoicesFacetUtils() {
+ }
+
+ /**
+ *
+ * @deprecated - use {@link ChoicesFacet.Util}
+ */
+ @Deprecated
+ public static boolean hasChoices(final ObjectSpecification specification) {
+ return ChoicesFacet.Util.hasChoices(specification);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectAdapterUtils.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectAdapterUtils.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectAdapterUtils.java
index b33aed8..9f54613 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectAdapterUtils.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectAdapterUtils.java
@@ -22,36 +22,38 @@ import com.google.common.collect.Lists;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+/**
+ * @deprecated - use {@link ObjectAdapter.Util} instead
+ */
+@Deprecated
public final class ObjectAdapterUtils {
private ObjectAdapterUtils() {
}
+ /**
+ * @deprecated - use {@link ObjectAdapter.Util} instead
+ */
+ @Deprecated
public static Object unwrapObject(final ObjectAdapter adapter) {
- if (adapter == null) {
- return null;
- }
- return adapter.getObject();
+ return ObjectAdapter.Util.unwrap(adapter);
}
+ /**
+ * @deprecated - use {@link ObjectAdapter.Util} instead
+ */
+ @Deprecated
public static String unwrapObjectAsString(final ObjectAdapter adapter) {
- final Object obj = unwrapObject(adapter);
- if (obj == null) {
- return null;
- }
- if (!(obj instanceof String)) {
- return null;
- }
- return (String) obj;
+ return ObjectAdapter.Util.unwrapAsString(adapter);
}
+ /**
+ * @deprecated - use {@link ObjectAdapter.Util} instead
+ */
+ @Deprecated
public static List<Object> unwrapObjects(final List<ObjectAdapter> adapters) {
- List<Object> objects = Lists.newArrayList();
- for (ObjectAdapter adapter : adapters) {
- objects.add(unwrapObject(adapter));
- }
- return objects;
+ return ObjectAdapter.Util.unwrap(adapters);
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
index e7f3bd0..787fdb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ObjectReflectorDefault.java
@@ -58,7 +58,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecorator;
import org.apache.isis.core.metamodel.facetdecorator.FacetDecoratorSet;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContext;
import org.apache.isis.core.metamodel.runtimecontext.RuntimeContextAware;
@@ -656,7 +656,7 @@ public final class ObjectReflectorDefault implements SpecificationLoaderSpi, App
StringBuffer str = new StringBuffer();
str.append(spec.isAbstract() ? "A" : ".");
str.append(spec.isService() ? "S" : ".");
- str.append(BoundedFacetUtils.isBoundedSet(spec) ? "B" : ".");
+ str.append(ChoicesFacetUtils.hasChoices(spec) ? "B" : ".");
str.append(spec.isParentedOrFreeCollection() ? "C" : ".");
str.append(spec.isNotCollection() ? "O" : ".");
str.append(spec.isParseable() ? "P" : ".");
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
index 3f8847e..3595768 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionImpl.java
@@ -51,7 +51,7 @@ import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFace
import org.apache.isis.core.metamodel.facets.actions.invoke.ActionInvocationFacet;
import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet;
import org.apache.isis.core.metamodel.interactions.ActionInvocationContext;
@@ -454,7 +454,9 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
for (int j = 0; j < parameterChoicesPojos[i].length; j++) {
parameterChoicesAdapters[i][j] = adapterFor(parameterChoicesPojos[i][j]);
}
- } else if (BoundedFacetUtils.isBoundedSet(paramSpec)) {
+ } else
+ // now incorporated into above choices processing (BoundedFacet is no more)
+ /*if (BoundedFacetUtils.isBoundedSet(paramSpec)) {
final QueryFindAllInstances<ObjectAdapter> query = new QueryFindAllInstances<ObjectAdapter>(paramSpec.getFullIdentifier());
final List<ObjectAdapter> allInstancesAdapter = getQuerySubmitter().allMatchingQuery(query);
parameterChoicesAdapters[i] = new ObjectAdapter[allInstancesAdapter.size()];
@@ -462,7 +464,7 @@ public class ObjectActionImpl extends ObjectMemberAbstract implements ObjectActi
for (final ObjectAdapter adapter : allInstancesAdapter) {
parameterChoicesAdapters[i][j++] = adapter;
}
- } else if (paramSpec.isNotCollection()) {
+ } else */ if (paramSpec.isNotCollection()) {
parameterChoicesAdapters[i] = new ObjectAdapter[0];
} else {
throw new UnknownTypeException(paramSpec);
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 2278c9c..425fc94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -47,7 +47,7 @@ import org.apache.isis.core.metamodel.facets.TypedHolder;
import org.apache.isis.core.metamodel.facets.describedas.DescribedAsFacet;
import org.apache.isis.core.metamodel.facets.mandatory.MandatoryFacet;
import org.apache.isis.core.metamodel.facets.named.NamedFacet;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.facets.param.autocomplete.ActionParameterAutoCompleteFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet;
@@ -59,6 +59,7 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoader;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.progmodel.facets.object.bounded.ChoicesFacetFromBoundedAbstract;
import org.apache.isis.core.progmodel.facets.param.autocomplete.MinLengthUtil;
public abstract class ObjectActionParameterAbstract implements ObjectActionParameter {
@@ -269,9 +270,11 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
adapters.add(getAdapterMap().adapterFor(choice));
}
}
- if (adapters.size() == 0 && BoundedFacetUtils.isBoundedSet(getSpecification())) {
+ /* // now incorporated into above choices processing (BoundedFacet is no more)
+ if (adapters.size() == 0 && ChoicesFacetUtils.hasChoices(getSpecification())) {
addAllInstancesForType(adapters);
}
+ */
return adapters.toArray(new ObjectAdapter[0]);
}
@@ -289,7 +292,7 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
@Override
public boolean hasChoices() {
final ActionParameterChoicesFacet choicesFacet = getFacet(ActionParameterChoicesFacet.class);
- return choicesFacet != null || BoundedFacetUtils.isBoundedSet(getSpecification());
+ return choicesFacet != null;
}
@Override
@@ -313,9 +316,12 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
adapters.add(getAdapterMap().adapterFor(choice));
}
}
- if (adapters.size() == 0 && BoundedFacetUtils.isBoundedSet(getSpecification())) {
+ // now incorporated into above choices processing (BoundedFacet is no more)
+ /*
+ if (adapters.size() == 0 && BoundedFacetUtils.isBoundedSet(getSpecification())) {
addAllInstancesForType(adapters);
}
+ */
return adapters.toArray(new ObjectAdapter[0]);
}
@@ -385,6 +391,10 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
}
}
+ /**
+ * unused - incorporated into the {@link ChoicesFacetFromBoundedAbstract}
+ */
+ @SuppressWarnings("unused")
private <T> void addAllInstancesForType(final List<ObjectAdapter> adapters) {
final Query<T> query = new QueryFindAllInstances<T>(getSpecification().getFullIdentifier());
final List<ObjectAdapter> allInstancesAdapter = getQuerySubmitter().allMatchingQuery(query);
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
index 8048b70..8f019fa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterParseableContributee.java
@@ -24,7 +24,7 @@ import com.google.common.collect.Lists;
import org.apache.isis.core.commons.lang.ListExtensions;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
import org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
index e7df574..9016094 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationImpl.java
@@ -21,6 +21,8 @@ package org.apache.isis.core.metamodel.specloader.specimpl;
import java.util.List;
+import com.google.common.collect.Lists;
+
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.query.QueryFindAllInstances;
@@ -36,7 +38,7 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
import org.apache.isis.core.metamodel.facets.accessor.PropertyOrCollectionAccessorFacet;
import org.apache.isis.core.metamodel.facets.mandatory.MandatoryFacet;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.facets.properties.autocomplete.PropertyAutoCompleteFacet;
import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
@@ -237,8 +239,7 @@ public class OneToOneAssociationImpl extends ObjectAssociationAbstract implement
@Override
public boolean hasChoices() {
- final PropertyChoicesFacet propertyChoicesFacet = getFacet(PropertyChoicesFacet.class);
- return propertyChoicesFacet != null || BoundedFacetUtils.isBoundedSet(getSpecification());
+ return getFacet(PropertyChoicesFacet.class) != null;
}
@Override
@@ -246,14 +247,14 @@ public class OneToOneAssociationImpl extends ObjectAssociationAbstract implement
final PropertyChoicesFacet propertyChoicesFacet = getFacet(PropertyChoicesFacet.class);
final Object[] pojoOptions = propertyChoicesFacet == null ? null : propertyChoicesFacet.getChoices(ownerAdapter, getSpecificationLookup());
if (pojoOptions != null) {
- final ObjectAdapter[] options = new ObjectAdapter[pojoOptions.length];
- for (int i = 0; i < options.length; i++) {
- options[i] = getAdapterManager().adapterFor(pojoOptions[i]);
- }
- return options;
- } else if (BoundedFacetUtils.isBoundedSet(getSpecification())) {
+ List<ObjectAdapter> adapters = Lists.transform(
+ Lists.newArrayList(pojoOptions), ObjectAdapter.Functions.adapterForUsing(getAdapterManager()));
+ return adapters.toArray(new ObjectAdapter[]{});
+ }
+ // // now incorporated into above choices processing (BoundedFacet is no more)
+ /* else if (BoundedFacetUtils.isBoundedSet(getSpecification())) {
return options();
- }
+ } */
return null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
index d14a468..686f377 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Dump.java
@@ -34,7 +34,7 @@ import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacetUtils;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacetUtils;
+import org.apache.isis.core.metamodel.facets.object.bounded.ChoicesFacetUtils;
import org.apache.isis.core.metamodel.facets.object.cached.CachedFacetUtils;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetUtils;
import org.apache.isis.core.metamodel.spec.ActionType;
@@ -318,8 +318,8 @@ public final class Dump {
if (specification.isAbstract()) {
str.append("Abstract ");
}
- if (BoundedFacetUtils.isBoundedSet(specification)) {
- str.append("Bounded ");
+ if (ChoicesFacetUtils.hasChoices(specification)) {
+ str.append("WithChoices ");
}
if (CachedFacetUtils.isCached(specification)) {
str.append("Cached ");
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetAbstract.java
deleted file mode 100644
index c287054..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetAbstract.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.progmodel.facets.object.bounded;
-
-import org.apache.isis.applib.events.UsabilityEvent;
-import org.apache.isis.applib.events.ValidityEvent;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.MarkerFacetAbstract;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacet;
-import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
-import org.apache.isis.core.metamodel.interactions.UsabilityContext;
-import org.apache.isis.core.metamodel.interactions.ValidityContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public abstract class BoundedFacetAbstract extends MarkerFacetAbstract implements BoundedFacet {
-
- public static Class<? extends Facet> type() {
- return BoundedFacet.class;
- }
-
- public BoundedFacetAbstract(final FacetHolder holder) {
- super(type(), holder);
- }
-
- /**
- * Hook method for subclasses to override.
- */
- public abstract String disabledReason(ObjectAdapter objectAdapter);
-
- @Override
- public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
- if (!(context instanceof ObjectValidityContext)) {
- return null;
- }
- final ObjectAdapter target = context.getTarget();
- if(target == null) {
- return null;
- }
-
- // ensure that the target is of the correct type
- if(!(getFacetHolder() instanceof ObjectSpecification)) {
- // should never be the case
- return null;
- }
-
- final ObjectSpecification objectSpec = (ObjectSpecification) getFacetHolder();
- return objectSpec == target.getSpecification()? null: "Invalid type";
- }
-
- @Override
- public String disables(final UsabilityContext<? extends UsabilityEvent> context) {
- final ObjectAdapter target = context.getTarget();
- return disabledReason(target);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetImpl.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetImpl.java
deleted file mode 100644
index 2c9bc23..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedFacetImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.progmodel.facets.object.bounded;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-
-public class BoundedFacetImpl extends BoundedFacetAbstract {
-
- public BoundedFacetImpl(final FacetHolder holder) {
- super(holder);
- }
-
- @Override
- public String disabledReason(final ObjectAdapter inObject) {
- return "Bounded";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/ChoicesFacetFromBoundedAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/ChoicesFacetFromBoundedAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/ChoicesFacetFromBoundedAbstract.java
new file mode 100644
index 0000000..6f618e5
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/ChoicesFacetFromBoundedAbstract.java
@@ -0,0 +1,124 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.progmodel.facets.object.bounded;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.applib.events.UsabilityEvent;
+import org.apache.isis.applib.events.ValidityEvent;
+import org.apache.isis.applib.marker.Bounded;
+import org.apache.isis.applib.query.Query;
+import org.apache.isis.applib.query.QueryFindAllInstances;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
+import org.apache.isis.core.metamodel.interactions.DisablingInteractionAdvisor;
+import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
+import org.apache.isis.core.metamodel.interactions.UsabilityContext;
+import org.apache.isis.core.metamodel.interactions.ValidatingInteractionAdvisor;
+import org.apache.isis.core.metamodel.interactions.ValidityContext;
+import org.apache.isis.core.metamodel.spec.ObjectAdapterUtils;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+/**
+ * A fixed number of choices because the number of instances of this class is bounded.
+ *
+ * <p>
+ * Typically viewers will interpret this information by displaying all instances
+ * of the class in a drop-down list box or similar widget.
+ *
+ * <p>
+ * In the standard Apache Isis Programming Model, corresponds to annotating the
+ * member with {@link org.apache.isis.applib.annotation.Bounded Bounded} annotation
+ * or implementing the {@link Bounded} marker interface.
+ */
+public abstract class ChoicesFacetFromBoundedAbstract extends FacetAbstract implements ChoicesFacet, DisablingInteractionAdvisor, ValidatingInteractionAdvisor {
+
+ public static Class<? extends Facet> type() {
+ return ChoicesFacet.class;
+ }
+
+ private final QuerySubmitter querySubmitter;
+
+ public ChoicesFacetFromBoundedAbstract(final FacetHolder holder, final QuerySubmitter querySubmitter) {
+ super(type(), holder, Derivation.NOT_DERIVED);
+ this.querySubmitter = querySubmitter;
+ }
+
+ protected QuerySubmitter getQuerySubmitter() {
+ return querySubmitter;
+ }
+
+ @Override
+ public String invalidates(final ValidityContext<? extends ValidityEvent> context) {
+ if (!(context instanceof ObjectValidityContext)) {
+ return null;
+ }
+ final ObjectAdapter target = context.getTarget();
+ if(target == null) {
+ return null;
+ }
+
+ // ensure that the target is of the correct type
+ if(!(getFacetHolder() instanceof ObjectSpecification)) {
+ // should never be the case
+ return null;
+ }
+
+ final ObjectSpecification objectSpec = getObjectSpecification();
+ return objectSpec == target.getSpecification()? null: "Invalid type";
+ }
+
+ private ObjectSpecification getObjectSpecification() {
+ return (ObjectSpecification) getFacetHolder();
+ }
+
+ @Override
+ public String disables(final UsabilityContext<? extends UsabilityEvent> context) {
+ final ObjectAdapter target = context.getTarget();
+ return disabledReason(target);
+ }
+
+ /**
+ * Optional hook method for subclasses to override.
+ */
+ public String disabledReason(final ObjectAdapter inObject) {
+ return "Bounded";
+ }
+
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ @Override
+ public Object[] getChoices(ObjectAdapter adapter) {
+ final Query query = new QueryFindAllInstances(getObjectSpecification().getFullIdentifier());
+ final List<ObjectAdapter> allInstancesAdapter = getQuerySubmitter().allMatchingQuery(query);
+ final List<ObjectAdapter> adapters = Lists.newArrayList(allInstancesAdapter.iterator());
+ final List<Object> pojos = Lists.transform(adapters, ObjectAdapter.Functions.getObject());
+ return Lists.newArrayList(pojos).toArray();
+ }
+
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedAnnotationFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedAnnotationFacetFactory.java
index c90b6d4..239cc27 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedAnnotationFacetFactory.java
@@ -20,27 +20,36 @@
package org.apache.isis.core.progmodel.facets.object.bounded.annotation;
import org.apache.isis.applib.annotation.Bounded;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacet;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
-public class BoundedAnnotationFacetFactory extends FacetFactoryAbstract {
+public class BoundedAnnotationFacetFactory extends FacetFactoryAbstract implements QuerySubmitterAware {
+
+ private QuerySubmitter querySubmitter;
public BoundedAnnotationFacetFactory() {
super(FeatureType.OBJECTS_ONLY);
}
@Override
- public void process(final ProcessClassContext processClassContaxt) {
- final Bounded annotation = Annotations.getAnnotation(processClassContaxt.getCls(), Bounded.class);
- FacetUtil.addFacet(create(annotation, processClassContaxt.getFacetHolder()));
+ public void process(final ProcessClassContext processClassContext) {
+ final Bounded annotation = Annotations.getAnnotation(processClassContext.getCls(), Bounded.class);
+ FacetUtil.addFacet(create(annotation, processClassContext.getFacetHolder()));
+ }
+
+ private ChoicesFacet create(final Bounded annotation, final FacetHolder holder) {
+ return annotation == null ? null : new ChoicesFacetFromBoundedAnnotation(holder, querySubmitter);
}
- private BoundedFacet create(final Bounded annotation, final FacetHolder holder) {
- return annotation == null ? null : new BoundedFacetAnnotation(holder);
+ @Override
+ public void setQuerySubmitter(final QuerySubmitter querySubmitter) {
+ this.querySubmitter = querySubmitter;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedFacetAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedFacetAnnotation.java
deleted file mode 100644
index fa74dee..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/BoundedFacetAnnotation.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.progmodel.facets.object.bounded.annotation;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.progmodel.facets.object.bounded.BoundedFacetImpl;
-
-public class BoundedFacetAnnotation extends BoundedFacetImpl {
-
- public BoundedFacetAnnotation(final FacetHolder holder) {
- super(holder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/ChoicesFacetFromBoundedAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/ChoicesFacetFromBoundedAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/ChoicesFacetFromBoundedAnnotation.java
new file mode 100644
index 0000000..7d41be0
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/annotation/ChoicesFacetFromBoundedAnnotation.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.progmodel.facets.object.bounded.annotation;
+
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.progmodel.facets.object.bounded.ChoicesFacetFromBoundedAbstract;
+
+public class ChoicesFacetFromBoundedAnnotation extends ChoicesFacetFromBoundedAbstract {
+
+ public ChoicesFacetFromBoundedAnnotation(final FacetHolder holder, QuerySubmitter querySubmitter) {
+ super(holder, querySubmitter);
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedFacetMarkerInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedFacetMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedFacetMarkerInterface.java
deleted file mode 100644
index e7357c4..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedFacetMarkerInterface.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.core.progmodel.facets.object.bounded.markerifc;
-
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.progmodel.facets.object.bounded.BoundedFacetImpl;
-
-public class BoundedFacetMarkerInterface extends BoundedFacetImpl {
-
- public BoundedFacetMarkerInterface(final FacetHolder holder) {
- super(holder);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedMarkerInterfaceFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedMarkerInterfaceFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedMarkerInterfaceFacetFactory.java
index 424c8c7..f81c3cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedMarkerInterfaceFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/BoundedMarkerInterfaceFacetFactory.java
@@ -22,13 +22,17 @@ package org.apache.isis.core.progmodel.facets.object.bounded.markerifc;
import java.lang.reflect.Method;
import org.apache.isis.applib.marker.Bounded;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.adapter.QuerySubmitterAware;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacet;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
-public class BoundedMarkerInterfaceFacetFactory extends FacetFactoryAbstract {
+public class BoundedMarkerInterfaceFacetFactory extends FacetFactoryAbstract implements QuerySubmitterAware {
+
+ private QuerySubmitter querySubmitter;
public BoundedMarkerInterfaceFacetFactory() {
super(FeatureType.OBJECTS_ONLY);
@@ -40,12 +44,17 @@ public class BoundedMarkerInterfaceFacetFactory extends FacetFactoryAbstract {
FacetUtil.addFacet(create(implementsMarker, processClassContaxt.getFacetHolder()));
}
- private BoundedFacet create(final boolean implementsMarker, final FacetHolder holder) {
- return implementsMarker ? new BoundedFacetMarkerInterface(holder) : null;
+ private ChoicesFacet create(final boolean implementsMarker, final FacetHolder holder) {
+ return implementsMarker ? new ChoicesFacetFromBoundedFacetMarkerInterface(holder, querySubmitter) : null;
}
public boolean recognizes(final Method method) {
return false;
}
+ @Override
+ public void setQuerySubmitter(QuerySubmitter querySubmitter) {
+ this.querySubmitter = querySubmitter;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/ChoicesFacetFromBoundedFacetMarkerInterface.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/ChoicesFacetFromBoundedFacetMarkerInterface.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/ChoicesFacetFromBoundedFacetMarkerInterface.java
new file mode 100644
index 0000000..ecde14c
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/object/bounded/markerifc/ChoicesFacetFromBoundedFacetMarkerInterface.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.core.progmodel.facets.object.bounded.markerifc;
+
+import org.apache.isis.core.metamodel.adapter.QuerySubmitter;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.progmodel.facets.object.bounded.ChoicesFacetFromBoundedAbstract;
+
+public class ChoicesFacetFromBoundedFacetMarkerInterface extends ChoicesFacetFromBoundedAbstract {
+
+ public ChoicesFacetFromBoundedFacetMarkerInterface(
+ final FacetHolder holder, final QuerySubmitter querySubmitter) {
+ super(holder, querySubmitter);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/choices/enums/ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/choices/enums/ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/choices/enums/ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory.java
index 7fd8b58..139a6fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/choices/enums/ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/param/choices/enums/ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
import org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet;
public class ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
@@ -39,7 +40,7 @@ public class ParameterChoicesFacetDerivedFromChoicesFacetFacetFactory extends Fa
public void processParams(final ProcessParameterContext processParameterContext) {
final Class<?> paramType = processParameterContext.getMethod().getParameterTypes()[processParameterContext.getParamNum()];
- if (!paramType.isEnum()) {
+ if(!getSpecificationLoader().loadSpecification(paramType).containsDoOpFacet(ChoicesFacet.class)) {
return;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory.java
index 63820ec..526c269 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/progmodel/facets/properties/choices/enums/PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory.java
@@ -24,6 +24,7 @@ import org.apache.isis.core.metamodel.adapter.mgr.AdapterManagerAware;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
public class PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory extends FacetFactoryAbstract implements AdapterManagerAware {
@@ -38,7 +39,7 @@ public class PropertyChoicesFacetDerivedFromChoicesFacetFacetFactory extends Fac
final Class<?> returnType = processMethodContext.getMethod().getReturnType();
- if (!returnType.isEnum()) {
+ if(!getSpecificationLoader().loadSpecification(returnType).containsDoOpFacet(ChoicesFacet.class)) {
return;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedAnnotationFacetFactoryTest.java
index a4d41ea..d3461f0 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedAnnotationFacetFactoryTest.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.progmodel.facets.object.bounded;
import org.apache.isis.applib.annotation.Bounded;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacet;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.progmodel.facets.object.bounded.annotation.BoundedAnnotationFacetFactory;
@@ -50,9 +50,9 @@ public class BoundedAnnotationFacetFactoryTest extends AbstractFacetFactoryTest
facetFactory.process(new ProcessClassContext(Customer.class, null, methodRemover, facetedMethod));
- final Facet facet = facetedMethod.getFacet(BoundedFacet.class);
+ final Facet facet = facetedMethod.getFacet(ChoicesFacet.class);
assertNotNull(facet);
- assertTrue(facet instanceof BoundedFacetAbstract);
+ assertTrue(facet instanceof ChoicesFacetFromBoundedAbstract);
assertNoMethodsRemoved();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedMarkerInterfaceFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedMarkerInterfaceFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedMarkerInterfaceFacetFactoryTest.java
index f90f532..97f8bc1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedMarkerInterfaceFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/progmodel/facets/object/bounded/BoundedMarkerInterfaceFacetFactoryTest.java
@@ -22,7 +22,7 @@ package org.apache.isis.core.progmodel.facets.object.bounded;
import org.apache.isis.applib.marker.Bounded;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
-import org.apache.isis.core.metamodel.facets.object.bounded.BoundedFacet;
+import org.apache.isis.core.metamodel.facets.choices.ChoicesFacet;
import org.apache.isis.core.progmodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.progmodel.facets.object.bounded.markerifc.BoundedMarkerInterfaceFacetFactory;
@@ -49,9 +49,9 @@ public class BoundedMarkerInterfaceFacetFactoryTest extends AbstractFacetFactory
facetFactory.process(new ProcessClassContext(Customer.class, null, methodRemover, facetedMethod));
- final Facet facet = facetedMethod.getFacet(BoundedFacet.class);
+ final Facet facet = facetedMethod.getFacet(ChoicesFacet.class);
assertNotNull(facet);
- assertTrue(facet instanceof BoundedFacetAbstract);
+ assertTrue(facet instanceof ChoicesFacetFromBoundedAbstract);
assertNoMethodsRemoved();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/6d356228/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
index c22b960..0d00408 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java
@@ -19,7 +19,6 @@
package dom.todo;
import java.math.BigDecimal;
-import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -34,7 +33,8 @@ import javax.jdo.annotations.VersionStrategy;
import javax.jdo.spi.PersistenceCapable;
import com.google.common.base.Objects;
-import com.google.common.collect.Lists;
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
import com.google.common.collect.Ordering;
import org.joda.time.LocalDate;
@@ -50,7 +50,6 @@ import org.apache.isis.applib.annotation.Hidden;
import org.apache.isis.applib.annotation.MinLength;
import org.apache.isis.applib.annotation.MultiLine;
import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.NotPersisted;
import org.apache.isis.applib.annotation.ObjectType;
import org.apache.isis.applib.annotation.Optional;
import org.apache.isis.applib.annotation.Programmatic;
@@ -62,8 +61,6 @@ import org.apache.isis.applib.annotation.Render.Type;
import org.apache.isis.applib.annotation.SortedBy;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.applib.filter.Filter;
-import org.apache.isis.applib.filter.Filters;
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
import org.apache.isis.applib.value.Blob;
@@ -93,6 +90,7 @@ import org.apache.isis.applib.value.Blob;
@Audited
@PublishedObject(ToDoItemChangedPayloadFactory.class)
@AutoComplete(repository=ToDoItems.class, action="autoComplete") // default unless overridden by autoCompleteNXxx() method
+//@Bounded - if there were a small number of instances only (overrides autoComplete functionality)
@Bookmarkable
public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3: uncomment to use https://github.com/danhaywood/isis-wicket-gmap3
@@ -541,39 +539,38 @@ public class ToDoItem implements Comparable<ToDoItem> /*, Locatable*/ { // GMAP3
// Filters (static methods)
// //////////////////////////////////////
- @SuppressWarnings("unchecked")
- public static Filter<ToDoItem> thoseDue() {
- return Filters.and(Filters.not(thoseComplete()), new Filter<ToDoItem>() {
+ public static Predicate<ToDoItem> thoseDue() {
+ return Predicates.and(Predicates.not(thoseComplete()), new Predicate<ToDoItem>() {
@Override
- public boolean accept(final ToDoItem t) {
+ public boolean apply(final ToDoItem t) {
return t.isDue();
}
});
}
- public static Filter<ToDoItem> thoseComplete() {
- return new Filter<ToDoItem>() {
+ public static Predicate<ToDoItem> thoseComplete() {
+ return new Predicate<ToDoItem>() {
@Override
- public boolean accept(final ToDoItem t) {
+ public boolean apply(final ToDoItem t) {
return t.isComplete();
}
};
}
- public static Filter<ToDoItem> thoseOwnedBy(final String currentUser) {
- return new Filter<ToDoItem>() {
+ public static Predicate<ToDoItem> thoseOwnedBy(final String currentUser) {
+ return new Predicate<ToDoItem>() {
@Override
- public boolean accept(final ToDoItem toDoItem) {
+ public boolean apply(final ToDoItem toDoItem) {
return Objects.equal(toDoItem.getOwnedBy(), currentUser);
}
};
}
- public static Filter<ToDoItem> thoseSimilarTo(final ToDoItem toDoItem) {
- return new Filter<ToDoItem>() {
+ public static Predicate<ToDoItem> thoseSimilarTo(final ToDoItem toDoItem) {
+ return new Predicate<ToDoItem>() {
@Override
- public boolean accept(final ToDoItem eachToDoItem) {
+ public boolean apply(final ToDoItem eachToDoItem) {
return Objects.equal(toDoItem.getCategory(), eachToDoItem.getCategory()) &&
Objects.equal(toDoItem.getOwnedBy(), eachToDoItem.getOwnedBy()) &&
eachToDoItem != toDoItem;