Projects >> wro4j >>55b66d5994244ce2cb125623b49faf2d231c97e7

Chunk
Conflicting content
  /**
   * @return {@link UriLocator} responsible for resolving external resources.
   */
<<<<<<< HEAD
  protected ResourceLocator newExternalResourceLocator(final String location) {
    return new UrlResourceLocator(location) {
      /**
       * No wildcard handling is required.
       */
      @Override
      protected boolean disableWildcards() {
        return true;
      };
    };
=======
  protected UriLocator newExternalResourceLocator() {
    return new UrlUriLocator().setEnableWildcards(false);
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
  }

  /**
Solution content
  /**
   * @return {@link UriLocator} responsible for resolving external resources.
   */
  protected UriLocator newExternalResourceLocator() {
    return new UrlUriLocator().setEnableWildcards(false);
  }

  /**
File
RedirectedStreamServletResponseWrapper.java
Developer's decision
Version 2
Kind of conflict
Method invocation
Method signature
Return statement
Chunk
Conflicting content
      // mark this group as used.
      group.markAsUsed();
      final Group filteredGroup = group.collectResourcesOfType(type);
<<<<<<< HEAD
      final String result = decorateWithMergeCallback(preProcessorExecutor).processAndMerge(filteredGroup, minimize);
      return doPostProcess(group, type, result, minimize);
=======
      if (filteredGroup.getResources().isEmpty()) {
        LOG.warn("No resources found in group: {} and resource type: {}", group.getName(), type);
        if (!config.isIgnoreEmptyGroup()) {
          throw new WroRuntimeException("No resources found in group: " + group.getName());
        }
      }
      final String result = decorateWithMergeCallback(preProcessorExecutor).processAndMerge(
          filteredGroup.getResources(), minimize);
      return doPostProcess(type, result, minimize);
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
    } catch (final IOException e) {
      throw new WroRuntimeException("Exception while merging resources", e);
    } finally {
Solution content
      // mark this group as used.
      group.markAsUsed();
      final Group filteredGroup = group.collectResourcesOfType(type);
      if (filteredGroup.getResources().isEmpty()) {
        LOG.warn("No resources found in group: {} and resource type: {}", group.getName(), type);
        if (!config.isIgnoreEmptyGroup()) {
          throw new WroRuntimeException("No resources found in group: " + group.getName());
        }
      }
      final String result = decorateWithMergeCallback(preProcessorExecutor).processAndMerge(
          filteredGroup, minimize);
      return doPostProcess(group, type, result, minimize);
    } catch (final IOException e) {
      throw new WroRuntimeException("Exception while merging resources", e);
    } finally {
File
GroupsProcessor.java
Developer's decision
Manual
Kind of conflict
If statement
Method invocation
Return statement
Variable
Chunk
Conflicting content
    map.put(PreProcessorExecutor.class, preProcessorExecutor);
    map.put(GroupsProcessor.class, groupsProcessor);
    map.put(LifecycleCallbackRegistry.class, callbackRegistry);
<<<<<<< HEAD
    //map.put(UriLocatorFactory.class, uriLocatorFactory);
    map.put(ResourceLocatorFactory.class, resourceLocatorFactory);
=======
    map.put(UriLocatorFactory.class, uriLocatorFactory);
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
    map.put(ProcessorsFactory.class, processorsFactory);
    map.put(NamingStrategy.class, namingStrategy);
    map.put(Injector.class, new InjectorObjectFactory() {
Solution content
    map.put(PreProcessorExecutor.class, preProcessorExecutor);
    map.put(GroupsProcessor.class, groupsProcessor);
    map.put(LifecycleCallbackRegistry.class, callbackRegistry);
    map.put(ResourceLocatorFactory.class, resourceLocatorFactory);
    map.put(ProcessorsFactory.class, processorsFactory);
    map.put(NamingStrategy.class, namingStrategy);
    map.put(Injector.class, new InjectorObjectFactory() {
File
InjectorBuilder.java
Developer's decision
Combination
Kind of conflict
Comment
Method invocation
Chunk
Conflicting content
  @Override
  public WildcardStreamLocator newWildcardStreamLocator() {
    return new JarWildcardStreamLocator() {
<<<<<<< HEAD:wro4j-core/src/main/java/ro/isdc/wro/model/resource/locator/support/ClasspathResourceLocator.java
      @Override
      public boolean hasWildcard(final String uri) {
        return !disableWildcards() && super.hasWildcard(uri);
      }
    };
  }


  /**
   * This implementation creates a ClassPathResource, applying the given path
   * relative to the path of the underlying resource of this descriptor.
   * @see org.springframework.util.StringUtils#applyRelativePath(String, String)
   */
  @Override
  public ResourceLocator createRelative(final String relativePath) {
    final String folder = FilenameUtils.getFullPath(location);
    // remove '../' & normalize the path.
    final String pathToUse = StringUtils.cleanPath(folder + relativePath);
    return new ClasspathResourceLocator(PREFIX + pathToUse);
  }
}
=======
      @Override
      public boolean hasWildcard(final String uri) {
        return isEnableWildcards() && super.hasWildcard(uri);
      }
    };
  }
}
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f:wro4j-core/src/main/java/ro/isdc/wro/model/resource/locator/ClasspathUriLocator.java
Solution content
  @Override
  public WildcardStreamLocator newWildcardStreamLocator() {
    return new JarWildcardStreamLocator() {
      @Override
      public boolean hasWildcard(final String uri) {
        return isEnableWildcards() && super.hasWildcard(uri);
      }
    };
  }


  /**
   * This implementation creates a ClassPathResource, applying the given path
   * relative to the path of the underlying resource of this descriptor.
   * @see org.springframework.util.StringUtils#applyRelativePath(String, String)
   */
  @Override
  public ResourceLocator createRelative(final String relativePath) {
    final String folder = FilenameUtils.getFullPath(location);
    // remove '../' & normalize the path.
    final String pathToUse = StringUtils.cleanPath(folder + relativePath);
    return new ClasspathResourceLocator(PREFIX + pathToUse);
  }
}
File
ClasspathResourceLocator.java
Developer's decision
Combination
Kind of conflict
Annotation
Comment
Method declaration
Chunk
Conflicting content
   */
