From 3ae3cbef1b5dac7c5a7558112aa89cc3b15653e5 Mon Sep 17 00:00:00 2001 From: Thomas Sapelza Date: Mon, 20 Apr 2026 16:34:07 +0200 Subject: [PATCH 1/3] extend ScaledBigDecimal class with Number --- .../reflection/util/RecordReflectionUtil.java | 3 ++- .../toolbox/type/ScaledBigDecimal.java | 16 ++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/it/aboutbits/springboot/toolbox/reflection/util/RecordReflectionUtil.java b/src/main/java/it/aboutbits/springboot/toolbox/reflection/util/RecordReflectionUtil.java index e30a65a..9b598b7 100644 --- a/src/main/java/it/aboutbits/springboot/toolbox/reflection/util/RecordReflectionUtil.java +++ b/src/main/java/it/aboutbits/springboot/toolbox/reflection/util/RecordReflectionUtil.java @@ -1,5 +1,6 @@ package it.aboutbits.springboot.toolbox.reflection.util; +import it.aboutbits.springboot.toolbox.type.ScaledBigDecimal; import org.jspecify.annotations.NullMarked; import java.lang.reflect.Constructor; @@ -31,7 +32,7 @@ public static Constructor getConstructorForType( Class recordClass, Class type ) { - if (!recordClass.isRecord()) { + if (!recordClass.isRecord() && !ScaledBigDecimal.class.isAssignableFrom(recordClass)) { throw new IllegalArgumentException("Class must be a record: " + recordClass.getName()); } diff --git a/src/main/java/it/aboutbits/springboot/toolbox/type/ScaledBigDecimal.java b/src/main/java/it/aboutbits/springboot/toolbox/type/ScaledBigDecimal.java index ef44bb1..8319586 100644 --- a/src/main/java/it/aboutbits/springboot/toolbox/type/ScaledBigDecimal.java +++ b/src/main/java/it/aboutbits/springboot/toolbox/type/ScaledBigDecimal.java @@ -1,6 +1,8 @@ package it.aboutbits.springboot.toolbox.type; import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Getter; +import lombok.experimental.Accessors; import org.jspecify.annotations.NullMarked; import java.math.BigDecimal; @@ -13,11 +15,11 @@ * This class provides various constructors for creating instances with different numerical types. * It also provides a set of arithmetic operations that return new instances with the appropriate scale and rounding. */ -@NullMarked +@Getter +@Accessors(fluent = true) @SuppressWarnings("unused") -public record ScaledBigDecimal( - BigDecimal value -) implements CustomType, Comparable { +@NullMarked +public class ScaledBigDecimal extends Number implements CustomType, Comparable { private static final MathContext MATH_CONTEXT = new MathContext(15, RoundingMode.HALF_UP); public static final ScaledBigDecimal ZERO = new ScaledBigDecimal(0); @@ -25,6 +27,8 @@ public record ScaledBigDecimal( public static final ScaledBigDecimal TWO = new ScaledBigDecimal(2); public static final ScaledBigDecimal TEN = new ScaledBigDecimal(10); + private final BigDecimal value; + @SuppressWarnings("unused") ScaledBigDecimal(ScaledBigDecimal other) { this(other.value); @@ -217,8 +221,8 @@ public boolean equals(Object o) { return true; } - if (o instanceof ScaledBigDecimal(BigDecimal other)) { - return this.value().compareTo(other) == 0; + if (o instanceof ScaledBigDecimal other) { + return this.value().compareTo(other.value()) == 0; } return false; From d47e10beb0e5a391528ac6cf1e09ad489e0ec2bb Mon Sep 17 00:00:00 2001 From: Thomas Sapelza Date: Mon, 20 Apr 2026 16:34:26 +0200 Subject: [PATCH 2/3] update dependencies --- .idea/checkstyle-idea.xml | 2 +- pom.xml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml index cd93c1e..8437512 100644 --- a/.idea/checkstyle-idea.xml +++ b/.idea/checkstyle-idea.xml @@ -1,7 +1,7 @@ - 10.18.1 + 13.4.0 JavaOnly