You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/06/24 20:17:09 UTC
[isis] 01/03: ISIS-2340: simplify ActionLinkUiModel
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 5c1343be16cf06754f73b2f647400db37999b260
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jun 24 21:26:15 2020 +0200
ISIS-2340: simplify ActionLinkUiModel
---
.../viewer/javafx/model/action/ActionLinkFx.java | 5 ++---
.../viewer/vaadin/model/action/ActionLinkFactoryVaa.java | 6 ++----
.../model/action/ActionLinkUiComponentFactory.java | 2 +-
.../viewer/common/model/action/ActionLinkUiModel.java | 2 +-
.../viewer/common/model/action/ActionUiMetaModel.java | 16 +++++++++++++---
.../viewer/common}/model/mementos/ActionMemento.java | 15 +++++++++------
.../wicket/model/mementos/ActionParameterMemento.java | 14 ++++++++------
.../viewer/wicket/model/models/ActionArgumentCache.java | 2 +-
.../isis/viewer/wicket/model/models/ActionModel.java | 4 ++--
.../viewer/wicket/model/models/PageParameterUtil.java | 2 +-
.../viewer/wicket/model/models/ScalarParameterModel.java | 2 +-
.../entityactions/EntityActionLinkFactory.java | 5 ++++-
.../actionmenu/serviceactions/MenuActionLinkFactory.java | 4 +++-
.../actionmenu/serviceactions/ServiceActionUtil.java | 10 +++++++---
.../ui/components/widgets/linkandlabel/ActionLink.java | 10 +++-------
.../linkandlabel/LinkAndLabelFactoryAbstract.java | 6 +++---
16 files changed, 61 insertions(+), 44 deletions(-)
diff --git a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
index ad586cf..7322d45 100644
--- a/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
+++ b/incubator/viewers/javafx/model/src/main/java/org/apache/isis/incubator/viewer/javafx/model/action/ActionLinkFx.java
@@ -23,6 +23,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.viewer.common.model.HasUiMenuItem;
import org.apache.isis.viewer.common.model.action.ActionLinkUiComponentFactory;
import org.apache.isis.viewer.common.model.action.ActionLinkUiModel;
+import org.apache.isis.viewer.common.model.action.ActionUiMetaModel;
import org.apache.isis.viewer.common.model.object.ObjectUiModel;
import org.apache.isis.viewer.common.model.object.SimpleObjectUiModel;
@@ -54,10 +55,8 @@ implements HasUiMenuItem<Menu>{
}
- private static Node createUiComponent(
- final ActionLinkUiModel<Node> actionUiModel) {
+ private static Node createUiComponent(final ActionUiMetaModel actionMeta) {
- val actionMeta = actionUiModel.getActionUiMetaModel();
val uiLabel = new Label(actionMeta.getLabel());
return uiLabel;
diff --git a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
index 5faba5c..659a834 100644
--- a/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
+++ b/incubator/viewers/vaadin/model/src/main/java/org/apache/isis/incubator/viewer/vaadin/model/action/ActionLinkFactoryVaa.java
@@ -25,6 +25,7 @@ import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.incubator.viewer.vaadin.model.decorator.Decorators;
import org.apache.isis.viewer.common.model.action.ActionLinkUiModel;
import org.apache.isis.viewer.common.model.action.ActionLinkUiModelFactory;
+import org.apache.isis.viewer.common.model.action.ActionUiMetaModel;
import org.apache.isis.viewer.common.model.object.SimpleObjectUiModel;
import lombok.RequiredArgsConstructor;
@@ -51,14 +52,11 @@ public class ActionLinkFactoryVaa implements ActionLinkUiModelFactory<Component>
// -- HELPER
- private Component createUiComponent(
- final ActionLinkUiModel<Component> actionUiModel) {
+ private Component createUiComponent(final ActionUiMetaModel actionMeta) {
- val actionMeta = actionUiModel.getActionUiMetaModel();
val uiLabel = new Label(actionMeta.getLabel());
return Decorators.getIcon().decorate(uiLabel, actionMeta.getFontAwesomeUiModel());
-
}
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentFactory.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentFactory.java
index 7aa8777..b623b3b 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentFactory.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiComponentFactory.java
@@ -29,6 +29,6 @@ package org.apache.isis.viewer.common.model.action;
*/
public interface ActionLinkUiComponentFactory<T> {
- T newActionLinkUiComponent(ActionLinkUiModel<T> actionUiModel);
+ T newActionLinkUiComponent(ActionUiMetaModel actionUiMetaModel);
}
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModel.java
index 03de318..bb281a9 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionLinkUiModel.java
@@ -63,7 +63,7 @@ public abstract class ActionLinkUiModel<T> implements HasUiComponent<T> {
// implements HasUiComponent<T>
@Getter(onMethod = @__(@Override), lazy = true)
- private final T uiComponent = uiComponentFactory.newActionLinkUiComponent(this);
+ private final T uiComponent = uiComponentFactory.newActionLinkUiComponent(getActionUiMetaModel());
public ActionUiMetaModel getActionUiMetaModel() {
return actionUiMetaModel.get();
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionUiMetaModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionUiMetaModel.java
index 1b8a694..2a58cf7 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionUiMetaModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/ActionUiMetaModel.java
@@ -22,6 +22,7 @@ import java.io.Serializable;
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Predicate;
+import java.util.function.Supplier;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.PromptStyle;
@@ -33,8 +34,10 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.viewer.common.model.decorator.disable.DisableUiModel;
import org.apache.isis.viewer.common.model.decorator.fa.FontAwesomeUiModel;
+import org.apache.isis.viewer.common.model.mementos.ActionMemento;
import lombok.AccessLevel;
import lombok.Getter;
@@ -43,10 +46,11 @@ import lombok.RequiredArgsConstructor;
import lombok.val;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-public class ActionUiMetaModel implements Serializable {
+public final class ActionUiMetaModel implements Serializable {
private static final long serialVersionUID = 1L;
+ @Getter private final ActionMemento actionMemento;
@Getter private final String label;
@Getter private final String description;
@Getter private final boolean blobOrClob;
@@ -76,10 +80,12 @@ public class ActionUiMetaModel implements Serializable {
return new ActionUiMetaModel(actionHolder, objectAction);
};
- protected ActionUiMetaModel(
+ private ActionUiMetaModel(
final ManagedObject actionHolder,
final ObjectAction objectAction) {
- this( ObjectAction.Util.nameFor(objectAction),
+
+ this( new ActionMemento(objectAction),
+ ObjectAction.Util.nameFor(objectAction),
getDescription(objectAction).orElse(ObjectAction.Util.descriptionOf(objectAction)),
ObjectAction.Util.returnsBlobOrClob(objectAction),
objectAction.isPrototype(),
@@ -102,6 +108,10 @@ public class ActionUiMetaModel implements Serializable {
return x -> posAccessor.apply(x).getPosition() == position;
}
+ public ObjectAction getObjectAction(Supplier<SpecificationLoader> specLoader) {
+ return actionMemento.getAction(specLoader);
+ }
+
// -- PARAMETERS
public enum Parameters {
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/mementos/ActionMemento.java
similarity index 88%
rename from viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
rename to viewers/common/src/main/java/org/apache/isis/viewer/common/model/mementos/ActionMemento.java
index 3b2c3c5..d5d564b 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/mementos/ActionMemento.java
@@ -17,16 +17,18 @@
* under the License.
*/
-package org.apache.isis.viewer.wicket.model.mementos;
+package org.apache.isis.viewer.common.model.mementos;
import java.io.Serializable;
+import java.util.function.Supplier;
import org.apache.isis.core.metamodel.spec.ActionType;
import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import lombok.val;
+
/**
* {@link Serializable} represention of a {@link ObjectAction}
*/
@@ -75,9 +77,9 @@ public class ActionMemento implements Serializable {
return nameParmsId;
}
- public ObjectAction getAction(final SpecificationLoader specificationLoader) {
+ public ObjectAction getAction(final Supplier<SpecificationLoader> specificationLoaderSupplier) {
if (action == null) {
- action = actionFor(owningType, actionType, nameParmsId, specificationLoader);
+ action = actionFor(owningType, actionType, nameParmsId, specificationLoaderSupplier.get());
}
return action;
}
@@ -86,8 +88,9 @@ public class ActionMemento implements Serializable {
ObjectSpecId owningType,
ActionType actionType,
String nameParmsId,
- final SpecificationLoader specificationLoader) {
- final ObjectSpecification objectSpec = specificationLoader.lookupBySpecIdElseLoad(owningType);
+ SpecificationLoader specificationLoader) {
+
+ val objectSpec = specificationLoader.lookupBySpecIdElseLoad(owningType);
return objectSpec.getObjectActionElseFail(actionType, nameParmsId);
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionParameterMemento.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionParameterMemento.java
index 2ee8092..e4d8383 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionParameterMemento.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionParameterMemento.java
@@ -20,11 +20,13 @@
package org.apache.isis.viewer.wicket.model.mementos;
import java.io.Serializable;
+import java.util.function.Supplier;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.viewer.common.model.mementos.ActionMemento;
/**
* {@link Serializable} representation of a {@link ObjectActionParameter parameter}
@@ -62,9 +64,9 @@ public class ActionParameterMemento implements Serializable {
return number;
}
- public ObjectActionParameter getActionParameter(final SpecificationLoader specificationLoader) {
+ public ObjectActionParameter getActionParameter(final Supplier<SpecificationLoader> specLoader) {
if (actionParameter == null) {
- this.actionParameter = actionParameterFor(actionMemento, number, specificationLoader);
+ this.actionParameter = actionParameterFor(actionMemento, number, specLoader);
}
return actionParameter;
}
@@ -72,8 +74,8 @@ public class ActionParameterMemento implements Serializable {
private static ObjectActionParameter actionParameterFor(
final ActionMemento actionMemento,
final int paramIndex,
- final SpecificationLoader specificationLoader) {
- final ObjectAction action = actionMemento.getAction(specificationLoader);
+ final Supplier<SpecificationLoader> specLoader) {
+ final ObjectAction action = actionMemento.getAction(specLoader);
return action.getParameters().getElseFail(paramIndex);
}
@@ -81,8 +83,8 @@ public class ActionParameterMemento implements Serializable {
* Convenience.
* @param specificationLoader
*/
- public ObjectSpecification getSpecification(final SpecificationLoader specificationLoader) {
- return getActionParameter(specificationLoader).getSpecification();
+ public ObjectSpecification getSpecification(final Supplier<SpecificationLoader> specLoader) {
+ return getActionParameter(specLoader).getSpecification();
}
@Override
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 aa3ce81..9708f0f 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
@@ -31,7 +31,7 @@ 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.form.PendingParameterManager;
import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
-import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
+import org.apache.isis.viewer.common.model.mementos.ActionMemento;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
import lombok.NonNull;
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 c4b8032..a3426d6 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
@@ -60,7 +60,7 @@ import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.viewer.common.model.action.form.FormPendingParamUiModel;
import org.apache.isis.viewer.common.model.action.form.FormUiModel;
-import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
+import org.apache.isis.viewer.common.model.mementos.ActionMemento;
import lombok.val;
@@ -112,7 +112,7 @@ implements FormUiModel, FormExecutorContext, BookmarkableModel {
@Override
public ObjectAction getMetaModel() {
if(objectAction==null) {
- objectAction = actionMemento.getAction(getSpecificationLoader());
+ objectAction = actionMemento.getAction(this::getSpecificationLoader);
}
return objectAction;
}
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 1cc9294..eab9395 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
@@ -39,8 +39,8 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
+import org.apache.isis.viewer.common.model.mementos.ActionMemento;
import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
-import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
import lombok.Value;
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 4794e97..e7822d8 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
@@ -62,7 +62,7 @@ implements ParameterUiModel {
@Override
public ObjectActionParameter getMetaModel() {
if(actionParameter==null) {
- actionParameter = paramMemento.getActionParameter(getSpecificationLoader());
+ actionParameter = paramMemento.getActionParameter(this::getSpecificationLoader);
}
return actionParameter;
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
index 4313bef..28b7691 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
@@ -21,6 +21,7 @@ package org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -59,7 +60,9 @@ public final class EntityActionLinkFactory extends LinkAndLabelFactoryAbstract {
// this is now done at the point of rendering
return LinkAndLabel.of(
- model->super.newLinkComponent(model.getObjectAction(), toggledMementosProviderIfAny),
+ model->super.newLinkComponent(
+ model.getObjectAction(()->CommonContextUtils.getCommonContext().getSpecificationLoader()),
+ toggledMementosProviderIfAny),
named,
this.targetEntityModel,
objectAction);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/MenuActionLinkFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/MenuActionLinkFactory.java
index 7970dc6..2573b3c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/MenuActionLinkFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/MenuActionLinkFactory.java
@@ -40,7 +40,9 @@ class MenuActionLinkFactory extends LinkAndLabelFactoryAbstract {
final String named) {
return LinkAndLabel.of(
- model->super.newLinkComponent(model.getObjectAction(), toggledMementosProviderIfAny),
+ model->super.newLinkComponent(
+ model.getObjectAction(super::getSpecificationLoader),
+ toggledMementosProviderIfAny),
named,
this.targetEntityModel,
objectAction);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index a09ff5c..bc80f9e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.viewer.common.model.action.ActionLinkUiModelFactory;
import org.apache.isis.viewer.common.model.menu.MenuUiModel;
+import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
@@ -113,8 +114,8 @@ public final class ServiceActionUtil {
@Override
public LinkAndLabel newActionLink(
- String named,
- ManagedAction managedAction) {
+ final String named,
+ final ManagedAction managedAction) {
val serviceModel = EntityModel.ofAdapter(commonContext, managedAction.getOwner());
@@ -123,7 +124,10 @@ public final class ServiceActionUtil {
serviceModel);
return LinkAndLabel.of(
- model->actionLinkFactory.newActionLink(model.getObjectAction(), named).getUiComponent(),
+ model->actionLinkFactory.newActionLink(
+ model.getObjectAction(()->CommonContextUtils.getCommonContext().getSpecificationLoader()),
+ named)
+ .getUiComponent(),
named,
serviceModel,
managedAction.getAction());
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 ef2a262..f3cc880 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
@@ -57,11 +57,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
@Getter protected final transient IsisAppCommonContext commonContext;
-// public ActionLink(String id, ActionModel model) {
-// this(id, model, null);
-// }
-
- ActionLink(IsisAppCommonContext commonContext, String id, ActionModel model, ObjectAction action) {
+ ActionLink(IsisAppCommonContext commonContext, String id, ActionModel model) {
super(id, model);
this.commonContext = commonContext;
@@ -77,7 +73,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
}
// trivial optimization; also store the objectAction if it is available (saves looking it up)
- objectAction = action;
+ objectAction = model.getMetaModel();
// this returns non-null if the action is no-arg and returns a URL or a Blob or a Clob.
// Otherwise can use default handling
@@ -116,7 +112,7 @@ public abstract class ActionLink extends AjaxLink<ManagedObject> implements IAja
public ObjectAction getObjectAction() {
return objectAction != null
? objectAction
- : (objectAction = getActionModel().getMetaModel());
+ : (objectAction = getActionModel().getMetaModel());
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
index 6a49653..8c253d4 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/LinkAndLabelFactoryAbstract.java
@@ -92,13 +92,13 @@ implements Serializable {
public abstract LinkAndLabel newActionLink(ObjectAction action, String named);
protected ActionLink newLinkComponent(
- final ObjectAction action,
+ final ObjectAction objectAction,
final ToggledMementosProvider toggledMementosProviderIfAny) {
- val actionModel = ActionModel.of(this.targetEntityModel, action);
+ val actionModel = ActionModel.of(this.targetEntityModel, objectAction);
val commonContext = actionModel.getCommonContext();
- final ActionLink link = new ActionLink(commonContext, linkId, actionModel, action) {
+ final ActionLink link = new ActionLink(commonContext, linkId, actionModel) {
private static final long serialVersionUID = 1L;