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/05/15 06:47:55 UTC
[isis] branch master updated: ISIS-2340: let ScalarModel no longer
inherit from EntityModel
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 8a6e5f5 ISIS-2340: let ScalarModel no longer inherit from EntityModel
8a6e5f5 is described below
commit 8a6e5f558fa9420d857b5631987a10f161058c09
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri May 15 08:47:44 2020 +0200
ISIS-2340: let ScalarModel no longer inherit from EntityModel
instead both are inheriting from ManagedObjectModel
---
.../viewer/common/model/object/ObjectUiModel.java | 39 ++++++++++++++
.../viewer/wicket/model/models/EntityModel.java | 48 +++++------------
.../model/models/EntityModelForReference.java | 8 ++-
.../wicket/model/models/ManagedObjectModel.java | 2 +-
.../wicket/model/models/ObjectAdapterModel.java | 18 +++----
.../viewer/wicket/model/models/ScalarModel.java | 60 ++++++++++++----------
.../scalars/reference/ReferencePanel.java | 10 ++--
.../entitysimplelink/EntityLinkSimplePanel.java | 10 ++--
.../EntityLinkSimplePanelFactory.java | 16 +++---
.../wicket/ui/panels/PromptFormAbstract.java | 10 ++--
10 files changed, 126 insertions(+), 95 deletions(-)
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java
index bd00491..86659fc 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/object/ObjectUiModel.java
@@ -80,4 +80,43 @@ public interface ObjectUiModel {
}
}
+ public interface HasRenderingHints {
+
+ /**
+ * Similar to {@link #mustBeEditable()}, though not called from the same locations.
+ *
+ * My suspicion is that it amounts to more or less the same set of conditions.
+ *
+ * @return
+ */
+ boolean isInlinePrompt();
+
+ RenderingHint getRenderingHint();
+ void setRenderingHint(RenderingHint renderingHint);
+
+ Mode getMode();
+ void setMode(Mode mode);
+
+ // -- SHORTCUTS
+
+ default boolean isViewMode() {
+ return getMode() == Mode.VIEW;
+ }
+
+ default boolean isEditMode() {
+ return getMode() == Mode.EDIT;
+ }
+
+ default HasRenderingHints toEditMode() {
+ setMode(Mode.EDIT);
+ return this;
+ }
+
+ default HasRenderingHints toViewMode() {
+ setMode(Mode.VIEW);
+ return this;
+ }
+
+ }
+
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 4a5dab1..1b6b530 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -37,6 +37,7 @@ import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
import org.apache.isis.viewer.common.model.object.ObjectUiModel;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.HasRenderingHints;
import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
@@ -45,6 +46,8 @@ import org.apache.isis.viewer.wicket.model.util.ComponentHintKey;
import static org.apache.isis.core.commons.internal.base._With.requires;
+import lombok.Getter;
+import lombok.Setter;
import lombok.val;
/**
@@ -57,7 +60,7 @@ import lombok.val;
//@Log4j2
public class EntityModel
extends ManagedObjectModel
-implements ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel {
+implements HasRenderingHints, ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel {
private static final long serialVersionUID = 1L;
@@ -87,7 +90,12 @@ implements ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel
private ObjectMemento contextAdapterIfAny;
+ @Getter(onMethod = @__(@Override))
+ @Setter(onMethod = @__(@Override))
private Mode mode;
+
+ @Getter(onMethod = @__(@Override))
+ @Setter(onMethod = @__(@Override))
private RenderingHint renderingHint;
// -- FACTORIES
@@ -153,7 +161,9 @@ implements ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel
super(requires(commonContext, "commonContext"), adapterMemento);
- this.propertyScalarModels = propertyScalarModels!=null ? propertyScalarModels : _Maps.<PropertyMemento, ScalarModel>newHashMap();
+ this.propertyScalarModels = propertyScalarModels!=null
+ ? propertyScalarModels
+ : _Maps.<PropertyMemento, ScalarModel>newHashMap();
this.mode = mode;
this.renderingHint = renderingHint;
}
@@ -263,50 +273,19 @@ implements ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel
}
// //////////////////////////////////////////////////////////
- // RenderingHint, Mode, entityDetailsVisible
- // //////////////////////////////////////////////////////////
-
-
- @Override
- public RenderingHint getRenderingHint() {
- return renderingHint;
- }
- @Override
- public void setRenderingHint(RenderingHint renderingHint) {
- this.renderingHint = renderingHint;
- }
@Override
public ObjectMemento getContextAdapterIfAny() {
return contextAdapterIfAny;
}
- /**
- * Used as a hint when the {@link #getRenderingHint()} is {@link RenderingHint#PARENTED_TITLE_COLUMN},
- * provides a context adapter to obtain the title.
- */
@Override
public void setContextAdapterIfAny(ObjectMemento contextAdapterIfAny) {
this.contextAdapterIfAny = contextAdapterIfAny;
}
- @Override
- public Mode getMode() {
- return mode;
- }
-
- protected void setMode(final Mode mode) {
- this.mode = mode;
- }
-
- public boolean isViewMode() {
- return mode == Mode.VIEW;
- }
-
- public boolean isEditMode() {
- return mode == Mode.EDIT;
- }
+ @Override
public EntityModel toEditMode() {
setMode(Mode.EDIT);
for (final ScalarModel scalarModel : propertyScalarModels.values()) {
@@ -315,6 +294,7 @@ implements ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel
return this;
}
+ @Override
public EntityModel toViewMode() {
setMode(Mode.VIEW);
for (final ScalarModel scalarModel : propertyScalarModels.values()) {
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java
index 23d591f..d63bfb5 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModelForReference.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.services.hint.HintStore;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.Mode;
import static org.apache.isis.viewer.wicket.model.models.EntityModel.createPageParameters;
@@ -92,6 +93,11 @@ public class EntityModelForReference implements ObjectAdapterModel {
public EntityModel.Mode getMode() {
return EntityModel.Mode.VIEW;
}
+
+ @Override
+ public void setMode(Mode mode) {
+ // no-op
+ }
@Override
public PageParameters getPageParameters() {
@@ -110,5 +116,5 @@ public class EntityModelForReference implements ObjectAdapterModel {
return scalarModel.getPromptStyle().isInlineOrInlineAsIfEdit()
&& scalarModel.isEnabled();
}
-
+
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
index 3fed95f..66421fe 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
@@ -160,7 +160,7 @@ extends ModelAbstract<ManagedObject> {
.orElse(false);
}
- private <T extends Facet> Optional<T> lookupFacet(Class<T> facetClass) {
+ public <T extends Facet> Optional<T> lookupFacet(Class<T> facetClass) {
return Optional.ofNullable(getTypeOfSpecification())
.map(objectSpec->objectSpec.getFacet(facetClass));
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ObjectAdapterModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ObjectAdapterModel.java
index b74adef..8af8669 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ObjectAdapterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ObjectAdapterModel.java
@@ -24,22 +24,22 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.HasRenderingHints;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.RenderingHint;
-public interface ObjectAdapterModel extends IModel<ManagedObject> {
+public interface ObjectAdapterModel
+extends HasRenderingHints, IModel<ManagedObject> {
+ /**
+ * Used as a hint when the {@link #getRenderingHint()} is {@link RenderingHint#PARENTED_TITLE_COLUMN},
+ * provides a context adapter to obtain the title.
+ */
ObjectMemento getContextAdapterIfAny();
void setContextAdapterIfAny(ObjectMemento contextAdapterIfAny);
- EntityModel.RenderingHint getRenderingHint();
- void setRenderingHint(EntityModel.RenderingHint renderingHint);
-
+ PageParameters getPageParameters();
PageParameters getPageParametersWithoutUiHints();
ObjectSpecification getTypeOfSpecification();
- EntityModel.Mode getMode();
-
- PageParameters getPageParameters();
-
- boolean isInlinePrompt();
}
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 ac1b65e..5870253 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
@@ -43,13 +43,19 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
import org.apache.isis.viewer.common.model.feature.ScalarUiModel;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.HasRenderingHints;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.Mode;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.RenderingHint;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.LinksProvider;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
+import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
+import lombok.Setter;
import lombok.val;
import lombok.extern.log4j.Log4j2;
@@ -61,20 +67,11 @@ import lombok.extern.log4j.Log4j2;
* Is the backing model to each of the fields that appear in forms (for entities
* or action dialogs).
*
- * <p>
- * NOTE: although this inherits from {@link EntityModel}, this is wrong I think; what is being shared
- * is just some of the implementation - both objects have to wrap some arbitrary memento holding some state
- * (a value or entity reference in a ScalarModel's case, an entity reference in an EntityModel's), they have
- * a view mode, they have a rendering hint, and scalar models have a pending value.
- *
- * Fundamentally though a ScalarModel is NOT really an EntityModel, so this hierarchy should be broken out with a
- * common superclass for both EntityModel and ScalarModel.
- * </p>
*/
@Log4j2
public abstract class ScalarModel
-extends EntityModel
-implements ScalarUiModel, LinksProvider, FormExecutorContext {
+extends ManagedObjectModel
+implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext {
private static final long serialVersionUID = 1L;
@@ -88,6 +85,15 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
private final EntityModel parentEntityModel;
+
+ @Getter(onMethod = @__(@Override))
+ @Setter(onMethod = @__(@Override))
+ private Mode mode;
+
+ @Getter(onMethod = @__(@Override))
+ @Setter(onMethod = @__(@Override))
+ private RenderingHint renderingHint;
+
/**
* Creates a model representing an action parameter of an action of a parent
@@ -96,13 +102,13 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
*/
protected ScalarModel(EntityModel parentEntityModel, ActionParameterMemento apm) {
- super(parentEntityModel.getCommonContext(),
- EntityModel.Mode.EDIT,
- EntityModel.RenderingHint.REGULAR);
+ super(parentEntityModel.getCommonContext());
this.kind = Kind.PARAMETER;
this.parentEntityModel = parentEntityModel;
this.pendingModel = new PendingModel(this);
+ this.mode = ObjectUiModel.Mode.EDIT;
+ this.renderingHint = ObjectUiModel.RenderingHint.REGULAR;
}
/**
@@ -113,13 +119,15 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
protected ScalarModel(
EntityModel parentEntityModel,
PropertyMemento pm,
- EntityModel.Mode mode,
- EntityModel.RenderingHint renderingHint) {
+ ObjectUiModel.Mode mode,
+ ObjectUiModel.RenderingHint renderingHint) {
- super(parentEntityModel.getCommonContext(), mode, renderingHint);
+ super(parentEntityModel.getCommonContext());
this.kind = Kind.PROPERTY;
this.parentEntityModel = parentEntityModel;
this.pendingModel = new PendingModel(this);
+ this.mode = mode;
+ this.renderingHint = renderingHint;
}
protected ManagedObject loadFromSuper() {
@@ -458,7 +466,7 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
private static final class PendingModel extends Model<ObjectMemento> {
private static final long serialVersionUID = 1L;
- @NonNull private final EntityModel entityModel;
+ @NonNull private final ManagedObjectModel pendingValueModel;
/**
* Whether pending has been set (could have been set to null)
@@ -475,22 +483,22 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
return pending;
}
- if(entityModel.memento()!=null) {
- return entityModel.memento();
+ if(pendingValueModel.memento()!=null) {
+ return pendingValueModel.memento();
}
//XXX [a.huber] as I don't understand the big picture here, given newly introduced branch above,
// there might be a slight chance, that this is dead code anyway ...
- val adapter = entityModel.getObject();
+ val adapter = pendingValueModel.getObject();
val pojo = adapter.getPojo();
if(pojo!=null && _Collections.isCollectionOrArrayOrCanType(pojo.getClass())) {
- val specId = entityModel.getTypeOfSpecification().getSpecId();
+ val specId = pendingValueModel.getTypeOfSpecification().getSpecId();
log.warn("potentially a bug, wild guess fix for non-scalar %s", specId);
val pojos = _NullSafe.streamAutodetect(pojo)
.collect(Collectors.<Object>toList());
- return entityModel.getMementoService().mementoForPojos(pojos, specId);
+ return pendingValueModel.getMementoService().mementoForPojos(pojos, specId);
}
- return entityModel.getMementoService().mementoForObject(adapter);
+ return pendingValueModel.getMementoService().mementoForObject(adapter);
}
@Override
@@ -506,11 +514,11 @@ implements ScalarUiModel, LinksProvider, FormExecutorContext {
private ManagedObject getPendingAdapter() {
val memento = getObject();
- return entityModel.getCommonContext().reconstructObject(memento);
+ return pendingValueModel.getCommonContext().reconstructObject(memento);
}
public ManagedObject getPendingElseCurrentAdapter() {
- return hasPending ? getPendingAdapter() : entityModel.getObject();
+ return hasPending ? getPendingAdapter() : pendingValueModel.getObject();
}
public ObjectMemento getPending() {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index e96d3bb..fb1ccb0 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -36,7 +36,7 @@ import org.wicketstuff.select2.Settings;
import org.apache.isis.core.metamodel.facets.object.autocomplete.AutoCompleteFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
-import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.common.model.object.ObjectUiModel.HasRenderingHints;
import org.apache.isis.viewer.wicket.model.models.EntityModelForReference;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
@@ -87,7 +87,8 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
final ScalarModel scalarModel = getModel();
final String name = scalarModel.getName();
- entitySimpleLink = (EntityLinkSimplePanel) getComponentFactoryRegistry().createComponent(ComponentType.ENTITY_LINK, getModel());
+ entitySimpleLink = (EntityLinkSimplePanel) getComponentFactoryRegistry()
+ .createComponent(ComponentType.ENTITY_LINK, scalarModel);
entitySimpleLink.setOutputMarkupId(true);
entitySimpleLink.setLabel(Model.of(name));
@@ -211,7 +212,7 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
protected void onInitializeReadonly(final String disableReason) {
super.onInitializeReadonly(disableReason);
syncWithInput();
- val entityLinkModel = (EntityModel) entityLink.getModel();
+ val entityLinkModel = (HasRenderingHints) entityLink.getModel();
entityLinkModel.toViewMode();
entityLink.setEnabled(false);
Tooltips.addTooltip(entityLink, disableReason);
@@ -252,7 +253,8 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
final EntityModelForReference entityModelForLink = new EntityModelForReference(getModel());
- entityModelForLink.setContextAdapterIfAny(getModel().getContextAdapterIfAny());
+ //XXX assuming, that scalar models don't have a context adapter
+ //entityModelForLink.setContextAdapterIfAny(model.getContextAdapterIfAny());
entityModelForLink.setRenderingHint(getModel().getRenderingHint());
final ComponentFactory componentFactory =
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
index f50f429..f32f790 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
@@ -24,7 +24,7 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.FormComponentPanel;
import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.ManagedObjectModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelHintRequired;
@@ -45,14 +45,14 @@ implements CancelHintRequired {
private static final String ID_ENTITY_ICON_AND_TITLE = "entityIconAndTitle";
private static final String ID_ENTITY_TITLE_NULL = "entityTitleNull";
- public EntityLinkSimplePanel(final String id, final EntityModel entityModel) {
+ public EntityLinkSimplePanel(final String id, final ManagedObjectModel entityModel) {
super(id, entityModel);
setType(ManagedObject.class);
buildGui();
}
- public EntityModel getEntityModel() {
- return (EntityModel) getModel();
+ public ManagedObjectModel getEntityModel() {
+ return (ManagedObjectModel) getModel();
}
private void buildGui() {
@@ -69,7 +69,7 @@ implements CancelHintRequired {
val adapter = getEntityModel().getObject(); // getPendingElseCurrentAdapter();
if (adapter != null) {
- final EntityModel entityModelForLink = getEntityModel();
+ final ManagedObjectModel entityModelForLink = getEntityModel();
final ComponentFactory componentFactory = getComponentFactoryRegistry().findComponentFactory(ComponentType.ENTITY_ICON_AND_TITLE, entityModelForLink);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
index f7c731d..656b11c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
@@ -23,11 +23,12 @@ import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.ManagedObjectModel;
import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
import org.apache.isis.viewer.wicket.ui.ComponentType;
+import lombok.val;
+
public class EntityLinkSimplePanelFactory extends ComponentFactoryAbstract {
private static final long serialVersionUID = 1L;
@@ -38,17 +39,16 @@ public class EntityLinkSimplePanelFactory extends ComponentFactoryAbstract {
@Override
public ApplicationAdvice appliesTo(final IModel<?> model) {
- if (!(model instanceof EntityModel)) {
+ if (!(model instanceof ManagedObjectModel)) {
return ApplicationAdvice.DOES_NOT_APPLY;
}
- final EntityModel entityModel = (EntityModel) model;
- final ObjectSpecification specification = entityModel.getTypeOfSpecification();
- return appliesIf(specification != null && !specification.containsFacet(ValueFacet.class));
+ val objectModel = (ManagedObjectModel) model;
+ return appliesIf(!objectModel.lookupFacet(ValueFacet.class).isPresent());
}
@Override
public Component createComponent(final String id, final IModel<?> model) {
- final EntityModel scalarModel = (EntityModel) model;
- return new EntityLinkSimplePanel(id, scalarModel);
+ final ManagedObjectModel objectModel = (ManagedObjectModel) model;
+ return new EntityLinkSimplePanel(id, objectModel);
}
}
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 5ba4a78..6532a39 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,12 +40,9 @@ 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.ScalarPropertyModel;
@@ -57,10 +54,9 @@ import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
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
-& HasParentUiModel<EntityModel>
-& IModel<ManagedObject>
-& FormExecutorContext>
+public abstract class PromptFormAbstract<T extends
+ FormExecutorContext
+ & IModel<ManagedObject>>
extends FormAbstract<ManagedObject>
implements ScalarModelSubscriber2 {