Package ro.isdc.wro.model.resource.locator.factory

Source Code of ro.isdc.wro.model.resource.locator.factory.InjectableUriLocatorFactoryDecorator

package ro.isdc.wro.model.resource.locator.factory;

import java.io.IOException;
import java.io.InputStream;

import ro.isdc.wro.model.group.Inject;
import ro.isdc.wro.model.group.processor.Injector;
import ro.isdc.wro.model.resource.locator.UriLocator;
import ro.isdc.wro.util.AbstractDecorator;


/**
* A decorator responsible to perform Injection every time
* {@link InjectableUriLocatorFactoryDecorator#getInstance(String)} getInstance method is invoked.
*
* @author Alex Objelean
* @created 7 Mar 2014
* @since 1.7.4
*/
public class InjectableUriLocatorFactoryDecorator extends AbstractDecorator<UriLocatorFactory>
    implements UriLocatorFactory  {
  @Inject
  private Injector injector;
  public InjectableUriLocatorFactoryDecorator(final UriLocatorFactory decorated) {
    super(decorated);
  }

  /**
   * This implementation shows the problem with current design of locator implementation. Needs to be changed.
   */
  public InputStream locate(final String uri)
      throws IOException {
    final UriLocator locator = getInstance(uri);
    if (locator == null) {
      return getDecoratedObject().locate(uri);
    }
    return locator.locate(uri);
  }

  public UriLocator getInstance(final String uri) {
    final UriLocator instance = getDecoratedObject().getInstance(uri);
    if (instance != null) {
      injector.inject(instance);
    }
    return instance;
  }
}
TOP

Related Classes of ro.isdc.wro.model.resource.locator.factory.InjectableUriLocatorFactoryDecorator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.