This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit f06c086e842fa9f13b9deeea0caa24a08489fab4
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Sun Nov 13 15:34:35 2022 +0100

    Generalize `Numbers.isNumber(Class)` by checking also for types unknown to 
this static method.
---
 .../src/main/java/org/apache/sis/util/iso/TypeNames.java         | 2 +-
 core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java  | 9 +++++----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/TypeNames.java 
b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/TypeNames.java
index a4da980c77..2c28bad824 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/TypeNames.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/TypeNames.java
@@ -99,7 +99,7 @@ final class TypeNames {
         NameSpace ns = ogcNS;
 search: if (CharSequence.class.isAssignableFrom(valueClass)) {
             name = InternationalString.class.isAssignableFrom(valueClass) ? 
"FreeText" : "CharacterString";
-        } else if (Numbers.isNumber(valueClass) || 
Number.class.isAssignableFrom(valueClass)) {
+        } else if (Numbers.isNumber(valueClass)) {
             name = Numbers.isInteger(valueClass) ? "Integer" : "Real";
         } else {
             /*
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java 
b/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
index 2f60997bf0..c0e337cb99 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/Numbers.java
@@ -39,7 +39,7 @@ import static java.lang.Double.doubleToLongBits;
  * Static methods working with {@link Number} objects, and a few primitive 
types by extension.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
- * @version 1.1
+ * @version 1.3
  *
  * @see org.apache.sis.math.MathFunctions
  *
@@ -183,10 +183,10 @@ public final class Numbers extends Static {
     /**
      * Returns {@code true} if the given {@code type} is a floating point or 
an integer type.
      * This method returns {@code true} if either {@link #isFloat(Class)} or 
{@link #isInteger(Class)}
-     * returns {@code true} for the given argument.
+     * returns {@code true} for the given argument, or if the type is 
assignable to {@link Number}.
      *
      * @param  type  the primitive type or wrapper class to test (can be 
{@code null}).
-     * @return {@code true} if {@code type} is a floating point or an integer 
type.
+     * @return {@code true} if {@code type} is a {@link Number} or a primitive 
floating point or integer type.
      *
      * @see #isFloat(Class)
      * @see #isInteger(Class)
@@ -195,7 +195,8 @@ public final class Numbers extends Static {
      */
     public static boolean isNumber(final Class<?> type) {
         final Numbers mapping = MAPPING.get(type);
-        return (mapping != null) && (mapping.isInteger | mapping.isFloat);
+        return ((mapping != null) && (mapping.isInteger | mapping.isFloat)) ||
+               ((type != null) && Number.class.isAssignableFrom(type));
     }
 
     /**

Reply via email to