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/01/10 11:37:26 UTC
[isis] branch master updated: ISIS-2941: fixes numerical primitive field editing
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 a7baeb5 ISIS-2941: fixes numerical primitive field editing
a7baeb5 is described below
commit a7baeb5fbc59a7f0e14743fb997d531a04e594db
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Jan 10 12:36:54 2022 +0100
ISIS-2941: fixes numerical primitive field editing
- adds primitive converter variants to the wicket-component factories
---
.../ui/components/scalars/TextFieldValueModel.java | 15 +++++++-----
.../ComponentFactoryRegistrarDefault.java | 27 ++++++++++++++--------
2 files changed, 27 insertions(+), 15 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
index 15e9836..6fd4fc6 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/TextFieldValueModel.java
@@ -24,6 +24,7 @@ import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.Model;
import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import lombok.val;
@@ -50,12 +51,7 @@ public class TextFieldValueModel<T extends Serializable> extends Model<T> {
public T getObject() {
final ScalarModel model = scalarModelProvider.getModel();
val objectAdapter = model.getObject();
- return asT(objectAdapter);
- }
-
- @SuppressWarnings("unchecked")
- private T asT(final ManagedObject objectAdapter) {
- return (T) (objectAdapter != null? objectAdapter.getPojo(): null);
+ return unwrap(objectAdapter);
}
@Override
@@ -71,5 +67,12 @@ public class TextFieldValueModel<T extends Serializable> extends Model<T> {
}
}
+ // -- HELPER
+
+ @SuppressWarnings("unchecked")
+ private T unwrap(final ManagedObject objectAdapter) {
+ return (T) ManagedObjects.UnwrapUtil.single(objectAdapter);
+ }
+
}
\ No newline at end of file
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
index 2312f97..bd12cb6 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
@@ -84,6 +84,7 @@ import org.apache.isis.viewer.wicket.ui.components.voidreturn.VoidReturnPanelFac
import org.apache.isis.viewer.wicket.ui.components.welcome.WelcomePanelFactory;
import org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink.EntityLinkSimplePanelFactory;
+import lombok.NonNull;
import lombok.val;
import lombok.extern.log4j.Log4j2;
@@ -303,14 +304,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
public static <T extends Serializable> ComponentFactoryScalarAbstract
createScalarPanelUsingTextField(final Class<T> valueTypeClass) {
- var valueTypeClasses = Can.<Class<?>>ofSingleton(valueTypeClass);
-
- // if the valueType is a wrapper type, also append its unboxed variant
- if(ClassUtils.isPrimitiveWrapper(valueTypeClass)) {
- val unboxed = org.apache.isis.core.metamodel.commons.ClassUtil
- .unboxPrimitiveIfNecessary(valueTypeClass);
- valueTypeClasses = valueTypeClasses.add(unboxed);
- }
+ var valueTypeClasses = withPrimitiveVariant(valueTypeClass);
return new ComponentFactoryScalarAbstract(
ScalarPanelTextFieldWithValueSemantics.class,
@@ -329,7 +323,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
public static <T extends Serializable> ComponentFactoryScalarAbstract
createScalarPanelUsingNumberField(final Class<T> valueTypeClass) {
- val valueTypeClasses = Can.<Class<?>>ofSingleton(valueTypeClass);
+ var valueTypeClasses = withPrimitiveVariant(valueTypeClass);
return new ComponentFactoryScalarAbstract(
ScalarPanelTextFieldNumeric.class,
@@ -348,6 +342,7 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
public static <T extends Serializable> ComponentFactoryScalarAbstract
createScalarPanelUsingTemporalPicker(final Class<T> valueTypeClass) {
+ // assuming there is no primitive temporal type
val valueTypeClasses = Can.<Class<?>>ofSingleton(valueTypeClass);
return new ComponentFactoryScalarAbstract(
@@ -364,5 +359,19 @@ public class ComponentFactoryRegistrarDefault implements ComponentFactoryRegistr
};
}
+ // -- HELPER
+
+ private static Can<Class<?>> withPrimitiveVariant(final @NonNull Class<?> valueTypeClass) {
+ var valueTypeClasses = Can.<Class<?>>ofSingleton(valueTypeClass);
+
+ // if the valueType is a wrapper type, also append its unboxed variant
+ if(ClassUtils.isPrimitiveWrapper(valueTypeClass)) {
+ val unboxed = org.apache.isis.core.metamodel.commons.ClassUtil
+ .unboxPrimitiveIfNecessary(valueTypeClass);
+ valueTypeClasses = valueTypeClasses.add(unboxed);
+ }
+
+ return valueTypeClasses;
+ }
}