Skip to content
Snippets Groups Projects
Commit 5cd3b5fb authored by Lukas Malte Monnerjahn's avatar Lukas Malte Monnerjahn
Browse files

no implicit type cast when loading yaml

parent 23d18ec8
No related branches found
No related tags found
No related merge requests found
Pipeline #2288 failed
...@@ -23,7 +23,13 @@ import jakarta.validation.constraints.NotBlank; ...@@ -23,7 +23,13 @@ import jakarta.validation.constraints.NotBlank;
import org.apache.commons.codec.Resources; import org.apache.commons.codec.Resources;
import org.apache.commons.io.IOUtils; 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.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.XtaFile;
import de.ozgcloud.xta.client.model.XtaIdentifier; import de.ozgcloud.xta.client.model.XtaIdentifier;
...@@ -33,7 +39,8 @@ import lombok.Builder; ...@@ -33,7 +39,8 @@ import lombok.Builder;
public class XtaMessageExampleLoader { 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") @SuppressWarnings("unchecked")
public static XtaMessage load(MessageExampleConfig config) { public static XtaMessage load(MessageExampleConfig config) {
...@@ -137,7 +144,7 @@ public class XtaMessageExampleLoader { ...@@ -137,7 +144,7 @@ public class XtaMessageExampleLoader {
return Optional.ofNullable(map.get(key)) return Optional.ofNullable(map.get(key))
.filter(String.class::isInstance) .filter(String.class::isInstance)
.map(String.class::cast) .map(String.class::cast)
.orElseThrow(() -> new IllegalArgumentException("Missing key: %s".formatted(key))); .orElse(null);
} }
private static XtaMessageMetaData mapXtaMessageMetadata(Map<String, Object> metaData, MessageExampleConfig config) { private static XtaMessageMetaData mapXtaMessageMetadata(Map<String, Object> metaData, MessageExampleConfig config) {
...@@ -221,4 +228,12 @@ public class XtaMessageExampleLoader { ...@@ -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);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment