package org.ehcache.xml.service;
import org.ehcache.impl.config.resilience.DefaultResilienceStrategyConfiguration;
import org.ehcache.spi.resilience.ResilienceStrategy;
import org.ehcache.xml.exceptions.XmlConfigurationException;
import org.ehcache.xml.model.CacheTemplate;
import org.ehcache.xml.model.CacheType;
import static org.ehcache.xml.XmlConfiguration.getClassForName;
public class DefaultResilienceStrategyConfigurationParser
extends SimpleCoreServiceConfigurationParser<String, String, DefaultResilienceStrategyConfiguration> {
@SuppressWarnings({"unchecked", "rawtypes"})
public DefaultResilienceStrategyConfigurationParser() {
super(DefaultResilienceStrategyConfiguration.class,
CacheTemplate::resilienceStrategy,
(config, loader) -> new DefaultResilienceStrategyConfiguration((Class<? extends ResilienceStrategy>) getClassForName(config, loader)),
CacheType::getResilience, CacheType::setResilience, config -> {
if(config.getInstance() == null) {
return config.getClazz().getName();
} else {
throw new XmlConfigurationException("XML translation for instance based initialization for DefaultResilienceStrategyConfiguration is not supported");
}
});
}
}