You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/02/09 14:57:14 UTC

[commons-beanutils] branch master updated (4faf72d9 -> 0861a8d0)

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

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-beanutils.git


    from 4faf72d9 Javadoc
     new eed01575 Inline single use local variable
     new 0861a8d0 Add and use ConversionException.format(String, Object...).

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 src/changes/changes.xml                            |  5 +++-
 .../apache/commons/beanutils2/BasicDynaBean.java   |  7 ++----
 .../commons/beanutils2/ConversionException.java    | 12 ++++++++++
 .../apache/commons/beanutils2/LazyDynaBean.java    |  7 ++----
 .../beanutils2/converters/AbstractConverter.java   |  6 ++---
 .../beanutils2/converters/ArrayConverter.java      |  7 ++----
 .../beanutils2/converters/DateTimeConverter.java   | 20 +++++++---------
 .../beanutils2/converters/NumberConverter.java     | 28 ++++++++--------------
 .../locale/converters/DateLocaleConverter.java     | 25 +++++++++----------
 .../locale/converters/FloatLocaleConverter.java    | 14 +++++------
 .../converters/DateLocaleConverterTestCase.java    |  4 ++--
 11 files changed, 63 insertions(+), 72 deletions(-)


[commons-beanutils] 02/02: Add and use ConversionException.format(String, Object...).

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-beanutils.git

commit 0861a8d0f3ad9d9a209df1ccc34fcb841344196d
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Feb 9 09:57:01 2023 -0500

    Add and use ConversionException.format(String, Object...).
---
 src/changes/changes.xml                            |  5 +++-
 .../apache/commons/beanutils2/BasicDynaBean.java   |  7 ++----
 .../commons/beanutils2/ConversionException.java    | 12 ++++++++++
 .../apache/commons/beanutils2/LazyDynaBean.java    |  7 ++----
 .../beanutils2/converters/AbstractConverter.java   |  6 ++---
 .../beanutils2/converters/ArrayConverter.java      |  7 ++----
 .../beanutils2/converters/DateTimeConverter.java   |  3 +--
 .../beanutils2/converters/NumberConverter.java     | 28 ++++++++--------------
 .../locale/converters/DateLocaleConverter.java     | 25 +++++++++----------
 .../locale/converters/FloatLocaleConverter.java    | 14 +++++------
 .../converters/DateLocaleConverterTestCase.java    |  4 ++--
 11 files changed, 55 insertions(+), 63 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6d7df5b9..674e1c48 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -108,9 +108,12 @@
         Fix SpotBugs [ERROR] Medium: org.apache.commons.beanutils2.WrapDynaClass.getDynaProperties() may expose internal representation by returning WrapDynaClass.properties [org.apache.commons.beanutils2.WrapDynaClass] At WrapDynaClass.java:[line 172] EI_EXPOSE_REP.
       </action>
       <!-- ADD -->
-      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
+      <action dev="ggregory" type="add" due-to="Dependabot, Gary Gregory">
         Add github/codeql-action #118.
       </action>
+      <action dev="ggregory" type="add" due-to="Dependabot, Gary Gregory">
+        Add and use ConversionException.format(String, Object...).
+      </action>
       <!--  UPDATES -->
       <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
         Bump actions/cache from 2 to 3.0.11 #77, #89, #103, #111. #137, #141.
diff --git a/src/main/java/org/apache/commons/beanutils2/BasicDynaBean.java b/src/main/java/org/apache/commons/beanutils2/BasicDynaBean.java
index 4217ab14..f2515b5c 100644
--- a/src/main/java/org/apache/commons/beanutils2/BasicDynaBean.java
+++ b/src/main/java/org/apache/commons/beanutils2/BasicDynaBean.java
@@ -298,11 +298,8 @@ public class BasicDynaBean implements DynaBean, Serializable {
                         ("Primitive value for '" + name + "'");
             }
         } else if (!isAssignable(descriptor.getType(), value.getClass())) {
-            throw new ConversionException
-                    ("Cannot assign value of type '" +
-                    value.getClass().getName() +
-                    "' to property '" + name + "' of type '" +
-                    descriptor.getType().getName() + "'");
+            throw ConversionException.format("Cannot assign value of type '%s' to property '%s' of type '%s'", value.getClass().getName(), name,
+                    descriptor.getType().getName());
         }
         values.put(name, value);
 
