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 2021/11/17 10:40:15 UTC
[isis] branch master updated: ISIS-2896: fixes the CharacterPanel
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 01db8c9 ISIS-2896: fixes the CharacterPanel
01db8c9 is described below
commit 01db8c95a03c799ddb211375759716be17d676ad
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Nov 17 11:40:01 2021 +0100
ISIS-2896: fixes the CharacterPanel
- our CharacterValueSemantics was not registered with Spring
---
.../core/metamodel/IsisModuleCoreMetamodel.java | 2 ++
.../scalars/ScalarPanelTextFieldAbstract.java | 19 +++++++++++++++++--
.../scalars/ScalarPanelTextFieldNumeric.java | 2 ++
.../scalars/primitive/CharacterPanel.java | 22 +++++++++++++++++++---
.../ui/components/unknown/UnknownModelPanel.java | 12 +++++++++++-
5 files changed, 51 insertions(+), 6 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
index bd5c4e2..3f1e8fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/IsisModuleCoreMetamodel.java
@@ -55,6 +55,7 @@ import org.apache.isis.core.metamodel.valuesemantics.BooleanValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.BufferedImageValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.ByteValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.ChangesDtoValueSemantics;
+import org.apache.isis.core.metamodel.valuesemantics.CharacterValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.ClobValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.CommandDtoValueSemantics;
import org.apache.isis.core.metamodel.valuesemantics.DoubleValueSemantics;
@@ -116,6 +117,7 @@ import org.apache.isis.core.security.IsisModuleCoreSecurity;
FloatValueSemantics.class,
BigDecimalValueSemantics.class,
BigIntegerValueSemantics.class,
+ CharacterValueSemantics.class,
StringValueSemantics.class,
PasswordValueSemantics.class,
BufferedImageValueSemantics.class,
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 4524011..3cfc9d0 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -100,8 +100,23 @@ implements TextFieldValueModel.ScalarModelProvider {
this.cls = cls;
}
- // ///////////////////////////////////////////////////////////////////
-
+ // -- CONVERSION
+
+// protected final IConverter<T> getConverter(final ScalarModel scalarModel) {
+// return getConverter(scalarModel.getMetaModel(), scalarModel.isEditMode()
+// ? ScalarRepresentation.EDITING
+// : ScalarRepresentation.VIEWING);
+// }
+//
+// /**
+// * Converter that is used for the either regular (editing) or compact (HTML) view of the panel,
+// * based on argument {@code scalarRepresentation}.
+// */
+// protected abstract IConverter<T> getConverter(
+// @NonNull ObjectFeature propOrParam,
+// @NonNull ScalarRepresentation scalarRepresentation);
+
+ // --
protected AbstractTextComponent<T> getTextField() {
return textField;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
index 26ba73b..2a63204 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
@@ -61,6 +61,7 @@ extends ScalarPanelTextFieldAbstract<T> {
return super.toStringConvertingModelOf(getConverter(scalarModel));
}
+ //FIXME move up in hierarchy
protected final IConverter<T> getConverter(final ScalarModel scalarModel) {
return getConverter(scalarModel.getMetaModel(), scalarModel.isEditMode()
? ScalarRepresentation.EDITING
@@ -71,6 +72,7 @@ extends ScalarPanelTextFieldAbstract<T> {
* Converter that is used for the either regular (editing) or compact (HTML) view of the panel,
* based on argument {@code scalarRepresentation}.
*/
+ //FIXME move up in hierarchy
protected abstract IConverter<T> getConverter(
@NonNull ObjectFeature propOrParam,
@NonNull ScalarRepresentation scalarRepresentation);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
index b4be3d3..c5490f5 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
@@ -18,18 +18,34 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.convert.converter.CharacterConverter;
+import org.springframework.util.ClassUtils;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldParseableAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
+
+import lombok.val;
/**
* Panel for rendering scalars of type {@link Character} or <tt>char</tt>.
*/
-public class CharacterPanel extends ScalarPanelTextFieldParseableAbstract {
+public class CharacterPanel
+extends ScalarPanelTextFieldAbstract<Character> {
private static final long serialVersionUID = 1L;
public CharacterPanel(final String id, final ScalarModel scalarModel) {
- super(id, scalarModel);
+ super(id, scalarModel, Character.class);
+ }
+
+ @Override
+ public <C> IConverter<C> getConverter(final Class<C> _type) {
+ val type = ClassUtils.resolvePrimitiveIfNecessary(_type);
+ if(Character.class.equals(type)) {
+ return (IConverter<C>) CharacterConverter.INSTANCE; //FIXME[ISIS-2882] use value semantics instead
+ }
+ return super.getConverter(_type);
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanel.java
index 9583dd3..c74251e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanel.java
@@ -23,6 +23,7 @@ import org.apache.wicket.model.IModel;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.Wkt;
@@ -55,13 +56,22 @@ extends PanelAbstract<Object, IModel<Object>> {
private void buildMessageForModel(final StringBuilder buf, final IModel<?> model) {
buf.append(model.getClass().getSimpleName()).append(" ");
if(model instanceof EntityModel) {
- EntityModel entityModel = (EntityModel) model;
+ val entityModel = (EntityModel) model;
val objectAdapter = entityModel.getObject();
if(objectAdapter != null) {
buf.append("??? objectAdapter oid: " + ManagedObjects.bookmark(objectAdapter).orElse(null));
} else {
buf.append("??? objectAdapter is NULL");
}
+ } else if(model instanceof ScalarModel) {
+ val scalarModel = (ScalarModel) model;
+ val scalarAdapter = scalarModel.getObject();
+ if(ManagedObjects.isSpecified(scalarAdapter)) {
+ buf.append(String.format("??? spec=%s, value='%s'",
+ scalarAdapter.getSpecification(), scalarAdapter.getPojo()));
+ } else {
+ buf.append("??? scalarAdapter is NULL or UNSPECIFIED");
+ }
}
}