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 2016/01/25 16:08:06 UTC

[45/50] [abbrv] isis git commit: ISIS-993: can now store multiple different session attributes on an EntityCollectionModel.

ISIS-993: can now store multiple different session attributes on an EntityCollectionModel.


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

Branch: refs/heads/ISIS-993
Commit: 376ab6f06d716005d9073a6022c82730e3401c9b
Parents: 3520139
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jan 14 23:03:35 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Mon Jan 25 15:06:07 2016 +0000

----------------------------------------------------------------------
 .../model/models/EntityCollectionModel.java     | 20 ++++++++++++++------
 .../model/util/ScopedSessionAttribute.java      | 12 +++++++++---
 .../selector/CollectionSelectorHelper.java      |  2 +-
 .../CollectionContentsMultipleViewsPanel.java   |  2 +-
 .../collections/EntityCollectionsPanel.java     |  2 +-
 5 files changed, 26 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/376ab6f0/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 26f3128..11d38ca 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
@@ -23,11 +23,13 @@ import java.io.Serializable;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 import org.apache.isis.core.commons.factory.InstanceUtil;
 import org.apache.isis.core.commons.lang.ClassUtil;
@@ -436,17 +438,23 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
 
     // //////////////////////////////////////
 
-    private ScopedSessionAttribute<Integer> selectedItemSessionAttribute;
+    public static final String SESSION_ATTRIBUTE_SELECTED_ITEM = "selectedItem";
+
+    private final Map<String,ScopedSessionAttribute> sessionAttributeByName = Maps.newHashMap();
 
     /**
-     * provides a mechanism to retrieve the selected item (view selector) from the session.
+     * provides a mechanism to retrieve hints (identified by an attribute name) from the session.
      */
-    public ScopedSessionAttribute<Integer> getSelectedItemSessionAttribute() {
-        return selectedItemSessionAttribute;
+    public <T extends Serializable> ScopedSessionAttribute<T> getSessionAttribute(final String attributionName) {
+        return sessionAttributeByName.get(attributionName);
+    }
+
+    public void putSessionAttribute(final ScopedSessionAttribute<Integer> selectedItemSessionAttribute) {
+        this.sessionAttributeByName.put(selectedItemSessionAttribute.getAttributeName(), selectedItemSessionAttribute);
     }
 
-    public void setSelectedItemSessionAttribute(final ScopedSessionAttribute<Integer> selectedItemSessionAttribute) {
-        this.selectedItemSessionAttribute = selectedItemSessionAttribute;
+    public void clearSelectedItemSessionAttribute(final String attributeName) {
+        this.sessionAttributeByName.remove(attributeName);
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/376ab6f0/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ScopedSessionAttribute.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ScopedSessionAttribute.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ScopedSessionAttribute.java
index d038167..3652504 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ScopedSessionAttribute.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ScopedSessionAttribute.java
@@ -73,7 +73,7 @@ public class ScopedSessionAttribute<T extends Serializable> implements Serializa
         }
         final String oidStr = asStr(objectAdapterMemento);
         final String key = oidStr + ":" + scopeKey + "#" + attributeName;
-        return new ScopedSessionAttribute<T>(key);
+        return new ScopedSessionAttribute<T>(key, attributeName);
     }
 
     private static String asStr(final ObjectAdapterMemento objectAdapterMemento) {
@@ -83,9 +83,15 @@ public class ScopedSessionAttribute<T extends Serializable> implements Serializa
     }
 
     private final String key;
+    private final String attributeName;
 
-    private ScopedSessionAttribute(final String key) {
+    private ScopedSessionAttribute(final String key, final String attributeName) {
         this.key = key;
+        this.attributeName = attributeName;
+    }
+
+    public String getAttributeName() {
+        return attributeName;
     }
 
     public void set(T t) {
@@ -101,7 +107,7 @@ public class ScopedSessionAttribute<T extends Serializable> implements Serializa
     }
 
     public static <T extends Serializable> ScopedSessionAttribute<T> noop() {
-        return new ScopedSessionAttribute<T>(null) {
+        return new ScopedSessionAttribute<T>(null, null) {
             @Override public void set(final T serializable) {
             }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/376ab6f0/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
index 34d58da..96c455b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
@@ -71,7 +71,7 @@ public class CollectionSelectorHelper implements Serializable {
                 selectedItemSessionAttribute != null
                         ? selectedItemSessionAttribute
                         : ScopedSessionAttribute.<Integer>noop();
-        model.setSelectedItemSessionAttribute(selectedItemSessionAttribute);
+        model.putSessionAttribute(selectedItemSessionAttribute);
     }
 
     private List<ComponentFactory> locateComponentFactories(ComponentFactoryRegistry componentFactoryRegistry) {

http://git-wip-us.apache.org/repos/asf/isis/blob/376ab6f0/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
index eec4e99..f8ba883 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/multiple/CollectionContentsMultipleViewsPanel.java
@@ -73,7 +73,7 @@ public class CollectionContentsMultipleViewsPanel
         this.ignoreFactory = ignoreFactory;
         this.underlyingIdPrefix = ComponentType.COLLECTION_CONTENTS.toString();
         this.componentType = ignoreFactory.getComponentType();
-        selectorHelper = new CollectionSelectorHelper(model, getComponentFactoryRegistry(), model.getSelectedItemSessionAttribute());
+        selectorHelper = new CollectionSelectorHelper(model, getComponentFactoryRegistry(), model.<Integer>getSessionAttribute(EntityCollectionModel.SESSION_ATTRIBUTE_SELECTED_ITEM));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/376ab6f0/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
index a3c4979..01e5133 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collections/EntityCollectionsPanel.java
@@ -83,7 +83,7 @@ public class EntityCollectionsPanel extends PanelAbstract<EntityModel> {
         super(id, entityModel);
 
         columnMetadataIfAny = entityModel.getColumnMetadata();
-        selectedItemSessionAttribute = ScopedSessionAttribute.create(entityModel, columnMetadataIfAny, "selectedItem");
+        selectedItemSessionAttribute = ScopedSessionAttribute.create(entityModel, columnMetadataIfAny, EntityCollectionModel.SESSION_ATTRIBUTE_SELECTED_ITEM);
 
         buildGui();
     }