<<<<<<< HEAD:wro4j-core/src/main/java/ro/isdc/wro/model/resource/locator/support/DispatcherStreamLocator.java
/*
 * Copyright (c) 2008. All rights reserved.
 */
package ro.isdc.wro.model.resource.locator.support;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ro.isdc.wro.config.Context;
import ro.isdc.wro.http.support.RedirectedStreamServletResponseWrapper;
import ro.isdc.wro.model.resource.locator.ResourceLocator;
import ro.isdc.wro.util.WroUtil;


/**
 * A strategy which use ByteArray IO Streams and dispatch the request to a given location.
 *
 * @author Alex Objelean
 */
public final class DispatcherStreamLocator {
  private static final Logger LOG = LoggerFactory.getLogger(DispatcherStreamLocator.class);


  /**
   * @return {@link UriLocator} responsible for resolving external resources.
  private ResourceLocator newExternalResourceLocator(final String location) {
    return new UrlResourceLocator(location) {
      /**
       * No wildcard handling is required.
       */
      @Override
      protected boolean disableWildcards() {
        return true;
      };
    };
  }

  /**
   * When using JBoss Portal and it has some funny quirks...actually a portal application have several small web
   * application behind it. So when it intercepts a requests for portal then it start bombing the the application behind
   * the portal with multiple threads (web requests) that are combined with threads for wro4j.
   *
   * @return a valid stream for required location. This method will never return a null.
   * @throws IOException
   *           if the stream cannot be located at the specified location.
   */
  public InputStream getInputStream(final HttpServletRequest request, final HttpServletResponse response,
      final String location)
      throws IOException {
    Validate.notNull(request);
    Validate.notNull(response);
    // where to write the bytes of the stream
    final ByteArrayOutputStream os = new ByteArrayOutputStream();
    boolean warnOnEmptyStream = false;

    // preserve context, in case it is unset during dispatching
    final Context originalContext = Context.get();
    try {
      final RequestDispatcher dispatcher = request.getRequestDispatcher(location);
      if (dispatcher == null) {
        // happens when dynamic servlet context relative resources are included outside of the request cycle (inside
        // the thread responsible for refreshing resources)

        // Returns the part URL from the protocol name up to the query string and contextPath.
        final String servletContextPath = request.getRequestURL().toString().replace(request.getServletPath(), "");
        final String absolutePath = servletContextPath + location;
        return newExternalResourceLocator(absolutePath).getInputStream();
      }
      // Wrap request
      final ServletRequest servletRequest = getWrappedServletRequest(request, location);
      // Wrap response
      final ServletResponse servletResponse = new RedirectedStreamServletResponseWrapper(os, response);
      LOG.debug("dispatching request to location: " + location);
      // use dispatcher
      dispatcher.include(servletRequest, servletResponse);
      warnOnEmptyStream = true;
      // force flushing - the content will be written to
      // BytArrayOutputStream. Otherwise exactly 32K of data will be
      // written.
      servletResponse.getWriter().flush();
      os.close();
    } catch (final Exception e) {
      // Not only servletException can be thrown, also dispatch.include can throw NPE when the scheduler runs outside
      // of the request cycle, thus connection is unavailable. This is caused mostly when invalid resources are
      // included.
      LOG.debug("[FAIL] Error while dispatching the request for location {}", location);
      throw new IOException("Error while dispatching the request for location " + location);
    } finally {
      if (warnOnEmptyStream && os.size() == 0) {
        LOG.warn("Wrong or empty resource with location: {}", location);
      }
      // Put the context back
      if (!Context.isContextSet()) {
        Context.set(originalContext);
      }
    }
    return new ByteArrayInputStream(os.toByteArray());
  }

  /**
   * Build a wrapped servlet request which will be used for dispatching.
   */
  private ServletRequest getWrappedServletRequest(final HttpServletRequest request, final String location) {
    final HttpServletRequest wrappedRequest = new HttpServletRequestWrapper(request) {
      @Override
      public String getRequestURI() {
        return getContextPath() + location;
      }

      @Override
      public String getPathInfo() {
        return WroUtil.getPathInfoFromLocation(location);
      }

      @Override
      public String getServletPath() {
        return WroUtil.getServletPathFromLocation(location);
      }
    };
    return wrappedRequest;
  }
