/* * Copyright (C) 2011. All rights reserved. */ package ro.isdc.wro.maven.plugin.manager.factory; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import ro.isdc.wro.WroRuntimeException; import ro.isdc.wro.config.Context; import ro.isdc.wro.config.factory.PropertyWroConfigurationFactory; import ro.isdc.wro.config.jmx.WroConfiguration; import ro.isdc.wro.extensions.model.factory.SmartWroModelFactory; import ro.isdc.wro.manager.factory.standalone.ConfigurableStandaloneContextAwareManagerFactory; import ro.isdc.wro.manager.factory.standalone.StandaloneContext; import ro.isdc.wro.maven.plugin.support.ExtraConfigFileAware; import ro.isdc.wro.model.factory.ConfigurableModelFactory; import ro.isdc.wro.model.factory.WroModelFactory; import ro.isdc.wro.model.resource.support.hash.ConfigurableHashStrategy; import ro.isdc.wro.model.resource.support.hash.HashStrategy; import ro.isdc.wro.model.resource.support.naming.ConfigurableNamingStrategy; import ro.isdc.wro.model.resource.support.naming.NamingStrategy; /** * Default implementation which use a property file to read the pre & post processors to be used during processing. * * @author Alex Objelean * @created 2 Aug 2011 * @since 1.4.0 */ public class ConfigurableWroManagerFactory extends ConfigurableStandaloneContextAwareManagerFactory implements ExtraConfigFileAware { private StandaloneContext standaloneContext; private File configProperties; /** * {@inheritDoc} */ @Override public void initialize(final StandaloneContext standaloneContext) { super.initialize(standaloneContext); Context.get().setConfig(initConfiguration()); this.standaloneContext = standaloneContext; } private WroConfiguration initConfiguration() { return new PropertyWroConfigurationFactory(createProperties()).create(); } /** * {@inheritDoc} */ @Override protected WroModelFactory newModelFactory() { return new ConfigurableModelFactory() { @Override protected Properties newProperties() { return createProperties(); } @Override protected WroModelFactory getDefaultStrategy() { return SmartWroModelFactory.createFromStandaloneContext(standaloneContext); } }; } /** * {@inheritDoc} */ @Override protected NamingStrategy newNamingStrategy() { return new ConfigurableNamingStrategy() { @Override protected Properties newProperties() { return createProperties(); } }; } /** * {@inheritDoc} */ @Override protected HashStrategy newHashStrategy() { return new ConfigurableHashStrategy() { @Override protected Properties newProperties() { return createProperties(); } }; } /** * {@inheritDoc} */ @Override protected Properties createProperties() { try { final Properties properties = new Properties(); properties.load(new FileInputStream(configProperties)); return properties; } catch (final IOException e) { throw new WroRuntimeException("Exception while loading properties file from " + configProperties.getAbsolutePath(), e); } } /** * {@inheritDoc} */ public void setExtraConfigFile(final File extraProperties) { this.configProperties = extraProperties; } }