mirror of
https://github.com/apache/struts.git
synced 2026-08-11 01:27:14 +00:00
Adding back the deleted integration code
git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@449449 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -0,0 +1,134 @@
|
||||
package org.apache.struts2.legacy;
|
||||
|
||||
import junit.framework.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import org.apache.commons.beanutils.*;
|
||||
|
||||
import ognl.*;
|
||||
|
||||
/** Description of the Class */
|
||||
public class DynaBeanPropertyAccessorTest extends TestCase {
|
||||
|
||||
protected DynaBean bean = null;
|
||||
|
||||
public DynaBeanPropertyAccessorTest(String name) throws Exception {
|
||||
super(name);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String args[]) {
|
||||
junit.textui.TestRunner.run(DynaBeanPropertyAccessorTest.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up instance variables required by this test case.
|
||||
*/
|
||||
public void setUp() throws Exception {
|
||||
|
||||
// Instantiate a new DynaBean instance
|
||||
DynaClass dynaClass = createDynaClass();
|
||||
bean = dynaClass.newInstance();
|
||||
|
||||
// Initialize the DynaBean's property values (like TestBean)
|
||||
bean.set("booleanProperty", new Boolean(true));
|
||||
bean.set("booleanSecond", new Boolean(true));
|
||||
bean.set("doubleProperty", new Double(321.0));
|
||||
bean.set("floatProperty", new Float((float) 123.0));
|
||||
int intArray[] = { 0, 10, 20, 30, 40 };
|
||||
bean.set("intArray", intArray);
|
||||
int intIndexed[] = { 0, 10, 20, 30, 40 };
|
||||
bean.set("intIndexed", intIndexed);
|
||||
bean.set("intProperty", new Integer(123));
|
||||
List listIndexed = new ArrayList();
|
||||
listIndexed.add("String 0");
|
||||
listIndexed.add("String 1");
|
||||
listIndexed.add("String 2");
|
||||
listIndexed.add("String 3");
|
||||
listIndexed.add("String 4");
|
||||
bean.set("listIndexed", listIndexed);
|
||||
bean.set("longProperty", new Long((long) 321));
|
||||
HashMap mappedProperty = new HashMap();
|
||||
mappedProperty.put("First Key", "First Value");
|
||||
mappedProperty.put("Second Key", "Second Value");
|
||||
bean.set("mappedProperty", mappedProperty);
|
||||
HashMap mappedIntProperty = new HashMap();
|
||||
mappedIntProperty.put("One", new Integer(1));
|
||||
mappedIntProperty.put("Two", new Integer(2));
|
||||
bean.set("mappedIntProperty", mappedIntProperty);
|
||||
// Property "nullProperty" is not initialized, so it should return null
|
||||
bean.set("shortProperty", new Short((short) 987));
|
||||
String stringArray[] =
|
||||
{ "String 0", "String 1", "String 2", "String 3", "String 4" };
|
||||
bean.set("stringArray", stringArray);
|
||||
String stringIndexed[] =
|
||||
{ "String 0", "String 1", "String 2", "String 3", "String 4" };
|
||||
bean.set("stringIndexed", stringIndexed);
|
||||
bean.set("stringProperty", "This is a string");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void testGetProperty() throws Exception {
|
||||
|
||||
DynaBeanPropertyAccessor trans = new DynaBeanPropertyAccessor();
|
||||
assertTrue("This is a string".equals(trans.getProperty(null, bean, "stringProperty")));
|
||||
assertTrue(trans.getProperty(null, bean, "listIndexed") instanceof List);
|
||||
|
||||
}
|
||||
|
||||
public void testSetProperty() throws Exception {
|
||||
|
||||
DynaBeanPropertyAccessor trans = new DynaBeanPropertyAccessor();
|
||||
trans.setProperty(null, bean, "stringProperty", "bob");
|
||||
assertTrue("bob".equals(trans.getProperty(null, bean, "stringProperty")));
|
||||
|
||||
}
|
||||
|
||||
public void testOGNL() throws Exception {
|
||||
|
||||
OgnlRuntime.setPropertyAccessor(DynaBean.class, new DynaBeanPropertyAccessor());
|
||||
|
||||
assertTrue("This is a string".equals(Ognl.getValue("stringProperty", bean)));
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create and return a <code>DynaClass</code> instance for our test
|
||||
* <code>DynaBean</code>.
|
||||
*/
|
||||
protected DynaClass createDynaClass() {
|
||||
|
||||
int intArray[] = new int[0];
|
||||
String stringArray[] = new String[0];
|
||||
|
||||
DynaClass dynaClass = new BasicDynaClass
|
||||
("TestDynaClass", null,
|
||||
new DynaProperty[]{
|
||||
new DynaProperty("booleanProperty", Boolean.TYPE),
|
||||
new DynaProperty("booleanSecond", Boolean.TYPE),
|
||||
new DynaProperty("doubleProperty", Double.TYPE),
|
||||
new DynaProperty("floatProperty", Float.TYPE),
|
||||
new DynaProperty("intArray", intArray.getClass()),
|
||||
new DynaProperty("intIndexed", intArray.getClass()),
|
||||
new DynaProperty("intProperty", Integer.TYPE),
|
||||
new DynaProperty("listIndexed", List.class),
|
||||
new DynaProperty("longProperty", Long.TYPE),
|
||||
new DynaProperty("mappedProperty", Map.class),
|
||||
new DynaProperty("mappedIntProperty", Map.class),
|
||||
new DynaProperty("nullProperty", String.class),
|
||||
new DynaProperty("shortProperty", Short.TYPE),
|
||||
new DynaProperty("stringArray", stringArray.getClass()),
|
||||
new DynaProperty("stringIndexed", stringArray.getClass()),
|
||||
new DynaProperty("stringProperty", String.class),
|
||||
});
|
||||
return (dynaClass);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
package org.apache.struts2.legacy;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.struts.action.ActionErrors;
|
||||
import org.apache.struts.action.ActionForward;
|
||||
import org.apache.struts.action.ActionMapping;
|
||||
import org.apache.struts.action.ActionMessage;
|
||||
import org.apache.struts.config.ActionConfig;
|
||||
import org.apache.struts.config.ExceptionConfig;
|
||||
import org.apache.struts.config.ForwardConfig;
|
||||
import org.apache.struts.config.ModuleConfig;
|
||||
import org.apache.struts2.config.StrutsXmlConfigurationProvider;
|
||||
|
||||
import com.opensymphony.xwork2.ActionSupport;
|
||||
import com.opensymphony.xwork2.config.Configuration;
|
||||
import com.opensymphony.xwork2.config.ConfigurationManager;
|
||||
import com.opensymphony.xwork2.config.ConfigurationProvider;
|
||||
import com.opensymphony.xwork2.config.entities.ExceptionMappingConfig;
|
||||
import com.opensymphony.xwork2.config.entities.PackageConfig;
|
||||
import com.opensymphony.xwork2.config.entities.ResultConfig;
|
||||
|
||||
/**
|
||||
* Test of StrutsFactory, which creates Struts 1.x wrappers around XWork config objects.
|
||||
*/
|
||||
public class StrutsFactoryTest extends TestCase {
|
||||
|
||||
private static final String PACKAGE_NAME = "org/apache/struts2/legacy";
|
||||
|
||||
protected StrutsFactory factory = null;
|
||||
protected Configuration config;
|
||||
|
||||
public StrutsFactoryTest(String name) throws Exception {
|
||||
super(name);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String args[]) {
|
||||
junit.textui.TestRunner.run(StrutsFactoryTest.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up instance variables required by this test case.
|
||||
*/
|
||||
public void setUp() {
|
||||
ConfigurationManager manager = new ConfigurationManager();
|
||||
ConfigurationProvider provider = new StrutsXmlConfigurationProvider(PACKAGE_NAME + "/test-struts-factory.xml", true);
|
||||
manager.addConfigurationProvider(provider);
|
||||
config = manager.getConfiguration();
|
||||
factory = new StrutsFactory(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the creation of a Struts 1.x ModuleConfig wrapper around an XWork PackageConfig.
|
||||
* The PackageConfig is loaded from test-struts-factory.xml.
|
||||
*/
|
||||
public void testCreateModuleConfig() {
|
||||
ModuleConfig moduleConfig = factory.createModuleConfig(PACKAGE_NAME);
|
||||
assertNotNull(moduleConfig);
|
||||
|
||||
assertEquals("/"+PACKAGE_NAME, moduleConfig.getPrefix());
|
||||
|
||||
ActionConfig actionConfig = moduleConfig.findActionConfig("/action1");
|
||||
assertNotNull(actionConfig);
|
||||
assertEquals("/action1", actionConfig.getPath());
|
||||
|
||||
ActionConfig[] actionConfigs = moduleConfig.findActionConfigs();
|
||||
assertNotNull(actionConfigs);
|
||||
assertEquals(2, actionConfigs.length);
|
||||
|
||||
ExceptionConfig exceptionConfig = moduleConfig.findExceptionConfig(Exception.class.getName());
|
||||
assertNotNull(exceptionConfig);
|
||||
assertEquals(Exception.class.getName(), exceptionConfig.getType());
|
||||
|
||||
ExceptionConfig[] exceptionConfigs = moduleConfig.findExceptionConfigs();
|
||||
assertNotNull(exceptionConfigs);
|
||||
assertEquals(1, exceptionConfigs.length);
|
||||
|
||||
ForwardConfig fwdConfig = moduleConfig.findForwardConfig("globalResult");
|
||||
assertNotNull(fwdConfig);
|
||||
assertEquals("globalResult", fwdConfig.getName());
|
||||
|
||||
// These methods are currently not implemented -- replace as functionality is added.
|
||||
assertNYI(moduleConfig, "getControllerConfig", null);
|
||||
assertNYI(moduleConfig, "getActionFormBeanClass", null);
|
||||
assertNYI(moduleConfig, "getActionMappingClass", null);
|
||||
assertNYI(moduleConfig, "getActionForwardClass", null);
|
||||
assertNYI(moduleConfig, "findException", Class.class);
|
||||
assertNYI(moduleConfig, "findFormBeanConfig", String.class);
|
||||
assertNYI(moduleConfig, "findFormBeanConfigs", null);
|
||||
assertNYI(moduleConfig, "findMessageResourcesConfig", String.class);
|
||||
assertNYI(moduleConfig, "findMessageResourcesConfigs", null);
|
||||
assertNYI(moduleConfig, "findPlugInConfigs", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the creation of a Struts 1.x ActionMapping wrapper around an XWork ActionConfig.
|
||||
* The ActionConfig is loaded from test-struts-factory.xml.
|
||||
*/
|
||||
public void testCreateActionMapping() {
|
||||
PackageConfig packageConfig = config.getPackageConfig(PACKAGE_NAME);
|
||||
com.opensymphony.xwork2.config.entities.ActionConfig actionConfig =
|
||||
(com.opensymphony.xwork2.config.entities.ActionConfig) packageConfig.getActionConfigs().get("action1");
|
||||
ActionMapping mapping = factory.createActionMapping(actionConfig);
|
||||
assertNotNull(mapping);
|
||||
|
||||
assertNotNull(mapping.findForward("result1"));
|
||||
assertNotNull(mapping.findForwardConfig("result2"));
|
||||
|
||||
ForwardConfig[] configs = mapping.findForwardConfigs();
|
||||
assertNotNull(configs);
|
||||
assertEquals(2, configs.length);
|
||||
|
||||
String[] forwards = mapping.findForwards();
|
||||
assertNotNull(forwards);
|
||||
assertEquals(2, forwards.length);
|
||||
|
||||
ActionForward fwd = mapping.findForward("result1");
|
||||
assertNotNull(fwd);
|
||||
assertEquals("result1", fwd.getName());
|
||||
|
||||
assertNotNull(mapping.findException(NullPointerException.class));
|
||||
assertNotNull(mapping.findExceptionConfig("java.lang.IllegalStateException"));
|
||||
|
||||
ExceptionConfig[] exceptionConfigs = mapping.findExceptionConfigs();
|
||||
assertNotNull(exceptionConfigs);
|
||||
assertEquals(3, exceptionConfigs.length);
|
||||
|
||||
ModuleConfig moduleConfig = mapping.getModuleConfig();
|
||||
assertNotNull(moduleConfig);
|
||||
|
||||
// For now, the path will be null if the ActionMapping was created on its own (as opposed to from a
|
||||
// WrapperModuleConfig, which knows the path).
|
||||
assertNull(mapping.getPath());
|
||||
|
||||
// These methods are currently not implemented -- replace as functionality is added.
|
||||
assertNYI(mapping, "getInputForward", null);
|
||||
assertNYI(mapping, "getAttribute", null);
|
||||
assertNYI(mapping, "getForward", null);
|
||||
assertNYI(mapping, "getInclude", null);
|
||||
assertNYI(mapping, "getInput", null);
|
||||
assertNYI(mapping, "getMultipartClass", null);
|
||||
assertNYI(mapping, "getName", null);
|
||||
assertNYI(mapping, "getParameter", null);
|
||||
assertNYI(mapping, "getPrefix", null);
|
||||
assertNYI(mapping, "getRoles", null);
|
||||
assertNYI(mapping, "getRoleNames", null);
|
||||
assertNYI(mapping, "getScope", null);
|
||||
assertNYI(mapping, "getSuffix", null);
|
||||
assertNYI(mapping, "getType", null);
|
||||
assertNYI(mapping, "getUnknown", null);
|
||||
assertNYI(mapping, "getValidate", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the creation of a Struts 1.x ActionForward wrapper around an XWork ResultConfig.
|
||||
* The ResultConfig is loaded from test-struts-factory.xml.
|
||||
*/
|
||||
public void testCreateActionForward() {
|
||||
PackageConfig packageConfig = config.getPackageConfig(PACKAGE_NAME);
|
||||
ResultConfig resultConfig = (ResultConfig) packageConfig.getGlobalResultConfigs().get("globalResult");
|
||||
ActionForward fwd = factory.createActionForward(resultConfig);
|
||||
assertNotNull(fwd);
|
||||
assertEquals("globalResult", fwd.getName());
|
||||
|
||||
// These methods are currently not implemented -- replace as functionality is added.
|
||||
assertNYI(fwd, "getPath", null);
|
||||
assertNYI(fwd, "getModule", null);
|
||||
assertNYI(fwd, "getRedirect", null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the creation of a Struts 1.x ExceptionConfig wrapper around an XWork ExceptionHandlerConfig.
|
||||
* The ExceptionConfig is loaded from test-struts-factory.xml.
|
||||
*/
|
||||
public void testCreateExceptionConfig() {
|
||||
PackageConfig packageConfig = config.getPackageConfig(PACKAGE_NAME);
|
||||
ExceptionMappingConfig cfg = (ExceptionMappingConfig) packageConfig.getGlobalExceptionMappingConfigs().get(0);
|
||||
ExceptionConfig exceptionConfig = factory.createExceptionConfig(cfg);
|
||||
assertNotNull(exceptionConfig);
|
||||
assertEquals(Exception.class.getName(), exceptionConfig.getType());
|
||||
|
||||
assertNYI(exceptionConfig, "getBundle", null);
|
||||
assertNYI(exceptionConfig, "getHandler", null);
|
||||
assertNYI(exceptionConfig, "getKey", null);
|
||||
assertNYI(exceptionConfig, "getPath", null);
|
||||
assertNYI(exceptionConfig, "getScope", null);
|
||||
}
|
||||
|
||||
public void testConvertErrors() throws Exception {
|
||||
|
||||
ActionMessage err1 = new ActionMessage("error1");
|
||||
ActionMessage err2 = new ActionMessage("error2", new Integer(1));
|
||||
ActionErrors errors = new ActionErrors();
|
||||
errors.add(errors.GLOBAL_MESSAGE, err1);
|
||||
errors.add("foo", err2);
|
||||
|
||||
ActionSupport action = new ActionSupport();
|
||||
factory.convertErrors(errors, action);
|
||||
|
||||
assertTrue(1 == action.getActionErrors().size());
|
||||
assertTrue(1 == action.getFieldErrors().size());
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that the given method throws UnsupportedOperationException.
|
||||
*/
|
||||
private void assertNYI(Object o, String methodName, Class argType) {
|
||||
try {
|
||||
Class[] argTypes = argType != null ? new Class[]{argType} : null;
|
||||
|
||||
Object[] args = null;
|
||||
if (argType != null) {
|
||||
if (Class.class == argType) {
|
||||
args = new Object[]{argType};
|
||||
} else {
|
||||
args = new Object[]{argType.newInstance()};
|
||||
}
|
||||
}
|
||||
o.getClass().getMethod(methodName, argTypes).invoke(o, args);
|
||||
} catch (InvocationTargetException e) {
|
||||
Throwable cause = e.getCause();
|
||||
assertEquals(cause.getMessage(), UnsupportedOperationException.class, cause.getClass());
|
||||
|
||||
// OK -- it's what we expected
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
fail(e.getClass().getName() + ": " + e.getMessage());
|
||||
}
|
||||
|
||||
fail("Expected UnsupportedOperationException for " + methodName + "() on " + o.getClass().getName());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user