diff --git a/src/main/java/org/apache/commons/beanutils2/ConversionException.java b/src/main/java/org/apache/commons/beanutils2/ConversionException.java
index 8f43ed01..707ab98f 100644
--- a/src/main/java/org/apache/commons/beanutils2/ConversionException.java
+++ b/src/main/java/org/apache/commons/beanutils2/ConversionException.java
@@ -25,6 +25,18 @@ package org.apache.commons.beanutils2;
  */
 public class ConversionException extends RuntimeException {
 
+    /**
+     * Constructs a new instance with a message formatted using {@link String#format(String, Object...)}.
+     *
+     * @param format See {@link String#format(String, Object...)}.
+     * @param args   See {@link String#format(String, Object...)}.
+     * @return a new instance with a message formatted using {@link String#format(String, Object...)}.
+     * @since 2.0.0
+     */
+    public static ConversionException format(final String format, final Object... args) {
+        return new ConversionException(String.format(format, args));
+    }
+
     private static final long serialVersionUID = 1L;
 
     /**
diff --git a/src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java b/src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java
index 242eb308..9433d4c7 100644
--- a/src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java
+++ b/src/main/java/org/apache/commons/beanutils2/LazyDynaBean.java
@@ -481,11 +481,8 @@ public class LazyDynaBean implements DynaBean, Serializable {
                         ("Primitive value for '" + name + "'");
             }
         } else if (!isAssignable(descriptor.getType(), value.getClass())) {
-            throw new ConversionException
-                    ("Cannot assign value of type '" +
-                    value.getClass().getName() +
-                    "' to property '" + name + "' of type '" +
-                    descriptor.getType().getName() + "'");
+            throw ConversionException.format
+                    ("Cannot assign value of type '%s' to property '%s' of type '%s'", value.getClass().getName(), name, descriptor.getType().getName());
         }
 
         // Set the property's value
diff --git a/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java
index 7a9acd8c..98a936c2 100644
--- a/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/converters/AbstractConverter.java
@@ -142,8 +142,7 @@ public abstract class AbstractConverter<D> implements Converter<D> {
      * @since 1.9
      */
     protected ConversionException conversionException(final Class<?> type, final Object value) {
-        return new ConversionException("Can't convert value '" + value
-                + "' to type " + type);
+        return ConversionException.format("Can't convert value '%s' to type %s", value, type);
     }
 
     /**
@@ -385,8 +384,7 @@ public abstract class AbstractConverter<D> implements Converter<D> {
             return type.cast(value);
         }
 
-        final ConversionException cex =  new ConversionException("No value specified for '" +
-                toString(type) + "'");
+        final ConversionException cex = ConversionException.format("No value specified for '%s'", toString(type));
         if (log().isDebugEnabled()) {
             log().debug("    Throwing ConversionException: " + cex.getMessage());
             log().debug("    " + DEFAULT_CONFIG_MSG);
diff --git a/src/main/java/org/apache/commons/beanutils2/converters/ArrayConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/ArrayConverter.java
index dead1958..aaf73db9 100644
--- a/src/main/java/org/apache/commons/beanutils2/converters/ArrayConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/converters/ArrayConverter.java
@@ -281,9 +281,7 @@ public class ArrayConverter<C> extends AbstractConverter<C> {
     @Override
     protected <T> T convertToType(final Class<T> type, final Object value) throws Throwable {
         if (!type.isArray()) {
-            throw new ConversionException(toString(getClass())
-                    + " cannot handle conversion to '"
-                    + toString(type) + "' (not an array).");
+            throw ConversionException.format("%s cannot handle conversion to '%s' (not an array).", toString(getClass()), toString(type));
         }
 
         // Handle the source
@@ -463,8 +461,7 @@ public class ArrayConverter<C> extends AbstractConverter<C> {
                 } else if (ttype == StreamTokenizer.TT_EOF) {
                     break;
                 } else {
-                    throw new ConversionException("Encountered token of type "
-                        + ttype + " parsing elements to '" + typeName + ".");
+                    throw ConversionException.format("Encountered token of type %s parsing elements to '%s'.", ttype, typeName);
                 }
             }
 
diff --git a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
index af6ebc23..123dd508 100644
--- a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
@@ -591,8 +591,7 @@ public abstract class DateTimeConverter<D> extends AbstractConverter<D> {
             }
         }
         if (patterns.length > 1) {
-            throw new ConversionException("Error converting '" + toString(sourceType) + "' to '" + toString(targetType)
-                    + "' using  patterns '" + displayPatterns + "'");
+            throw ConversionException.format("Error converting '%s' to '%s' using  patterns '%s'", toString(sourceType), toString(targetType), displayPatterns);
         }
         throw firstEx;
     }
diff --git a/src/main/java/org/apache/commons/beanutils2/converters/NumberConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/NumberConverter.java
index 8c14f3e3..f0df51d6 100644
--- a/src/main/java/org/apache/commons/beanutils2/converters/NumberConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/converters/NumberConverter.java
@@ -301,12 +301,10 @@ public abstract class NumberConverter<N extends Number> extends AbstractConverte
         if (targetType.equals(Byte.class)) {
             final long longValue = value.longValue();
             if (longValue > Byte.MAX_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too large for " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too large for %s", toString(sourceType), value, toString(targetType));
             }
             if (longValue < Byte.MIN_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too small " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too small %s", toString(sourceType), value, toString(targetType));
             }
             return targetType.cast(Byte.valueOf(value.byteValue()));
         }
@@ -315,12 +313,10 @@ public abstract class NumberConverter<N extends Number> extends AbstractConverte
         if (targetType.equals(Short.class)) {
             final long longValue = value.longValue();
             if (longValue > Short.MAX_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too large for " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too large for %s", toString(sourceType), value, toString(targetType));
             }
             if (longValue < Short.MIN_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too small " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too small %s", toString(sourceType), value, toString(targetType));
             }
             return targetType.cast(Short.valueOf(value.shortValue()));
         }
@@ -329,12 +325,10 @@ public abstract class NumberConverter<N extends Number> extends AbstractConverte
         if (targetType.equals(Integer.class)) {
             final long longValue = value.longValue();
             if (longValue > Integer.MAX_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too large for " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too large for %s", toString(sourceType), value, toString(targetType));
             }
             if (longValue < Integer.MIN_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too small " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too small %s", toString(sourceType), value, toString(targetType));
             }
             return targetType.cast(Integer.valueOf(value.intValue()));
         }
@@ -347,8 +341,7 @@ public abstract class NumberConverter<N extends Number> extends AbstractConverte
         // Float
         if (targetType.equals(Float.class)) {
             if (value.doubleValue() > Float.MAX_VALUE) {
-                throw new ConversionException(toString(sourceType) + " value '" + value
-                        + "' is too large for " + toString(targetType));
+                throw ConversionException.format("%s value '%s' is too large for %s", toString(sourceType), value, toString(targetType));
             }
             return targetType.cast(Float.valueOf(value.floatValue()));
         }
@@ -364,7 +357,7 @@ public abstract class NumberConverter<N extends Number> extends AbstractConverte
                 return targetType.cast(new BigDecimal(value.toString()));
             }
             if (value instanceof BigInteger) {
-                return targetType.cast(new BigDecimal((BigInteger)value));
+                return targetType.cast(new BigDecimal((BigInteger) value));
             }
             if (value instanceof BigDecimal) {
                 return targetType.cast(new BigDecimal(value.toString()));
@@ -375,13 +368,12 @@ public abstract class NumberConverter<N extends Number> extends AbstractConverte
         // BigInteger
         if (targetType.equals(BigInteger.class)) {
             if (value instanceof BigDecimal) {
-                return targetType.cast(((BigDecimal)value).toBigInteger());
+                return targetType.cast(((BigDecimal) value).toBigInteger());
             }
             return targetType.cast(BigInteger.valueOf(value.longValue()));
         }
 
-        final String msg = toString(getClass()) + " cannot handle conversion to '"
-                   + toString(targetType) + "'";
+        final String msg = toString(getClass()) + " cannot handle conversion to '" + toString(targetType) + "'";
         if (log().isWarnEnabled()) {
             log().warn("    " + msg);
         }
diff --git a/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java b/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
index 8ce314b0..b9548441 100644
--- a/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/locale/converters/DateLocaleConverter.java
@@ -242,33 +242,30 @@ public class DateLocaleConverter extends BaseLocaleConverter<Date> {
 
         // Handle Calendar
         if (value instanceof java.util.Calendar) {
-            return ((java.util.Calendar)value).getTime();
+            return ((java.util.Calendar) value).getTime();
         }
 
-         if (localizedPattern) {
-             pattern = convertLocalizedPattern(pattern, locale);
-         }
+        if (localizedPattern) {
+            pattern = convertLocalizedPattern(pattern, locale);
+        }
 
-         // Create Formatter - use default if pattern is null
-         final DateFormat formatter = pattern == null ? DateFormat.getDateInstance(DateFormat.SHORT, locale)
-                                                : new SimpleDateFormat(pattern, locale);
-         formatter.setLenient(isLenient);
+        // Create Formatter - use default if pattern is null
+        final DateFormat formatter = pattern == null ? DateFormat.getDateInstance(DateFormat.SHORT, locale) : new SimpleDateFormat(pattern, locale);
+        formatter.setLenient(isLenient);
 
-         // Parse the Date
+        // Parse the Date
         final ParsePosition pos = new ParsePosition(0);
         final String strValue = value.toString();
         final Object parsedValue = formatter.parseObject(strValue, pos);
         if (pos.getErrorIndex() > -1) {
-            throw new ConversionException("Error parsing date '" + value +
-                    "' at position="+ pos.getErrorIndex());
+            throw ConversionException.format("Error parsing date '%s' at position = %s", value, pos.getErrorIndex());
         }
         if (pos.getIndex() < strValue.length()) {
-            throw new ConversionException("Date '" + value +
-                    "' contains unparsed characters from position=" + pos.getIndex());
+            throw ConversionException.format("Date '%s' contains unparsed characters from position = %s", value, pos.getIndex());
         }
 
         return parsedValue;
-     }
+    }
 
      /**
       * Convert a pattern from a localized format to the default format.
diff --git a/src/main/java/org/apache/commons/beanutils2/locale/converters/FloatLocaleConverter.java b/src/main/java/org/apache/commons/beanutils2/locale/converters/FloatLocaleConverter.java
index 9b7961e1..f9f83e2e 100644
--- a/src/main/java/org/apache/commons/beanutils2/locale/converters/FloatLocaleConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/locale/converters/FloatLocaleConverter.java
@@ -197,12 +197,12 @@ public class FloatLocaleConverter extends DecimalLocaleConverter<Float> {
     */
    @Override
    protected Object parse(final Object value, final String pattern) throws ParseException {
-      final Number parsed = (Number) super.parse(value, pattern);
-      final double doubleValue = parsed.doubleValue();
-      final double posDouble = doubleValue >= 0 ? doubleValue : doubleValue * -1;
-      if (posDouble != 0 && (posDouble < Float.MIN_VALUE || posDouble > Float.MAX_VALUE)) {
-          throw new ConversionException("Supplied number is not of type Float: "+parsed);
-      }
-      return Float.valueOf(parsed.floatValue()); // unlike superclass it returns Float type
+       final Number parsed = (Number) super.parse(value, pattern);
+       final double doubleValue = parsed.doubleValue();
+       final double posDouble = doubleValue >= 0 ? doubleValue : doubleValue * -1;
+       if (posDouble != 0 && (posDouble < Float.MIN_VALUE || posDouble > Float.MAX_VALUE)) {
+           throw new ConversionException("Supplied number is not of type Float: " + parsed);
+       }
+       return Float.valueOf(parsed.floatValue()); // unlike superclass it returns Float type
    }
 }
