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/03/19 14:25:43 UTC
[3/3] isis git commit: ISIS-1332: remove the local cache of
ComponentHintKey in EntityModel,
instead simplified so that the list of hints is obtained from the HintStore
service. If hints are provided as query args (ie page parameters) then these
are now
ISIS-1332: remove the local cache of ComponentHintKey in EntityModel, instead simplified so that the list of hints is obtained from the HintStore service. If hints are provided as query args (ie page parameters) then these are now correctly honoured.
Also extended HintStore API to support this functionality (can list all keys for an object, and also remove all).
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/5d7d90fd
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/5d7d90fd
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/5d7d90fd
Branch: refs/heads/master
Commit: 5d7d90fd869dd16c756ed8dcdf2be0f69269351e
Parents: 069e563
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Sat Mar 19 13:01:15 2016 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Sat Mar 19 13:01:15 2016 +0000
----------------------------------------------------------------------
.../isis/applib/services/hint/HintStore.java | 12 +++-
.../services/HintStoreUsingWicketSession.java | 56 +++++++++++-----
.../model/models/EntityCollectionModel.java | 2 +-
.../viewer/wicket/model/models/EntityModel.java | 69 ++++++--------------
.../wicket/model/util/ComponentHintKey.java | 56 +++++++---------
.../selector/CollectionSelectorHelper.java | 11 +---
.../selector/CollectionSelectorPanel.java | 4 +-
.../CollectionContentsMultipleViewsPanel.java | 4 +-
.../collection/EntityCollectionPanel.java | 9 ++-
.../layout/bs3/tabs/TabGroupPanel.java | 17 +++--
.../widgets/zclip/ZeroClipboardPanel.java | 17 ++++-
11 files changed, 131 insertions(+), 126 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java b/core/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
index ad2a784..cafcb13 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/hint/HintStore.java
@@ -19,14 +19,20 @@
package org.apache.isis.applib.services.hint;
import java.io.Serializable;
+import java.util.Set;
import org.apache.isis.applib.services.bookmark.Bookmark;
public interface HintStore extends Serializable {
- Serializable get(final Bookmark bookmark, String name);
+ String get(final Bookmark bookmark, String hintKey);
- void remove(final Bookmark bookmark, String name);
+ void set(final Bookmark bookmark, String hintKey, String value);
+
+ void remove(final Bookmark bookmark, String hintKey);
+
+ void removeAll(Bookmark bookmark);
+
+ Set<String> findHintKeys(Bookmark bookmark);
- void set(final Bookmark bookmark, String name, Serializable value);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
index 5c1c969..9e02b2d 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/services/HintStoreUsingWicketSession.java
@@ -18,7 +18,11 @@
*/
package org.apache.isis.viewer.wicket.viewer.services;
-import java.io.Serializable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import com.google.common.collect.Maps;
import org.apache.wicket.Session;
import org.slf4j.Logger;
@@ -37,43 +41,65 @@ public class HintStoreUsingWicketSession implements HintStore {
private static final Logger LOG = LoggerFactory.getLogger(HintStoreUsingWicketSession.class);
@Override
- public Serializable get(final Bookmark bookmark, final String key) {
- final String hintKey = getOidAndKey(bookmark, key);
- final Serializable value = Session.get().getAttribute(hintKey);
+ public String get(final Bookmark bookmark, final String key) {
+ final Map<String, String> hintsForBookmark = hintsFor(bookmark);
+ final String value = hintsForBookmark.get(key);
if(LOG.isDebugEnabled()) {
- LOG.debug(String.format("GET %s returns %s", hintKey, value));
+ LOG.debug(String.format("GET %s / %s returns %s", bookmark.toString(), key, value));
}
return value;
}
@Override
- public void set(final Bookmark bookmark, final String key, final Serializable value) {
- final String hintKey = getOidAndKey(bookmark, key);
+ public void set(final Bookmark bookmark, final String key, final String value) {
+ final Map<String, String> hintsForBookmark = hintsFor(bookmark);
if(LOG.isDebugEnabled()) {
- LOG.debug(String.format("SET %s to %s", hintKey, value));
+ LOG.debug(String.format("SET %s / %s to %s", bookmark.toString(), key, value));
}
- Session.get().setAttribute(hintKey, value);
-
+ hintsForBookmark.put(key, value);
}
@Override
public void remove(final Bookmark bookmark, final String key) {
- final String hintKey = getOidAndKey(bookmark, key);
+ final Map<String, String> hintsForBookmark = hintsFor(bookmark);
if(LOG.isDebugEnabled()) {
- LOG.debug(String.format("REMOVE %s", hintKey));
+ LOG.debug(String.format("REMOVE %s / %s", bookmark.toString(), key));
}
- Session.get().removeAttribute(hintKey);
+ hintsForBookmark.remove(key);
+ }
+
+ @Override
+ public Set<String> findHintKeys(final Bookmark bookmark) {
+ final Map<String, String> hintsForBookmark = hintsFor(bookmark);
+ return hintsForBookmark.keySet();
}
- private String getOidAndKey(final Bookmark bookmark, final String key) {
+ @Override
+ public void removeAll(final Bookmark bookmark) {
+ final String sessionAttribute = sessionAttributeFor(bookmark);
+ Session.get().removeAttribute(sessionAttribute);
+ }
+
+
+ protected Map<String, String> hintsFor(final Bookmark bookmark) {
+ final String sessionAttribute = sessionAttributeFor(bookmark);
+ LinkedHashMap<String, String> hints =
+ (LinkedHashMap<String, String>) Session.get().getAttribute(sessionAttribute);
+ if(hints == null) {
+ hints = Maps.newLinkedHashMap();
+ Session.get().setAttribute(sessionAttribute, hints);
+ }
+ return hints;
+ }
- return bookmark.toString() + ":" + key;
+ protected String sessionAttributeFor(final Bookmark bookmark) {
+ return "hint-" + bookmark.toString();
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/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 f09f190..d47b532 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
@@ -468,7 +468,7 @@ public class EntityCollectionModel extends ModelAbstract<List<ObjectAdapter>> im
// //////////////////////////////////////
- public static final String SESSION_ATTRIBUTE_SELECTED_ITEM = "selectedItem";
+ public static final String HINT_KEY_SELECTED_ITEM = "selectedItem";
/**
* Just delegates to the {@link #getEntityModel() entity model} (if parented, else no-op).
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/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 6b7b993..d665ff2 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
@@ -88,12 +88,6 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
return pageParameters;
}
- public <T extends Serializable> ComponentHintKey<T> createComponentKey(
- final Component component,
- final String sessionAttributeSelectedItem) {
- return ComponentHintKey.create(component, sessionAttributeSelectedItem, getHintStore());
- }
-
public enum RenderingHint {
REGULAR,
PROPERTY_COLUMN,
@@ -143,7 +137,6 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
private ConcurrencyException concurrencyException;
private final HintPageParameterSerializer hintPageParameterSerializer;
- private final List<ComponentHintKey> componentHintKeys = Lists.newArrayList();
// //////////////////////////////////////////////////////////
// constructors
@@ -155,7 +148,8 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
public EntityModel(final PageParameters pageParameters) {
this(ObjectAdapterMemento.createPersistent(rootOidFrom(pageParameters)));
- componentHintKeys.addAll(hintPageParameterSerializer.pageParametersToHints(pageParameters));
+ hintPageParameterSerializer.updateHintStore(pageParameters);
+
}
public EntityModel(final ObjectAdapter adapter) {
@@ -193,7 +187,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
@Override
public PageParameters getPageParameters() {
PageParameters pageParameters = createPageParameters(getObject());
- hintPageParameterSerializer.hintsToPageParameters(pageParameters, this.componentHintKeys);
+ hintPageParameterSerializer.hintStoreToPageParameters(pageParameters);
return pageParameters;
}
@@ -212,68 +206,50 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
this.entityModel = entityModel;
}
- public void hintsToPageParameters(
- final PageParameters pageParameters, final List<ComponentHintKey> componentHintKeys) {
- for (ComponentHintKey componentHintKey : componentHintKeys) {
- final Bookmark bookmark= entityModel.getObjectAdapterMemento().asBookmark();
- componentHintKey.hintTo(bookmark, pageParameters, PREFIX);
+ public void hintStoreToPageParameters(
+ final PageParameters pageParameters) {
+ final HintStore hintStore = getHintStore();
+ final Bookmark bookmark= entityModel.getObjectAdapterMemento().asBookmark();
+ Set<String> hintKeys = hintStore.findHintKeys(bookmark);
+ for (String hintKey : hintKeys) {
+ ComponentHintKey.create(hintKey).hintTo(bookmark, pageParameters, PREFIX);
}
}
- public List<ComponentHintKey> pageParametersToHints(final PageParameters pageParameters) {
- final HintStore hintStore = getHintStore();
+ public void updateHintStore(
+ final PageParameters pageParameters) {
Set<String> namedKeys = pageParameters.getNamedKeys();
+ if(namedKeys.contains("no-hints")) {
+ getHintStore().removeAll(entityModel.getObjectAdapterMemento().asBookmark());
+ return;
+ }
List<ComponentHintKey> newComponentHintKeys = Lists.newArrayList();
for (String namedKey : namedKeys) {
if(namedKey.startsWith(PREFIX)) {
String value = pageParameters.get(namedKey).toString(null);
String key = namedKey.substring(5);
- final ComponentHintKey<Serializable> componentHintKey = ComponentHintKey.create(key,
- hintStore);
+ final ComponentHintKey componentHintKey = ComponentHintKey.create(key);
newComponentHintKeys.add(componentHintKey);
final Bookmark bookmark = entityModel.getObjectAdapterMemento().asBookmark();
componentHintKey.set(bookmark, value);
}
}
- return newComponentHintKeys;
}
protected HintStore getHintStore() {
return IsisContext.getPersistenceSession().getServicesInjector().lookupService(HintStore.class);
}
+
}
// //////////////////////////////////////////////////////////
// Hint support
// //////////////////////////////////////////////////////////
-
- public <T extends Serializable> ComponentHintKey<T> componentKeyFor(
- final Component component,
- final String key) {
-
- for (ComponentHintKey componentHintKey : componentHintKeys) {
- if(componentHintKey.matches(component, key)) {
- return componentHintKey;
- }
- }
- ComponentHintKey componentHintKey = ComponentHintKey.create(component, key, getHintStore());
- componentHintKeys.add(componentHintKey);
- return componentHintKey;
- }
-
- public void putSessionAttribute(final ComponentHintKey<String> componentHintKey) {
- if(componentHintKey == null || componentHintKey.getKeyName() == null) {
- return;
- }
- this.componentHintKeys.add(componentHintKey);
- }
-
-
@Override
public String getHint(final Component component, final String keyName) {
- final ComponentHintKey<String> componentHintKey = componentKeyFor(component, keyName);
+ final ComponentHintKey componentHintKey = ComponentHintKey.create(component, keyName);
if(componentHintKey != null) {
return componentHintKey.get(getObjectAdapterMemento().asBookmark());
}
@@ -282,7 +258,7 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
@Override
public void setHint(Component component, String keyName, String hintValue) {
- ComponentHintKey componentHintKey = componentKeyFor(component, keyName);
+ ComponentHintKey componentHintKey = ComponentHintKey.create(component, keyName);
componentHintKey.set(this.getObjectAdapterMemento().asBookmark(), hintValue);
}
@@ -652,10 +628,5 @@ public class EntityModel extends BookmarkableModel<ObjectAdapter> implements UiH
return IsisContext.getSpecificationLoader();
}
- protected HintStore getHintStore() {
- return IsisContext.getPersistenceSession().getServicesInjector().lookupService(HintStore.class);
- }
-
-
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ComponentHintKey.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ComponentHintKey.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ComponentHintKey.java
index 7db5f09..ea411c6 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ComponentHintKey.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/util/ComponentHintKey.java
@@ -25,42 +25,36 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.hint.HintStore;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
/**
* Scoped by the {@link Component component's path}.
*/
-public class ComponentHintKey<T extends Serializable> implements Serializable {
+public class ComponentHintKey implements Serializable {
private static final long serialVersionUID = 1L;
- public static <T extends Serializable> ComponentHintKey<T> create(
- final Component path,
- final String key,
- final HintStore hintStore) {
- return new ComponentHintKey<T>(path, key, null, hintStore);
+ public static ComponentHintKey create( final Component path, final String key) {
+ return new ComponentHintKey(path, key, null);
}
- public static <T extends Serializable> ComponentHintKey<T> create(
- final String fullKey,
- final HintStore hintStore) {
- return new ComponentHintKey<T>(null, null, fullKey, hintStore);
+ public static ComponentHintKey create(
+ final String fullKey) {
+ return new ComponentHintKey(null, null, fullKey);
}
private final Component component;
private final String keyName;
private final String fullKey;
- private final HintStore hintStore;
private ComponentHintKey(
final Component component,
final String keyName,
- final String fullKey,
- final HintStore hintStore) {
+ final String fullKey) {
this.component = component;
this.keyName = keyName;
this.fullKey = fullKey;
- this.hintStore = hintStore;
}
public String getKey() {
@@ -73,37 +67,30 @@ public class ComponentHintKey<T extends Serializable> implements Serializable {
return UiHintContainer.Util.hintPathFor(component) + "-" + keyName;
}
- public String getKeyName() {
- return keyName;
- }
-
public boolean matches(final Component component, final String keyName) {
final String key = getKey();
final String keyOfProvided = keyFor(component, keyName);
return keyOfProvided.equals(key);
}
- public void set(final Bookmark bookmark, T t) {
+ public void set(final Bookmark bookmark, String value) {
if(bookmark == null) {
return;
}
- if(t != null) {
- getHintStore().set(bookmark, getKey(), t);
+ if(value != null) {
+ getHintStore().set(bookmark, getKey(), value);
} else {
remove(bookmark);
}
}
- public T get(final Bookmark bookmark) {
+ public String get(final Bookmark bookmark) {
if(bookmark == null) {
return null;
}
- return (T) getHintStore().get(bookmark, getKey());
+ return getHintStore().get(bookmark, getKey());
}
- protected HintStore getHintStore() {
- return hintStore;
- }
public void remove(final Bookmark bookmark) {
if(bookmark == null) {
@@ -117,28 +104,28 @@ public class ComponentHintKey<T extends Serializable> implements Serializable {
final Bookmark bookmark,
final PageParameters pageParameters,
final String prefix) {
- String value = (String) get(bookmark);
- final String prefixedKey = prefix + getKey();
+ Serializable value = get(bookmark);
if(value == null) {
return;
}
+ final String prefixedKey = prefix + getKey();
pageParameters.add(prefixedKey, value);
}
- public static <T extends Serializable> ComponentHintKey<T> noop() {
- return new ComponentHintKey<T>(null, null, null, null) {
+ public static ComponentHintKey noop() {
+ return new ComponentHintKey(null, null, null) {
@Override
public String getKey() {
return null;
}
@Override
- public void set(final Bookmark bookmark, final T serializable) {
+ public void set(final Bookmark bookmark, final String value) {
}
@Override
- public T get(final Bookmark bookmark) {
+ public String get(final Bookmark bookmark) {
return null;
}
@@ -148,7 +135,8 @@ public class ComponentHintKey<T extends Serializable> implements Serializable {
};
}
-
-
+ protected HintStore getHintStore() {
+ return IsisContext.getPersistenceSession().getServicesInjector().lookupService(HintStore.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/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 955f4b6..a105aa3 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
@@ -55,7 +55,7 @@ public class CollectionSelectorHelper implements Serializable {
private final EntityCollectionModel model;
private final List<ComponentFactory> componentFactories;
- private final ComponentHintKey<String> componentHintKey;
+ private final ComponentHintKey componentHintKey;
public CollectionSelectorHelper(
final EntityCollectionModel model,
@@ -66,15 +66,10 @@ public class CollectionSelectorHelper implements Serializable {
public CollectionSelectorHelper(
final EntityCollectionModel model,
final ComponentFactoryRegistry componentFactoryRegistry,
- final ComponentHintKey<String> componentHintKey) {
+ final ComponentHintKey componentHintKey) {
this.model = model;
this.componentFactories = locateComponentFactories(componentFactoryRegistry);
- this.componentHintKey =
- componentHintKey != null ? componentHintKey : ComponentHintKey.<String>noop();
- final EntityModel entityModel = model.getEntityModel();
- if(entityModel != null) {
- entityModel.putSessionAttribute(this.componentHintKey);
- }
+ this.componentHintKey = componentHintKey != null ? componentHintKey : ComponentHintKey.<String>noop();
}
private List<ComponentFactory> locateComponentFactories(ComponentFactoryRegistry componentFactoryRegistry) {
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
index 0ae06ea..4d92ae2 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
@@ -68,7 +68,7 @@ public class CollectionSelectorPanel extends PanelAbstract<EntityCollectionModel
private static final String ID_VIEW_BUTTON_ICON = "viewButtonIcon";
private final CollectionSelectorHelper selectorHelper;
- private final ComponentHintKey<String> componentHintKey;
+ private final ComponentHintKey componentHintKey;
private ComponentFactory selectedComponentFactory;
@@ -81,7 +81,7 @@ public class CollectionSelectorPanel extends PanelAbstract<EntityCollectionModel
public CollectionSelectorPanel(
final String id,
final EntityCollectionModel model,
- final ComponentHintKey<String> componentHintKey) {
+ final ComponentHintKey componentHintKey) {
super(id, model);
this.componentHintKey = componentHintKey;
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/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 c7a0dc9..dc2efbe 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
@@ -71,9 +71,9 @@ public class CollectionContentsMultipleViewsPanel
this.underlyingIdPrefix = ComponentType.COLLECTION_CONTENTS.toString();
final EntityModel entityModel = model.getEntityModel();
- final ComponentHintKey<String> selectedItemSessionAttribute =
+ final ComponentHintKey selectedItemSessionAttribute =
entityModel != null
- ? entityModel.<String>componentKeyFor(this, EntityCollectionModel.SESSION_ATTRIBUTE_SELECTED_ITEM)
+ ? ComponentHintKey.<String>create(this, EntityCollectionModel.HINT_KEY_SELECTED_ITEM)
: null;
selectorHelper = new CollectionSelectorHelper(
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
index 173a344..835ff8f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
@@ -62,15 +62,14 @@ public class EntityCollectionPanel extends PanelAbstract<EntityModel> implements
private static final String ID_ADDITIONAL_LINKS = "additionalLinks";
private static final String ID_SELECTOR_DROPDOWN = "selectorDropdown";
- private final ComponentHintKey<String> selectedItemSessionAttribute;
+ private final ComponentHintKey selectedItemHintKey;
final WebMarkupContainer div;
public EntityCollectionPanel(final String id, final EntityModel entityModel) {
super(id, entityModel);
- selectedItemSessionAttribute = entityModel.createComponentKey(this,
- EntityCollectionModel.SESSION_ATTRIBUTE_SELECTED_ITEM);
+ selectedItemHintKey = ComponentHintKey.create(this, EntityCollectionModel.HINT_KEY_SELECTED_ITEM);
div = buildGui();
}
@@ -130,7 +129,7 @@ public class EntityCollectionPanel extends PanelAbstract<EntityModel> implements
final CollectionSelectorHelper selectorHelper =
new CollectionSelectorHelper(entityCollectionModel, getComponentFactoryRegistry(),
- selectedItemSessionAttribute);
+ selectedItemHintKey);
final List<ComponentFactory> componentFactories = selectorHelper.getComponentFactories();
@@ -139,7 +138,7 @@ public class EntityCollectionPanel extends PanelAbstract<EntityModel> implements
} else {
CollectionSelectorPanel selectorDropdownPanel =
new CollectionSelectorPanel(ID_SELECTOR_DROPDOWN,
- entityCollectionModel, selectedItemSessionAttribute);
+ entityCollectionModel, selectedItemHintKey);
final Model<ComponentFactory> componentFactoryModel = new Model<>();
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
index 48cd418..dc42585 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/layout/bs3/tabs/TabGroupPanel.java
@@ -44,7 +44,7 @@ public class TabGroupPanel extends AjaxBootstrapTabbedPanel {
public static final String SESSION_ATTR_SELECTED_TAB = "selectedTab";
// the view metadata
- private final ComponentHintKey<Integer> selectedTabInSession;
+ private final ComponentHintKey selectedTabHintKey;
private final EntityModel entityModel;
private static List<ITab> tabsFor(final EntityModel entityModel) {
@@ -79,7 +79,7 @@ public class TabGroupPanel extends AjaxBootstrapTabbedPanel {
super(id, tabsFor(entityModel));
this.entityModel = entityModel;
- this.selectedTabInSession = entityModel.createComponentKey(this, SESSION_ATTR_SELECTED_TAB);
+ this.selectedTabHintKey = ComponentHintKey.create(this, SESSION_ATTR_SELECTED_TAB);
}
@Override
@@ -90,13 +90,14 @@ public class TabGroupPanel extends AjaxBootstrapTabbedPanel {
@Override
public TabbedPanel setSelectedTab(final int index) {
- selectedTabInSession.set(entityModel.getObjectAdapterMemento().asBookmark(), index);
+ selectedTabHintKey.set(entityModel.getObjectAdapterMemento().asBookmark(), ""+index);
return super.setSelectedTab(index);
}
private void setSelectedTabFromSessionIfAny(
final AjaxBootstrapTabbedPanel ajaxBootstrapTabbedPanel) {
- final Integer tabIndex = selectedTabInSession.get(entityModel.getObjectAdapterMemento().asBookmark());
+ final String selectedTabStr = selectedTabHintKey.get(entityModel.getObjectAdapterMemento().asBookmark());
+ final Integer tabIndex = parse(selectedTabStr);
if (tabIndex != null) {
final int numTabs = ajaxBootstrapTabbedPanel.getTabs().size();
if (tabIndex < numTabs) {
@@ -106,6 +107,14 @@ public class TabGroupPanel extends AjaxBootstrapTabbedPanel {
}
}
+ private Integer parse(final String selectedTabStr) {
+ try {
+ return Integer.parseInt(selectedTabStr);
+ } catch (NumberFormatException e) {
+ return null;
+ }
+ }
+
@Override
public boolean isVisible() {
return FluentIterable.<AbstractTab>from(getTabs()).anyMatch(new Predicate<AbstractTab>() {
http://git-wip-us.apache.org/repos/asf/isis/blob/5d7d90fd/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
index 15bd4b4..3cf6b58 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/zclip/ZeroClipboardPanel.java
@@ -16,8 +16,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.widgets.zclip;
-import de.agilecoders.wicket.jquery.util.Strings2;
-
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -28,7 +26,10 @@ import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+import org.apache.isis.applib.services.hint.HintStore;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.wicket.model.hints.IsisEnvelopeEvent;
import org.apache.isis.viewer.wicket.model.hints.IsisUiHintEvent;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
@@ -39,6 +40,8 @@ import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.Links;
+import de.agilecoders.wicket.jquery.util.Strings2;
+
public class ZeroClipboardPanel extends PanelAbstract<EntityModel> {
private static final long serialVersionUID = 1L;
@@ -96,7 +99,10 @@ public class ZeroClipboardPanel extends PanelAbstract<EntityModel> {
if(subscribingLink instanceof BookmarkablePageLink) {
final BookmarkablePageLink<?> link = (BookmarkablePageLink<?>) subscribingLink;
final Class pageClass = link.getPageClass();
- final PageParameters pageParameters = link.getPageParameters();
+
+ final EntityModel entityModel = ZeroClipboardPanel.this.getModel();
+ final PageParameters pageParameters = entityModel.getPageParameters();
+
final CharSequence urlFor = link.urlFor(pageClass, pageParameters);
return getRequestCycle().getUrlRenderer().renderFullUrl(Url.parse(urlFor));
} else {
@@ -174,4 +180,9 @@ public class ZeroClipboardPanel extends PanelAbstract<EntityModel> {
final PageClassRegistryAccessor pcra = (PageClassRegistryAccessor) getApplication();
return pcra.getPageClassRegistry();
}
+
+ protected HintStore getHintStore() {
+ return IsisContext.getPersistenceSession().getServicesInjector().lookupService(HintStore.class);
+ }
+
}