diff --git a/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java b/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java index 4fbbb7211f8c300eef690f8493d182086a6bd3c3..245f4d055f3a17b707eefdbdc3d1150089c31009 100644 --- a/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java +++ b/src/test/java/de/ozgcloud/xta/client/extension/XtaMessageExampleLoader.java @@ -23,7 +23,13 @@ import jakarta.validation.constraints.NotBlank; import org.apache.commons.codec.Resources; import org.apache.commons.io.IOUtils; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.constructor.Constructor; +import org.yaml.snakeyaml.nodes.Tag; +import org.yaml.snakeyaml.representer.Representer; +import org.yaml.snakeyaml.resolver.Resolver; import de.ozgcloud.xta.client.model.XtaFile; import de.ozgcloud.xta.client.model.XtaIdentifier; @@ -33,7 +39,8 @@ import lombok.Builder; public class XtaMessageExampleLoader { - static Yaml yaml = new Yaml(); + static Yaml yaml = new Yaml(new Constructor(new LoaderOptions()), new Representer(new DumperOptions()), + new DumperOptions(), new StringYamlResolver()); @SuppressWarnings("unchecked") public static XtaMessage load(MessageExampleConfig config) { @@ -137,7 +144,7 @@ public class XtaMessageExampleLoader { return Optional.ofNullable(map.get(key)) .filter(String.class::isInstance) .map(String.class::cast) - .orElseThrow(() -> new IllegalArgumentException("Missing key: %s".formatted(key))); + .orElse(null); } private static XtaMessageMetaData mapXtaMessageMetadata(Map<String, Object> metaData, MessageExampleConfig config) { @@ -221,4 +228,12 @@ public class XtaMessageExampleLoader { )); } + /** Custom YAML resolver to treat every scalar as string, instead of using implicit type casting */ + public static class StringYamlResolver extends Resolver { + @Override + protected void addImplicitResolvers() { + addImplicitResolver(Tag.NULL, EMPTY, null); + } + } + }