content: package ro.isdc.wro.manager.factory.standalone;
  
  import java.io.FileInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  
  import javax.servlet.http.HttpServletRequest;
  
  import org.apache.commons.lang3.Validate;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
  import ro.isdc.wro.config.Context;
  import ro.isdc.wro.manager.factory.WroManagerFactory;
  import ro.isdc.wro.model.factory.WroModelFactory;
  import ro.isdc.wro.model.factory.XmlModelFactory;
  import ro.isdc.wro.model.group.GroupExtractor;
  import ro.isdc.wro.model.group.processor.GroupExtractorDecorator;
  import ro.isdc.wro.model.resource.locator.ServletContextUriLocator;
  import ro.isdc.wro.model.resource.locator.StandaloneServletContextUriLocator;
  import ro.isdc.wro.model.resource.processor.factory.DefaultProcessorsFactory;
  import ro.isdc.wro.model.resource.processor.factory.ProcessorsFactory;
  
  /**
   * {@link WroManagerFactory} instance used by the maven plugin.
   *
   * @author Alex Objelean
   */
  public class DefaultStandaloneContextAwareManagerFactory
    extends StandaloneWroManagerFactory implements StandaloneContextAware {
    private static final Logger LOG = LoggerFactory.getLogger(DefaultStandaloneContextAwareManagerFactory.class);
    /**
     * Context used by stand-alone process.
     */
    StandaloneContext standaloneContext;
    /**
     * {@inheritDoc}
     */
    public void initialize(final StandaloneContext standaloneContext) {
      Validate.notNull(standaloneContext);
      this.standaloneContext = standaloneContext;
      //Override the ignoreMissingResources flag only when explicitly set
      if (standaloneContext.getIgnoreMissingResourcesAsString() != null) {
        Context.get().getConfig().setIgnoreMissingResources(Boolean.parseBoolean(standaloneContext.getIgnoreMissingResourcesAsString()));
      }
  
      LOG.debug("initialize: {}", standaloneContext);
      LOG.debug("config: {}", Context.get().getConfig());
    }
  
  
    @Override
    protected GroupExtractor newGroupExtractor() {
      return new GroupExtractorDecorator(super.newGroupExtractor()) {
        @Override
        public boolean isMinimized(final HttpServletRequest request) {
          return standaloneContext.isMinimize();
        }
      };
    }
  
  
    @Override
    protected WroModelFactory newModelFactory() {
      return new XmlModelFactory() {
        @Override
        protected InputStream getModelResourceAsStream()
          throws IOException {
          return new FileInputStream(standaloneContext.getWroFile());
        }
      };
    }
  
    @Override
    protected ProcessorsFactory newProcessorsFactory() {
      return new DefaultProcessorsFactory();
    }
  
    @Override
    protected ServletContextUriLocator newServletContextUriLocator() {
      return new StandaloneServletContextUriLocator(standaloneContext);
    }
  }