Skip to content

Commit 65e2866

Browse files
chenlingmintriceo
andauthored
feat(spring): improve type conversion in DiminishedReturnsProperty (#2250)
Co-authored-by: Lukáš Petrovický <lukas@petrovicky.net>
1 parent cd668e3 commit 65e2866

1 file changed

Lines changed: 22 additions & 3 deletions

File tree

spring-integration/spring-boot-autoconfigure/src/main/java/ai/timefold/solver/spring/boot/autoconfigure/config/DiminishedReturnsProperty.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package ai.timefold.solver.spring.boot.autoconfigure.config;
22

3+
import java.time.Duration;
34
import java.util.Collections;
45
import java.util.Set;
56
import java.util.TreeSet;
@@ -12,11 +13,29 @@
1213

1314
public enum DiminishedReturnsProperty {
1415
ENABLED("enabled", DiminishedReturnsProperties::setEnabled,
15-
value -> Boolean.parseBoolean((String) value)),
16+
value -> {
17+
if (value instanceof Boolean b)
18+
return b;
19+
if (value instanceof String s)
20+
return Boolean.parseBoolean(s);
21+
throw new IllegalArgumentException("Cannot convert (%s) to Boolean".formatted(value));
22+
}),
1623
SLIDING_WINDOW_DURATION("sliding-window-duration", DiminishedReturnsProperties::setSlidingWindowDuration,
17-
value -> DurationStyle.detectAndParse((String) value)),
24+
value -> {
25+
if (value instanceof Duration d)
26+
return d;
27+
if (value instanceof String s)
28+
return DurationStyle.detectAndParse(s);
29+
throw new IllegalArgumentException("Cannot convert (%s) to Duration".formatted(value));
30+
}),
1831
MINIMUM_IMPROVEMENT_RATIO("minimum-improvement-ratio", DiminishedReturnsProperties::setMinimumImprovementRatio,
19-
value -> Double.valueOf((String) value)),;
32+
value -> {
33+
if (value instanceof Number n)
34+
return n.doubleValue();
35+
if (value instanceof String s)
36+
return Double.valueOf(s);
37+
throw new IllegalArgumentException("Cannot convert (%s) to Double".formatted(value));
38+
}),;
2039

2140
private final String propertyName;
2241
private final BiConsumer<DiminishedReturnsProperties, Object> propertyUpdater;

0 commit comments

Comments
 (0)