package com.opensymphony.xwork2; import com.opensymphony.xwork2.config.Configuration; import com.opensymphony.xwork2.config.ConfigurationException; import com.opensymphony.xwork2.config.ConfigurationManager; import com.opensymphony.xwork2.config.ConfigurationProvider; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.ContainerBuilder; import com.opensymphony.xwork2.inject.Context; import com.opensymphony.xwork2.inject.Factory; import com.opensymphony.xwork2.inject.Scope; import com.opensymphony.xwork2.test.StubConfigurationProvider; import com.opensymphony.xwork2.util.XWorkTestCaseHelper; import com.opensymphony.xwork2.util.location.LocatableProperties; import org.junit.After; import org.junit.Before; public abstract class XWorkJUnit4TestCase { protected ConfigurationManager configurationManager; protected Configuration configuration; protected Container container; protected ActionProxyFactory actionProxyFactory; @Before public void setUp() throws Exception { configurationManager = XWorkTestCaseHelper.setUp(); configuration = configurationManager.getConfiguration(); container = configuration.getContainer(); actionProxyFactory = container.getInstance(ActionProxyFactory.class); } @After public void tearDown() throws Exception { XWorkTestCaseHelper.tearDown(configurationManager); configurationManager = null; configuration = null; container = null; actionProxyFactory = null; } protected void loadConfigurationProviders(ConfigurationProvider... providers) { configurationManager = XWorkTestCaseHelper.loadConfigurationProviders(configurationManager, providers); configuration = configurationManager.getConfiguration(); container = configuration.getContainer(); actionProxyFactory = container.getInstance(ActionProxyFactory.class); } protected void loadButAdd(final Class<?> type, final Object impl) { loadButAdd(type, Container.DEFAULT_NAME, impl); } protected void loadButAdd(final Class<?> type, final String name, final Object impl) { loadConfigurationProviders(new StubConfigurationProvider() { @Override public void register(ContainerBuilder builder, LocatableProperties props) throws ConfigurationException { builder.factory(type, name, new Factory() { public Object create(Context context) throws Exception { return impl; } }, Scope.SINGLETON); } }); } }