package cucumber.runtime.io;
import java.io.File;
import java.net.URL;
import java.util.Iterator;
import static cucumber.runtime.io.Helpers.filePath;
/**
* Factory which creates {@link FileResourceIterator}s.
* <p/>
* <p>{@link FileResourceIterator}s should be created for any cases where a
* URL's protocol isn't otherwise handled. Thus, {@link #isFactoryFor(URL)}
* will always return <code>true</code>. Because of this behavior, the
* <code>FileResourceIteratorFactory</code> should never be registered as a
* service implementation for {@link ResourceIteratorFactory} as it could
* easily hide other service implementations.</p>
*/
public class FileResourceIteratorFactory implements ResourceIteratorFactory {
@Override
public boolean isFactoryFor(URL url) {
return true;
}
@Override
public Iterator<Resource> createIterator(URL url, String path, String suffix) {
File file = new File(filePath(url));
File rootDir = new File(file.getAbsolutePath().substring(0, file.getAbsolutePath().length() - path.length()));
return new FileResourceIterator(rootDir, file, suffix);
}
}