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 2017/01/20 16:18:36 UTC

[29/36] isis git commit: ISIS-785: fixes value select2 also (was only saving the first selected object, due to the ChoiceProvider implementation assuming there is only ever one choice selected (no longer true now, of course).

ISIS-785: fixes value select2 also (was only saving the first selected object, due to the ChoiceProvider implementation assuming there is only ever one choice selected (no longer true now, of course).


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

Branch: refs/heads/master
Commit: bbb9d33539e0cbc9b753809e2c86f7036c911eb4
Parents: 0419e4d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Jan 20 10:01:54 2017 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Jan 20 10:01:54 2017 +0000

----------------------------------------------------------------------
 .../viewer/wicket/model/models/EntityModel.java |  5 +-
 .../valuechoices/ValueChoicesSelect2Panel.java  | 49 ++++++--------------
 2 files changed, 18 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/bbb9d335/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index d9692df..a51bed6 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -361,7 +361,10 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
             final ObjectAdapterMemento memento,
             final PersistenceSession persistenceSession,
             final SpecificationLoader specificationLoader) {
-        super.setObject(memento.getObjectAdapter(ConcurrencyChecking.CHECK, persistenceSession, specificationLoader));
+        super.setObject(
+                memento != null
+                        ? memento.getObjectAdapter(ConcurrencyChecking.CHECK, persistenceSession, specificationLoader)
+                        : null);
         adapterMemento = memento;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/bbb9d335/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index 66b682f..c438bdf 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -20,10 +20,9 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Strings;
-import com.google.common.collect.Collections2;
+import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Lists;
 
 import org.apache.wicket.AttributeModifier;
@@ -36,7 +35,6 @@ import org.apache.wicket.model.Model;
 import org.wicketstuff.select2.ChoiceProvider;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -189,23 +187,11 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
                     return ids.contains(id);
                 }
             };
-
-            final Function<String, ObjectAdapterMemento> toOam = new Function<String, ObjectAdapterMemento>() {
-                @Override
-                public ObjectAdapterMemento apply(String input) {
-                    if (NULL_PLACEHOLDER.equals(input)) {
-                        return null;
-                    }
-                    final Collection<ObjectAdapterMemento> filteredCollection = Collections2.filter(mementos, lookupOam);
-                    return filteredCollection.iterator().next();
-                }
-            };
-            return Collections2.transform(ids, toOam);
+            return Lists.newArrayList(FluentIterable.from(mementos).filter(lookupOam).toList());
         }
 
         @Override
         protected List<ObjectAdapterMemento> obtainMementos(String term) {
-            // return choicesMementos;  // ISIS-1020: as of Jan 2015
             return obtainMementos(term, choicesMementos);
         }
 
@@ -259,15 +245,16 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
     }
 
     /**
-     * sets up the choices, also ensuring that any currently held value
-     * is compatible.
+     * sets up the choices, also ensuring that any currently held value is compatible.
      */
     private void setChoices(ObjectAdapter[] argsIfAvailable) {
         final List<ObjectAdapterMemento> choicesMementos = getChoiceMementos(argsIfAvailable);
         
         final ChoiceProvider<ObjectAdapterMemento> provider = newChoiceProvider(choicesMementos);
         select2.setProvider(provider);
+
         getModel().clearPending();
+
         final ObjectAdapterMemento objectAdapterMemento = getModel().getObjectAdapterMemento();
         if(objectAdapterMemento == null) {
             select2.getModel().setObject(null);
@@ -275,28 +262,20 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
 
             if(!getModel().isCollection()) {
 
+                // if currently held value is not compatible with choices, then replace with the first choice
                 if(!choicesMementos.contains(objectAdapterMemento)) {
 
-                    final ObjectAdapterMemento newAdapterMemento;
-                    if (!choicesMementos.isEmpty()) {
-                        newAdapterMemento = choicesMementos.get(0);
-                    } else {
-                        newAdapterMemento = null;
-                    }
-
-                    final IModel<ObjectAdapterMemento> model = select2.getModel();
-                    model.setObject(newAdapterMemento);
-                    if (newAdapterMemento != null) {
-                        getModel().setObject(
-                                newAdapterMemento.getObjectAdapter(
-                                        ConcurrencyChecking.NO_CHECK, getPersistenceSession(), getSpecificationLoader()));
-                    } else {
-                        getModel().setObject(null);
-                    }
+                    final ObjectAdapterMemento newAdapterMemento =
+                            choicesMementos.isEmpty()
+                                    ? null
+                                    : choicesMementos.get(0);
+
+                    select2.getModel().setObject(newAdapterMemento);
+                    getModel().setObjectMemento(newAdapterMemento, getPersistenceSession(), getSpecificationLoader());
                 }
 
             } else {
-                // TODO
+
             }
         }
     }