This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 413743e041 ISIS-3203: [Wicket Viewer] refactoring (1)
413743e041 is described below

commit 413743e041ac6fb5e5d05aa83f15ddd303ad785a
Author: Andi Huber <[email protected]>
AuthorDate: Fri Sep 9 06:49:54 2022 +0200

    ISIS-3203: [Wicket Viewer] refactoring (1)
---
 .../_testing/MetaModelContext_forTesting.java      | 12 +---
 .../metamodel/context/HasMetaModelContext.java     | 13 ++---
 .../context/MetaModelContext_usingSpring.java      |  6 +-
 .../facets/object/value/ValueFacetAbstract.java    |  2 +-
 .../metamodel/object/_ManagedObjectViewmodel.java  |  2 +-
 .../authorization/AuthorizationFacetAbstract.java  |  7 +--
 .../metamodel/facets/AbstractFacetFactoryTest.java | 10 ++--
 .../actions/ActionMethodsFacetFactoryTest.java     |  2 +-
 .../ValueSemanticsProviderAbstractTestCase.java    |  8 +--
 .../wkt/viewer/EventProviderAbstract.java          |  2 +-
 .../testing/AbstractFacetFactoryTest.java          | 10 ++--
 .../testdomain/conf/Configuration_usingWicket.java |  4 +-
 ...mmonContextModel.java => HasCommonContext.java} | 30 +++++-----
 .../viewer/wicket/model/models/ModelAbstract.java  | 30 ++++------
 ...essor.java => HasComponentFactoryRegistry.java} |  2 +-
 .../ajaxtable/IsisAjaxNavigationToolbar.java       | 15 ++++-
 .../ajaxtable/IsisTotalRecordsToolbar.java         | 15 ++++-
 .../ajaxtable/PrototypingMessageProvider.java      | 25 ++++-----
 .../ajaxtable/columns/GenericColumnAbstract.java   |  4 +-
 .../formcomponent/FormComponentPanelAbstract.java  |  4 +-
 .../widgets/linkandlabel/ActionLink.java           |  4 +-
 ...stryAccessor.java => HasPageClassRegistry.java} |  2 +-
 .../isis/viewer/wicket/ui/pages/PageAbstract.java  |  4 +-
 .../isis/viewer/wicket/ui/pages/WebPageBase.java   | 41 ++------------
 .../isis/viewer/wicket/ui/panels/FormAbstract.java | 39 ++++---------
 .../isis/viewer/wicket/ui/panels/PanelBase.java    | 64 +++++-----------------
 .../ui/components/scalars/ConverterTester.java     | 16 +++---
 .../AuthenticatedWebSessionForIsis.java            |  5 --
 .../viewer/integration/WebRequestCycleForIsis.java | 13 ++---
 .../viewer/wicketapp/IsisWicketApplication.java    |  8 +--
 30 files changed, 152 insertions(+), 247 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
index c99e0b0456..5577df1260 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -36,9 +36,8 @@ import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.grid.GridLoaderService;
 import org.apache.isis.applib.services.grid.GridService;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.layout.LayoutService;
