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/19 06:18:28 UTC
[isis] 01/02: ISIS-2882: fixes regression with value-types using StringValidation while not of type String
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
commit 0965563d92e953f0624bee2b90dcdda340bd5620
Author: andi-huber <ah...@apache.org>
AuthorDate: Fri Nov 19 07:09:28 2021 +0100
ISIS-2882: fixes regression with value-types using StringValidation
while not of type String
- also remove UuidConverterWkt, as we can now use a generic one
---
.../converter/ConverterBasedOnValueSemantics.java | 4 +--
.../scalars/ScalarPanelTextFieldAbstract.java | 4 ++-
...rPanelTextFieldWithValueSemanticsAbstract.java} | 33 ++++++++++++++++------
.../ui/components/scalars/uuid/UuidPanel.java | 18 ++----------
.../scalars/uuid/UuidConverterTest_roundtrip.java | 20 ++++++-------
5 files changed, 42 insertions(+), 37 deletions(-)
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java
index f40024e..7ebbfac 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/ConverterBasedOnValueSemantics.java
@@ -39,7 +39,7 @@ import lombok.NonNull;
import lombok.Synchronized;
import lombok.val;
-public abstract class ConverterBasedOnValueSemantics<T>
+public class ConverterBasedOnValueSemantics<T>
implements
IConverter<T>,
HasCommonContext {
@@ -51,7 +51,7 @@ implements
private transient _Either<OneToOneAssociation, ObjectActionParameter> propOrParam;
private transient IsisAppCommonContext commonContext;
- protected ConverterBasedOnValueSemantics(
+ public ConverterBasedOnValueSemantics(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
this.scalarRepresentation = scalarRepresentation;
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 d974330..c612a00 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
@@ -211,7 +211,9 @@ implements TextFieldValueModel.ScalarModelProvider {
if(maxLength != null) {
textField.add(new AttributeModifier("maxlength", Model.of("" + maxLength)));
- textField.add(StringValidator.maximumLength(maxLength));
+ if(cls.equals(String.class)) {
+ textField.add(StringValidator.maximumLength(maxLength));
+ }
}
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/UuidConverterWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithValueSemanticsAbstract.java
similarity index 50%
rename from viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/UuidConverterWkt.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithValueSemanticsAbstract.java
index 2186fc7..b8301a9 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/UuidConverterWkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithValueSemanticsAbstract.java
@@ -16,24 +16,41 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.model.converter;
+package org.apache.isis.viewer.wicket.ui.components.scalars;
-import java.util.UUID;
+import java.io.Serializable;
+import org.apache.wicket.util.convert.IConverter;
+
+import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+import org.apache.isis.viewer.wicket.model.converter.ConverterBasedOnValueSemantics;
+import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import lombok.NonNull;
-public class UuidConverterWkt
-extends ConverterBasedOnValueSemantics<UUID> {
+/**
+ * Specialization of {@link ScalarPanelTextFieldAbstract},
+ * where the scalar (parameter or property) is a value-type,
+ * using conversion that is backed by a {@link ValueSemanticsProvider}.
+ */
+public abstract class ScalarPanelTextFieldWithValueSemanticsAbstract<T extends Serializable>
+extends ScalarPanelTextFieldAbstract<T> {
private static final long serialVersionUID = 1L;
- public UuidConverterWkt(
- final @NonNull ObjectFeature objFeature,
+ protected ScalarPanelTextFieldWithValueSemanticsAbstract(
+ final String id,
+ final ScalarModel scalarModel, final Class<T> type) {
+ super(id, scalarModel, type);
+ }
+
+ @Override
+ protected IConverter<T> getConverter(
+ final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
- super(objFeature, scalarRepresentation);
+ return new ConverterBasedOnValueSemantics<>(propOrParam, scalarRepresentation);
}
-}
\ No newline at end of file
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
index 5b3e4a5..848dfc2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
@@ -20,21 +20,14 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.uuid;
import java.util.UUID;
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
-import org.apache.isis.viewer.wicket.model.converter.UuidConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
-
-import lombok.NonNull;
+import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldWithValueSemanticsAbstract;
/**
* Panel for rendering scalars of type {@link UUID}.
*/
public class UuidPanel
-extends ScalarPanelTextFieldAbstract<UUID> {
+extends ScalarPanelTextFieldWithValueSemanticsAbstract<UUID> {
private static final long serialVersionUID = 1L;
@@ -42,13 +35,6 @@ extends ScalarPanelTextFieldAbstract<UUID> {
super(id, scalarModel, UUID.class);
}
- @Override
- protected IConverter<UUID> getConverter(
- final @NonNull ObjectFeature propOrParam,
- final @NonNull ScalarRepresentation scalarRepresentation) {
- return new UuidConverterWkt(propOrParam, scalarRepresentation);
- }
-
}
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
index d912036..1049e3c 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
@@ -25,12 +25,6 @@ import org.apache.wicket.util.convert.ConversionException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.services.iactnlayer.InteractionService;
@@ -40,7 +34,13 @@ import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics;
import org.apache.isis.core.security._testing.InteractionService_forTesting;
-import org.apache.isis.viewer.wicket.model.converter.UuidConverterWkt;
+import org.apache.isis.viewer.wicket.model.converter.ConverterBasedOnValueSemantics;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import lombok.Getter;
import lombok.Setter;
@@ -52,7 +52,7 @@ class UuidConverterTest_roundtrip {
final UUID valid = UUID.randomUUID();
- private UuidConverterWkt converter;
+ private ConverterBasedOnValueSemantics<UUID> converter;
private InteractionService interactionService;
private MetaModelContext mmc;
@@ -103,10 +103,10 @@ class UuidConverterTest_roundtrip {
// -- HELPER
- private UuidConverterWkt newConverter(final Class<?> type) {
+ private ConverterBasedOnValueSemantics<UUID> newConverter(final Class<?> type) {
val customerSpec = mmc.getSpecificationLoader().specForTypeElseFail(type);
val prop = customerSpec.getPropertyElseFail("value");
- return new UuidConverterWkt(prop, ScalarRepresentation.EDITING);
+ return new ConverterBasedOnValueSemantics<>(prop, ScalarRepresentation.EDITING);
}
// -- SCENARIOS