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");
+            }
         }
 
     }