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 2015/11/26 15:20:24 UTC

[3/3] isis git commit: ISIS-1269: ignore any null objects in list (this can happen if they have for example just been deleted).

ISIS-1269: ignore any null objects in list (this can happen if they have for example just been deleted).

Really the list being rendered shouldn't include the object about to be deleted; in the isis-app-todoapp there was a programming error:

    public List<ToDoItem> delete() {

        // obtain title first, because cannot reference object after deleted
        final String title = container.titleOf(this);

        final List<ToDoItem> returnList = actionInvocationContext.isLast() ? toDoItems.notYetComplete() : null;

        // there's actually a bug in this method; shouldn't be returning the current object in the list if just deleted.
        // however, ISIS-1269 transparently handles this and won't attempt to render a deleted object.
        container.removeIfNotAlready(this);

        container.informUser(
                TranslatableString.tr("Deleted {title}", "title", title), this.getClass(), "delete");

        return returnList;
    }

On the other hand, in the more general case some *other* user might have just deleted the object, in which case this fix will also support that case.


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/7798ab80
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/7798ab80
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/7798ab80

Branch: refs/heads/master
Commit: 7798ab807d6cd0751d84eb61910021b8ca5794e0
Parents: 6a67f76
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 26 14:13:10 2015 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 26 14:17:17 2015 +0000

----------------------------------------------------------------------
 .../wicket/model/models/EntityCollectionModel.java | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7798ab80/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index be64f05..f456afc 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -25,6 +25,7 @@ import java.util.Comparator;
 import java.util.List;
 
 import com.google.common.base.Function;
+import com.google.common.base.Predicates;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 
@@ -33,12 +34,12 @@ import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.commons.lang.Closure;
 import org.apache.isis.core.commons.lang.IterableExtensions;
 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.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
 import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
 import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
-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.services.ServicesInjectorSpi;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
@@ -77,13 +78,19 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
         STANDALONE {
             @Override
             List<ObjectAdapter> load(final EntityCollectionModel entityCollectionModel) {
-                return Lists.transform(entityCollectionModel.mementoList, ObjectAdapterMemento.Functions.fromMemento(
-                        ConcurrencyChecking.NO_CHECK));
+                return Lists.newArrayList(
+                        Iterables.filter(
+                                Iterables.transform(entityCollectionModel.mementoList,
+                                        ObjectAdapterMemento.Functions.fromMemento(ConcurrencyChecking.NO_CHECK)),
+                                Predicates.notNull()));
             }
 
             @Override
             void setObject(final EntityCollectionModel entityCollectionModel, final List<ObjectAdapter> list) {
-                entityCollectionModel.mementoList = Lists.newArrayList(Lists.transform(list, ObjectAdapterMemento.Functions.toMemento()));
+                entityCollectionModel.mementoList = Lists.newArrayList(
+                        Iterables.filter(
+                                Iterables.transform(list, ObjectAdapterMemento.Functions.toMemento()),
+                                Predicates.<ObjectAdapterMemento>notNull()));
             }
 
             @Override