aboutsummaryrefslogtreecommitdiff
path: root/mod/src/main/java/moe/ymc/acron/config/json/ConfigDeserializer.java
blob: e91b355ed2aaeeabf84d5c2db6ebdff10f1405a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package moe.ymc.acron.config.json;

import com.google.gson.Gson;
import moe.ymc.acron.config.Config;
import org.jetbrains.annotations.NotNull;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ConfigDeserializer {
    public static @NotNull Config deserialize(@NotNull File file, boolean startup)
            throws ConfigDeserializationException, IOException {
        final Reader reader = new FileReader(file);
        final moe.ymc.acron.config.json.Config config;
        try {
            config = new Gson()
                    .fromJson(reader, moe.ymc.acron.config.json.Config.class);
        } catch (Throwable e) {
            throw new ConfigDeserializationException("Cannot parse JSON: " + e.getMessage(),
                    true);
        }
        reader.close();
        return config.create(startup);
    }
}