diff --git a/src/test/java/org/apache/commons/beanutils2/converters/DateLocaleConverterTestCase.java b/src/test/java/org/apache/commons/beanutils2/converters/DateLocaleConverterTestCase.java
index 90044a05..375ff741 100644
--- a/src/test/java/org/apache/commons/beanutils2/converters/DateLocaleConverterTestCase.java
+++ b/src/test/java/org/apache/commons/beanutils2/converters/DateLocaleConverterTestCase.java
@@ -408,13 +408,13 @@ public class DateLocaleConverterTestCase extends BaseLocaleConverterTestCase<Dat
         try {
             converter.convert("01/10/2004", "dd-MM-yyyy");
         } catch (final ConversionException e) {
-            assertEquals("Parse Error", "Error parsing date '01/10/2004' at position=2", e.getMessage());
+            assertEquals("Parse Error", "Error parsing date '01/10/2004' at position = 2", e.getMessage());
         }
 
         try {
             converter.convert("01-10-2004X", "dd-MM-yyyy");
         } catch (final ConversionException e) {
-            assertEquals("Parse Length", "Date '01-10-2004X' contains unparsed characters from position=10", e.getMessage());
+            assertEquals("Parse Length", "Date '01-10-2004X' contains unparsed characters from position = 10", e.getMessage());
         }
 
     }


