I'm trying to read through the docs and understand how to use SnakeYAML. My code here is sort of crude; I'm just trying to get it to work but have ran into an exception. I'm not sure of the cause. Can anyone help me out with this?
import java.io.IOException;
import java.net.URL;
import java.util.Map;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
import com.google.common.base.Charsets;
import com.google.common.io.Resources;
public class ConfigurationManager {
public static Object yamlconfig;
public static Object getInstance(String environment) throws IOException {
if (yamlconfig == null) {
Yaml yaml = new Yaml(new Constructor(Config.class));
URL filename = ConfigurationManager.class.getResource("/resources/config.yaml");
String rawConfig = Resources.toString(filename, Charsets.UTF_8);
yamlconfig = yaml.load(rawConfig);
}
return ConfigurationManager.yamlconfig;
}
// Testing purposes...
public static void main(String[] args) {
Object config;
try {
yamlconfig = ConfigurationManager.getInstance("local");
System.out.println(yamlconfig);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public class Config {
private Map<String, Environment> environments;
}
public class Environment {
private boolean clustered;
private Map<String, String> mongodb;
private Map<String, String> redis;
private Map<String, String> twitter;
private Map<String, Object> data;
}
}
Exception in thread "main" Can't construct a java object for tag:
yaml.org,2002:<HIDDEN>.util.config.ConfigurationManager$Config; exception=java.lang.NoSuchMethodException: org.<HIDDEN>.util.config.ConfigurationManager$Config.<init>()
in 'string', line 1, column 1:
environments:
^
at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:333)
at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:182)
at org.yaml.snakeyaml.constructor.BaseConstructor.constructDocument(BaseConstructor.java:141)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:127)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:400)
at org.<HIDDEN>.util.config.ConfigurationManager.getInstance(ConfigurationManager.java:27)
at org.<HIDDEN>.util.config.ConfigurationManager.main(ConfigurationManager.java:38)
Caused by: org.yaml.snakeyaml.error.YAMLException: java.lang.NoSuchMethodException: org.<HIDDEN>.util.config.ConfigurationManager$Config.<init>()
at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.createEmptyJavaBean(Constructor.java:219)
at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:189)
at org.yaml.snakeyaml.constructor.Constructor$ConstructYamlObject.construct(Constructor.java:331)
... 7 more
Caused by: java.lang.NoSuchMethodException: org.<HIDDEN>.util.config.ConfigurationManager$Config.<init>()
at java.lang.Class.getConstructor0(Class.java:2730)
at java.lang.Class.getDeclaredConstructor(Class.java:2004)
at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.createEmptyJavaBean(Constructor.java:215)
... 9 more