From f2c58fa201a5c9dc38c842c1e533ec1407d02026 Mon Sep 17 00:00:00 2001 From: Giulio Longfils Date: Tue, 8 Jul 2025 20:14:41 +0200 Subject: [PATCH] feat: allowing for equal sign in interpolated default value --- .../jackson/deserializers/InterpolatedDeserializer.java | 2 +- .../jackson/deserializers/InterpolatedObjectDeserializer.java | 2 +- .../deserializers/InterpolatedObjectDeserializerTest.java | 2 +- .../deserializers/InterpolatedStringDeserializerTest.java | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedDeserializer.java b/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedDeserializer.java index 4fa6d4e3..0f77c62d 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedDeserializer.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedDeserializer.java @@ -10,7 +10,7 @@ @Slf4j public abstract class InterpolatedDeserializer extends JsonDeserializer { - private static final Pattern PATTERN = Pattern.compile("(?\\$\\{(?[\\w.]+)(:-(?[\\w~\\s-.:/\\\\]*))?})"); + private static final Pattern PATTERN = Pattern.compile("(?\\$\\{(?[\\w.]+)(:-(?[\\w~\\s-.:/\\\\=]*))?})"); private final Vars vars = Vars.getInstance(); diff --git a/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializer.java b/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializer.java index f414e2a6..b094be22 100644 --- a/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializer.java +++ b/spectrum/src/main/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializer.java @@ -25,7 +25,7 @@ public class InterpolatedObjectDeserializer extends JsonDeserializer { private static final InterpolatedObjectDeserializer INSTANCE = new InterpolatedObjectDeserializer(); - private static final Pattern INT_PATTERN = Pattern.compile("(?\\$<(?[\\w.]+)(:-(?[\\w~.:/\\\\]*))?>)"); + private static final Pattern INT_PATTERN = Pattern.compile("(?\\$<(?[\\w.]+)(:-(?[\\w~\\s-.:/\\\\=]*))?>)"); private static final Pattern NUMBER = Pattern.compile("-?\\d+(.\\d+|,\\d+)?"); private final Vars vars = Vars.getInstance(); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializerTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializerTest.java index 372034a3..41dcc4a8 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializerTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedObjectDeserializerTest.java @@ -261,7 +261,7 @@ static Stream valuesProvider() { arguments("$", 0), arguments("$", 0), arguments("$", 0), - arguments("$", 0), + arguments("$", 0), arguments("$", Integer.parseInt(VAR_IN_ENV)), arguments("$", Integer.parseInt(VAR_IN_ENV)) ); diff --git a/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedStringDeserializerTest.java b/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedStringDeserializerTest.java index 582f91c6..79c16b18 100644 --- a/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedStringDeserializerTest.java +++ b/spectrum/src/test/java/io/github/giulong/spectrum/internals/jackson/deserializers/InterpolatedStringDeserializerTest.java @@ -73,6 +73,7 @@ static Stream valuesProvider() { arguments("${notSet:-${varInEnv:-local}}-nested", VAR_IN_ENV + "-nested"), arguments("${notSet:-${varInEnv:-local}}-nested-${varInEnv}", VAR_IN_ENV + "-nested-" + VAR_IN_ENV), arguments("${notSet:-local.dots}", "local.dots"), + arguments("${notSet:---key=value}", "--key=value"), arguments("${notSet:-}", ""), arguments("${varInEnv:-local}", VAR_IN_ENV), arguments("${varInEnv}", VAR_IN_ENV),