Update yaml compat checker

This commit is contained in:
Nassim Jahnke 2023-03-16 20:41:03 +01:00
parent 4e844a0095
commit 74fb55d96b
No known key found for this signature in database
GPG Key ID: 6BE3B555EBC5982B
2 changed files with 5 additions and 9 deletions

View File

@ -39,19 +39,15 @@ import org.checkerframework.checker.nullness.qual.Nullable;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
@SuppressWarnings("VulnerableCodeUsages")
public abstract class Config implements ConfigurationProvider {
private static final YamlCompat YAMP_COMPAT = YamlCompat.isVersion2() ? new Yaml2Compat() : new Yaml1Compat();
private static final YamlCompat YAMP_COMPAT = YamlCompat.isVersion1() ? new Yaml1Compat() : new Yaml2Compat();
private static final ThreadLocal<Yaml> YAML = ThreadLocal.withInitial(() -> {
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
options.setPrettyFlow(false);
options.setIndent(2);
try {
return new Yaml(YAMP_COMPAT.createSafeConstructor(), YAMP_COMPAT.createRepresenter(options), options);
} catch (NoSuchMethodError e) {
YamlCompat compat = new Yaml1Compat();
return new Yaml(compat.createSafeConstructor(), compat.createRepresenter(options), options);
}
return new Yaml(YAMP_COMPAT.createSafeConstructor(), YAMP_COMPAT.createRepresenter(options), options);
});
private final CommentStore commentStore = new CommentStore('.', 2);

View File

@ -27,9 +27,9 @@ public interface YamlCompat {
SafeConstructor createSafeConstructor();
static boolean isVersion2() {
static boolean isVersion1() {
try {
Representer.class.getDeclaredConstructor(DumperOptions.class);
SafeConstructor.class.getDeclaredConstructor();
return true;
} catch (NoSuchMethodException e) {
return false;