package ro.isdc.wro.model.resource.processor.support;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import ro.isdc.wro.model.resource.processor.ResourcePostProcessor;
import ro.isdc.wro.model.resource.processor.ResourcePreProcessor;
import ro.isdc.wro.model.resource.processor.decorator.ProcessorDecorator;
import ro.isdc.wro.model.resource.processor.impl.MultiLineCommentStripperProcessor;
import ro.isdc.wro.model.resource.processor.impl.SingleLineCommentStripperProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.ConformColorsCssProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssCompressorProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssDataUriPreProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssImportPreProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssMinProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssUrlAuthorizationProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssUrlRewritingProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.CssVariablesProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.DuplicatesAwareCssDataUriPreProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.FallbackCssDataUriProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.JawrCssMinifierProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.LessCssImportPreProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.VariablizeColorsCssProcessor;
import ro.isdc.wro.model.resource.processor.impl.js.ConsoleStripperProcessor;
import ro.isdc.wro.model.resource.processor.impl.js.JSMinProcessor;
import ro.isdc.wro.model.resource.processor.impl.js.SemicolonAppenderPreProcessor;
/**
* The implementation which contributes with processors from core module.
*
* @author Alex Objelean
* @created 1 Jun 2012
*/
public class DefaultProcessorProvider
implements ProcessorProvider {
/**
* {@inheritDoc}
*/
public Map<String, ResourcePreProcessor> providePreProcessors() {
final Map<String, ResourcePreProcessor> map = new HashMap<String, ResourcePreProcessor>();
populateProcessorsMap(map);
return map;
}
/**
* {@inheritDoc}
*/
public Map<String, ResourcePostProcessor> providePostProcessors() {
return toPostProcessors(providePreProcessors());
}
/**
* Creates a map of postProcessors form a map of preProcessors. This method will be removed in 1.5.0 release when
* there will be no differences between pre & post processor interface.
*/
private Map<String, ResourcePostProcessor> toPostProcessors(
final Map<String, ResourcePreProcessor> preProcessorsMap) {
final Map<String, ResourcePostProcessor> map = new HashMap<String, ResourcePostProcessor>();
for (final Entry<String, ResourcePreProcessor> entry : preProcessorsMap.entrySet()) {
map.put(entry.getKey(), new ProcessorDecorator(entry.getValue()));
}
return map;
}
private void populateProcessorsMap(final Map<String, ResourcePreProcessor> map) {
map.put(CssUrlRewritingProcessor.ALIAS, new CssUrlRewritingProcessor());
map.put(CssImportPreProcessor.ALIAS, new CssImportPreProcessor());
map.put(LessCssImportPreProcessor.ALIAS, new LessCssImportPreProcessor());
map.put(CssVariablesProcessor.ALIAS, new CssVariablesProcessor());
map.put(CssCompressorProcessor.ALIAS, new CssCompressorProcessor());
map.put(SemicolonAppenderPreProcessor.ALIAS, new SemicolonAppenderPreProcessor());
map.put(CssDataUriPreProcessor.ALIAS, new CssDataUriPreProcessor());
map.put(FallbackCssDataUriProcessor.ALIAS, new FallbackCssDataUriProcessor());
map.put(DuplicatesAwareCssDataUriPreProcessor.ALIAS_DUPLICATE, new DuplicatesAwareCssDataUriPreProcessor());
map.put(JawrCssMinifierProcessor.ALIAS, new JawrCssMinifierProcessor());
map.put(CssMinProcessor.ALIAS, new CssMinProcessor());
map.put(JSMinProcessor.ALIAS, new JSMinProcessor());
map.put(VariablizeColorsCssProcessor.ALIAS, new VariablizeColorsCssProcessor());
map.put(ConformColorsCssProcessor.ALIAS, new ConformColorsCssProcessor());
map.put(SingleLineCommentStripperProcessor.ALIAS, new SingleLineCommentStripperProcessor());
map.put(MultiLineCommentStripperProcessor.ALIAS, new MultiLineCommentStripperProcessor());
map.put(ConsoleStripperProcessor.ALIAS, new ConsoleStripperProcessor());
map.put(CssUrlAuthorizationProcessor.ALIAS, new CssUrlAuthorizationProcessor());
}
}