forked from fanruan/finekit
2 changed files with 165 additions and 0 deletions
@ -0,0 +1,41 @@
|
||||
package com.fanruan.api.io; |
||||
|
||||
import com.fr.io.base.provider.RepositoryFactoryProvider; |
||||
import com.fr.io.context.ResourceModuleContext; |
||||
import org.jetbrains.annotations.NotNull; |
||||
|
||||
/** |
||||
* |
||||
* 资源仓库插件开发套件 |
||||
* |
||||
* @author rinoux |
||||
* @version 10.0 |
||||
* Created by rinoux on 2019/9/5 |
||||
*/ |
||||
public class ResourceModuleKit { |
||||
|
||||
|
||||
/** |
||||
* 添加一个资源仓库工厂 |
||||
* |
||||
* @param factory 工厂 |
||||
* @param <T> 工厂类型 |
||||
*/ |
||||
public static <T extends RepositoryFactoryProvider> void addFactory(@NotNull T factory) { |
||||
ResourceModuleContext.addFactory(factory); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 移除一个资源仓库工厂 |
||||
* |
||||
* @param factory 工厂 |
||||
* @param <T> 工厂类型 |
||||
*/ |
||||
public static <T extends RepositoryFactoryProvider> void removeFactory(@NotNull T factory) { |
||||
ResourceModuleContext.removeFactory(factory.getIdentity()); |
||||
} |
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,124 @@
|
||||
package com.fanruan.api.io; |
||||
|
||||
import com.fr.io.base.provider.FactoryLoaderProvider; |
||||
import com.fr.io.base.provider.RepositoryFactoryProvider; |
||||
import com.fr.io.base.provider.RepositoryInstallerProvider; |
||||
import com.fr.io.base.provider.RepositoryManagerProvider; |
||||
import com.fr.io.config.RepositoryConfig; |
||||
import com.fr.io.config.ResourceModuleConfigProvider; |
||||
import com.fr.io.context.RepositoryContextProvider; |
||||
import com.fr.io.context.ResourceModuleContext; |
||||
import com.fr.io.lock.LockFactory; |
||||
import org.easymock.EasyMock; |
||||
import org.junit.After; |
||||
import org.junit.Assert; |
||||
import org.junit.Before; |
||||
import org.junit.Test; |
||||
|
||||
import java.util.HashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* ResourceModuleKit Tester. |
||||
* |
||||
* @author <Authors name> |
||||
* @version 1.0 |
||||
* @since <pre>9月 5, 2019</pre> |
||||
*/ |
||||
public class ResourceModuleKitTest { |
||||
|
||||
@Before |
||||
public void before() throws Exception { |
||||
final FactoryLoaderProvider loaderProvider = new FactoryLoaderProvider() { |
||||
final Map<String, RepositoryFactoryProvider> map = new HashMap<>(); |
||||
|
||||
@Override |
||||
public <T extends RepositoryConfig> void add(RepositoryFactoryProvider<T> factory) { |
||||
map.put(factory.getIdentity(), factory); |
||||
} |
||||
|
||||
@Override |
||||
public void remove(String identity) { |
||||
map.remove(identity); |
||||
} |
||||
|
||||
@Override |
||||
@SuppressWarnings("unchecked") |
||||
public <T extends RepositoryConfig> RepositoryFactoryProvider<T> get(String identity) { |
||||
return map.get(identity); |
||||
} |
||||
}; |
||||
|
||||
ResourceModuleContext.setRepositoryContext(new RepositoryContextProvider() { |
||||
@Override |
||||
public FactoryLoaderProvider getFactoryLoader() { |
||||
|
||||
return loaderProvider; |
||||
} |
||||
|
||||
@Override |
||||
public ResourceModuleConfigProvider getConfig() { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public RepositoryManagerProvider getManager() { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public RepositoryInstallerProvider getInstaller() { |
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public LockFactory getLockFactory() { |
||||
return null; |
||||
} |
||||
}); |
||||
} |
||||
|
||||
@After |
||||
public void after() throws Exception { |
||||
ResourceModuleContext.setRepositoryContext(null); |
||||
} |
||||
|
||||
/** |
||||
* Method: addFactory(@NotNull T factory) |
||||
*/ |
||||
@Test |
||||
public void testAddFactory() throws Exception { |
||||
RepositoryFactoryProvider factory = EasyMock.createMock(RepositoryFactoryProvider.class); |
||||
EasyMock.expect(factory.getIdentity()).andReturn("MockRF").anyTimes(); |
||||
|
||||
EasyMock.replay(factory); |
||||
|
||||
Assert.assertNull(ResourceModuleContext.getFactory("MockRF")); |
||||
|
||||
ResourceModuleKit.addFactory(factory); |
||||
|
||||
Assert.assertNotNull(ResourceModuleContext.getFactory("MockRF")); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Method: addFactory(@NotNull T factory) |
||||
*/ |
||||
@Test |
||||
public void testRemoveFactory() throws Exception { |
||||
RepositoryFactoryProvider factory = EasyMock.createMock(RepositoryFactoryProvider.class); |
||||
EasyMock.expect(factory.getIdentity()).andReturn("MockRF").anyTimes(); |
||||
|
||||
EasyMock.replay(factory); |
||||
|
||||
Assert.assertNull(ResourceModuleContext.getFactory("MockRF")); |
||||
|
||||
ResourceModuleKit.addFactory(factory); |
||||
|
||||
Assert.assertNotNull(ResourceModuleContext.getFactory("MockRF")); |
||||
|
||||
ResourceModuleKit.removeFactory(factory); |
||||
|
||||
Assert.assertNull(ResourceModuleContext.getFactory("MockRF")); |
||||
} |
||||
} |
Loading…
Reference in new issue