=======
/*
 * Copyright (c) 2008. All rights reserved.
 */
package ro.isdc.wro.model.resource.locator;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * The purpose of this locator is to dispatch the request to a given context relative location (doesn't have to include
 * the context path).
 * 

* Initial implementation used a request dispatcher, but since it doesn't behave correctly when the request are issued * outside of request cycle (cache reload scheduler), another approach is preferred. The new approach is to compute * absolute url of the request it as a separate connection using {@link UrlUriLocator}. * * @author Alex Objelean */ public class DispatcherStreamLocator { private static final Logger LOG = LoggerFactory.getLogger(DispatcherStreamLocator.class); /** * Used to locate external resources. No wildcard handling is required. */ private UriLocator externalUriLocator = newExternalUriLocator(); /** * @param location * a context relative location to retrieve stream for. This * @return a valid stream for required location. This method will never return a null. * @throws IOException * if the stream cannot be located at the specified location. */ public InputStream getInputStream(final HttpServletRequest request, final HttpServletResponse response, final String location) throws IOException { Validate.notNull(request); Validate.notNull(response); final String absolutePath = computeServletContextPath(request) + location; LOG.debug("Locating resource: {}", absolutePath); return externalUriLocator.locate(absolutePath); } /** * @return the part URL from the protocol name up to the query string and contextPath. */ private String computeServletContextPath(final HttpServletRequest request) { return request.getRequestURL().toString().replace(request.getServletPath(), ""); } /** * @return {@link UriLocator} used to retrieve stream for absolute location . */ protected UriLocator newExternalUriLocator() { return new UrlUriLocator().setEnableWildcards(false); } >>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f:wro4j-core/src/main/java/ro/isdc/wro/model/resource/locator/DispatcherStreamLocator.java }

