Skip to content

Commit 8bfa329

Browse files
authored
Extend ScaledBigDecimal class with Number (#64)
* extend ScaledBigDecimal class with Number * update dependencies * use unnamed variable for ignored exception
1 parent 7b4ba8d commit 8bfa329

5 files changed

Lines changed: 21 additions & 16 deletions

File tree

.idea/checkstyle-idea.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717

1818
<properties>
1919
<java.version>25</java.version>
20-
<errorprone.version>2.48.0</errorprone.version>
21-
<jooq.version>3.20.11</jooq.version>
22-
<nullaway.version>0.13.1</nullaway.version>
20+
<errorprone.version>2.49.0</errorprone.version>
21+
<jooq.version>3.21.2</jooq.version>
22+
<nullaway.version>0.13.2</nullaway.version>
2323
</properties>
2424

2525
<dependencyManagement>
@@ -100,7 +100,7 @@
100100
<dependency>
101101
<groupId>org.springdoc</groupId>
102102
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
103-
<version>3.0.2</version>
103+
<version>3.0.3</version>
104104
</dependency>
105105

106106
<!-- Testing -->
@@ -162,13 +162,13 @@
162162
<dependency>
163163
<groupId>com.tngtech.archunit</groupId>
164164
<artifactId>archunit-junit5</artifactId>
165-
<version>1.4.1</version>
165+
<version>1.4.2</version>
166166
<scope>test</scope>
167167
</dependency>
168168
<dependency>
169169
<groupId>com.tngtech.archunit</groupId>
170170
<artifactId>archunit-junit5-api</artifactId>
171-
<version>1.4.1</version>
171+
<version>1.4.2</version>
172172
<scope>compile</scope>
173173
</dependency>
174174

@@ -255,7 +255,7 @@
255255
<dependency>
256256
<groupId>com.puppycrawl.tools</groupId>
257257
<artifactId>checkstyle</artifactId>
258-
<version>13.3.0</version>
258+
<version>13.4.0</version>
259259
</dependency>
260260
<dependency>
261261
<groupId>it.aboutbits</groupId>

src/main/java/it/aboutbits/springboot/toolbox/reflection/util/RecordReflectionUtil.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package it.aboutbits.springboot.toolbox.reflection.util;
22

3+
import it.aboutbits.springboot.toolbox.type.ScaledBigDecimal;
34
import org.jspecify.annotations.NullMarked;
45

56
import java.lang.reflect.Constructor;
@@ -31,7 +32,7 @@ public static <T> Constructor<T> getConstructorForType(
3132
Class<T> recordClass,
3233
Class<?> type
3334
) {
34-
if (!recordClass.isRecord()) {
35+
if (!recordClass.isRecord() && !ScaledBigDecimal.class.isAssignableFrom(recordClass)) {
3536
throw new IllegalArgumentException("Class must be a record: " + recordClass.getName());
3637
}
3738

src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/nested_structure/NestedStructuresCustomizer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void customise(OpenAPI openApi) {
2727
true
2828
));
2929
}
30-
} catch (ClassNotFoundException ignored) {
30+
} catch (ClassNotFoundException _) {
3131
// do nothing
3232
}
3333
}

src/main/java/it/aboutbits/springboot/toolbox/type/ScaledBigDecimal.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package it.aboutbits.springboot.toolbox.type;
22

33
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import lombok.Getter;
5+
import lombok.experimental.Accessors;
46
import org.jspecify.annotations.NullMarked;
57

68
import java.math.BigDecimal;
@@ -13,18 +15,20 @@
1315
* This class provides various constructors for creating instances with different numerical types.
1416
* It also provides a set of arithmetic operations that return new instances with the appropriate scale and rounding.
1517
*/
16-
@NullMarked
18+
@Getter
19+
@Accessors(fluent = true)
1720
@SuppressWarnings("unused")
18-
public record ScaledBigDecimal(
19-
BigDecimal value
20-
) implements CustomType<BigDecimal>, Comparable<ScaledBigDecimal> {
21+
@NullMarked
22+
public class ScaledBigDecimal extends Number implements CustomType<BigDecimal>, Comparable<ScaledBigDecimal> {
2123
private static final MathContext MATH_CONTEXT = new MathContext(15, RoundingMode.HALF_UP);
2224

2325
public static final ScaledBigDecimal ZERO = new ScaledBigDecimal(0);
2426
public static final ScaledBigDecimal ONE = new ScaledBigDecimal(1);
2527
public static final ScaledBigDecimal TWO = new ScaledBigDecimal(2);
2628
public static final ScaledBigDecimal TEN = new ScaledBigDecimal(10);
2729

30+
private final BigDecimal value;
31+
2832
@SuppressWarnings("unused")
2933
ScaledBigDecimal(ScaledBigDecimal other) {
3034
this(other.value);
@@ -217,8 +221,8 @@ public boolean equals(Object o) {
217221
return true;
218222
}
219223

220-
if (o instanceof ScaledBigDecimal(BigDecimal other)) {
221-
return this.value().compareTo(other) == 0;
224+
if (o instanceof ScaledBigDecimal other) {
225+
return this.value().compareTo(other.value()) == 0;
222226
}
223227

224228
return false;

0 commit comments

Comments
 (0)