From fa4a12b95f6dae3cfe74bc2892ba160e715ad85b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Wed, 29 May 2024 10:13:27 +0100 Subject: [PATCH 1/2] lazy load jsonParser and yamlParser FlagFileParser --- .../sdk/server/integrations/FileDataSourceParsing.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java b/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java index 9571c448..2750acc2 100644 --- a/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java +++ b/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java @@ -72,14 +72,18 @@ static final class FlagFileRep { } static abstract class FlagFileParser { - private static final FlagFileParser jsonParser = new JsonFlagFileParser(); - private static final FlagFileParser yamlParser = new YamlFlagFileParser(); + static class JsonParserHolder { + static final FlagFileParser INSTANCE = new JsonFlagFileParser(); + } + static class YamlParserHolder { + static final FlagFileParser INSTANCE = new YamlFlagFileParser(); + } public abstract FlagFileRep parse(InputStream input) throws FileDataException, IOException; public static FlagFileParser selectForContent(byte[] data) { Reader r = new InputStreamReader(new ByteArrayInputStream(data)); - return detectJson(r) ? jsonParser : yamlParser; + return detectJson(r) ? JsonParserHolder.INSTANCE : YamlParserHolder.INSTANCE; } private static boolean detectJson(Reader r) { From 8b1ca2af42e0c857684f2ac4bcb2dea9f9d68dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ferreira?= Date: Fri, 20 Dec 2024 13:39:06 +0000 Subject: [PATCH 2/2] use getter --- .../server/integrations/FileDataSourceParsing.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java b/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java index 2750acc2..81ff8cdc 100644 --- a/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java +++ b/lib/sdk/server/src/main/java/com/launchdarkly/sdk/server/integrations/FileDataSourceParsing.java @@ -73,17 +73,23 @@ static final class FlagFileRep { static abstract class FlagFileParser { static class JsonParserHolder { - static final FlagFileParser INSTANCE = new JsonFlagFileParser(); + private static final JsonFlagFileParser INSTANCE = new JsonFlagFileParser(); + static JsonFlagFileParser getInstance() { + return INSTANCE; + } } static class YamlParserHolder { - static final FlagFileParser INSTANCE = new YamlFlagFileParser(); + private static final YamlFlagFileParser INSTANCE = new YamlFlagFileParser(); + static YamlFlagFileParser getInstance() { + return INSTANCE; + } } public abstract FlagFileRep parse(InputStream input) throws FileDataException, IOException; public static FlagFileParser selectForContent(byte[] data) { Reader r = new InputStreamReader(new ByteArrayInputStream(data)); - return detectJson(r) ? JsonParserHolder.INSTANCE : YamlParserHolder.INSTANCE; + return detectJson(r) ? JsonParserHolder.getInstance() : YamlParserHolder.getInstance(); } private static boolean detectJson(Reader r) {