Solution content
/*
 * Copyright (c) 2008. All rights reserved.
 */
package ro.isdc.wro.model.resource.locator;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ro.isdc.wro.model.resource.locator.ResourceLocator;


/**
 * The purpose of this locator is to dispatch the request to a given context relative location (doesn't have to include
 * the context path).
 * 

* Initial implementation used a request dispatcher, but since it doesn't behave correctly when the request are issued * outside of request cycle (cache reload scheduler), another approach is preferred. The new approach is to compute * absolute url of the request it as a separate connection using {@link UrlUriLocator}. * * @author Alex Objelean */ public class DispatcherStreamLocator { private static final Logger LOG = LoggerFactory.getLogger(DispatcherStreamLocator.class); /** * Used to locate external resources. No wildcard handling is required. */ private ResourceLocator externalUriLocator = newExternalResourceLocator(); /** * @param location * a context relative location to retrieve stream for. This * @return a valid stream for required location. This method will never return a null. * @throws IOException * if the stream cannot be located at the specified location. */ public InputStream getInputStream(final HttpServletRequest request, final HttpServletResponse response, final String location) throws IOException { Validate.notNull(request); Validate.notNull(response); final String absolutePath = computeServletContextPath(request) + location; LOG.debug("Locating resource: {}", absolutePath); return externalUriLocator.locate(absolutePath); } /** * @return the part URL from the protocol name up to the query string and contextPath. */ private String computeServletContextPath(final HttpServletRequest request) { return request.getRequestURL().toString().replace(request.getServletPath(), ""); } /** * @return {@link ResourceLocator} used to retrieve stream for absolute location . */ protected ResourceLocator newExternalResourceLocator() { return new UrlResourceLocator().setEnableWildcards(false); } }

File
DispatcherStreamLocator.java
Developer's decision
Manual
Kind of conflict
Attribute
Comment
Import
Method declaration
Method invocation
Package declaration
Chunk
Conflicting content
    }
    
    InputStream inputStream = null;
<<<<<<< HEAD:wro4j-core/src/main/java/ro/isdc/wro/model/resource/locator/support/ServletContextResourceLocator.java
    if (locatorStrategy.equals(LocatorStrategy.DISPATCHER_FIRST)) {
      inputStream = dispatcherFirstStreamLocator(path);
    } else {
      inputStream = servletContextFirstStreamLocator(path);
    }
    
    validateInputStreamIsNotNull(inputStream, path);
    
    return inputStream;
