package com.opensymphony.xwork2;
import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
import java.util.HashMap;
import java.util.Map;
/**
* Contribed by: Ruben Inoto
*/
public class ProxyInvocationTest extends XWorkTestCase {
/**
* Sets a ProxyObjectFactory as ObjectFactory (so the FooAction will always be retrieved
* as a FooProxy), and it tries to call invokeAction on the TestActionInvocation.
*
* It should fail, because the Method got from the action (actually a FooProxy)
* will be executed on the InvocationHandler of the action (so, in the action itself).
*/
public void testProxyInvocation() throws Exception {
ActionProxy proxy = actionProxyFactory
.createActionProxy("", "ProxyInvocation", null, createDummyContext());
ActionInvocation invocation = proxy.getInvocation();
String result = invocation.invokeActionOnly();
assertEquals("proxyResult", result);
}
/**
* Needed for the creation of the action proxy
*/
private Map<String, Object> createDummyContext() {
Map<String, Object> params = new HashMap<>();
params.put("blah", "this is blah");
Map<String, Object> extraContext = new HashMap<>();
extraContext.put(ActionContext.PARAMETERS, params);
return extraContext;
}
@Override
protected void setUp() throws Exception {
super.setUp();
// ensure we're using the default configuration, not simple config
XmlConfigurationProvider configurationProvider = new XmlConfigurationProvider("xwork-proxyinvoke.xml");
container.inject(configurationProvider);
loadConfigurationProviders(configurationProvider);
}
}