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/06/10 15:36:27 UTC

[10/12] isis git commit: ISIS-1427: completes rationalization for minimizing calls to IsisContext#getIsisSessionFactory static.

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
index 340e202..7e5b744 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/bulk/BulkActionsLinkFactory.java
@@ -37,7 +37,6 @@ import org.apache.isis.applib.services.command.Command.Executor;
 import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.applib.services.xactn.TransactionService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
@@ -45,6 +44,8 @@ import org.apache.isis.core.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
@@ -84,7 +85,7 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
 
             @Override
             public void onClick() {
-                final ObjectAction objectAction = actionMemento.getAction();
+                final ObjectAction objectAction = actionMemento.getAction(getSpecificationLoader());
                 final ConcurrencyChecking concurrencyChecking =
                         ConcurrencyChecking.concurrencyCheckingFor(objectAction.getSemantics());
 
@@ -93,8 +94,10 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
 
                     final List<ObjectAdapter> toggledAdapters =
                             FluentIterable.from(toggleMementosList)
-                            .transform(ObjectAdapterMemento.Functions.fromMemento(concurrencyChecking))
-                            .toList();
+                            .transform(
+                                    ObjectAdapterMemento.Functions.fromMemento(
+                                            concurrencyChecking, getPersistenceSession(), getSpecificationLoader()))
+                                    .toList();
 
                     final List<Object> domainObjects = Lists.newArrayList(Iterables.transform(toggledAdapters, ObjectAdapter.Functions.getObject()));
 
@@ -148,7 +151,7 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
                     model.clearToggleMementosList();
                     toggleboxColumn.clearToggles();
                     final ActionModel actionModel = model.getActionModelHint();
-                    if(actionModel != null && actionModel.getActionMemento().getAction().getSemantics().isIdempotentInNature()) {
+                    if(actionModel != null && actionModel.getActionMemento().getAction(getSpecificationLoader()).getSemantics().isIdempotentInNature()) {
                         ObjectAdapter resultAdapter = actionModel.getObject();
                         model.setObjectList(resultAdapter);
                     } else {
@@ -190,7 +193,7 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
                 final List<ObjectAdapterMemento> toggleMementosList = Lists.newArrayList(model.getToggleMementosList());
                 for (ObjectAdapterMemento oam : toggleMementosList) {
                     // just requesting the adapter will sync the OAM's version with the objectstore
-                    oam.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+                    oam.getObjectAdapter(ConcurrencyChecking.NO_CHECK, getPersistenceSession(), getSpecificationLoader());
                 }
 
                 // discard any adapters that might have been deleted
@@ -200,7 +203,8 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
                 final List<ObjectAdapter> adapters = model.getObject();
                 model.clearToggleMementosList();
                 for (ObjectAdapterMemento oam : toggleMementosList) {
-                    final ObjectAdapter objectAdapter = oam.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+                    final ObjectAdapter objectAdapter = oam.getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                            getPersistenceSession(), getSpecificationLoader());
                     if(adapters.contains(objectAdapter)) {
                         // in case it has been deleted...
                         model.toggleSelectionOn(objectAdapter);
@@ -231,8 +235,16 @@ public final class BulkActionsLinkFactory implements ActionLinkFactory {
     // Dependencies (from context)
     ///////////////////////////////////////////////////////
 
+    SpecificationLoader getSpecificationLoader() {
+        return getIsisSessionFactory().getSpecificationLoader();
+    }
+
+    PersistenceSession getPersistenceSession() {
+        return getIsisSessionFactory().getCurrentSession().getPersistenceSession();
+    }
+
     public AuthenticationSession getAuthenticationSession() {
-        return getServicesInjector().lookupService(AuthenticationSessionProvider.class).getAuthenticationSession();
+        return getServicesInjector().getAuthenticationSession();
     }
 
     protected MessageBroker getMessageBroker() {

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/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 a105aa3..6fa6842 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
@@ -133,7 +133,7 @@ public class CollectionSelectorHelper implements Serializable {
 
         // else @CollectionLayout#defaultView attribute
         if (hasDefaultViewFacet(model)) {
-            DefaultViewFacet defaultViewFacet = model.getCollectionMemento().getCollection().getFacet(DefaultViewFacet.class);
+            DefaultViewFacet defaultViewFacet = model.getCollectionMemento().getCollection(model.getSpecificationLoader()).getFacet(DefaultViewFacet.class);
             for (ComponentFactory componentFactory : componentFactories) {
                 final String componentName = componentFactory.getName();
                 final String viewName = defaultViewFacet.value();
@@ -193,7 +193,7 @@ public class CollectionSelectorHelper implements Serializable {
         }
 
         final OneToManyAssociation collection =
-                entityCollectionModel.getCollectionMemento().getCollection();
+                entityCollectionModel.getCollectionMemento().getCollection(entityCollectionModel.getSpecificationLoader());
         RenderFacet renderFacet = collection.getFacet(RenderFacet.class);
         return renderFacet != null && renderFacet.value() == Render.Type.EAGERLY;
     }
@@ -205,7 +205,7 @@ public class CollectionSelectorHelper implements Serializable {
         }
 
         final OneToManyAssociation collection =
-                entityCollectionModel.getCollectionMemento().getCollection();
+                entityCollectionModel.getCollectionMemento().getCollection(entityCollectionModel.getSpecificationLoader());
         DefaultViewFacet defaultViewFacet = collection.getFacet(DefaultViewFacet.class);
         return defaultViewFacet != null;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 62a0e1d..ece85d6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -173,7 +173,8 @@ public class CollectionContentsAsAjaxTablePanel
         
         final ObjectSpecification parentSpecIfAny = 
                 getModel().isParented() 
-                    ? getModel().getParentObjectAdapterMemento().getObjectAdapter(ConcurrencyChecking.NO_CHECK).getSpecification() 
+                    ? getModel().getParentObjectAdapterMemento().getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                        getPersistenceSession(), getSpecificationLoader()).getSpecification()
                     : null;
         
         @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/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 835ff8f..20eb1d9 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
@@ -96,7 +96,8 @@ public class EntityCollectionPanel extends PanelAbstract<EntityModel> implements
         CssClassAppender.appendCssClassTo(div, entityCollectionModel.getCollectionMemento().getId());
         CssClassAppender.appendCssClassTo(div, entityCollectionModel.getTypeOfSpecification().getFullIdentifier().replace('.','-'));
 
-        final OneToManyAssociation association = entityCollectionModel.getCollectionMemento().getCollection();
+        final OneToManyAssociation association = entityCollectionModel.getCollectionMemento().getCollection(
+                entityCollectionModel.getSpecificationLoader());
         final ObjectAdapter objectAdapter = getModel().getObject();
         final Consent visibility = association.isVisible(objectAdapter, InteractionInitiatedBy.USER, Where.OBJECT_FORMS);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index 9816a42..2fefb31 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -175,7 +175,8 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
     public ObjectAdapter getContextAdapterIfAny() {
         EntityModel model = getModel();
         ObjectAdapterMemento contextAdapterMementoIfAny = model.getContextAdapterIfAny();
-        return contextAdapterMementoIfAny != null? contextAdapterMementoIfAny.getObjectAdapter(ConcurrencyChecking.NO_CHECK): null;
+        return contextAdapterMementoIfAny != null? contextAdapterMementoIfAny.getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                model.getPersistenceSession(), model.getSpecificationLoader()): null;
     }
     
     static String abbreviated(final String str, final int maxLength) {

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
index b7a320d..5570903 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
@@ -96,14 +96,15 @@ public class PropertyEditPanel extends PanelAbstract<ScalarModel>
         ObjectAdapter targetAdapter = null;
         try {
             targetAdapter = scalarModel.getParentObjectAdapterMemento()
-                    .getObjectAdapter(AdapterManager.ConcurrencyChecking.CHECK);
+                    .getObjectAdapter(AdapterManager.ConcurrencyChecking.CHECK, scalarModel.getPersistenceSession(),
+                            scalarModel.getSpecificationLoader());
 
             scalarModel.toEditMode();
 
             getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.PROPERTY_EDIT_FORM, getScalarModel());
             getComponentFactoryRegistry().addOrReplaceComponent(header, ComponentType.ENTITY_ICON_AND_TITLE, new EntityModel(targetAdapter));
 
-            final OneToOneAssociation property = getScalarModel().getPropertyMemento().getProperty();
+            final OneToOneAssociation property = getScalarModel().getPropertyMemento().getProperty(scalarModel.getSpecificationLoader());
             final String propertyName = property.getName();
             final Label label = new Label(ID_PROPERTY_NAME, Model.of(propertyName));
 
@@ -120,7 +121,8 @@ public class PropertyEditPanel extends PanelAbstract<ScalarModel>
             // been updated in the attempt
             if (targetAdapter == null) {
                 targetAdapter = scalarModel.getParentObjectAdapterMemento()
-                        .getObjectAdapter(AdapterManager.ConcurrencyChecking.CHECK);
+                        .getObjectAdapter(AdapterManager.ConcurrencyChecking.CHECK, getPersistenceSession(),
+                                getSpecificationLoader());
             }
 
             // page redirect/handling
@@ -156,7 +158,7 @@ public class PropertyEditPanel extends PanelAbstract<ScalarModel>
         ObjectAdapter targetAdapter = null;
         try {
             targetAdapter = getModel().getParentObjectAdapterMemento().getObjectAdapter(
-                    AdapterManager.ConcurrencyChecking.CHECK);
+                    AdapterManager.ConcurrencyChecking.CHECK, getModel().getPersistenceSession(), getSpecificationLoader());
 
             // no concurrency exception, so continue...
             return editTargetAndProcessResults(target, feedbackForm);
@@ -167,7 +169,8 @@ public class PropertyEditPanel extends PanelAbstract<ScalarModel>
             // been updated in the attempt
             if (targetAdapter == null) {
                 targetAdapter = getModel().getParentObjectAdapterMemento().getObjectAdapter(
-                        AdapterManager.ConcurrencyChecking.CHECK);
+                        AdapterManager.ConcurrencyChecking.CHECK, getModel().getPersistenceSession(),
+                        getSpecificationLoader());
             }
 
             // page redirect/handling
@@ -211,7 +214,8 @@ public class PropertyEditPanel extends PanelAbstract<ScalarModel>
             // could be programmatic flushing, so must include in the try... finally
 
             ObjectAdapter adapter = getScalarModel().getParentObjectAdapterMemento()
-                    .getObjectAdapter(AdapterManager.ConcurrencyChecking.CHECK);
+                    .getObjectAdapter(AdapterManager.ConcurrencyChecking.CHECK, getPersistenceSession(),
+                            getSpecificationLoader());
 
             final ObjectAdapter objectAdapter = getScalarModel().applyValue(adapter);
             // (borrowed some code previously in EntityModel)

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPromptHeaderPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPromptHeaderPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPromptHeaderPanel.java
index 49c91bd..955abc2 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPromptHeaderPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPromptHeaderPanel.java
@@ -41,18 +41,19 @@ public class PropertyEditPromptHeaderPanel extends PanelAbstract<ScalarModel> {
         super(id, model);
 
         ObjectAdapter targetAdapter =
-                model.getParentObjectAdapterMemento().getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK);
+                model.getParentObjectAdapterMemento().getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK,
+                        getPersistenceSession(), getSpecificationLoader());
 
         getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.ENTITY_ICON_AND_TITLE, new EntityModel(targetAdapter));
 
         final Label label = new Label(ID_PROPERTY_NAME, new AbstractReadOnlyModel<String>() {
             @Override
             public String getObject() {
-                final OneToOneAssociation property = model.getPropertyMemento().getProperty();
+                final OneToOneAssociation property = model.getPropertyMemento().getProperty(getSpecificationLoader());
                 return property.getName();
             }
         });
-        final OneToOneAssociation property = model.getPropertyMemento().getProperty();
+        final OneToOneAssociation property = model.getPropertyMemento().getProperty(getSpecificationLoader());
         final NamedFacet namedFacet = property.getFacet(NamedFacet.class);
         if(namedFacet != null) {
             label.setEscapeModelStrings(namedFacet.escaped());

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 42a5e83..bf33953 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -43,6 +43,7 @@ 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.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
 import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
@@ -268,7 +269,8 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         ScalarModel model = getModel();
         final CssClassFacet facet = model.getFacet(CssClassFacet.class);
         if(facet != null) {
-            final ObjectAdapter parentAdapter = model.getParentObjectAdapterMemento().getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+            final ObjectAdapter parentAdapter = model.getParentObjectAdapterMemento().getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                    getPersistenceSession(), getSpecificationLoader());
             final String cssClass = facet.cssClass(parentAdapter);
             CssClassAppender.appendCssClassTo(this, cssClass);
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index 4a353a0..0d65bc8 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -45,7 +45,6 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
@@ -369,11 +368,12 @@ public class ReferencePanel extends ScalarPanelAbstract {
             return;
         }
         
-        if(!curr.containedIn(choiceMementos)) {
+        if(!curr.containedIn(choiceMementos, getPersistenceSession(), getSpecificationLoader())) {
             if(!choiceMementos.isEmpty() && autoSelect()) {
                 final ObjectAdapterMemento newAdapterMemento = choiceMementos.get(0);
                 select2Field.getModel().setObject(newAdapterMemento);
-                getModel().setObject(newAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK));
+                getModel().setObject(newAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                        getPersistenceSession(), getSpecificationLoader()));
             } else {
                 select2Field.getModel().setObject(null);
                 getModel().setObject(null);
@@ -465,7 +465,8 @@ public class ReferencePanel extends ScalarPanelAbstract {
                 select2Field.getModel().setObject(convertedInput);
             }
             
-            final ObjectAdapter adapter = convertedInput!=null?convertedInput.getObjectAdapter(ConcurrencyChecking.NO_CHECK):null;
+            final ObjectAdapter adapter = convertedInput!=null?convertedInput.getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                    getPersistenceSession(), getSpecificationLoader()):null;
             getModel().setObject(adapter);
         }
     
@@ -526,9 +527,8 @@ public class ReferencePanel extends ScalarPanelAbstract {
     @com.google.inject.Inject
     private WicketViewerSettings wicketViewerSettings;
 
-    // REVIEW: can't inject because IsisConfiguration not serializable.
     IsisConfiguration getConfiguration() {
-        return IsisContext.getSessionFactory().getConfiguration();
+        return getIsisSessionFactory().getConfiguration();
     }
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
index dd9eb31..8f3332d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
@@ -88,7 +88,7 @@ public class StandaloneCollectionPanel extends PanelAbstract<EntityCollectionMod
         addOrReplace(outerDiv);
 
         ActionModel actionModel = entityCollectionModel.getActionModelHint();
-        ObjectAction action = actionModel.getActionMemento().getAction();
+        ObjectAction action = actionModel.getActionMemento().getAction(entityCollectionModel.getSpecificationLoader());
         outerDiv.addOrReplace(new Label(StandaloneCollectionPanel.ID_ACTION_NAME, Model.of(action.getName())));
 
         CssClassAppender.appendCssClassTo(outerDiv, action.getOnType().getFullIdentifier().replace('.', '-') + "_" + action.getId());

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
index 20b3aa8..4eb77e6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
@@ -19,16 +19,23 @@ package org.apache.isis.viewer.wicket.ui.components.widgets;
 import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
+
 import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
-import org.wicketstuff.select2.TextChoiceProvider;
+
 import org.apache.wicket.Session;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.TextChoiceProvider;
+
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -55,7 +62,9 @@ public abstract class ObjectAdapterMementoProviderAbstract extends TextChoicePro
             return NULL_DISPLAY_TEXT;
         }
 
-        final ObjectAdapter objectAdapter = choice.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+        final ObjectAdapter objectAdapter =
+                choice.getObjectAdapter(
+                        ConcurrencyChecking.NO_CHECK, getPersistenceSession(), getSpecificationLoader());
         final IConverter<Object> converter = findConverter(objectAdapter);
         return converter != null
                 ? converter.convertToString(objectAdapter.getObject(), getLocale())
@@ -102,7 +111,8 @@ public abstract class ObjectAdapterMementoProviderAbstract extends TextChoicePro
             matches.addAll(choicesMementos);
         } else {
             for (ObjectAdapterMemento candidate : choicesMementos) {
-                ObjectAdapter objectAdapter = candidate.getObjectAdapter(ConcurrencyChecking.NO_CHECK);
+                ObjectAdapter objectAdapter = candidate.getObjectAdapter(ConcurrencyChecking.NO_CHECK,
+                        getPersistenceSession(), getSpecificationLoader());
                 String title = objectAdapter.titleString(objectAdapter);
                 if (title.toLowerCase().contains(term.toLowerCase())) {
                     matches.add(candidate);
@@ -132,4 +142,23 @@ public abstract class ObjectAdapterMementoProviderAbstract extends TextChoicePro
     protected ScalarModel getScalarModel() {
         return scalarModel;
     }
+
+
+    ///////////////////////////////////////////////////////
+    // Dependencies (from context)
+    ///////////////////////////////////////////////////////
+
+
+    protected SpecificationLoader getSpecificationLoader() {
+        return getIsisSessionFactory().getSpecificationLoader();
+    }
+
+    PersistenceSession getPersistenceSession() {
+        return getIsisSessionFactory().getCurrentSession().getPersistenceSession();
+    }
+
+    private IsisSessionFactory getIsisSessionFactory() {
+        return IsisContext.getSessionFactory();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
index 55fd1ae..599211e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbModel.java
@@ -98,7 +98,8 @@ public class BreadcrumbModel implements Serializable {
     }
 
     public String titleFor(final EntityModel model) {
-        return model.getObjectAdapterMemento().getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK).titleString(null);
+        return model.getObjectAdapterMemento().getObjectAdapter(AdapterManager.ConcurrencyChecking.NO_CHECK,
+                model.getPersistenceSession(), model.getSpecificationLoader()).titleString(null);
     }
 
     public EntityModel lookup(final String oidStr) {

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
index 3025ad5..fad497c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
@@ -19,19 +19,14 @@
 
 package org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent;
 
-import java.util.List;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.markup.html.form.FormComponentPanel;
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
@@ -125,31 +120,6 @@ public abstract class FormComponentPanelAbstract<T> extends FormComponentPanel<T
         return cfra.getComponentFactoryRegistry();
     }
 
-    /**
-     * The underlying {@link AuthenticationSession Isis session} wrapped in the
-     * {@link #getWebSession() Wicket session}.
-     * 
-     * @return
-     */
-    public AuthenticationSession getAuthenticationSession() {
-        return IsisContext.getSessionFactory().getCurrentSession().getAuthenticationSession();
-    }
-
-    public DeploymentCategory getDeploymentCategory() {
-        return IsisContext.getSessionFactory().getDeploymentCategory();
-    }
-
-    // ///////////////////////////////////////////////////////////////////
-    // Dependencies (from IsisContext)
-    // ///////////////////////////////////////////////////////////////////
-
-    public PersistenceSession getPersistenceSession() {
-        return IsisContext.getSessionFactory().getCurrentSession().getPersistenceSession();
-    }
-
-    protected List<ObjectAdapter> getServices() {
-        return getPersistenceSession().getServices();
-    }
 
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/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 dcf12bd..172069e 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
@@ -273,7 +273,10 @@ public class ValueChoicesSelect2Panel extends ScalarPanelAbstract implements Sca
                                 : null;
                         select2Field.getModel().setObject(newAdapterMemento);
                         getModel().setObject(
-                                newAdapterMemento != null? newAdapterMemento.getObjectAdapter(ConcurrencyChecking.NO_CHECK): null);
+                                newAdapterMemento != null
+                                    ? newAdapterMemento.getObjectAdapter(
+                                        ConcurrencyChecking.NO_CHECK, getPersistenceSession(), getSpecificationLoader())
+                                    : null);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
index 697df6d..6e19fe5 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/EmailAvailableValidator.java
@@ -44,7 +44,7 @@ public class EmailAvailableValidator implements IValidator<String> {
 
     @Override
     public void validate(final IValidatable<String> validatable) {
-        getSessionFactory().doInSession(new Runnable() {
+        getIsisSessionFactory().doInSession(new Runnable() {
             @Override
             public void run() {
                 UserRegistrationService userRegistrationService = getServicesInjector().lookupService(UserRegistrationService.class);
@@ -57,10 +57,10 @@ public class EmailAvailableValidator implements IValidator<String> {
         });
 
     }ServicesInjector getServicesInjector() {
-        return getSessionFactory().getServicesInjector();
+        return getIsisSessionFactory().getServicesInjector();
     }
 
-    IsisSessionFactory getSessionFactory() {
+    IsisSessionFactory getIsisSessionFactory() {
         return IsisContext.getSessionFactory();
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
index a7da922..de9c583 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/register/RegisterPanel.java
@@ -95,7 +95,7 @@ public abstract class RegisterPanel extends GenericPanel<UserDetails> {
     /**
      * Register user form.
      */
-    private static class RegisterForm extends StatelessForm<UserDetails>
+    private class RegisterForm extends StatelessForm<UserDetails>
     {
         private static final long serialVersionUID = 1L;
 
@@ -124,13 +124,13 @@ public abstract class RegisterPanel extends GenericPanel<UserDetails> {
         {
             final UserDetails userDetails = getModelObject();
 
-            getSessionFactory().doInSession(new Runnable() {
+            getIsisSessionFactory().doInSession(new Runnable() {
                     @Override
                     public void run() {
-                        final UserRegistrationService userRegistrationService = getSessionFactory()
+                        final UserRegistrationService userRegistrationService = getIsisSessionFactory()
                                 .getServicesInjector().lookupService(UserRegistrationService.class);
 
-                        getSessionFactory().getCurrentSession().getPersistenceSession().getTransactionManager()
+                        getIsisSessionFactory().getCurrentSession().getPersistenceSession().getTransactionManager()
                                 .executeWithinTransaction(new TransactionalClosure() {
                             @Override
                             public void execute() {
@@ -161,10 +161,6 @@ public abstract class RegisterPanel extends GenericPanel<UserDetails> {
         }
     }
 
-    static IsisSessionFactory getSessionFactory() {
-        return IsisContext.getSessionFactory();
-    }
-
     protected TextField<String> newEmailField(final UserDetails userDetails) {
         // use readonly-ish model to prevent changing the email with manual form submits
         TextField<String> emailField = new TextField<>(ID_EMAIL, new Model<String>() {
@@ -199,4 +195,9 @@ public abstract class RegisterPanel extends GenericPanel<UserDetails> {
         usernameFormGroup.add(username);
         return usernameFormGroup;
     }
+
+    IsisSessionFactory getIsisSessionFactory() {
+        return IsisContext.getSessionFactory();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
index 66d27ff..cfeb59e 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/actionprompt/ActionPromptPage.java
@@ -23,6 +23,7 @@ import org.apache.wicket.Component;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
@@ -39,7 +40,7 @@ public class ActionPromptPage extends PageAbstract {
      * For use with {@link Component#setResponsePage(org.apache.wicket.Page)}
      */
     public ActionPromptPage(final ActionModel model) {
-        super(new PageParameters(), model.getActionMemento().getAction().getName(), ComponentType.ACTION_PROMPT);
+        super(new PageParameters(), model.getActionMemento().getAction(model.getSpecificationLoader()).getName(), ComponentType.ACTION_PROMPT);
         addChildComponents(themeDiv, model);
 
         if(model.isBookmarkable()) {
@@ -48,19 +49,21 @@ public class ActionPromptPage extends PageAbstract {
         addBookmarkedPages(themeDiv);
     }
 
-    public ActionPromptPage(final PageParameters pageParameters) {
-        this(pageParameters, buildModel(pageParameters));
+    public ActionPromptPage(final PageParameters pageParameters, final SpecificationLoader specificationLoader) {
+        this(pageParameters, buildModel(pageParameters, specificationLoader));
     }
     
     public ActionPromptPage(final PageParameters pageParameters, final ActionModel model) {
-        super(pageParameters, model.getActionMemento().getAction().getName(), ComponentType.ACTION_PROMPT);
+        super(pageParameters, model.getActionMemento().getAction(model.getSpecificationLoader()).getName(), ComponentType.ACTION_PROMPT);
         addChildComponents(themeDiv, model);
         
         // no need to bookmark because the ActionPanel will have done so for us
         addBookmarkedPages(themeDiv);
     }
     
-    private static ActionModel buildModel(final PageParameters pageParameters) {
-        return ActionModel.createForPersistent(pageParameters);
+    private static ActionModel buildModel(
+            final PageParameters pageParameters,
+            final SpecificationLoader specificationLoader) {
+        return ActionModel.createForPersistent(pageParameters, specificationLoader);
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
index 4cda181..b8e72ce 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
@@ -131,8 +131,10 @@ public class MmvErrorPage extends WebPage {
     // ///////////////////////////////////////////////////
 
     protected IsisConfiguration getConfiguration() {
-        return getSessionFactory().getConfiguration();
-    }IsisSessionFactory getSessionFactory() {
+        return getIsisSessionFactory().getConfiguration();
+    }
+
+    IsisSessionFactory getIsisSessionFactory() {
         return IsisContext.getSessionFactory();
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
index 4bbc61e..9c634c8 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/standalonecollection/StandaloneCollectionPage.java
@@ -49,7 +49,7 @@ public class StandaloneCollectionPage extends PageAbstract {
     private static String actionNameFrom(final EntityCollectionModel model) {
         ActionModel actionModel = model.getActionModelHint();
         if(actionModel != null) {
-            return actionModel.getActionMemento().getAction().getName();
+            return actionModel.getActionMemento().getAction(actionModel.getSpecificationLoader()).getName();
         }
         return "Results"; // fallback, probably not required because hint should always exist on the model. 
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
index 58e991c..b9fb447 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/value/ValuePage.java
@@ -62,7 +62,7 @@ public class ValuePage extends PageAbstract {
     private static String actionNameFrom(final ValueModel valueModel) {
         ActionModel actionModel = valueModel.getActionModelHint();
         if(actionModel != null) {
-            return actionModel.getActionMemento().getAction().getName();
+            return actionModel.getActionMemento().getAction(valueModel.getSpecificationLoader()).getName();
         }
         return "Results"; // fallback, probably not required because hint should always exist on the model. 
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
index a396d88..e69936d 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/voidreturn/VoidReturnPage.java
@@ -54,7 +54,7 @@ public class VoidReturnPage extends PageAbstract {
     private static String actionNameFrom(final VoidModel model) {
         ActionModel actionModel = model.getActionModelHint();
         if(actionModel != null) {
-            return actionModel.getActionMemento().getAction().getName();
+            return actionModel.getActionMemento().getAction(model.getSpecificationLoader()).getName();
         }
         return "Results"; // fallback, probably not required because hint should always exist on the model. 
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/95c3ecc1/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
index eb936c0..bf27fcd 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelAbstract.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.system.IsisSystem;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
@@ -202,6 +203,10 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel
         return getIsisSessionFactory().getCurrentSession().getPersistenceSession();
     }
 
+    public SpecificationLoader getSpecificationLoader() {
+        return getIsisSessionFactory().getSpecificationLoader();
+    }
+
     protected ServicesInjector getServicesInjector() {
         return getIsisSessionFactory().getServicesInjector();
     }
@@ -211,4 +216,5 @@ public abstract class PanelAbstract<T extends IModel<?>> extends Panel
     }
 
 
+
 }