=======
    try {
      if (locatorStrategy.equals(LocatorStrategy.DISPATCHER_FIRST)) {
        inputStream = dispatcherFirstStreamLocator(uri);
      } else {
        inputStream = servletContextFirstStreamLocator(uri);
      }
      validateInputStreamIsNotNull(inputStream, uri);
      return inputStream;
    } catch (IOException e) {
      LOG.warn("Wrong or empty resource with location: {}", uri);
      throw e;
    }
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f:wro4j-core/src/main/java/ro/isdc/wro/model/resource/locator/ServletContextUriLocator.java
  }
  
  /**
Solution content
    }
    
    InputStream inputStream = null;
    try {
      if (locatorStrategy.equals(LocatorStrategy.DISPATCHER_FIRST)) {
        inputStream = dispatcherFirstStreamLocator(path);
      } else {
        inputStream = servletContextFirstStreamLocator(path);
      }
      validateInputStreamIsNotNull(inputStream, uri);
      return inputStream;
    } catch (IOException e) {
      LOG.warn("Wrong or empty resource with location: {}", path);
      throw e;
    }
  }
  
  /**
File
ServletContextResourceLocator.java
Developer's decision
Manual
Kind of conflict
If statement
Method invocation
Return statement
Try statement
Variable
Chunk
Conflicting content
import ro.isdc.wro.model.resource.Resource;
import ro.isdc.wro.model.resource.ResourceType;
import ro.isdc.wro.model.resource.SupportedResourceType;
<<<<<<< HEAD
import ro.isdc.wro.model.resource.processor.ResourceProcessor;
import ro.isdc.wro.model.resource.processor.impl.css.JawrCssMinifierProcessor;
=======
import ro.isdc.wro.model.resource.processor.ResourcePostProcessor;
import ro.isdc.wro.model.resource.processor.ResourcePreProcessor;
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
import ro.isdc.wro.model.resource.processor.support.JSMin;

Solution content
import ro.isdc.wro.model.resource.Resource;
import ro.isdc.wro.model.resource.ResourceType;
import ro.isdc.wro.model.resource.SupportedResourceType;
import ro.isdc.wro.model.resource.processor.ResourcePostProcessor;
import ro.isdc.wro.model.resource.processor.ResourcePreProcessor;
import ro.isdc.wro.model.resource.processor.support.JSMin;

File
JSMinProcessor.java
Developer's decision
Version 2
Kind of conflict
Import
Chunk
Conflicting content
   * resource is the pre processed resource of this processor.
   */
  private static final class WroManagerProcessor
