From e4f604a2cd32a700d20eb1ac6e4ef4f8038d0a63 Mon Sep 17 00:00:00 2001 From: Exlll Date: Thu, 25 Jan 2018 21:20:59 +0100 Subject: [PATCH] fix: long files not read correctly --- .../java/de/exlll/configlib/ConfigReader.java | 6 +++++- .../java/de/exlll/configlib/Configuration.java | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ConfigLib-Core/src/main/java/de/exlll/configlib/ConfigReader.java b/ConfigLib-Core/src/main/java/de/exlll/configlib/ConfigReader.java index 6992f03..5bfbd81 100644 --- a/ConfigLib-Core/src/main/java/de/exlll/configlib/ConfigReader.java +++ b/ConfigLib-Core/src/main/java/de/exlll/configlib/ConfigReader.java @@ -10,7 +10,11 @@ enum ConfigReader { static String read(Path path) throws IOException { try (Scanner scanner = new Scanner(path)) { scanner.useDelimiter("\\z"); - return scanner.next(); + StringBuilder builder = new StringBuilder(); + while (scanner.hasNext()) { + builder.append(scanner.next()); + } + return builder.toString(); } } } diff --git a/ConfigLib-Core/src/main/java/de/exlll/configlib/Configuration.java b/ConfigLib-Core/src/main/java/de/exlll/configlib/Configuration.java index 543c946..96b59eb 100644 --- a/ConfigLib-Core/src/main/java/de/exlll/configlib/Configuration.java +++ b/ConfigLib-Core/src/main/java/de/exlll/configlib/Configuration.java @@ -16,8 +16,8 @@ import java.util.Map; public abstract class Configuration { private final Path configPath; - private final YamlSerializer serializer; private final CommentAdder adder; + private YamlSerializer serializer; /** * Constructs a new {@code Configuration} instance. @@ -30,13 +30,18 @@ public abstract class Configuration { */ protected Configuration(Path configPath) { this.configPath = configPath; - this.serializer = new YamlSerializer( - createConstructor(), createRepresenter(), - createDumperOptions(), createResolver() - ); this.adder = new CommentAdder(new Comments(getClass())); } + private void initSerializer() { + if (serializer == null) { + this.serializer = new YamlSerializer( + createConstructor(), createRepresenter(), + createDumperOptions(), createResolver() + ); + } + } + /** * Loads {@code this} configuration from a configuration file. The file is * located at the path pointed to by the {@code Path} object used to create @@ -62,6 +67,7 @@ public abstract class Configuration { } private Map readAndDeserialize() throws IOException { + initSerializer(); String yaml = ConfigReader.read(configPath); return serializer.deserialize(yaml); } @@ -100,6 +106,7 @@ public abstract class Configuration { * @throws ParserException if invalid YAML */ public final void save() throws IOException { + initSerializer(); createParentDirectories(); Map map = FieldMapper.instanceToMap(this); version(map);