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 2022/03/09 22:56:03 UTC
[isis] branch master updated: ISIS-2877: fixes multi-select receiver false-positive on guard
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 3ca8244 ISIS-2877: fixes multi-select receiver false-positive on guard
3ca8244 is described below
commit 3ca824497e6ea30bb24035deb618713359010d28
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Mar 9 23:55:51 2022 +0100
ISIS-2877: fixes multi-select receiver false-positive on guard
---
.../entity/icontitle/EntityIconAndTitlePanel.java | 39 ++++++++++++----------
.../scalars/reference/ReferencePanel.java | 9 ++---
.../valuechoices/ValueChoicesSelect2Panel.java | 18 ++++++----
3 files changed, 35 insertions(+), 31 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index 5542624..4c54dea 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -34,13 +34,14 @@ import org.apache.isis.core.metamodel.facets.object.projection.ProjectionFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
+import org.apache.isis.core.metamodel.spec.PackedManagedObject;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ObjectAdapterModel;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.isis.viewer.wicket.ui.util.Wkt;
import org.apache.isis.viewer.wicket.ui.util.WktComponents;
import org.apache.isis.viewer.wicket.ui.util.WktTooltips;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.val;
@@ -63,14 +64,7 @@ extends PanelAbstract<ManagedObject, ObjectAdapterModel> {
final String id,
final ObjectAdapterModel objectAdapterModel) {
super(id, objectAdapterModel);
-
- val model = getModel();
- val obj = model.getObject();
-
- val isNonEmptyAbstract = isNonEmptyAbstract(obj);
- // GUARD against non-empty abstract
- _Assert.assertFalse(isNonEmptyAbstract,
- ()->"model for EntityIconAndTitlePanel, when non-empty, must not represent abstract types");
+ guardAgainstNonEmptyAbstractScalar(objectAdapterModel);
}
protected ManagedObject getTargetAdapter() {
@@ -78,14 +72,6 @@ extends PanelAbstract<ManagedObject, ObjectAdapterModel> {
return targetAdapter;
}
- static boolean isNonEmptyAbstract(final ManagedObject obj) {
- if(obj==null
- || obj.getPojo()==null) {
- return false;
- }
- return obj.getSpecification().isAbstract();
- }
-
@Override
protected void onBeforeRender() {
buildGui();
@@ -230,4 +216,23 @@ extends PanelAbstract<ManagedObject, ObjectAdapterModel> {
return maxLength <= 3 ? "" : str.substring(0, maxLength - 3) + "...";
}
+ private static void guardAgainstNonEmptyAbstractScalar(final ObjectAdapterModel objectAdapterModel) {
+ val obj = objectAdapterModel.getObject();
+ _Assert.assertFalse(isNonEmptyAbstractScalar(obj),
+ ()->String.format("model for EntityIconAndTitlePanel, "
+ + "when non-empty, must not represent abstract types; "
+ + "however, got an abstract %s for object of type %s",
+ obj.getSpecification(),
+ obj.getPojo().getClass().getName()));
+ }
+
+ private static boolean isNonEmptyAbstractScalar(final ManagedObject obj) {
+ if(obj==null
+ || obj.getPojo()==null
+ || obj instanceof PackedManagedObject) {
+ return false;
+ }
+ return obj.getSpecification().isAbstract();
+ }
+
}
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 dd69a0e..fd55c06 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
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
import java.util.Optional;
-import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -109,8 +108,6 @@ public class ReferencePanel extends ScalarPanelSelectAbstract {
this.select2 = createSelect2AndSemantics();
entityLink.addOrReplace(select2.asComponent());
- //syncWithInput();
-
entityLink.setOutputMarkupId(true);
FormComponent<?> formComponent = this.entityLink;
@@ -200,7 +197,7 @@ public class ReferencePanel extends ScalarPanelSelectAbstract {
super.onNotEditable(disableReason, target);
if(isOutputFormat) return;
entityLink.setEnabled(false);
- entityLink.add(new AttributeModifier("title", Model.of(disableReason)));
+ Wkt.attributeReplace(entityLink, "title", disableReason);
}
@Override
@@ -208,7 +205,7 @@ public class ReferencePanel extends ScalarPanelSelectAbstract {
super.onEditable(target);
if(isOutputFormat) return;
entityLink.setEnabled(true);
- entityLink.add(new AttributeModifier("title", Model.of("")));
+ Wkt.attributeReplace(entityLink, "title", "");
}
// called from onInitialize*
@@ -348,8 +345,6 @@ public class ReferencePanel extends ScalarPanelSelectAbstract {
entityLink.setConvertedInput(pendingAdapter);
}
-
-
// //////////////////////////////////////
@Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index 1f93910..f3c6712 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -33,8 +33,8 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelSelectAbstract;
import org.apache.isis.viewer.wicket.ui.components.widgets.select2.Select2;
import org.apache.isis.viewer.wicket.ui.components.widgets.select2.providers.ObjectAdapterMementoProviderForValueChoices;
-import org.apache.isis.viewer.wicket.ui.util.WktTooltips;
import org.apache.isis.viewer.wicket.ui.util.Wkt;
+import org.apache.isis.viewer.wicket.ui.util.WktTooltips;
import lombok.val;
@@ -43,6 +43,8 @@ extends ScalarPanelSelectAbstract {
private static final long serialVersionUID = 1L;
+ private boolean isOutputFormat = false;
+
public ValueChoicesSelect2Panel(final String id, final ScalarModel scalarModel) {
super(id, scalarModel);
}
@@ -51,20 +53,18 @@ extends ScalarPanelSelectAbstract {
@Override
protected Component createComponentForCompact() {
+ isOutputFormat = true;
return Wkt.label(ID_SCALAR_IF_COMPACT, "placeholder");
}
@Override
protected MarkupContainer createComponentForRegular() {
-
if(select2 == null) {
this.select2 = createSelect2(ID_SCALAR_VALUE);
} else {
select2.clearInput();
}
-
FormComponent<?> formComponent = select2.asComponent();
-
return createFormGroup(formComponent);
}
@@ -84,21 +84,25 @@ extends ScalarPanelSelectAbstract {
@Override
protected void onInitializeNotEditable() {
+ super.onInitializeNotEditable();
+ if(isOutputFormat) return;
// View: Read only
select2.setEnabled(false);
}
@Override
protected void onInitializeEditable() {
+ super.onInitializeEditable();
+ if(isOutputFormat) return;
// Edit: read/write
select2.setEnabled(true);
-
clearTitleAttribute();
}
@Override
protected void onInitializeReadonly(final String disableReason) {
super.onInitializeReadonly(disableReason);
+ if(isOutputFormat) return;
setTitleAttribute(disableReason);
select2.setEnabled(false);
}
@@ -120,7 +124,7 @@ extends ScalarPanelSelectAbstract {
@Override
protected void onNotEditable(final String disableReason, final Optional<AjaxRequestTarget> target) {
super.onNotEditable(disableReason, target);
-
+ if(isOutputFormat) return;
setTitleAttribute(disableReason);
select2.setEnabled(false);
}
@@ -128,7 +132,7 @@ extends ScalarPanelSelectAbstract {
@Override
protected void onEditable(final Optional<AjaxRequestTarget> target) {
super.onEditable(target);
-
+ if(isOutputFormat) return;
setTitleAttribute("");
select2.setEnabled(true);
}