<<<<<<< HEAD
    implements ResourceProcessor {
=======
      implements ResourcePreProcessor {
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
    private final WroManagerFactory managerFactory = new BaseWroManagerFactory() {
      @Override
      protected void onAfterInitializeManager(final WroManager manager) {
Solution content
   * resource is the pre processed resource of this processor.
   */
  private static final class WroManagerProcessor
    implements ResourceProcessor {
    private final WroManagerFactory managerFactory = new BaseWroManagerFactory() {
      @Override
      protected void onAfterInitializeManager(final WroManager manager) {
File
TestWroManager.java
Developer's decision
Version 1
Kind of conflict
Other
Chunk
Conflicting content
  /**
   * Ignored because it fails when running the test from command line.
   */
<<<<<<< HEAD
  @Test
  public void testFromFolder()
    throws Exception {
    final ResourceProcessor processor = new WroManagerProcessor();
=======
  // @Ignore
  @Test
  public void testFromFolder()
      throws Exception {
    final ResourcePreProcessor processor = new WroManagerProcessor();
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
    final URL url = getClass().getResource("wroManager");
    
    final File testFolder = new File(url.getFile(), "test");
Solution content
  /**
   * Ignored because it fails when running the test from command line.
   */
  @Test
  public void testFromFolder()
    throws Exception {
    final ResourceProcessor processor = new WroManagerProcessor();
    final URL url = getClass().getResource("wroManager");
    
    final File testFolder = new File(url.getFile(), "test");
File
TestWroManager.java
Developer's decision
Version 1
Kind of conflict
Annotation
Comment
Method invocation
Method signature
Variable
Chunk
Conflicting content
    final File testFolder = new File(url.getFile(), "test");
    final File expectedFolder = new File(url.getFile(), "expected");
    WroTestUtils.compareFromDifferentFoldersByExtension(testFolder, expectedFolder, "js", processor);
<<<<<<< HEAD
=======
    // WroTestUtils.compareFromDifferentFoldersByExtension(testFolder, expectedFolder, "css", processor);
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
  }
  
  /**
Solution content
    final File testFolder = new File(url.getFile(), "test");
    final File expectedFolder = new File(url.getFile(), "expected");
    WroTestUtils.compareFromDifferentFoldersByExtension(testFolder, expectedFolder, "js", processor);
  }
  
  /**
File
TestWroManager.java
Developer's decision
Version 1
Kind of conflict
Comment
Chunk
Conflicting content
 * @author Alex Objelean
 */
public class TestGroup {
<<<<<<< HEAD
  @Test(expected=NullPointerException.class)
=======
  @Test(expected = NullPointerException.class)
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
  public void cannotCreateGroupWithNullName() {
    new Group(null);
  }
Solution content
 * @author Alex Objelean
 */
public class TestGroup {
  @Test(expected = NullPointerException.class)
  public void cannotCreateGroupWithNullName() {
    new Group(null);
  }
File
TestGroup.java
Developer's decision
Version 1
Kind of conflict
Annotation
Chunk
Conflicting content
    new Group(null);
  }
  
<<<<<<< HEAD
  @Test
  public void shouldReturnSameGroupWhenGroupHasNoResources() {
    final Group group = new Group("group");
    Group newGroup = group.collectResourcesOfType(null);
    Assert.assertEquals(group, newGroup);
    
    newGroup = group.collectResourcesOfType(ResourceType.CSS);
    Assert.assertEquals(group, newGroup);
    
    newGroup = group.collectResourcesOfType(ResourceType.JS);
    Assert.assertEquals(group, newGroup);
  }
  
  @Test
  public void shouldCollectSearchedResources() {
    final Group group = new Group("group");
    group.addResource(Resource.create("1", ResourceType.CSS));
    group.addResource(Resource.create("2", ResourceType.JS));
    group.addResource(Resource.create("3", ResourceType.JS));
    
    Group newGroup = group.collectResourcesOfType(null);
    Assert.assertEquals(0, newGroup.getResources().size());
    
    newGroup = group.collectResourcesOfType(ResourceType.CSS);
    Assert.assertEquals(1, newGroup.getResources().size());
    
    newGroup = group.collectResourcesOfType(ResourceType.JS);
    Assert.assertEquals(2, newGroup.getResources().size());
  }

  @Test(expected=NullPointerException.class)
=======
  @Test(expected = NullPointerException.class)
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f
  public void cannotPassNullResourceType() {
    final Group group = new Group("group");
    group.hasResourcesOfType(null);
Solution content
    new Group(null);
  }
  
  @Test
  public void shouldReturnSameGroupWhenGroupHasNoResources() {
    final Group group = new Group("group");
    Group newGroup = group.collectResourcesOfType(null);
    Assert.assertEquals(group, newGroup);
    
    newGroup = group.collectResourcesOfType(ResourceType.CSS);
    Assert.assertEquals(group, newGroup);
    
    newGroup = group.collectResourcesOfType(ResourceType.JS);
    Assert.assertEquals(group, newGroup);
  }
  
  @Test
  public void shouldCollectSearchedResources() {
    final Group group = new Group("group");
    group.addResource(Resource.create("1", ResourceType.CSS));
    group.addResource(Resource.create("2", ResourceType.JS));
    group.addResource(Resource.create("3", ResourceType.JS));
    
    Group newGroup = group.collectResourcesOfType(null);
    Assert.assertEquals(0, newGroup.getResources().size());
    
    newGroup = group.collectResourcesOfType(ResourceType.CSS);
    Assert.assertEquals(1, newGroup.getResources().size());
    
    newGroup = group.collectResourcesOfType(ResourceType.JS);
    Assert.assertEquals(2, newGroup.getResources().size());
  }

  @Test(expected=NullPointerException.class)
  public void cannotPassNullResourceType() {
    final Group group = new Group("group");
    group.hasResourcesOfType(null);
File
TestGroup.java
Developer's decision
Version 1
Kind of conflict
Annotation
Method declaration
Chunk
Conflicting content
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
<<<<<<< HEAD
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import ro.isdc.wro.config.Context;
import ro.isdc.wro.model.resource.locator.support.DispatcherStreamLocator;
=======
>>>>>>> df25c6a22fcdd50e8da5dfe4cc2476fc6706ce0f


/**
Solution content
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import ro.isdc.wro.config.Context;
import ro.isdc.wro.model.resource.locator.support.DispatcherStreamLocator;


/**
File
TestDispatcherStreamLocator.java
Developer's decision
Version 1
Kind of conflict
Import