📄 testabstractmoduledescriptor.java
字号:
/*
* Created by IntelliJ IDEA.
* User: Mike
* Date: Jul 29, 2004
* Time: 4:28:18 PM
*/
package com.opensymphony.tonic.descriptors;
import junit.framework.TestCase;
import com.opensymphony.tonic.ModuleDescriptor;
import com.opensymphony.tonic.PluginParseException;
import com.opensymphony.tonic.Plugin;
import com.opensymphony.tonic.util.ClassLoaderUtils;
import com.opensymphony.tonic.impl.StaticPlugin;
import com.opensymphony.tonic.mock.MockMineral;
import org.dom4j.DocumentHelper;
import org.dom4j.DocumentException;
import org.dom4j.Element;
public class TestAbstractModuleDescriptor extends TestCase
{
public void testAssertModuleClassImplements() throws DocumentException, PluginParseException
{
ModuleDescriptor descriptor = new AbstractModuleDescriptor() {
public void init(Plugin plugin, Element element) throws PluginParseException
{
super.init(plugin, element);
assertModuleClassImplements(MockMineral.class);
}
public Object getModule()
{
return null;
}
};
try
{
descriptor.init(new StaticPlugin(), DocumentHelper.parseText("<animal name=\"bear\" class=\"com.opensymphony.tonic.mock.MockBear\" />").getRootElement());
fail("Should have blown up.");
}
catch (PluginParseException e)
{
assertEquals("Given module class: com.opensymphony.tonic.mock.MockBear does not implement com.opensymphony.tonic.mock.MockMineral", e.getMessage());
}
// now succeed
descriptor.init(new StaticPlugin(), DocumentHelper.parseText("<animal name=\"bear\" class=\"com.opensymphony.tonic.mock.MockGold\" />").getRootElement());
}
public void testSingletonness() throws DocumentException, PluginParseException
{
ModuleDescriptor descriptor = makeSingletonDescriptor();
// try a default descriptor with no singleton="" element. Should _be_ a singleton
descriptor.init(new StaticPlugin(), DocumentHelper.parseText("<animal name=\"bear\" class=\"com.opensymphony.tonic.mock.MockBear\" />").getRootElement());
Object module = descriptor.getModule();
assertTrue(module == descriptor.getModule());
// now try a default descriptor with singleton="true" element. Should still be a singleton
descriptor = makeSingletonDescriptor();
descriptor.init(new StaticPlugin(), DocumentHelper.parseText("<animal name=\"bear\" class=\"com.opensymphony.tonic.mock.MockBear\" singleton=\"true\" />").getRootElement());
module = descriptor.getModule();
assertTrue(module == descriptor.getModule());
// now try reiniting as a non-singleton
descriptor = makeSingletonDescriptor();
descriptor.init(new StaticPlugin(), DocumentHelper.parseText("<animal name=\"bear\" class=\"com.opensymphony.tonic.mock.MockBear\" singleton=\"false\" />").getRootElement());
module = descriptor.getModule();
assertTrue(module != descriptor.getModule());
}
private ModuleDescriptor makeSingletonDescriptor()
{
ModuleDescriptor descriptor = new AbstractModuleDescriptor() {
Object module;
public void init(Plugin plugin, Element element) throws PluginParseException
{
super.init(plugin, element);
}
public Object getModule()
{
try
{
if (!isSingleton())
{
return ClassLoaderUtils.loadClass(getModuleClass().getName(), TestAbstractModuleDescriptor.class).newInstance();
}
else
{
if (module == null)
{
module = ClassLoaderUtils.loadClass(getModuleClass().getName(), TestAbstractModuleDescriptor.class).newInstance();
}
return module;
}
}
catch (Exception e)
{
throw new RuntimeException("What happened Dave?");
}
}
};
return descriptor;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -