From 1bacfdcc1da605542caa4722af71b912ef0c04f3 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Wed, 9 Oct 2024 21:01:24 +1300 Subject: [PATCH 1/2] Add missing JSpecify @Nullable --- .../src/main/java/io/avaje/config/InitialLoadContext.java | 2 ++ avaje-config/src/main/java/io/avaje/config/InitialLoader.java | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java b/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java index cf9d6515..5c0fbd90 100644 --- a/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java +++ b/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java @@ -1,6 +1,7 @@ package io.avaje.config; import io.avaje.config.CoreEntry.CoreMap; +import org.jspecify.annotations.Nullable; import java.io.*; import java.lang.System.Logger.Level; @@ -81,6 +82,7 @@ static String podService(String podName) { /** * Return the input stream (maybe null) for the given source. */ + @Nullable InputStream resource(String resourcePath, InitialLoader.Source source) { InputStream is = null; if (source == InitialLoader.Source.RESOURCE) { diff --git a/avaje-config/src/main/java/io/avaje/config/InitialLoader.java b/avaje-config/src/main/java/io/avaje/config/InitialLoader.java index c47e6269..dbfa651d 100644 --- a/avaje-config/src/main/java/io/avaje/config/InitialLoader.java +++ b/avaje-config/src/main/java/io/avaje/config/InitialLoader.java @@ -197,8 +197,7 @@ private void loadViaIndirection() { } } - @Nullable - private String[] profiles() { + private String@Nullable[] profiles() { final String paths = loadContext.profiles(); return paths == null ? null : splitPaths(paths); } @@ -321,6 +320,7 @@ boolean loadProperties(String resourcePath, Source source) { return false; } + @Nullable private InputStream resource(String resourcePath, Source source) { return loadContext.resource(resourcePath, source); } From 0df7201de25eb9e53ca100ec61bb49062f10d6b6 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Wed, 9 Oct 2024 21:30:02 +1300 Subject: [PATCH 2/2] Improve InitialLoadContext loadedResources key - for unique loaded resources --- .../src/main/java/io/avaje/config/CoreEntry.java | 2 +- .../main/java/io/avaje/config/InitialLoadContext.java | 4 ++-- .../src/main/java/io/avaje/config/InitialLoader.java | 9 ++++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/avaje-config/src/main/java/io/avaje/config/CoreEntry.java b/avaje-config/src/main/java/io/avaje/config/CoreEntry.java index 81b7e82a..45dfc7bf 100644 --- a/avaje-config/src/main/java/io/avaje/config/CoreEntry.java +++ b/avaje-config/src/main/java/io/avaje/config/CoreEntry.java @@ -188,7 +188,7 @@ void put(String key, CoreEntry value) { entryMap.put(key, value); } - void put(String key, String value, String source) { + void put(String key, @Nullable String value, String source) { entryMap.put(key, CoreEntry.of(value, source)); } diff --git a/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java b/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java index 5c0fbd90..6e26cda1 100644 --- a/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java +++ b/avaje-config/src/main/java/io/avaje/config/InitialLoadContext.java @@ -88,14 +88,14 @@ InputStream resource(String resourcePath, InitialLoader.Source source) { if (source == InitialLoader.Source.RESOURCE) { is = resourceStream(resourcePath); if (is != null) { - loadedResources.add("resource:" + resourcePath); + loadedResources.add(source.key(resourcePath)); } } else { File file = new File(resourcePath); if (file.exists()) { try { is = new FileInputStream(file); - loadedResources.add("file:" + resourcePath); + loadedResources.add(source.key(resourcePath)); loadedFiles.add(file); } catch (FileNotFoundException e) { throw new UncheckedIOException(e); diff --git a/avaje-config/src/main/java/io/avaje/config/InitialLoader.java b/avaje-config/src/main/java/io/avaje/config/InitialLoader.java index dbfa651d..daa8244a 100644 --- a/avaje-config/src/main/java/io/avaje/config/InitialLoader.java +++ b/avaje-config/src/main/java/io/avaje/config/InitialLoader.java @@ -35,7 +35,10 @@ static Configuration.ExpressionEval evalFor(Properties properties) { enum Source { RESOURCE, - FILE + FILE; + String key(String path) { + return name().toLowerCase() + ':' + path; + } } private final ConfigurationLog log; @@ -298,7 +301,7 @@ private boolean loadCustom(String resourcePath, Source source) { boolean loadCustomExtension(String resourcePath, ConfigParser parser, Source source) { try (InputStream is = resource(resourcePath, source)) { if (is != null) { - var sourceName = (source == RESOURCE ? "resource:" : "file:") + resourcePath; + var sourceName = source.key(resourcePath); parser.load(is).forEach((k, v) -> loadContext.put(k, v, sourceName)); return true; } @@ -311,7 +314,7 @@ boolean loadCustomExtension(String resourcePath, ConfigParser parser, Source sou boolean loadProperties(String resourcePath, Source source) { try (InputStream is = resource(resourcePath, source)) { if (is != null) { - loadProperties(is, (source == RESOURCE ? "resource:" : "file") + resourcePath); + loadProperties(is, source.key(resourcePath)); return true; } } catch (IOException e) {