From b9322ebf244e9d1af67833865cc950e070881bf2 Mon Sep 17 00:00:00 2001 From: Niclas Thobaben Date: Fri, 4 Dec 2020 23:16:13 +0100 Subject: [PATCH] FIX YAML Loader throw ex on missing key --- .../loader/YamlResourceManagerLoader.java | 16 ++++++++++------ src/test/resources/resources-example.yml | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/nclazz/resources/loader/YamlResourceManagerLoader.java b/src/main/java/de/nclazz/resources/loader/YamlResourceManagerLoader.java index 43f4953..f5e5405 100644 --- a/src/main/java/de/nclazz/resources/loader/YamlResourceManagerLoader.java +++ b/src/main/java/de/nclazz/resources/loader/YamlResourceManagerLoader.java @@ -14,20 +14,22 @@ import static java.util.stream.Collectors.toSet; public class YamlResourceManagerLoader { + private static final Yaml YAML = new Yaml(new Constructor(YamlResourceManager.class)); + public ResourceManager load(InputStream stream) { - Yaml yaml = new Yaml(new Constructor(YamlResourceManager.class)); - - YamlResourceManager yamlResourceManager = yaml.load(stream); - + YamlResourceManager yamlResourceManager = YAML.load(stream); return mapYamlResourceManager(yamlResourceManager); } private ResourceManager mapYamlResourceManager(YamlResourceManager yaml) { - ResourceManager manager = new ResourceManager(); for (YamlResource yamlResource : yaml.getResources()) { - manager.addMapping(yamlResource.getKey(), mapYamlResourceMapping(yamlResource)); + String key = yamlResource.getKey(); + if (key == null) { + throw new IllegalArgumentException("Missing Resource Key!"); + } + manager.addMapping(key, mapYamlResourceMapping(yamlResource)); } return manager; @@ -35,11 +37,13 @@ public class YamlResourceManagerLoader { private ResourceMapping mapYamlResourceMapping(YamlResource resource) { Set options = resource.getOptions() != null ? resource.getOptions() : Collections.emptySet(); + return ResourceMapping.builder() .defaultResource(Resource.load(resource.getDefaultLocation())) .label(resource.getLabel()) .description(resource.getDescription()) .options(options.stream() + .map(String::toUpperCase) .map(ResourceMapping.Option::valueOf) .collect(toSet())) .build(); diff --git a/src/test/resources/resources-example.yml b/src/test/resources/resources-example.yml index 2025b39..07cbd20 100644 --- a/src/test/resources/resources-example.yml +++ b/src/test/resources/resources-example.yml @@ -3,6 +3,7 @@ resources: label: Airplane Image description: An image of an airplane options: + - required defaultLocation: classpath:/data/airplane.png types: - image/png