[commons-beanutils] 01/02: Inline single use local variable

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-beanutils.git

commit eed01575eacd52f8eb7bb8688f494e337ce52cf5
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Feb 9 09:02:37 2023 -0500

    Inline single use local variable
    
    Format tweaks
---
 .../beanutils2/converters/DateTimeConverter.java        | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
index 70611bf1..af6ebc23 100644
--- a/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
+++ b/src/main/java/org/apache/commons/beanutils2/converters/DateTimeConverter.java
@@ -317,43 +317,43 @@ public abstract class DateTimeConverter<D> extends AbstractConverter<D> {
 
         // Handle Date (includes java.sql.Date & java.sql.Time)
         if (value instanceof Date) {
-            final Date date = (Date)value;
+            final Date date = (Date) value;
             return toDate(targetType, date.getTime());
         }
 
         // Handle Calendar
         if (value instanceof Calendar) {
-            final Calendar calendar = (Calendar)value;
+            final Calendar calendar = (Calendar) value;
             return toDate(targetType, calendar.getTime().getTime());
         }
 
         // Handle Long
         if (value instanceof Long) {
-            final Long longObj = (Long)value;
+            final Long longObj = (Long) value;
             return toDate(targetType, longObj.longValue());
         }
 
         // Handle LocalDate
         if (value instanceof LocalDate) {
-            final LocalDate date = (LocalDate)value;
+            final LocalDate date = (LocalDate) value;
             return toDate(targetType, date.atStartOfDay(getZoneId()).toInstant().toEpochMilli());
         }
 
         // Handle LocalDateTime
         if (value instanceof LocalDateTime) {
-            final LocalDateTime date = (LocalDateTime)value;
+            final LocalDateTime date = (LocalDateTime) value;
             return toDate(targetType, date.atZone(getZoneId()).toInstant().toEpochMilli());
         }
 
         // Handle ZonedDateTime
         if (value instanceof ZonedDateTime) {
-            final ZonedDateTime date = (ZonedDateTime)value;
+            final ZonedDateTime date = (ZonedDateTime) value;
             return toDate(targetType, date.toInstant().toEpochMilli());
         }
 
         // Handle OffsetDateTime
         if (value instanceof OffsetDateTime) {
-            final OffsetDateTime date = (OffsetDateTime)value;
+            final OffsetDateTime date = (OffsetDateTime) value;
             return toDate(targetType, date.toInstant().toEpochMilli());
         }
 
@@ -583,8 +583,7 @@ public abstract class DateTimeConverter<D> extends AbstractConverter<D> {
         for (final String pattern : patterns) {
             try {
                 final DateFormat format = getFormat(pattern);
-                final Calendar calendar = parse(sourceType, targetType, value, format);
-                return calendar;
+                return parse(sourceType, targetType, value, format);
             } catch (final Exception ex) {
                 if (firstEx == null) {
                     firstEx = ex;