Skip to content

Commit c3149c3

Browse files
authored
Merge pull request quarkusio#34562 from manofthepeace/durationConverterFixup
Fix duration converter with multiple units
2 parents 30d7be6 + 5173d04 commit c3149c3

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

core/runtime/src/main/java/io/quarkus/runtime/configuration/DurationConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class DurationConverter implements Converter<Duration>, Serializable {
2020
private static final String PERIOD = "P";
2121
private static final String PERIOD_OF_TIME = "PT";
2222
public static final Pattern DIGITS = Pattern.compile("^[-+]?\\d+$");
23-
private static final Pattern DIGITS_AND_UNIT = Pattern.compile("^[-+]?\\d+(?:\\.\\d+)?(?i)[hms]$");
23+
private static final Pattern DIGITS_AND_UNIT = Pattern.compile("^(?:[-+]?\\d+(?:\\.\\d+)?(?i)[hms])+$");
2424
private static final Pattern DAYS = Pattern.compile("^[-+]?\\d+(?i)d$");
2525
private static final Pattern MILLIS = Pattern.compile("^[-+]?\\d+(?i)ms$");
2626

core/runtime/src/test/java/io/quarkus/runtime/configuration/DurationConverterTestCase.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,18 @@ public void testValueIsInSec() {
6868
Duration actualDuration = durationConverter.convert("2s");
6969
assertEquals(expectedDuration, actualDuration);
7070
}
71+
72+
@Test
73+
public void testValuesWithMultipleUnits() {
74+
Duration expectedDuration = Duration.ofSeconds(150);
75+
Duration actualDuration = durationConverter.convert("2m30s");
76+
assertEquals(expectedDuration, actualDuration);
77+
}
78+
79+
@Test
80+
public void testValuesWithMultipleUnitsSigned() {
81+
Duration expectedDuration = Duration.ofSeconds(90);
82+
Duration actualDuration = durationConverter.convert("+2m-30s");
83+
assertEquals(expectedDuration, actualDuration);
84+
}
7185
}

0 commit comments

Comments
 (0)