package com.opensymphony.xwork2.util.fs; import com.opensymphony.xwork2.FileManager; import com.opensymphony.xwork2.XWorkTestCase; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Scope; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; public class DefaultFileManagerFactoryTest extends XWorkTestCase { static FileManager fileManager; public void testCreateDefaultFileManager() throws Exception { // given fileManager = null; DefaultFileManagerFactory factory = new DefaultFileManagerFactory(); factory.setFileManager(new DefaultFileManager()); factory.setContainer(new DummyContainer()); // when FileManager fm = factory.getFileManager(); // then assertTrue(fm instanceof DefaultFileManager); } public void testCreateDummyFileManager() throws Exception { // given fileManager = new DummyFileManager(); DefaultFileManagerFactory factory = new DefaultFileManagerFactory(); factory.setFileManager(new DefaultFileManager()); factory.setContainer(new DummyContainer()); // when FileManager fm = factory.getFileManager(); // then assertTrue(fm instanceof DummyFileManager); } public void testFileManagerFactoryWithRealConfig() throws Exception { // given DefaultFileManagerFactory factory = new DefaultFileManagerFactory(); container.inject(factory); // when FileManager fm = factory.getFileManager(); // then assertTrue(fm instanceof DefaultFileManager); } } class DummyContainer implements Container { public void inject(Object o) { } public <T> T inject(Class<T> implementation) { return null; } public <T> T getInstance(Class<T> type, String name) { if ("dummy".equals(name)) { return (T) DefaultFileManagerFactoryTest.fileManager; } return null; } public <T> T getInstance(Class<T> type) { return null; } public Set<String> getInstanceNames(Class<?> type) { if (DefaultFileManagerFactoryTest.fileManager != null) { return new HashSet<String>() { { add("dummy"); } }; } return Collections.emptySet(); } public void setScopeStrategy(Scope.Strategy scopeStrategy) { } public void removeScopeStrategy() { } } class DummyFileManager implements FileManager { public void setReloadingConfigs(boolean reloadingConfigs) { } public boolean fileNeedsReloading(String fileName) { return false; } public boolean fileNeedsReloading(URL fileUrl) { return false; } public InputStream loadFile(URL fileUrl) { return null; } public void monitorFile(URL fileUrl) { } public URL normalizeToFileProtocol(URL url) { return null; } public boolean support() { return true; } public boolean internal() { return true; } public Collection<? extends URL> getAllPhysicalUrls(URL url) throws IOException { return null; } }