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

commit 1b7ab67d3b91385b6c3cf5de95908ebbaf8fea8e
Author: Andi Huber <ahu...@apache.org>
AuthorDate: Thu May 7 11:33:22 2020 +0200

    ISIS-2340: introduces HasParentUiModel
---
 .../pdfjs/ui/components/PdfJsViewerPanel.java      |  2 +-
 .../viewer/common/model/HasParentUiModel.java}     | 10 ++--
 .../model/action/form/ActionFormUiModel.java}      |  7 +--
 .../{param => form}/PendingParameterManager.java   |  2 +-
 .../wicket/model/models/ActionArgumentCache.java   |  2 +-
 .../viewer/wicket/model/models/ActionModel.java    | 55 +++-------------------
 .../wicket/model/models/FormExecutorContext.java   |  3 +-
 .../wicket/model/models/PageParameterUtil.java     | 50 +++++++++++++++++++-
 .../viewer/wicket/model/models/ScalarModel.java    |  2 +-
 .../wicket/model/models/ScalarParameterModel.java  |  6 +--
 .../wicket/model/models/ScalarPropertyModel.java   | 22 ++++-----
 .../wicket/model/models/ActionModelTest.java       |  4 +-
 .../actionmenu/entityactions/LinkAndLabelUtil.java |  2 +-
 .../actionprompt/ActionPromptHeaderPanel.java      |  2 +-
 .../components/actions/ActionParametersPanel.java  |  2 +-
 .../ui/components/property/PropertyEditPanel.java  |  4 +-
 .../property/PropertyFormExecutorStrategy.java     |  4 +-
 .../PropertyEditPromptHeaderPanel.java             |  2 +-
 .../ui/components/scalars/ScalarPanelAbstract.java |  2 +-
 .../components/scalars/ScalarPanelAbstract2.java   |  2 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |  6 +--
 .../wicket/ui/panels/FormExecutorStrategy.java     |  5 +-
 .../wicket/ui/panels/PromptFormAbstract.java       |  5 +-
 23 files changed, 104 insertions(+), 97 deletions(-)

diff --git 
a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
 
b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
index cc67420..7fc2c9b 100644
--- 
a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
+++ 
b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
@@ -205,7 +205,7 @@ class PdfJsViewerPanel extends 
ScalarPanelAbstract<ScalarPropertyModel> implemen
 
         val model = getModel();
         val propertyId = model.getPropertyMemento().getIdentifier();
-        val bookmark = 
model.getParentEntityModel().getObjectAdapterMemento().asBookmarkIfSupported();
+        val bookmark = 
model.getParentUiModel().getObjectAdapterMemento().asBookmarkIfSupported();
         val objectType = bookmark.getObjectType();
         val identifier = bookmark.getIdentifier();
 
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ParentEntityModelProvider.java
 
b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/HasParentUiModel.java
similarity index 80%
copy from 
viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ParentEntityModelProvider.java
copy to 
viewers/common/src/main/java/org/apache/isis/viewer/common/model/HasParentUiModel.java
index 61f4b6f..4cc135c 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ParentEntityModelProvider.java
+++ 
b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/HasParentUiModel.java
@@ -16,11 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.viewer.common.model;
 
