package org.atomhopper.util.config; import org.atomhopper.util.config.resource.ConfigurationResource; public abstract class AbstractConfigurationParser<T> implements ConfigurationParser<T> { private final Class<T> configurationClassDefinition; private ConfigurationResource configurationResource; public AbstractConfigurationParser(Class<T> configurationClassDefinition) { this.configurationClassDefinition = configurationClassDefinition; } @Override public Class<T> getConfigurationClass() { return configurationClassDefinition; } @Override public void setConfigurationResource(ConfigurationResource resource) { configurationResource = resource; } @Override public ConfigurationResource getConfigurationResource() { return configurationResource; } @Override public final T read() { if (configurationResource == null) { throw new IllegalStateException("A configuration resource must be set first before reading from it."); } return readConfiguration(); } protected abstract T readConfiguration(); }