@@ -151,7 +150,7 @@ implements MetaModelContext {
     @Builder.Default
     private Function<MetaModelContext, ProgrammingModel> 
programmingModelFactory = ProgrammingModelFacetsJava11::new;
 
-    private InteractionProvider interactionProvider;
+    private InteractionService interactionService;
 
     private TranslationService translationService;
 
@@ -223,7 +222,7 @@ implements MetaModelContext {
                 metamodelEventService,
                 messageService,
 //                specificationLoader,
-                interactionProvider,
+                interactionService,
                 getTranslationService(),
                 authentication,
                 authorizationManager,
@@ -404,11 +403,6 @@ implements MetaModelContext {
         return new WebAppContextPath();
     }
 
-    @Override
-    public InteractionLayerTracker getInteractionLayerTracker() {
-        return (InteractionLayerTracker) getInteractionProvider();
-    }
-
     public void runWithConfigProperties(final Consumer<Map<String, String>> 
setup, final Runnable runnable) {
         val properties = _Maps.<String, String>newHashMap();
         setup.accept(properties);
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
index d7953eb833..0d4421e353 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/HasMetaModelContext.java
@@ -27,9 +27,8 @@ import org.springframework.lang.Nullable;
 import org.apache.isis.applib.locale.UserLocale;
 import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 import org.apache.isis.applib.services.message.MessageService;
@@ -101,10 +100,6 @@ public interface HasMetaModelContext {
         return getMetaModelContext().getAuthenticationManager();
     }
 
-    default InteractionProvider getInteractionProvider() {
-        return getMetaModelContext().getInteractionProvider();
-    }
-
     default TitleService getTitleService() {
         return getMetaModelContext().getTitleService();
     }
@@ -149,12 +144,12 @@ public interface HasMetaModelContext {
         return getMetaModelContext().getMenuBarsService();
     }
 
-    default InteractionLayerTracker getInteractionLayerTracker() {
-        return getMetaModelContext().getInteractionLayerTracker();
+    default InteractionService getInteractionService() {
+        return getMetaModelContext().getInteractionService();
     }
 
     default Optional<UserLocale> currentUserLocale() {
-        return getInteractionProvider().currentInteractionContext()
+        return getInteractionService().currentInteractionContext()
                 .map(InteractionContext::getLocale);
     }
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingSpring.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingSpring.java
index 8789331e52..5ba2efeb2c 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingSpring.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext_usingSpring.java
@@ -28,7 +28,7 @@ import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.homepage.HomePageResolverService;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.applib.services.iactn.InteractionProvider;
-import org.apache.isis.applib.services.iactnlayer.InteractionLayerTracker;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 import org.apache.isis.applib.services.message.MessageService;
@@ -155,8 +155,8 @@ class MetaModelContext_usingSpring implements 
MetaModelContext {
     getSingletonElseFail(MessageService.class);
 
     @Getter(lazy = true)
-    private final InteractionLayerTracker interactionLayerTracker =
-    getSingletonElseFail(InteractionLayerTracker.class);
+    private final InteractionService interactionService =
+    getSingletonElseFail(InteractionService.class);
 
     @Override
     public final ManagedObject getHomePageAdapter() {
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
index 9ba54f5acb..6a236bc3cd 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -121,7 +121,7 @@ implements ValueFacet<T> {
 
     @Override
     public ValueSemanticsProvider.Context createValueSemanticsContext(final 
@Nullable ObjectFeature feature) {
-        val iaProvider = super.getInteractionProvider();
+        val iaProvider = super.getInteractionService();
         if(iaProvider==null) {
             return null; // JUnit context
         }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
index e461326085..32c46e6f07 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/object/_ManagedObjectViewmodel.java
@@ -97,7 +97,7 @@ implements
 
     @Override
     public final void refreshViewmodel(final @Nullable Supplier<Bookmark> 
bookmarkSupplier) {
-        val shouldRefresh = 
getMetaModelContext().getInteractionProvider().getInteractionId()
+        val shouldRefresh = getInteractionService().getInteractionId()
         .map(this::shouldRefresh)
         .orElse(true); // if there is no current interaction, refresh 
regardless; unexpected state, might fail later
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java
index 879ab99103..c9dd38b360 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java
@@ -18,7 +18,6 @@
  */
 package 
org.apache.isis.core.metamodel.postprocessors.allbutparam.authorization;
 
-import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -39,13 +38,11 @@ implements AuthorizationFacet {
     }
 
     private final AuthorizationManager authorizationManager;
-    private final InteractionProvider interactionProvider;
 
     public AuthorizationFacetAbstract(
             final FacetHolder holder) {
         super(type(), holder);
         this.authorizationManager = getAuthorizationManager();
-        this.interactionProvider = getInteractionProvider();
     }
 
     @Override
@@ -57,7 +54,7 @@ implements AuthorizationFacet {
 
         val hides = authorizationManager
                 .isVisible(
-                        
interactionProvider.currentInteractionContextElseFail(),
+                        
getInteractionService().currentInteractionContextElseFail(),
                         ic.getIdentifier())
                 ? null
                 : "Not authorized to view";
@@ -78,7 +75,7 @@ implements AuthorizationFacet {
 
         val disables = authorizationManager
                 .isUsable(
-                        
interactionProvider.currentInteractionContextElseFail(),
+                        
getInteractionService().currentInteractionContextElseFail(),
                         ic.getIdentifier())
                 ? null
                 : "Not authorized to edit";
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
index 7c1c8f2971..0e0324b483 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryTest.java
@@ -28,8 +28,8 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
 import org.apache.isis.core.internaltestsupport.jmocking.JUnitRuleMockery2;
 import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
@@ -64,7 +64,7 @@ public abstract class AbstractFacetFactoryTest extends 
TestCase {
     }
 
     protected TranslationService mockTranslationService;
-    protected InteractionProvider mockInteractionProvider;
+    protected InteractionService mockInteractionService;
     protected final InteractionContext iaContext = 
InteractionContextFactory.testing();
     protected MethodRemover_forTesting methodRemover;
 
@@ -81,18 +81,18 @@ public abstract class AbstractFacetFactoryTest extends 
TestCase {
 
         methodRemover = new MethodRemover_forTesting();
 
-        mockInteractionProvider = context.mock(InteractionProvider.class);
+        mockInteractionService = context.mock(InteractionService.class);
 
         mockTranslationService = context.mock(TranslationService.class);
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .translationService(mockTranslationService)
-                .interactionProvider(mockInteractionProvider)
+                .interactionService(mockInteractionService)
                 .build();
 
         context.checking(new Expectations() {{
 
-            allowing(mockInteractionProvider).currentInteractionContext();
+            allowing(mockInteractionService).currentInteractionContext();
             will(returnValue(Optional.of(iaContext)));
         }});
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
index 25110b3047..ba9ef4a74d 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/ActionMethodsFacetFactoryTest.java
@@ -70,7 +70,7 @@ public class ActionMethodsFacetFactoryTest extends 
AbstractFacetFactoryTest {
 
         context.checking(new Expectations() {{
 
-            allowing(mockInteractionProvider).currentInteractionContext();
+            allowing(mockInteractionService).currentInteractionContext();
             will(returnValue(Optional.of(iaContext)));
         }});
 
diff --git 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
index 71581794b1..3a77161288 100644
--- 
a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
+++ 
b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTestCase.java
@@ -38,7 +38,7 @@ import static org.hamcrest.CoreMatchers.nullValue;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
-import org.apache.isis.applib.services.iactn.InteractionProvider;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.value.semantics.Parser;
 import org.apache.isis.applib.value.semantics.Renderer;
 import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
@@ -60,7 +60,7 @@ public abstract class 
ValueSemanticsProviderAbstractTestCase<T> {
     @Rule
     public JUnitRuleMockery2 context = 
JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
-    @Mock protected InteractionProvider mockInteractionProvider;
+    @Mock protected InteractionService mockInteractionService;
     @Mock protected ManagedObject mockAdapter;
 
     protected MetaModelContext metaModelContext;
@@ -74,12 +74,12 @@ public abstract class 
ValueSemanticsProviderAbstractTestCase<T> {
         Locale.setDefault(Locale.UK);
 
         metaModelContext = MetaModelContext_forTesting.builder()
-                .interactionProvider(mockInteractionProvider)
+                .interactionService(mockInteractionService)
                 .build();
 
         context.checking(new Expectations() {
             {
-                never(mockInteractionProvider);
+                never(mockInteractionService);
             }
         });
     }
diff --git 
a/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/EventProviderAbstract.java
 
b/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/EventProviderAbstract.java
index 5817909b0e..210ba2e3b8 100644
--- 
a/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/EventProviderAbstract.java
+++ 
b/extensions/vw/fullcalendar/wicket/ui/src/main/java/org/apache/isis/extensions/fullcalendar/wkt/viewer/EventProviderAbstract.java
@@ -105,7 +105,7 @@ public abstract class EventProviderAbstract implements 
EventProvider {
                 return null;
             }
 
-            val timeZone = commonContext.getInteractionProvider()
+            val timeZone = commonContext.getInteractionService()
                     .currentInteractionContext()
                     .map(InteractionContext::getTimeZone)
                     .orElse(ZoneId.systemDefault());
diff --git 
a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
 
b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
index 74761e5065..ec35161ab7 100644
--- 
a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
+++ 
b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/testing/AbstractFacetFactoryTest.java
@@ -27,8 +27,8 @@ import org.junit.Rule;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactn.InteractionProvider;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.services.repository.EntityState;
 import org.apache.isis.commons.collections.ImmutableEnumSet;
 import org.apache.isis.core.config.beans.PersistenceStack;
@@ -66,7 +66,7 @@ public abstract class AbstractFacetFactoryTest extends 
TestCase {
     }
 
     protected TranslationService mockTranslationService;
-    protected InteractionProvider mockInteractionProvider;
+    protected InteractionService mockInteractionService;
     protected final InteractionContext iaContext = 
InteractionContextFactory.testing();
     protected SpecificationLoader mockSpecificationLoader;
     protected MethodRemover_forTesting methodRemover;
@@ -85,19 +85,19 @@ public abstract class AbstractFacetFactoryTest extends 
TestCase {
 
         methodRemover = new MethodRemover_forTesting();
 
-        mockInteractionProvider = context.mock(InteractionProvider.class);
+        mockInteractionService = context.mock(InteractionService.class);
         mockTranslationService = context.mock(TranslationService.class);
         mockSpecificationLoader = context.mock(SpecificationLoader.class);
 
         metaModelContext = MetaModelContext_forTesting.builder()
                 .specificationLoader(mockSpecificationLoader)
                 .translationService(mockTranslationService)
-                .interactionProvider(mockInteractionProvider)
+                .interactionService(mockInteractionService)
                 .build();
 
         context.checking(new Expectations() {{
 
-            allowing(mockInteractionProvider).currentInteractionContext();
+            allowing(mockInteractionService).currentInteractionContext();
             will(returnValue(Optional.of(iaContext)));
         }});
 
diff --git 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingWicket.java
 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingWicket.java
index 5072e5d1be..e070bd297f 100644
--- 
a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingWicket.java
+++ 
b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/conf/Configuration_usingWicket.java
@@ -58,7 +58,7 @@ import 
org.apache.isis.viewer.wicket.model.isis.WicketApplicationInitializer;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.model.util.PageParameterUtils;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.ScalarFragmentFactory.FieldFrame;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.ScalarFragmentFactory.RegularFrame;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
@@ -328,7 +328,7 @@ public class Configuration_usingWicket {
     static class WicketApplication_forTesting
     extends WebApplication
     implements
-        ComponentFactoryRegistryAccessor,
+        HasComponentFactoryRegistry,
         HasMetaModelContext {
         private static final long serialVersionUID = 1L;
 
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/CommonContextModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasCommonContext.java
similarity index 56%
rename from 
viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/CommonContextModel.java
rename to 
viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasCommonContext.java
index a0634cc5bb..227c0f531f 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/CommonContextModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/HasCommonContext.java
@@ -18,27 +18,25 @@
  */
 package org.apache.isis.viewer.wicket.model.models;
 
-import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.isis.applib.services.i18n.TranslationContext;
+import org.apache.isis.core.config.IsisConfiguration.Viewer.Wicket;
+import org.apache.isis.core.metamodel.context.HasMetaModelContext;
 
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.viewer.wicket.model.util.WktContext;
+public interface HasCommonContext extends HasMetaModelContext {
 
-import lombok.val;
-
-public final class CommonContextModel
-extends LoadableDetachableModel<MetaModelContext> {
-
-    private static final long serialVersionUID = 1L;
+    default Wicket getWicketViewerSettings() {
+        return getConfiguration().getViewer().getWicket();
+    }
 
-    public static CommonContextModel wrap(final MetaModelContext 
commonContext) {
-        val model = new CommonContextModel();
-        model.setObject(commonContext);
-        return model;
+    /**
+     * Translate without context: Tooltips, Button-Labels, etc.
+     */
+    default String translate(final String input) {
+        return getTranslationService().translate(TranslationContext.empty(), 
input);
     }
 
-    @Override
-    protected MetaModelContext load() {
-        return WktContext.getMetaModelContext();
+    default boolean isPrototyping() {
+        return getSystemEnvironment().isPrototyping();
     }
 
 }
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
index 4df40c9dbc..c4f933b7dd 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
@@ -20,42 +20,34 @@ package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.wicket.model.LoadableDetachableModel;
 
-import org.apache.isis.core.config.IsisConfiguration.Viewer.Wicket;
-import org.apache.isis.core.metamodel.context.HasMetaModelContext;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.viewer.wicket.model.util.WktContext;
 
 /**
- * Adapter for {@link LoadableDetachableModel}s, providing access to some of 
the
- * Isis' dependencies.
+ * Adapter for {@link LoadableDetachableModel}s,
+ * providing access to the {@link MetaModelContext}.
  */
 public abstract class ModelAbstract<T>
 extends LoadableDetachableModel<T>
-implements HasMetaModelContext {
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
 
-    private final CommonContextModel commonContextModel;
+    protected ModelAbstract() {}
 
-    protected ModelAbstract() {
-        this.commonContextModel = new CommonContextModel();
+    protected ModelAbstract(final MetaModelContext mmc) {
+        this.mmc = mmc;
     }
 
-    protected ModelAbstract(final MetaModelContext commonContext) {
-        this.commonContextModel = CommonContextModel.wrap(commonContext);
-    }
-
-    protected ModelAbstract(final MetaModelContext commonContext, final T t) {
-        this.commonContextModel = CommonContextModel.wrap(commonContext);
+    protected ModelAbstract(final MetaModelContext mmc, final T t) {
+        this.mmc = mmc;
         super.setObject(t);
     }
 
-    protected Wicket getWicketViewerSettings() {
-        return getConfiguration().getViewer().getWicket();
-    }
-
+    private transient MetaModelContext mmc;
     @Override
     public MetaModelContext getMetaModelContext() {
-        return commonContextModel.getObject();
+        return mmc = WktContext.computeIfAbsent(mmc);
     }
 
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistryAccessor.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/HasComponentFactoryRegistry.java
similarity index 93%
rename from 
viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistryAccessor.java
rename to 
viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/HasComponentFactoryRegistry.java
index c9458e2741..2e30c05803 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistryAccessor.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/HasComponentFactoryRegistry.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
 /**
  * For obtaining the {@link ComponentFactoryRegistry}.
  */
-public interface ComponentFactoryRegistryAccessor extends Serializable {
+public interface HasComponentFactoryRegistry extends Serializable {
 
     ComponentFactoryRegistry getComponentFactoryRegistry();
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
index 93b2ba125e..ab493347ee 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisAjaxNavigationToolbar.java
@@ -23,12 +23,16 @@ import 
org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNav
 import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
 import org.apache.wicket.markup.html.navigation.paging.PagingNavigator;
 
+import org.apache.isis.core.metamodel.context.HasMetaModelContext;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.util.WktContext;
 import 
org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.GenericToggleboxColumn;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
-public class IsisAjaxNavigationToolbar extends AjaxNavigationToolbar {
+public class IsisAjaxNavigationToolbar extends AjaxNavigationToolbar
+implements HasMetaModelContext {
 
     private static final long serialVersionUID = 1L;
 
@@ -79,7 +83,8 @@ public class IsisAjaxNavigationToolbar extends 
AjaxNavigationToolbar {
             target.add(table);
         });
 
-        Wkt.labelAdd(container, "prototypingLabel", 
PrototypingMessageProvider.getTookTimingMessageModel());
+        Wkt.labelAdd(container, "prototypingLabel", new 
PrototypingMessageProvider(getMetaModelContext())
+                .getTookTimingMessageModel());
 
     }
 
@@ -108,4 +113,10 @@ public class IsisAjaxNavigationToolbar extends 
AjaxNavigationToolbar {
         return UiHintContainer.Util.hintContainerOf(this, EntityModel.class);
     }
 
+    private transient MetaModelContext mmc;
+    @Override
+    public MetaModelContext getMetaModelContext() {
+        return mmc = WktContext.computeIfAbsent(mmc);
+    }
+
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisTotalRecordsToolbar.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisTotalRecordsToolbar.java
index 732be8ebed..0ca0318efa 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisTotalRecordsToolbar.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/IsisTotalRecordsToolbar.java
@@ -27,6 +27,9 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.LambdaModel;
 import org.apache.wicket.model.Model;
 
+import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.viewer.wicket.model.models.HasCommonContext;
+import org.apache.isis.viewer.wicket.model.util.WktContext;
 import org.apache.isis.viewer.wicket.ui.util.Wkt;
 
 /**
@@ -36,7 +39,8 @@ import org.apache.isis.viewer.wicket.ui.util.Wkt;
  *
  * @since 2.0
  */
-public class IsisTotalRecordsToolbar extends AbstractToolbar {
+public class IsisTotalRecordsToolbar extends AbstractToolbar
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
     private static final String navigatorContainerId = "navigatorContainer";
@@ -73,7 +77,8 @@ public class IsisTotalRecordsToolbar extends AbstractToolbar {
             String.valueOf(table.getColumns().size()).intern())));
 
         Wkt.labelAdd(container, "navigatorLabel", messageModel);
-        Wkt.labelAdd(container, "prototypingLabel", 
PrototypingMessageProvider.getTookTimingMessageModel());
+        Wkt.labelAdd(container, "prototypingLabel", new 
PrototypingMessageProvider(getMetaModelContext())
+                .getTookTimingMessageModel());
     }
 
     /**
@@ -93,4 +98,10 @@ public class IsisTotalRecordsToolbar extends AbstractToolbar 
{
         setVisible(getTable().getPageCount() == 1);
     }
 
+    private transient MetaModelContext mmc;
+    @Override
+    public MetaModelContext getMetaModelContext() {
+        return mmc = WktContext.computeIfAbsent(mmc);
+    }
+
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
index 9607d36f25..5d2e94aab9 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/PrototypingMessageProvider.java
@@ -23,8 +23,10 @@ import java.util.Locale;
 import org.apache.isis.commons.internal.base._Timing;
 import org.apache.isis.core.interaction.session.IsisInteraction;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.viewer.wicket.model.util.WktContext;
+import org.apache.isis.viewer.wicket.model.models.HasCommonContext;
 
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
@@ -36,11 +38,14 @@ import lombok.val;
  *
  * @since 2.0
  */
-class PrototypingMessageProvider {
+@RequiredArgsConstructor
+class PrototypingMessageProvider
+implements HasCommonContext {
 
-    private static MetaModelContext commonContext = null;
+    @Getter(onMethod_={@Override})
+    private final MetaModelContext metaModelContext;
 
-    public static String getTookTimingMessageModel() {
+    public String getTookTimingMessageModel() {
         return isPrototyping()
                 ? getTookTimingMessage()
                 : "";
@@ -48,19 +53,11 @@ class PrototypingMessageProvider {
 
     // -- HELPER
 
-    private static MetaModelContext commonContext() {
-        return commonContext = WktContext.computeIfAbsent(commonContext);
-    }
-
-    private static boolean isPrototyping() {
-        return commonContext().getSystemEnvironment().isPrototyping();
-    }
-
-    private static String getTookTimingMessage() {
+    private String getTookTimingMessage() {
 
         final StringBuilder tookTimingMessage = new StringBuilder();
 
-        commonContext().getInteractionLayerTracker().currentInteraction()
+        getInteractionService().currentInteraction()
         .map(IsisInteraction.class::cast)
         .ifPresent(interaction->{
             val stopWatch = 
_Timing.atSystemNanos(interaction.getStartedAtSystemNanos());
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericColumnAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericColumnAbstract.java
index 1b1f094a60..32b4f8bc56 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericColumnAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/GenericColumnAbstract.java
@@ -30,7 +30,7 @@ import 
org.apache.isis.viewer.commons.model.components.ComponentType;
 import org.apache.isis.viewer.wicket.model.util.WktContext;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import 
org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.CollectionContentsAsAjaxTablePanel;
 
 import lombok.val;
@@ -75,7 +75,7 @@ implements GenericColumn {
 
     protected ComponentFactoryRegistry getComponentRegistry() {
         if(componentRegistry==null) {
-            val componentFactoryRegistryAccessor = 
(ComponentFactoryRegistryAccessor) Application.get();
+            val componentFactoryRegistryAccessor = 
(HasComponentFactoryRegistry) Application.get();
             componentRegistry = 
componentFactoryRegistryAccessor.getComponentFactoryRegistry();
         }
         return componentRegistry;
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
index e3e7e9b9f4..02297e030c 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/formcomponent/FormComponentPanelAbstract.java
@@ -27,7 +27,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.isis.viewer.commons.model.components.ComponentType;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.util.WktComponents;
 
 /**
@@ -112,7 +112,7 @@ extends FormComponentPanel<T> {
     // ///////////////////////////////////////////////////////////////////
 
     protected ComponentFactoryRegistry getComponentFactoryRegistry() {
-        final ComponentFactoryRegistryAccessor cfra = 
(ComponentFactoryRegistryAccessor) getApplication();
+        final HasComponentFactoryRegistry cfra = (HasComponentFactoryRegistry) 
getApplication();
         return cfra.getComponentFactoryRegistry();
     }
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
index b569c8f8c1..1aa0ca1fd3 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLink.java
@@ -39,7 +39,7 @@ import 
org.apache.isis.viewer.wicket.model.models.ActionPromptWithExtraContent;
 import org.apache.isis.viewer.wicket.model.util.PageParameterUtils;
 import org.apache.isis.viewer.wicket.model.util.WktContext;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import 
org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersPanel;
 import org.apache.isis.viewer.wicket.ui.components.layout.bs.BSGridPanel;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.ScalarFragmentFactory.FrameFragment;
@@ -260,7 +260,7 @@ extends IndicatingAjaxLink<ManagedObject> {
     }
 
     private ComponentFactoryRegistry getComponentFactoryRegistry() {
-        return ((ComponentFactoryRegistryAccessor) 
Application.get()).getComponentFactoryRegistry();
+        return ((HasComponentFactoryRegistry) 
Application.get()).getComponentFactoryRegistry();
     }
 
     public Wicket getSettings() {
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageClassRegistryAccessor.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/HasPageClassRegistry.java
similarity index 93%
rename from 
viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageClassRegistryAccessor.java
rename to 
viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/HasPageClassRegistry.java
index 66df01514d..243f4f8150 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageClassRegistryAccessor.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/HasPageClassRegistry.java
@@ -23,7 +23,7 @@ import java.io.Serializable;
 /**
  * API to obtain the {@link PageClassRegistry}.
  */
-public interface PageClassRegistryAccessor extends Serializable {
+public interface HasPageClassRegistry extends Serializable {
 
     PageClassRegistry getPageClassRegistry();
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 1a6c20b231..ce13be2631 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -63,7 +63,7 @@ import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.model.util.PageParameterUtils;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import 
org.apache.isis.viewer.wicket.ui.components.actionprompt.ActionPromptModalWindow;
 import 
org.apache.isis.viewer.wicket.ui.components.actionpromptsb.ActionPromptSidebar;
 import 
org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
@@ -478,7 +478,7 @@ implements ActionPromptProvider {
 
     // -- getComponentFactoryRegistry (Convenience)
     protected ComponentFactoryRegistry getComponentFactoryRegistry() {
-        final ComponentFactoryRegistryAccessor cfra = 
(ComponentFactoryRegistryAccessor) getApplication();
+        final HasComponentFactoryRegistry cfra = (HasComponentFactoryRegistry) 
getApplication();
         return cfra.getComponentFactoryRegistry();
     }
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
index 8c826efcb7..864d0508ce 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
@@ -24,14 +24,9 @@ import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.IsisConfiguration.Viewer.Wicket;
-import org.apache.isis.core.config.environment.IsisSystemEnvironment;
-import org.apache.isis.core.config.viewer.web.WebAppContextPath;
-import org.apache.isis.core.metamodel.context.HasMetaModelContext;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.viewer.wicket.model.models.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.util.WktContext;
 
 /**
@@ -40,15 +35,10 @@ import org.apache.isis.viewer.wicket.model.util.WktContext;
  */
 public abstract class WebPageBase
 extends WebPage
-implements HasMetaModelContext {
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
 
-    private transient WebAppContextPath webAppContextPath;
-    private transient PageClassRegistry pageClassRegistry;
-    private transient MetaModelContext commonContext;
-    private transient InteractionService interactionService;
-
     protected WebPageBase(final PageParameters parameters) {
         super(parameters);
     }
@@ -76,38 +66,17 @@ implements HasMetaModelContext {
 
     // -- DEPENDENCIES
 
+    private transient MetaModelContext mmc;
     @Override
     public MetaModelContext getMetaModelContext() {
-        return commonContext = WktContext.computeIfAbsent(commonContext);
-    }
-
-    @Override
-    public IsisConfiguration getConfiguration() {
-        return getMetaModelContext().getConfiguration();
-    }
-
-    @Override
-    public WebAppContextPath getWebAppContextPath() {
-        return webAppContextPath = computeIfAbsent(WebAppContextPath.class, 
webAppContextPath);
+        return mmc = WktContext.computeIfAbsent(mmc);
     }
 
+    private transient PageClassRegistry pageClassRegistry;
     public PageClassRegistry getPageClassRegistry() {
         return pageClassRegistry = computeIfAbsent(PageClassRegistry.class, 
pageClassRegistry);
     }
 
-    public InteractionService getInteractionService() {
-        return interactionService = computeIfAbsent(InteractionService.class, 
interactionService);
-    }
-
-    @Override
-    public IsisSystemEnvironment getSystemEnvironment() {
-        return getMetaModelContext().getSystemEnvironment();
-    }
-
-    protected Wicket getWicketViewerSettings() {
-        return getConfiguration().getViewer().getWicket();
-    }
-
     // -- HELPER
 
     private <X> X computeIfAbsent(final Class<X> type, final X existingIfAny) {
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
index a6b20fe6f2..f3ba542104 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
@@ -21,28 +21,22 @@ package org.apache.isis.viewer.wicket.ui.panels;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.core.config.IsisConfiguration.Viewer.Wicket;
-import org.apache.isis.core.metamodel.context.HasMetaModelContext;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.viewer.wicket.model.models.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.util.WktContext;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
+import org.apache.isis.viewer.wicket.ui.pages.HasPageClassRegistry;
 
 public abstract class FormAbstract<T> extends Form<T>
 implements
-    HasMetaModelContext,
-    ComponentFactoryRegistryAccessor,
-    PageClassRegistryAccessor {
+    HasCommonContext,
+    HasComponentFactoryRegistry,
+    HasPageClassRegistry {
 
     private static final long serialVersionUID = 1L;
 
-    private transient ComponentFactoryRegistry componentFactoryRegistry;
-    private transient PageClassRegistry pageClassRegistry;
-    private transient MetaModelContext commonContext;
-
     protected FormAbstract(final String id) {
         super(id);
     }
@@ -53,37 +47,28 @@ implements
 
     // -- DEPENDENCIES
 
+    private transient MetaModelContext mmc;
     @Override
     public final MetaModelContext getMetaModelContext() {
-        return commonContext = WktContext.computeIfAbsent(commonContext);
-    }
-
-    /**
-     * Translate without context: Tooltips, Button-Labels, etc.
-     */
-    public final String translate(final String input) {
-        return getTranslationService().translate(TranslationContext.empty(), 
input);
+        return mmc = WktContext.computeIfAbsent(mmc);
     }
 
+    private transient ComponentFactoryRegistry componentFactoryRegistry;
     @Override
     public final ComponentFactoryRegistry getComponentFactoryRegistry() {
         if(componentFactoryRegistry==null) {
-            componentFactoryRegistry = ((ComponentFactoryRegistryAccessor) 
getApplication()).getComponentFactoryRegistry();
+            componentFactoryRegistry = ((HasComponentFactoryRegistry) 
getApplication()).getComponentFactoryRegistry();
         }
         return componentFactoryRegistry;
     }
 
+    private transient PageClassRegistry pageClassRegistry;
     @Override
     public final PageClassRegistry getPageClassRegistry() {
         if(pageClassRegistry==null) {
-            pageClassRegistry = ((PageClassRegistryAccessor) 
getApplication()).getPageClassRegistry();
+            pageClassRegistry = ((HasPageClassRegistry) 
getApplication()).getPageClassRegistry();
         }
         return pageClassRegistry;
     }
 
-
-    protected Wicket getWicketViewerSettings() {
-        return getConfiguration().getViewer().getWicket();
-    }
-
 }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
index 64f053c252..ebfd9625c8 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
@@ -25,21 +25,16 @@ import org.apache.wicket.model.IModel;
 import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.services.i18n.LanguageProvider;
-import org.apache.isis.applib.services.i18n.TranslationContext;
-import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.services.userreg.EmailNotificationService;
-import org.apache.isis.core.config.IsisConfiguration.Viewer.Wicket;
-import org.apache.isis.core.config.viewer.web.WebAppContextPath;
-import org.apache.isis.core.metamodel.context.HasMetaModelContext;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.viewer.commons.applib.services.header.HeaderUiModel;
 import org.apache.isis.viewer.commons.applib.services.header.HeaderUiService;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
+import org.apache.isis.viewer.wicket.model.models.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
 import org.apache.isis.viewer.wicket.model.util.WktContext;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import 
org.apache.isis.viewer.wicket.ui.components.tree.themes.TreeThemeProvider;
 import 
org.apache.isis.viewer.wicket.ui.components.tree.themes.TreeThemeProviderDefault;
 import org.apache.isis.viewer.wicket.ui.pages.EmailVerificationUrlService;
@@ -52,23 +47,10 @@ import 
org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
  */
 public class PanelBase<T>
 extends GenericPanel<T>
-implements HasMetaModelContext {
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
 
-    private transient WebAppContextPath webAppContextPath;
-    private transient PageClassRegistry pageClassRegistry;
-    private transient ImageResourceCache imageCache;
-    private transient MetaModelContext commonContext;
-    private transient InteractionService interactionService;
-    private transient TranslationService translationService;
-    private transient LanguageProvider localeProvider;
-    private transient TreeThemeProvider treeThemeProvider;
-    private transient EmailNotificationService emailNotificationService;
-    private transient EmailVerificationUrlService emailVerificationUrlService;
-    private transient PageNavigationService pageNavigationService;
-    private transient HeaderUiService headerUiService;
-
     protected PanelBase(final String id) {
         this(id, null);
     }
@@ -77,71 +59,53 @@ implements HasMetaModelContext {
         super(id, model);
     }
 
+    private transient MetaModelContext mmc;
     @Override
     public MetaModelContext getMetaModelContext() {
-        return commonContext = WktContext.computeIfAbsent(commonContext);
-    }
-
-    public Wicket getWicketViewerSettings() {
-        return getConfiguration().getViewer().getWicket();
-    }
-
-    @Override
-    public WebAppContextPath getWebAppContextPath() {
-        return webAppContextPath = computeIfAbsent(WebAppContextPath.class, 
webAppContextPath);
+        return mmc = WktContext.computeIfAbsent(mmc);
     }
 
+    private transient PageClassRegistry pageClassRegistry;
     public PageClassRegistry getPageClassRegistry() {
         return pageClassRegistry = computeIfAbsent(PageClassRegistry.class, 
pageClassRegistry);
     }
 
+    private transient ImageResourceCache imageCache;
     public ImageResourceCache getImageResourceCache() {
         return imageCache = computeIfAbsent(ImageResourceCache.class, 
imageCache);
     }
 
-    public InteractionService getInteractionService() {
-        return interactionService = computeIfAbsent(InteractionService.class, 
interactionService);
-    }
-
-    @Override
-    public TranslationService getTranslationService() {
-        return translationService = computeIfAbsent(TranslationService.class, 
translationService);
-    }
-
+    private transient LanguageProvider localeProvider;
     public LanguageProvider getLanguageProvider() {
         return localeProvider = computeIfAbsent(LanguageProvider.class, 
localeProvider);
     }
 
+    private transient TreeThemeProvider treeThemeProvider;
     protected TreeThemeProvider getTreeThemeProvider() {
         return treeThemeProvider = 
computeIfAbsentOrFallback(TreeThemeProvider.class, treeThemeProvider, 
TreeThemeProviderDefault::new);
     }
 
+    private transient EmailNotificationService emailNotificationService;
     protected EmailNotificationService getEmailNotificationService() {
         return emailNotificationService = 
computeIfAbsent(EmailNotificationService.class, emailNotificationService);
     }
 
+    private transient EmailVerificationUrlService emailVerificationUrlService;
     protected EmailVerificationUrlService getEmailVerificationUrlService() {
         return emailVerificationUrlService = 
computeIfAbsent(EmailVerificationUrlService.class, emailVerificationUrlService);
     }
 
+    private transient PageNavigationService pageNavigationService;
     protected PageNavigationService getPageNavigationService() {
         return pageNavigationService = 
computeIfAbsent(PageNavigationService.class, pageNavigationService);
     }
 
+    private transient HeaderUiService headerUiService;
     protected HeaderUiModel getHeaderModel() {
         headerUiService = computeIfAbsent(HeaderUiService.class, 
headerUiService);
         return headerUiService.getHeader();
     }
 
-    // -- TRANSLATION
-
-    /**
-     * Translate without context: Tooltips, Button-Labels, etc.
-     */
-    public final String translate(final String input) {
-        return getTranslationService().translate(TranslationContext.empty(), 
input);
-    }
-
     // Hint support
 
     public UiHintContainer getUiHintContainer() {
@@ -151,7 +115,7 @@ implements HasMetaModelContext {
     // other Dependencies
 
     protected ComponentFactoryRegistry getComponentFactoryRegistry() {
-        return ((ComponentFactoryRegistryAccessor) 
getApplication()).getComponentFactoryRegistry();
+        return ((HasComponentFactoryRegistry) 
getApplication()).getComponentFactoryRegistry();
     }
 
     // -- HELPER
diff --git 
a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
 
b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
index 9ceffff47f..c5c65213ac 100644
--- 
a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
+++ 
b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/ConverterTester.java
@@ -26,6 +26,12 @@ import java.util.Objects;
 import org.apache.wicket.util.convert.ConversionException;
 import org.assertj.core.util.Arrays;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.clock.VirtualClock;
 import org.apache.isis.applib.id.LogicalType;
@@ -43,12 +49,6 @@ import 
org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.security._testing.InteractionService_forTesting;
 import 
org.apache.isis.viewer.wicket.model.value.ConverterBasedOnValueSemantics;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
 import lombok.AllArgsConstructor;
 import lombok.NonNull;
 import lombok.val;
@@ -86,7 +86,7 @@ public class ConverterTester<T extends Serializable> {
                     }
                 })
                 .singletons(Arrays.asList(additionalSingletons))
-                .interactionProvider(interactionService = new 
InteractionService_forTesting())
+                .interactionService(interactionService = new 
InteractionService_forTesting())
                 .build();
 
         mmc.getServiceInjector().injectServicesInto(valueSemantics);
@@ -97,7 +97,7 @@ public class ConverterTester<T extends Serializable> {
         assertNotNull(reg.selectValueSemantics(identifier, valueType));
         assertTrue(reg.selectValueSemantics(identifier, 
valueType).isNotEmpty());
         
assertNotNull(mmc.getServiceRegistry().lookupServiceElseFail(InteractionService.class));
-        assertNotNull(mmc.getInteractionProvider());
+        assertNotNull(mmc.getInteractionService());
     }
 
     public void setScenario(
diff --git 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
index 207aa4d5b7..42a558156a 100644
--- 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
+++ 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
@@ -31,7 +31,6 @@ import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.isis.applib.clock.VirtualClock;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.services.iactnlayer.InteractionContext;
-import org.apache.isis.applib.services.iactnlayer.InteractionService;
 import org.apache.isis.applib.services.session.SessionSubscriber;
 import org.apache.isis.applib.services.user.ImpersonatedUserHolder;
 import org.apache.isis.applib.services.user.UserMemento;
@@ -272,10 +271,6 @@ implements
         return getServiceRegistry().select(SessionSubscriber.class);
     }
 
-    protected InteractionService getInteractionService() {
-        return lookupServiceElseFail(InteractionService.class);
-    }
-
     private VirtualClock virtualClock() {
         try {
             return getServiceRegistry()
diff --git 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
index 8c393f14c4..1d4c2fef5a 100644
--- 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
+++ 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/WebRequestCycleForIsis.java
@@ -68,6 +68,7 @@ import 
org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage;
 import org.apache.isis.viewer.wicket.ui.pages.mmverror.MmvErrorPage;
 import org.apache.isis.viewer.wicket.ui.panels.PromptFormAbstract;
 
+import lombok.Setter;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
@@ -116,8 +117,8 @@ implements
     private static final MetaDataKey<SessionLifecyclePhase> 
SESSION_LIFECYCLE_PHASE_KEY =
             new MetaDataKey<SessionLifecyclePhase>() { private static final 
long serialVersionUID = 1L; };
 
+    @Setter
     private PageClassRegistry pageClassRegistry;
-    private MetaModelContext commonContext;
 
     @Override
     public synchronized void onBeginRequest(final RequestCycle requestCycle) {
@@ -450,16 +451,12 @@ implements
         return false;
     }
 
-
-    public void setPageClassRegistry(final PageClassRegistry 
pageClassRegistry) {
-        this.pageClassRegistry = pageClassRegistry;
-    }
-
     // -- DEPENDENCIES
 
+    private MetaModelContext mmc;
     @Override
     public MetaModelContext getMetaModelContext() {
-        return commonContext = WktContext.computeIfAbsent(commonContext);
+        return mmc = WktContext.computeIfAbsent(mmc);
     }
 
     private ExceptionRecognizerService getExceptionRecognizerService() {
@@ -467,7 +464,7 @@ implements
     }
 
     private boolean isInInteraction() {
-        return 
getMetaModelContext().getInteractionLayerTracker().isInInteraction();
+        return getMetaModelContext().getInteractionService().isInInteraction();
     }
 
     private AuthenticatedWebSession getWicketAuthenticatedWebSession() {
diff --git 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
index 5e3d36df0b..659395ef86 100644
--- 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
+++ 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/IsisWicketApplication.java
@@ -62,9 +62,9 @@ import 
org.apache.isis.viewer.wicket.model.isis.WicketApplicationInitializer;
 import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
-import 
org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
+import 
org.apache.isis.viewer.wicket.ui.app.registry.HasComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
+import org.apache.isis.viewer.wicket.ui.pages.HasPageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.accmngt.AccountConfirmationMap;
 import org.apache.isis.viewer.wicket.ui.pages.login.WicketLogoutPage;
 import 
org.apache.isis.viewer.wicket.viewer.integration.AuthenticatedWebSessionForIsis;
@@ -98,8 +98,8 @@ import lombok.extern.log4j.Log4j2;
 public class IsisWicketApplication
 extends AuthenticatedWebApplication
 implements
-    ComponentFactoryRegistryAccessor,
-    PageClassRegistryAccessor,
+    HasComponentFactoryRegistry,
+    HasPageClassRegistry,
     HasMetaModelContext {
 
     private static final long serialVersionUID = 1L;

Reply via email to