This is an automated email from the ASF dual-hosted git repository. kusal pushed a commit to branch WW-5411-delete-deprecated-1 in repository https://gitbox.apache.org/repos/asf/struts.git
commit ead66f2f75402d05864e9b816fabccd37c6a44bf Author: Kusal Kithul-Godage <g...@kusal.io> AuthorDate: Mon Jul 8 17:19:47 2024 +1000 WW-5411 Delete deprecated methods from cache factories and OgnlUtil constructor --- .../ognl/DefaultOgnlBeanInfoCacheFactory.java | 7 --- .../xwork2/ognl/DefaultOgnlCacheFactory.java | 49 +++------------ .../ognl/DefaultOgnlExpressionCacheFactory.java | 7 --- .../opensymphony/xwork2/ognl/OgnlCacheFactory.java | 24 -------- .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 13 ---- .../xwork2/DefaultActionInvocationTest.java | 14 +---- .../com/opensymphony/xwork2/ognl/OgnlUtilTest.java | 44 ++++++++----- .../struts2/rest/RestActionInvocationTest.java | 72 ++++++++++++---------- 8 files changed, 78 insertions(+), 152 deletions(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlBeanInfoCacheFactory.java b/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlBeanInfoCacheFactory.java index 8f7414a69..3513e6a81 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlBeanInfoCacheFactory.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlBeanInfoCacheFactory.java @@ -30,13 +30,6 @@ import org.apache.struts2.StrutsConstants; public class DefaultOgnlBeanInfoCacheFactory<Key, Value> extends DefaultOgnlCacheFactory<Key, Value> implements BeanInfoCacheFactory<Key, Value> { - /** - * @deprecated since 6.4.0, use {@link #DefaultOgnlBeanInfoCacheFactory(String, String)} - */ - @Deprecated - public DefaultOgnlBeanInfoCacheFactory() { - } - @Inject public DefaultOgnlBeanInfoCacheFactory(@Inject(value = StrutsConstants.STRUTS_OGNL_BEANINFO_CACHE_MAXSIZE) String cacheMaxSize, @Inject(value = StrutsConstants.STRUTS_OGNL_BEANINFO_CACHE_TYPE) String defaultCacheType) { diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlCacheFactory.java b/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlCacheFactory.java index e503f4998..889591b69 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlCacheFactory.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlCacheFactory.java @@ -15,8 +15,6 @@ */ package com.opensymphony.xwork2.ognl; -import org.apache.commons.lang3.BooleanUtils; - /** * <p>Default OGNL Cache factory implementation.</p> * @@ -30,18 +28,10 @@ public class DefaultOgnlCacheFactory<Key, Value> implements OgnlCacheFactory<Key private static final int DEFAULT_INIT_CAPACITY = 16; private static final float DEFAULT_LOAD_FACTOR = 0.75f; - private CacheType defaultCacheType; - private int cacheMaxSize; + private final CacheType defaultCacheType; + private final int cacheMaxSize; private final int initialCapacity; - /** - * @deprecated since 6.4.0, use {@link #DefaultOgnlCacheFactory(int, CacheType)} - */ - @Deprecated - public DefaultOgnlCacheFactory() { - this(10000, CacheType.BASIC); - } - public DefaultOgnlCacheFactory(int cacheMaxSize, CacheType defaultCacheType) { this(cacheMaxSize, defaultCacheType, DEFAULT_INIT_CAPACITY); } @@ -62,16 +52,11 @@ public class DefaultOgnlCacheFactory<Key, Value> implements OgnlCacheFactory<Key int initialCapacity, float loadFactor, CacheType cacheType) { - switch (cacheType) { - case BASIC: - return new OgnlDefaultCache<>(evictionLimit, initialCapacity, loadFactor); - case LRU: - return new OgnlLRUCache<>(evictionLimit, initialCapacity, loadFactor); - case WTLFU: - return new OgnlCaffeineCache<>(evictionLimit, initialCapacity); - default: - throw new IllegalArgumentException("Unknown cache type: " + cacheType); - } + return switch (cacheType) { + case BASIC -> new OgnlDefaultCache<>(evictionLimit, initialCapacity, loadFactor); + case LRU -> new OgnlLRUCache<>(evictionLimit, initialCapacity, loadFactor); + case WTLFU -> new OgnlCaffeineCache<>(evictionLimit, initialCapacity); + }; } @Override @@ -79,28 +64,8 @@ public class DefaultOgnlCacheFactory<Key, Value> implements OgnlCacheFactory<Key return cacheMaxSize; } - /** - * @deprecated since 6.4.0 - */ - @Deprecated - protected void setCacheMaxSize(String maxSize) { - cacheMaxSize = Integer.parseInt(maxSize); - } - @Override public CacheType getDefaultCacheType() { return defaultCacheType; } - - /** - * No effect when {@code useLRUMode} is {@code false} - * - * @deprecated since 6.4.0 - */ - @Deprecated - protected void setUseLRUCache(String useLRUMode) { - if (BooleanUtils.toBoolean(useLRUMode)) { - defaultCacheType = CacheType.LRU; - } - } } diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlExpressionCacheFactory.java b/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlExpressionCacheFactory.java index fadc8b3a5..9a8555f91 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlExpressionCacheFactory.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/DefaultOgnlExpressionCacheFactory.java @@ -30,13 +30,6 @@ import org.apache.struts2.StrutsConstants; public class DefaultOgnlExpressionCacheFactory<Key, Value> extends DefaultOgnlCacheFactory<Key, Value> implements ExpressionCacheFactory<Key, Value> { - /** - * @deprecated since 6.4.0, use {@link #DefaultOgnlExpressionCacheFactory(String, String)} - */ - @Deprecated - public DefaultOgnlExpressionCacheFactory() { - } - @Inject public DefaultOgnlExpressionCacheFactory(@Inject(value = StrutsConstants.STRUTS_OGNL_EXPRESSION_CACHE_MAXSIZE) String cacheMaxSize, @Inject(value = StrutsConstants.STRUTS_OGNL_EXPRESSION_CACHE_TYPE) String defaultCacheType) { diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlCacheFactory.java b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlCacheFactory.java index 874bf4a2e..708c6728d 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlCacheFactory.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlCacheFactory.java @@ -25,22 +25,6 @@ package com.opensymphony.xwork2.ognl; public interface OgnlCacheFactory<Key, Value> { OgnlCache<Key, Value> buildOgnlCache(); - /** - * Note that if {@code lruCache} is {@code false}, the cache type could still be LRU if the default cache type is - * configured as such. - * @deprecated since 6.4.0, use {@link #buildOgnlCache(int, int, float, CacheType)} - */ - @Deprecated - default OgnlCache<Key, Value> buildOgnlCache(int evictionLimit, - int initialCapacity, - float loadFactor, - boolean lruCache) { - return buildOgnlCache(evictionLimit, - initialCapacity, - loadFactor, - lruCache ? CacheType.LRU : getDefaultCacheType()); - } - /** * @param evictionLimit maximum capacity of the cache where applicable for cache type chosen * @param initialCapacity initial capacity of the cache where applicable for cache type chosen @@ -52,14 +36,6 @@ public interface OgnlCacheFactory<Key, Value> { int getCacheMaxSize(); - /** - * @deprecated since 6.4.0 - */ - @Deprecated - default boolean getUseLRUCache() { - return CacheType.LRU.equals(getDefaultCacheType()); - } - CacheType getDefaultCacheType(); enum CacheType { diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java index 78cada96d..3d856a74d 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java @@ -36,7 +36,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import org.apache.struts2.ognl.OgnlGuard; -import org.apache.struts2.ognl.StrutsOgnlGuard; import java.beans.BeanInfo; import java.beans.IntrospectionException; @@ -78,18 +77,6 @@ public class OgnlUtil { private Container container; - /** - * Construct a new OgnlUtil instance for use with the framework - * - * @deprecated since 6.0.0. Use {@link #OgnlUtil(ExpressionCacheFactory, BeanInfoCacheFactory, OgnlGuard) instead. - */ - @Deprecated - public OgnlUtil() { - this(new DefaultOgnlExpressionCacheFactory<>(), - new DefaultOgnlBeanInfoCacheFactory<>(), - new StrutsOgnlGuard()); - } - /** * Construct a new OgnlUtil instance for use with the framework, with optional cache factories for OGNL Expression * and BeanInfo caches. diff --git a/core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java b/core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java index e099a060a..bc5eb14f9 100644 --- a/core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java @@ -26,14 +26,10 @@ import com.opensymphony.xwork2.interceptor.Interceptor; import com.opensymphony.xwork2.mock.MockActionProxy; import com.opensymphony.xwork2.mock.MockInterceptor; import com.opensymphony.xwork2.mock.MockResult; -import com.opensymphony.xwork2.ognl.DefaultOgnlBeanInfoCacheFactory; -import com.opensymphony.xwork2.ognl.DefaultOgnlExpressionCacheFactory; -import com.opensymphony.xwork2.ognl.OgnlUtil; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; import org.apache.struts2.config.StrutsXmlConfigurationProvider; import org.apache.struts2.dispatcher.HttpParameters; -import org.apache.struts2.ognl.StrutsOgnlGuard; import java.util.ArrayList; import java.util.HashMap; @@ -42,6 +38,8 @@ import java.util.concurrent.Callable; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; +import static com.opensymphony.xwork2.ognl.OgnlUtilTest.createOgnlUtil; + /** * A partial test of DefaultActionInvocation. @@ -531,14 +529,6 @@ public class DefaultActionInvocationTest extends XWorkTestCase { loadConfigurationProviders(configurationProvider); } - private OgnlUtil createOgnlUtil() { - return new OgnlUtil( - new DefaultOgnlExpressionCacheFactory<>(), - new DefaultOgnlBeanInfoCacheFactory<>(), - new StrutsOgnlGuard() - ); - } - private static class SimpleActionEventListener implements ActionEventListener { private final String name; diff --git a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java index 27a0d0f33..255677d00 100644 --- a/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java +++ b/core/src/test/java/com/opensymphony/xwork2/ognl/OgnlUtilTest.java @@ -63,6 +63,8 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import static com.opensymphony.xwork2.ognl.OgnlCacheFactory.CacheType.BASIC; +import static com.opensymphony.xwork2.ognl.OgnlCacheFactory.CacheType.LRU; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertThrows; @@ -1343,13 +1345,13 @@ public class OgnlUtilTest extends XWorkTestCase { public void testDefaultOgnlUtilAlternateConstructorArguments() { // Code coverage test for the OgnlUtil alternate constructor method, and verify expected behaviour. try { - OgnlUtil basicOgnlUtil = new OgnlUtil(new DefaultOgnlExpressionCacheFactory<>(), null, null); + new OgnlUtil(createDefaultOgnlExpressionCacheFactory(), null, null); fail("null beanInfoCacheFactory should result in exception"); } catch (NullPointerException iaex) { // expected result } try { - OgnlUtil basicOgnlUtil = new OgnlUtil(null, new DefaultOgnlBeanInfoCacheFactory<>(), null); + new OgnlUtil(null, createDefaultOgnlBeanInfoCacheFactory(), null); fail("null expressionCacheFactory should result in exception"); } catch (NullPointerException iaex) { // expected result @@ -1614,23 +1616,24 @@ public class OgnlUtilTest extends XWorkTestCase { */ public void testOgnlDefaultCacheFactoryCoverage() { OgnlCache<String, Object> ognlCache; - DefaultOgnlCacheFactory defaultOgnlCacheFactory = new DefaultOgnlCacheFactory<String, Object>(); + // Normal cache - defaultOgnlCacheFactory.setCacheMaxSize("12"); - defaultOgnlCacheFactory.setUseLRUCache("false"); + DefaultOgnlCacheFactory<String, Object> defaultOgnlCacheFactory = new DefaultOgnlCacheFactory<>(12, BASIC); ognlCache = defaultOgnlCacheFactory.buildOgnlCache(); assertNotNull("No param build method result null ?", ognlCache); assertEquals("Eviction limit for cache mismatches limit for factory ?", 12, ognlCache.getEvictionLimit()); - ognlCache = defaultOgnlCacheFactory.buildOgnlCache(6, 6, 0.75f, false); + + ognlCache = defaultOgnlCacheFactory.buildOgnlCache(6, 6, 0.75f, BASIC); assertNotNull("No param build method result null ?", ognlCache); assertEquals("Eviction limit for cache mismatches limit for factory ?", 6, ognlCache.getEvictionLimit()); + // LRU cache - defaultOgnlCacheFactory.setCacheMaxSize("30"); - defaultOgnlCacheFactory.setUseLRUCache("true"); + defaultOgnlCacheFactory = new DefaultOgnlCacheFactory<>(30, LRU); ognlCache = defaultOgnlCacheFactory.buildOgnlCache(); assertNotNull("No param build method result null ?", ognlCache); assertEquals("Eviction limit for cache mismatches limit for factory ?", 30, ognlCache.getEvictionLimit()); - ognlCache = defaultOgnlCacheFactory.buildOgnlCache(15, 15, 0.75f, true); + + ognlCache = defaultOgnlCacheFactory.buildOgnlCache(15, 15, 0.75f, LRU); assertNotNull("No param build method result null ?", ognlCache); assertEquals("Eviction limit for cache mismatches limit for factory ?", 15, ognlCache.getEvictionLimit()); } @@ -1653,12 +1656,8 @@ public class OgnlUtilTest extends XWorkTestCase { */ private OgnlUtil generateOgnlUtilInstanceWithDefaultLRUCacheFactories() { final OgnlUtil result; - final DefaultOgnlExpressionCacheFactory<String, Object> expressionFactory = new DefaultOgnlExpressionCacheFactory<>(); - final DefaultOgnlBeanInfoCacheFactory<Class<?>, BeanInfo> beanInfoFactory = new DefaultOgnlBeanInfoCacheFactory<>(); - expressionFactory.setUseLRUCache("true"); - expressionFactory.setCacheMaxSize("25"); - beanInfoFactory.setUseLRUCache("true"); - beanInfoFactory.setCacheMaxSize("25"); + final DefaultOgnlExpressionCacheFactory<String, Object> expressionFactory = new DefaultOgnlExpressionCacheFactory<>(String.valueOf(25), LRU.toString()); + final DefaultOgnlBeanInfoCacheFactory<Class<?>, BeanInfo> beanInfoFactory = new DefaultOgnlBeanInfoCacheFactory<>(String.valueOf(25), LRU.toString()); result = new OgnlUtil(expressionFactory, beanInfoFactory, new StrutsOgnlGuard()); return result; } @@ -1806,4 +1805,19 @@ public class OgnlUtilTest extends XWorkTestCase { } } + public static OgnlUtil createOgnlUtil() { + return new OgnlUtil( + createDefaultOgnlExpressionCacheFactory(), + createDefaultOgnlBeanInfoCacheFactory(), + new StrutsOgnlGuard() + ); + } + + public static <K, V> DefaultOgnlExpressionCacheFactory<K, V> createDefaultOgnlExpressionCacheFactory() { + return new DefaultOgnlExpressionCacheFactory<>(String.valueOf(10_000), BASIC.toString()); + } + + public static <K, V> DefaultOgnlBeanInfoCacheFactory<K, V> createDefaultOgnlBeanInfoCacheFactory() { + return new DefaultOgnlBeanInfoCacheFactory<>(String.valueOf(10_000), BASIC.toString()); + } } diff --git a/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java b/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java index 9c5a7de64..b567801c7 100644 --- a/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java +++ b/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionInvocationTest.java @@ -28,20 +28,24 @@ import com.opensymphony.xwork2.config.entities.InterceptorMapping; import com.opensymphony.xwork2.config.entities.ResultConfig; import com.opensymphony.xwork2.mock.MockActionProxy; import com.opensymphony.xwork2.mock.MockInterceptor; +import com.opensymphony.xwork2.ognl.DefaultOgnlBeanInfoCacheFactory; +import com.opensymphony.xwork2.ognl.DefaultOgnlExpressionCacheFactory; import com.opensymphony.xwork2.ognl.OgnlUtil; import com.opensymphony.xwork2.util.XWorkTestCaseHelper; +import jakarta.servlet.http.HttpServletResponse; import junit.framework.TestCase; import org.apache.struts2.ServletActionContext; +import org.apache.struts2.ognl.StrutsOgnlGuard; import org.apache.struts2.result.HttpHeaderResult; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; -import jakarta.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.opensymphony.xwork2.ognl.OgnlCacheFactory.CacheType.BASIC; import static jakarta.servlet.http.HttpServletResponse.SC_NOT_MODIFIED; public class RestActionInvocationTest extends TestCase { @@ -53,7 +57,7 @@ public class RestActionInvocationTest extends TestCase { @Override protected void setUp() throws Exception { super.setUp(); - + restActionInvocation = new RestActionInvocationTester(); request = new MockHttpServletRequest(); response = new MockHttpServletResponse(); @@ -61,7 +65,7 @@ public class RestActionInvocationTest extends TestCase { ServletActionContext.setResponse(response); } - + /** * Test the correct action results: null, String, HttpHeaders, Result * @throws Exception @@ -71,12 +75,12 @@ public class RestActionInvocationTest extends TestCase { Object methodResult = "index"; ActionConfig actionConfig = restActionInvocation.getProxy().getConfig(); assertEquals("index", restActionInvocation.saveResult(actionConfig, methodResult)); - + setUp(); methodResult = new DefaultHttpHeaders("show"); assertEquals("show", restActionInvocation.saveResult(actionConfig, methodResult)); assertEquals(methodResult, restActionInvocation.httpHeaders); - + setUp(); methodResult = new HttpHeaderResult(HttpServletResponse.SC_ACCEPTED); assertEquals(null, restActionInvocation.saveResult(actionConfig, methodResult)); @@ -89,18 +93,18 @@ public class RestActionInvocationTest extends TestCase { // ko assertFalse(true); - + } catch (ConfigurationException c) { // ok, object not allowed } } - + /** * Test the target selection: exception, error messages, model and null * @throws Exception */ public void testSelectTarget() throws Exception { - + // Exception Exception e = new Exception(); restActionInvocation.getStack().set("exception", e); @@ -118,7 +122,7 @@ public class RestActionInvocationTest extends TestCase { errors.put("actionErrors", list); restActionInvocation.selectTarget(); assertEquals(errors, restActionInvocation.target); - + // Model with get and no content in post, put, delete setUp(); RestAction restAction = (RestAction)restActionInvocation.getAction(); @@ -168,18 +172,18 @@ public class RestActionInvocationTest extends TestCase { }; model.add("Item"); restAction.model = model; - + restActionInvocation.processResult(); assertEquals(SC_NOT_MODIFIED, response.getStatus()); - + } - + /** * Test the default error result. * @throws Exception */ public void testDefaultErrorResult() throws Exception { - + // Exception Exception e = new Exception(); restActionInvocation.getStack().set("exception", e); @@ -189,24 +193,24 @@ public class RestActionInvocationTest extends TestCase { List<String> model = new ArrayList<String>(); model.add("Item"); restAction.model = model; - + restActionInvocation.setDefaultErrorResultName("default-error"); - ResultConfig resultConfig = new ResultConfig.Builder("default-error", + ResultConfig resultConfig = new ResultConfig.Builder("default-error", "org.apache.struts2.result.HttpHeaderResult") .addParam("status", "123").build(); - ActionConfig actionConfig = new ActionConfig.Builder("org.apache.rest", + ActionConfig actionConfig = new ActionConfig.Builder("org.apache.rest", "RestAction", "org.apache.rest.RestAction") .addResultConfig(resultConfig) .build(); ((MockActionProxy)restActionInvocation.getProxy()).setConfig(actionConfig); - + restActionInvocation.processResult(); assertEquals(123, response.getStatus()); - + } - + public void testNoResult() throws Exception { - + RestAction restAction = (RestAction)restActionInvocation.getAction(); List<String> model = new ArrayList<String>(); model.add("Item"); @@ -219,35 +223,39 @@ public class RestActionInvocationTest extends TestCase { // ko assertFalse(true); - + } catch (ConfigurationException c) { // ok, no result } } - + /** * Test the global execution * @throws Exception */ public void testInvoke() throws Exception { - + // Default index method return 'success' ((MockActionProxy)restActionInvocation.getProxy()).setMethod("index"); // Define result 'success' - ResultConfig resultConfig = new ResultConfig.Builder("success", + ResultConfig resultConfig = new ResultConfig.Builder("success", "org.apache.struts2.result.HttpHeaderResult") .addParam("status", "123").build(); - ActionConfig actionConfig = new ActionConfig.Builder("org.apache.rest", + ActionConfig actionConfig = new ActionConfig.Builder("org.apache.rest", "RestAction", "org.apache.rest.RestAction") .addResultConfig(resultConfig) .build(); ((MockActionProxy)restActionInvocation.getProxy()).setConfig(actionConfig); request.setMethod("GET"); - - restActionInvocation.setOgnlUtil(new OgnlUtil()); + + restActionInvocation.setOgnlUtil(new OgnlUtil( + new DefaultOgnlExpressionCacheFactory<>(String.valueOf(10_000), BASIC.toString()), + new DefaultOgnlBeanInfoCacheFactory<>(String.valueOf(10_000), BASIC.toString()), + new StrutsOgnlGuard() + )); restActionInvocation.invoke(); assertEquals(123, response.getStatus()); @@ -264,7 +272,7 @@ public class RestActionInvocationTest extends TestCase { interceptorMappings.add(new InterceptorMapping("interceptor", mockInterceptor)); interceptors = interceptorMappings.iterator(); MockActionProxy actionProxy = new MockActionProxy(); - ActionConfig actionConfig = new ActionConfig.Builder("org.apache.rest", + ActionConfig actionConfig = new ActionConfig.Builder("org.apache.rest", "RestAction", "org.apache.rest.RestAction").build(); actionProxy.setConfig(actionConfig); proxy = actionProxy; @@ -280,18 +288,18 @@ public class RestActionInvocationTest extends TestCase { container = ActionContext.getContext().getContainer(); stack = ActionContext.getContext().getValueStack(); objectFactory = container.getInstance(ObjectFactory.class); - + } - + } class RestAction extends RestActionSupport implements ModelDriven<List<String>> { List<String> model; - + public List<String> getModel() { return model; } - + } }