-package org.apache.isis.viewer.wicket.model.models;
-
-public interface ParentEntityModelProvider {
-
-    EntityModel getParentEntityModel();
+import org.apache.isis.viewer.common.model.object.ObjectUiModel;
 
+public interface HasParentUiModel<T extends ObjectUiModel> {
+    
+    T getParentUiModel();
 }
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ParentEntityModelProvider.java
 
b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionFormUiModel.java
similarity index 85%
rename from 
viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ParentEntityModelProvider.java
rename to 
viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionFormUiModel.java
index 61f4b6f..28d551a 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ParentEntityModelProvider.java
+++ 
b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionFormUiModel.java
@@ -16,11 +16,8 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
+package org.apache.isis.viewer.common.model.action.form;
 
-package org.apache.isis.viewer.wicket.model.models;
-
-public interface ParentEntityModelProvider {
-
-    EntityModel getParentEntityModel();
+public interface ActionFormUiModel {
 
 }
diff --git 
a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/param/PendingParameterManager.java
 
b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/PendingParameterManager.java
similarity index 95%
rename from 
viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/param/PendingParameterManager.java
rename to 
viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/PendingParameterManager.java
index 0b371c3..1261ddc 100644
--- 
a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/param/PendingParameterManager.java
+++ 
b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/PendingParameterManager.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.viewer.common.model.action.param;
+package org.apache.isis.viewer.common.model.action.form;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
index a03977c..2397cca 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
@@ -29,7 +29,7 @@ import 
org.apache.isis.core.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import 
org.apache.isis.viewer.common.model.action.param.PendingParameterManager;
+import org.apache.isis.viewer.common.model.action.form.PendingParameterManager;
 import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
 import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
 
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 85cbbef..aec362e 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -24,8 +24,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
-import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
 import org.apache.wicket.request.IRequestHandler;
@@ -48,8 +46,6 @@ import org.apache.isis.applib.value.LocalResourcePath;
 import org.apache.isis.applib.value.NamedWithMimeType;
 import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._NullSafe;
-import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.commons.internal.primitives._Ints;
 import org.apache.isis.core.metamodel.adapter.oid.Oid;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.consent.Consent;
@@ -81,8 +77,6 @@ implements FormExecutorContext {
     private static final long serialVersionUID = 1L;
 
     private static final String NULL_ARG = "$nullArg$";
-    private static final Pattern KEY_VALUE_PATTERN = 
Pattern.compile("([^=]+)=(.+)");
-
 
     public ActionModel copy() {
         return new ActionModel(this);
@@ -111,39 +105,7 @@ implements FormExecutorContext {
         actionModel.setContextArgumentIfPossible(pageParameters);
         return actionModel;
     }
-
-
-
-    @Value(staticConstructor = "of")
-    public static class ParamNumAndOidString {
-        int paramNum;
-        String oidString;
-    }
-
-    public static Optional<ParamNumAndOidString> parse(final String 
paramContext) {
-        val matcher = KEY_VALUE_PATTERN.matcher(paramContext);
-        if (!matcher.matches()) {
-            return Optional.empty();
-        }
-
-        try {
-
-            val intLiteral = matcher.group(1);
-            val oidStr = matcher.group(2);
-
-            val parseResult = _Ints.parseInt(intLiteral, 10);
-            if(parseResult.isPresent()) {
-                val paramNum = parseResult.getAsInt();
-                return Optional.of(ParamNumAndOidString.of(paramNum, oidStr));
-            }
-
-        } catch (final Exception e) {
-            // ignore and fall through
-        }
-
-        return Optional.empty();
-
-    }
+  
 
     //////////////////////////////////////////////////
     // BookmarkableModel
@@ -253,7 +215,7 @@ implements FormExecutorContext {
     }
 
     @Override
-    public EntityModel getParentEntityModel() {
+    public EntityModel getParentUiModel() {
         return entityModel;
     }
 
@@ -291,17 +253,14 @@ implements FormExecutorContext {
     }
 
     private boolean setContextArgumentIfPossible(final PageParameters 
pageParameters) {
-        final String paramContext = 
PageParameterNames.ACTION_PARAM_CONTEXT.getStringFrom(pageParameters);
-        if (paramContext == null) {
+        
+        val paramNumAndOidString = 
PageParameterUtil.parseParamContext(pageParameters)
+                .orElse(null);
+        if(paramNumAndOidString==null) {
             return false;
         }
-
-        val action = actionMemento.getAction(getSpecificationLoader());
-
-        val paramNumAndOidString = parse(paramContext)
-                .orElseThrow(()->_Exceptions
-                        .unrecoverableFormatted("failed to parse param context 
'%s'", paramContext));
         
+        val action = actionMemento.getAction(getSpecificationLoader());
         val actionParamIfAny = 
action.getParameters().get(paramNumAndOidString.getParamNum());
         if(!actionParamIfAny.isPresent()) {
             return false;
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
index f1577b2..faa9409 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
@@ -20,8 +20,9 @@
 package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.viewer.common.model.HasParentUiModel;
 
-public interface FormExecutorContext extends ParentEntityModelProvider {
+public interface FormExecutorContext extends HasParentUiModel<EntityModel> {
 
     PromptStyle getPromptStyle();
 
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
index b4e7397..85bbc65 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/PageParameterUtil.java
@@ -18,20 +18,27 @@
  */
 package org.apache.isis.viewer.wicket.model.models;
 
+import java.util.Optional;
+import java.util.regex.Pattern;
+
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.core.commons.internal.primitives._Ints;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
 
+import lombok.Value;
 import lombok.val;
 import lombok.experimental.UtilityClass;
 
 @UtilityClass
-class PageParameterUtil {
 
+
+class PageParameterUtil {
+    
     /**
      * Factory method for creating {@link PageParameters}.
      */
@@ -57,6 +64,47 @@ class PageParameterUtil {
 
         return pageParameters;
     }
+
+    @Value(staticConstructor = "of")
+    public static class ParamNumAndOidString {
+        int paramNum;
+        String oidString;
+    }
+
+    public static Optional<ParamNumAndOidString> 
parseParamContext(PageParameters pageParameters) {
+        final String paramContext = 
PageParameterNames.ACTION_PARAM_CONTEXT.getStringFrom(pageParameters);
+        if (paramContext == null) {
+            return Optional.empty();
+        }
+        return parseParamContext(paramContext);
+    }
+    
+    private static final Pattern KEY_VALUE_PATTERN = 
Pattern.compile("([^=]+)=(.+)");
+    
+    static Optional<ParamNumAndOidString> parseParamContext(final String 
paramContext) {
+        val matcher = KEY_VALUE_PATTERN.matcher(paramContext);
+        if (!matcher.matches()) {
+            return Optional.empty();
+        }
+
+        try {
+
+            val intLiteral = matcher.group(1);
+            val oidStr = matcher.group(2);
+
+            val parseResult = _Ints.parseInt(intLiteral, 10);
+            if(parseResult.isPresent()) {
+                val paramNum = parseResult.getAsInt();
+                return Optional.of(ParamNumAndOidString.of(paramNum, oidStr));
+            }
+
+        } catch (final Exception e) {
+            // ignore and fall through
+        }
+
+        return Optional.empty();
+
+    }
     
     private static String determineActionId(final ObjectAction objectAction) {
         final Identifier identifier = objectAction.getIdentifier();
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 3c03448..0a0f8b1 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -130,7 +130,7 @@ implements LinksProvider, FormExecutorContext {
     }
 
     @Override
-    public EntityModel getParentEntityModel() {
+    public EntityModel getParentUiModel() {
         return parentEntityModel;
     }
 
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
index 45486c7..7ed4154 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
@@ -118,7 +118,7 @@ implements ActionArgumentModel {
         final ObjectActionParameter parameter = 
getParameterMemento().getActionParameter(
                 getSpecificationLoader());
         try {
-            ManagedObject parentAdapter = getParentEntityModel().load();
+            ManagedObject parentAdapter = getParentUiModel().load();
             final String invalidReasonIfAny = parameter.isValid(parentAdapter, 
proposedPojoAsStr,
                     InteractionInitiatedBy.USER
                     );
@@ -133,7 +133,7 @@ implements ActionArgumentModel {
         final ObjectActionParameter parameter = 
getParameterMemento().getActionParameter(
                 getSpecificationLoader());
         try {
-            ManagedObject parentAdapter = getParentEntityModel().load();
+            ManagedObject parentAdapter = getParentUiModel().load();
             final String invalidReasonIfAny = parameter.isValid(parentAdapter, 
proposedAdapter.getPojo(),
                     InteractionInitiatedBy.USER
                     );
@@ -297,7 +297,7 @@ implements ActionArgumentModel {
     
     public PendingParameterModelHead getPendingParamHead() {
         val actionParameter = getParameter();
-        val actionOwner = getParentEntityModel().load();
+        val actionOwner = getParentUiModel().load();
         return 
actionParameter.getAction().newPendingParameterModelHead(actionOwner);
     }
 
diff --git 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
index f352888..43b68a4 100644
--- 
a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
+++ 
b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
@@ -95,14 +95,14 @@ public class ScalarPropertyModel extends ScalarModel {
     @Override
     public String getCssClass() {
         final String objectSpecId =
-                
getParentEntityModel().getTypeOfSpecification().getSpecId().asString().replace(".",
 "-");
+                
getParentUiModel().getTypeOfSpecification().getSpecId().asString().replace(".", 
"-");
         final String propertyId = getIdentifier();
         return "isis-" + objectSpecId + "-" + propertyId;
     }
 
     @Override
     public boolean whetherHidden(final Where where) {
-        final ManagedObject parentAdapter = getParentEntityModel().load();
+        final ManagedObject parentAdapter = getParentUiModel().load();
         final OneToOneAssociation property = 
getPropertyMemento().getProperty(getSpecificationLoader());
         try {
             final Consent visibility = property.isVisible(parentAdapter, 
InteractionInitiatedBy.USER, where);
@@ -114,7 +114,7 @@ public class ScalarPropertyModel extends ScalarModel {
 
     @Override
     public String whetherDisabled(final Where where) {
-        final ManagedObject parentAdapter = getParentEntityModel().load();
+        final ManagedObject parentAdapter = getParentUiModel().load();
         final OneToOneAssociation property = 
getPropertyMemento().getProperty(getSpecificationLoader());
         try {
             final Consent usable = property.isUsable(parentAdapter, 
InteractionInitiatedBy.USER, where);
@@ -132,7 +132,7 @@ public class ScalarPropertyModel extends ScalarModel {
             parseableFacet = 
property.getSpecification().getFacet(ParseableFacet.class);
         }
         try {
-            final ManagedObject parentAdapter = getParentEntityModel().load();
+            final ManagedObject parentAdapter = getParentUiModel().load();
             final ManagedObject currentValue = property.get(parentAdapter, 
InteractionInitiatedBy.USER);
             final ManagedObject proposedAdapter =
                     parseableFacet.parseTextEntry(currentValue, 
proposedPojoAsStr, InteractionInitiatedBy.USER);
@@ -150,7 +150,7 @@ public class ScalarPropertyModel extends ScalarModel {
 
     @Override
     public String validate(final ManagedObject proposedAdapter) {
-        final ManagedObject parentAdapter = getParentEntityModel().load();
+        final ManagedObject parentAdapter = getParentUiModel().load();
         final OneToOneAssociation property = 
getPropertyMemento().getProperty(getSpecificationLoader());
         try {
             final Consent valid = property.isAssociationValid(parentAdapter, 
proposedAdapter,
@@ -180,7 +180,7 @@ public class ScalarPropertyModel extends ScalarModel {
         final PropertyMemento propertyMemento = getPropertyMemento();
         final OneToOneAssociation property = propertyMemento
                 .getProperty(getSpecificationLoader());
-        ManagedObject parentAdapter = getParentEntityModel().load();
+        ManagedObject parentAdapter = getParentUiModel().load();
         return property.getDefault(parentAdapter);
     }
 
@@ -198,7 +198,7 @@ public class ScalarPropertyModel extends ScalarModel {
         final PropertyMemento propertyMemento = getPropertyMemento();
         final OneToOneAssociation property = propertyMemento
                 .getProperty(getSpecificationLoader());
-        ManagedObject parentAdapter = getParentEntityModel().load();
+        ManagedObject parentAdapter = getParentUiModel().load();
         final Can<ManagedObject> choices = property.getChoices(
                 parentAdapter,
                 InteractionInitiatedBy.USER);
@@ -221,7 +221,7 @@ public class ScalarPropertyModel extends ScalarModel {
         final PropertyMemento propertyMemento = getPropertyMemento();
         final OneToOneAssociation property = 
propertyMemento.getProperty(getSpecificationLoader());
         final ManagedObject parentAdapter =
-                getParentEntityModel().load();
+                getParentUiModel().load();
         final Can<ManagedObject> choices =
                 property.getAutoComplete(
                         parentAdapter, 
@@ -284,7 +284,7 @@ public class ScalarPropertyModel extends ScalarModel {
     public void reset() {
         final OneToOneAssociation property = 
getPropertyMemento().getProperty(getSpecificationLoader());
 
-        val parentAdapter = getParentEntityModel().load();
+        val parentAdapter = getParentUiModel().load();
 
         setObjectFromPropertyIfVisible(this, property, parentAdapter);
     }
@@ -306,7 +306,7 @@ public class ScalarPropertyModel extends ScalarModel {
     
     public String getReasonInvalidIfAny() {
         val property = 
getPropertyMemento().getProperty(getSpecificationLoader());
-        val adapter = getParentEntityModel().load();
+        val adapter = getParentUiModel().load();
         val associate = getObject();
         Consent validity = property.isAssociationValid(adapter, associate, 
InteractionInitiatedBy.USER);
         return validity.isAllowed() ? null : validity.getReason();
@@ -357,7 +357,7 @@ public class ScalarPropertyModel extends ScalarModel {
     @Override
     protected List<ObjectAction> calcAssociatedActions() {
 
-        final EntityModel parentEntityModel1 = this.getParentEntityModel();
+        final EntityModel parentEntityModel1 = this.getParentUiModel();
         final ManagedObject parentAdapter = parentEntityModel1.load();
 
         final OneToOneAssociation oneToOneAssociation =
diff --git 
a/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ActionModelTest.java
 
b/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ActionModelTest.java
index ead634b..86bdffe 100644
--- 
a/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ActionModelTest.java
+++ 
b/viewers/wicket/model/src/test/java/org/apache/isis/viewer/wicket/model/models/ActionModelTest.java
@@ -27,13 +27,13 @@ import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertThat;
 
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import 
org.apache.isis.viewer.wicket.model.models.ActionModel.ParamNumAndOidString;
+import 
org.apache.isis.viewer.wicket.model.models.PageParameterUtil.ParamNumAndOidString;
 
 public class ActionModelTest {
 
     @Test
     public void whenParseThenParses() throws Exception {
-        final ParamNumAndOidString parsed = 
ActionModel.parse("3=OBJECT_OID:123")
+        final ParamNumAndOidString parsed = 
PageParameterUtil.parseParamContext("3=OBJECT_OID:123")
                 .orElseThrow(()->_Exceptions.unrecoverable("parsing failed"));
         
         assertThat(parsed, is(not(nullValue())));
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
index 586832c..998cb07 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/LinkAndLabelUtil.java
@@ -39,7 +39,7 @@ public final class LinkAndLabelUtil {
             final ScalarModel scalarModel,
             final List<ObjectAction> associatedActions) {
 
-        final EntityModel parentEntityModel = 
scalarModel.getParentEntityModel();
+        final EntityModel parentEntityModel = scalarModel.getParentUiModel();
         return asActionLinksForAdditionalLinksPanel(parentEntityModel, 
associatedActions, scalarModel);
     }
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
index 0d918eb..d4561be 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionprompt/ActionPromptHeaderPanel.java
@@ -41,7 +41,7 @@ public class ActionPromptHeaderPanel extends 
PanelAbstract<ActionModel> {
 
         _Blackhole.consume(model.getTargetAdapter()); // side-effect: loads 
the model
 
-        getComponentFactoryRegistry().addOrReplaceComponent(this, 
ComponentType.ENTITY_ICON_AND_TITLE, model.getParentEntityModel());
+        getComponentFactoryRegistry().addOrReplaceComponent(this, 
ComponentType.ENTITY_ICON_AND_TITLE, model.getParentUiModel());
 
 
         final Label label = new Label(ID_ACTION_NAME, new IModel<String>() {
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
index c0bf71a..61328e7 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersPanel.java
@@ -95,7 +95,7 @@ public class ActionParametersPanel extends 
PanelAbstract<ActionModel> {
 
             getComponentFactoryRegistry().addOrReplaceComponent(this, 
ComponentType.PARAMETERS, getActionModel());
             getComponentFactoryRegistry().addOrReplaceComponent(header, 
ComponentType.ENTITY_ICON_AND_TITLE, actionModel
-                    .getParentEntityModel());
+                    .getParentUiModel());
 
             final String actionName = getActionModel().getAction().getName();
             header.add(new Label(ID_ACTION_NAME, Model.of(actionName)));
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
index 59ead05..e93f2ac 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
@@ -51,7 +51,7 @@ public class PropertyEditPanel extends 
PanelAbstract<ScalarPropertyModel> {
     public PropertyEditPanel(
             final String id,
             final ScalarPropertyModel scalarModel) {
-        super(id, new ScalarPropertyModel(scalarModel.getParentEntityModel(), 
scalarModel.getPropertyMemento(),
+        super(id, new ScalarPropertyModel(scalarModel.getParentUiModel(), 
scalarModel.getPropertyMemento(),
                 EntityModel.Mode.EDIT, EntityModel.RenderingHint.REGULAR));
 
         buildGui(scalarModel);
@@ -83,7 +83,7 @@ public class PropertyEditPanel extends 
PanelAbstract<ScalarPropertyModel> {
 
         {
             getComponentFactoryRegistry().addOrReplaceComponent(this, 
ComponentType.PROPERTY_EDIT_FORM, getScalarModel());
-            getComponentFactoryRegistry().addOrReplaceComponent(header, 
ComponentType.ENTITY_ICON_AND_TITLE, scalarModel.getParentEntityModel());
+            getComponentFactoryRegistry().addOrReplaceComponent(header, 
ComponentType.ENTITY_ICON_AND_TITLE, scalarModel.getParentUiModel());
 
             final OneToOneAssociation property = 
getScalarModel().getPropertyMemento().getProperty(scalarModel.getSpecificationLoader());
             final String propertyName = property.getName();
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
index 894390d..a88af1e 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
@@ -44,7 +44,7 @@ public class PropertyFormExecutorStrategy implements 
FormExecutorStrategy<Scalar
 
     @Override
     public ManagedObject obtainTargetAdapter() {
-        return model.getParentEntityModel().load();
+        return model.getParentUiModel().load();
     }
 
     @Override
@@ -65,7 +65,7 @@ public class PropertyFormExecutorStrategy implements 
FormExecutorStrategy<Scalar
         val resultAdapter = this.model.applyValue(targetAdapter);
 
         if (resultAdapter != targetAdapter) {
-            this.model.getParentEntityModel().setObject(targetAdapter);
+            this.model.getParentUiModel().setObject(targetAdapter);
         }
         return resultAdapter;
     }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
index 507202c..e7e6768 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
@@ -38,7 +38,7 @@ public class PropertyEditPromptHeaderPanel extends 
PanelAbstract<ScalarPropertyM
     public PropertyEditPromptHeaderPanel(String id, final ScalarPropertyModel 
model) {
         super(id, model);
 
-        val targetAdapter = model.getParentEntityModel().load();
+        val targetAdapter = model.getParentUiModel().load();
 
         getComponentFactoryRegistry().addOrReplaceComponent(
                 this, 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 5d40103..1408c23 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -269,7 +269,7 @@ implements ScalarModelProvider {
         ScalarModel model = getModel();
         final CssClassFacet facet = model.getFacet(CssClassFacet.class);
         if(facet != null) {
-            val parentAdapter = model.getParentEntityModel().load();
+            val parentAdapter = model.getParentUiModel().load();
             final String cssClass = facet.cssClass(parentAdapter);
             CssClassAppender.appendCssClassTo(this, cssClass);
         }
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 2568281..e047423 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -459,7 +459,7 @@ implements ScalarModelSubscriber2 {
         if(facet != null) {
 
             val parentAdapter =
-                    model.getParentEntityModel().load();
+                    model.getParentUiModel().load();
 
             final String cssClass = facet.cssClass(parentAdapter);
             CssClassAppender.appendCssClassTo(this, cssClass);
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index a419889..6f659fd 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -56,12 +56,12 @@ import 
org.apache.isis.core.security.authentication.AuthenticationSession;
 import org.apache.isis.core.security.authentication.MessageBroker;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+import org.apache.isis.viewer.common.model.HasParentUiModel;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.FormExecutor;
-import org.apache.isis.viewer.wicket.model.models.ParentEntityModelProvider;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOrClobPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
@@ -72,7 +72,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
-public final class FormExecutorDefault<M extends 
BookmarkableModel<ManagedObject> & ParentEntityModelProvider>
+public final class FormExecutorDefault<M extends 
BookmarkableModel<ManagedObject> & HasParentUiModel<EntityModel>>
 implements FormExecutor {
 
     private static final long serialVersionUID = 1L;
@@ -106,7 +106,7 @@ implements FormExecutor {
         Command command = null;
         ManagedObject targetAdapter = null;
 
-        final EntityModel targetEntityModel = model.getParentEntityModel();
+        final EntityModel targetEntityModel = model.getParentUiModel();
 
         try {
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
index 01242cf..633840c 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
@@ -21,10 +21,11 @@ package org.apache.isis.viewer.wicket.ui.panels;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.viewer.common.model.HasParentUiModel;
 import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
-import org.apache.isis.viewer.wicket.model.models.ParentEntityModelProvider;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
 
-public interface FormExecutorStrategy<M extends 
BookmarkableModel<ManagedObject> & ParentEntityModelProvider> {
+public interface FormExecutorStrategy<M extends 
BookmarkableModel<ManagedObject> & HasParentUiModel<EntityModel>> {
 
     M getModel();
 
diff --git 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
index c37833d..c625bef 100644
--- 
a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
+++ 
b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PromptFormAbstract.java
@@ -40,13 +40,14 @@ import org.apache.wicket.util.string.AppendingStringBuffer;
 
 import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.viewer.common.model.HasParentUiModel;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
 import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.FormExecutor;
 import org.apache.isis.viewer.wicket.model.models.FormExecutorContext;
-import org.apache.isis.viewer.wicket.model.models.ParentEntityModelProvider;
 import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.ScalarModelSubscriber2;
 import 
org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract2;
@@ -57,7 +58,7 @@ import 
org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 
 public abstract class PromptFormAbstract<T extends 
BookmarkableModel<ManagedObject>
-& ParentEntityModelProvider
+& HasParentUiModel<EntityModel>
 & IModel<ManagedObject>
 & FormExecutorContext>
 extends FormAbstract<ManagedObject>

Reply via email to