/**
*
*/
package org.minnal.core.config;
import java.io.InputStream;
import org.minnal.core.MinnalException;
import org.minnal.utils.serializer.Serializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* The default configuration provider implementation. Makes use of jackson yaml plugin to transform config file to configuration instance
*
* @author ganeshs
*
*/
public class DefaultConfigurationProvider extends ConfigurationProvider {
private static final Logger logger = LoggerFactory.getLogger(DefaultConfigurationProvider.class);
public DefaultConfigurationProvider() {
}
public <T extends Configuration> T provide(Class<T> clazz, String path) {
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
try {
return Serializer.DEFAULT_YAML_SERIALIZER.deserialize(is, clazz);
} catch (Exception e) {
logger.error("Failed while reading the config file - " + path, e);
throw new MinnalException(e);
}
}
public <T extends Configuration> T provide(Class<T> clazz) {
String classname = clazz.getSimpleName();
if (classname.endsWith("Configuration")) {
classname = classname.substring(0, classname.length() - "Configuration".length());
}
return provide(clazz, "META-INF/" + classname.toLowerCase() + ".yml");
}
}