package org.jtwig.property.environment;
import org.jtwig.property.configuration.PropertyResolverConfiguration;
import org.jtwig.property.resolver.request.ArgumentsExtractor;
import org.jtwig.property.resolver.request.PropertyNameExtractor;
import org.jtwig.property.resolver.request.PropertyResolveRequestFactory;
import org.jtwig.property.selection.BaseSelectionPropertyResolver;
import org.jtwig.property.selection.CachedSelectionPropertyResolver;
import org.jtwig.property.selection.SelectionPropertyResolveService;
public class PropertyResolverEnvironmentFactory {
public PropertyResolverEnvironment create (PropertyResolverConfiguration configuration) {
SelectionPropertyResolveService selectionPropertyResolveService = new SelectionPropertyResolveService(new PropertyResolveRequestFactory(new PropertyNameExtractor(), new ArgumentsExtractor()));
BaseSelectionPropertyResolver selectionPropertyResolver = new BaseSelectionPropertyResolver(configuration.getPropertyResolverStrategies(), selectionPropertyResolveService);
return new PropertyResolverEnvironment(
new CachedSelectionPropertyResolver(configuration.getCache(), selectionPropertyResolver, selectionPropertyResolveService)
);
}
}