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();
}