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/08/09 07:06:35 UTC
[isis] branch master updated: ISIS-3115: simplifies IdStringifier.Abstract
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 ab922d83d4 ISIS-3115: simplifies IdStringifier.Abstract<T>
ab922d83d4 is described below
commit ab922d83d4a3c3997b604c15b2ae6bcda07879f5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Aug 9 09:06:28 2022 +0200
ISIS-3115: simplifies IdStringifier.Abstract<T>
---
.../applib/services/bookmark/IdStringifier.java | 35 ++++++----------------
.../idstringifiers/IdStringifierForByte.java | 6 ++--
.../idstringifiers/IdStringifierForCharacter.java | 2 +-
.../idstringifiers/IdStringifierForInteger.java | 6 ++--
.../idstringifiers/IdStringifierForLong.java | 6 ++--
.../idstringifiers/IdStringifierForShort.java | 6 ++--
6 files changed, 26 insertions(+), 35 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
index 6223e0accf..75a58e8b2d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/IdStringifier.java
@@ -20,7 +20,7 @@
package org.apache.isis.applib.services.bookmark;
-import org.springframework.lang.Nullable;
+import org.springframework.util.ClassUtils;
import lombok.NonNull;
import lombok.val;
@@ -86,31 +86,20 @@ public interface IdStringifier<T> {
protected final static char SEPARATOR = '_';
/**
- * eg <code>Integer.class</code>, or JDO-specific <code>DatastoreId</code>, or a custom class for application-defined PKs.
+ * eg <code>Integer.class</code>, or JDO-specific <code>DatastoreId</code>,
+ * or a custom class for application-defined PKs.
*/
- private final Class<T> valueClass;
- /**
- * Allows for a Stringifier to handle (for example) both <code>Integer.class</code> and <code>int.class</code>.
- */
- private final Class<T> primitiveValueClassIfAny;
+ private final Class<?> resolvedClass;
- public Abstract(
+ protected Abstract(
final @NonNull Class<T> handledClass) {
- this(handledClass, null);
- }
- public Abstract(
- final Class<T> valueClass,
- final @Nullable Class<T> primitiveClass
- ) {
- this.valueClass = valueClass;
- this.primitiveValueClassIfAny = primitiveClass;
+ this.resolvedClass = ClassUtils.resolvePrimitiveIfNecessary(handledClass);
}
@Override
public boolean handles(final @NonNull Class<?> candidateValueClass) {
- return valueClass.isAssignableFrom(candidateValueClass)
- || primitiveValueClassIfAny != null
- && primitiveValueClassIfAny.isAssignableFrom(candidateValueClass);
+ val reolvedCandidateClass = ClassUtils.resolvePrimitiveIfNecessary(candidateValueClass);
+ return resolvedClass.isAssignableFrom(reolvedCandidateClass);
}
/**
@@ -141,13 +130,7 @@ public interface IdStringifier<T> {
public AbstractWithPrefix(
@NonNull final Class<T> handledClass,
@NonNull final String typeCode) {
- this(handledClass, typeCode, null);
- }
- public AbstractWithPrefix(
- @NonNull final Class<T> handledClass,
- @NonNull final String typeCode,
- final @Nullable Class<T> primitiveClass) {
- super(handledClass, primitiveClass);
+ super(handledClass);
this.prefix = typeCode + SEPARATOR;
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForByte.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForByte.java
index af75dd86b3..51b6b69d62 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForByte.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForByte.java
@@ -33,11 +33,13 @@ import lombok.NonNull;
public class IdStringifierForByte extends IdStringifier.Abstract<Byte> {
public IdStringifierForByte() {
- super(Byte.class, byte.class);
+ super(Byte.class);
}
@Override
- public Byte destring(final @NonNull String stringified, @NonNull Class<?> targetEntityClass) {
+ public Byte destring(
+ final @NonNull String stringified,
+ final @NonNull Class<?> targetEntityClass) {
return Byte.parseByte(stringified);
}
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
index 80eb05b834..144611eef3 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForCharacter.java
@@ -38,7 +38,7 @@ import lombok.NonNull;
public class IdStringifierForCharacter extends IdStringifier.Abstract<Character> {
public IdStringifierForCharacter() {
- super(Character.class, char.class);
+ super(Character.class);
}
static final List<Character> NON_SAFE_URL_CHARS = IdStringifierForString.NON_SAFE_URL_CHARS.stream().map(x -> x.charAt(0)).collect(Collectors.toList());
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForInteger.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForInteger.java
index 8a82a6dcdf..e1ec5ab890 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForInteger.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForInteger.java
@@ -33,11 +33,13 @@ import lombok.NonNull;
public class IdStringifierForInteger extends IdStringifier.Abstract<Integer> {
public IdStringifierForInteger() {
- super(Integer.class, int.class);
+ super(Integer.class);
}
@Override
- public Integer destring(final @NonNull String stringified, @NonNull Class<?> targetEntityClass) {
+ public Integer destring(
+ final @NonNull String stringified,
+ final @NonNull Class<?> targetEntityClass) {
return Integer.parseInt(stringified);
}
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForLong.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForLong.java
index b4a8700179..73dddbce29 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForLong.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForLong.java
@@ -33,11 +33,13 @@ import lombok.NonNull;
public class IdStringifierForLong extends IdStringifier.Abstract<Long> {
public IdStringifierForLong() {
- super(Long.class, long.class);
+ super(Long.class);
}
@Override
- public Long destring(final @NonNull String stringified, @NonNull Class<?> targetEntityClass) {
+ public Long destring(
+ final @NonNull String stringified,
+ final @NonNull Class<?> targetEntityClass) {
return Long.parseLong(stringified);
}
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForShort.java b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForShort.java
index 0674da6c93..99f6d7125d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForShort.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/bookmark/idstringifiers/IdStringifierForShort.java
@@ -33,11 +33,13 @@ import lombok.NonNull;
public class IdStringifierForShort extends IdStringifier.Abstract<Short> {
public IdStringifierForShort() {
- super(Short.class, short.class);
+ super(Short.class);
}
@Override
- public Short destring(final @NonNull String stringified, @NonNull Class<?> targetEntityClass) {
+ public Short destring(
+ final @NonNull String stringified,
+ final @NonNull Class<?> targetEntityClass) {
return Short.parseShort(stringified);
}
}