You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2007/12/09 13:11:28 UTC
svn commit: r602665 - in /struts/struts2/trunk:
core/src/main/java/org/apache/struts2/components/
core/src/main/java/org/apache/struts2/config/
core/src/main/java/org/apache/struts2/dispatcher/
core/src/main/java/org/apache/struts2/impl/ core/src/main/...
Author: mrdon
Date: Sun Dec 9 04:11:25 2007
New Revision: 602665
URL: http://svn.apache.org/viewvc?rev=602665&view=rev
Log:
Updating Struts to support the new immutable object scheme and the
new xwork capability to limit methods that are called. Still more to do
here.
WW-2363 XW-595 XW-594
Removed:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/config/MethodConfigurationProvider.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/config/MethodConfigurationProviderTest.java
Modified:
struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxy.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxyFactory.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java
struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl
struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl
struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl
struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl
struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl
struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptorTest.java
struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java
struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java
struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/config/ClasspathPackageProvider.java
struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java
struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/config/ClasspathPackageProviderTest.java
struts/struts2/trunk/plugins/pom.xml
struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
struts/struts2/trunk/plugins/sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt
struts/struts2/trunk/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/TemplatePageFilter.java
struts/struts2/trunk/plugins/struts1/src/main/java/org/apache/struts2/s1/ActionFormValidationInterceptor.java
struts/struts2/trunk/plugins/struts1/src/test/java/org/apache/struts2/s1/Struts1FactoryTest.java
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/components/ActionComponent.java Sun Dec 9 04:11:25 2007
@@ -277,8 +277,7 @@
// execute at this point, after params have been set
try {
- proxy = actionProxyFactory.createActionProxy(namespace, actionName, createExtraContext(), executeResult, true);
- proxy.setMethod(methodName);
+ proxy = actionProxyFactory.createActionProxy(namespace, actionName, methodName, createExtraContext(), executeResult, true);
// set the new stack into the request for the taglib to use
req.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvocation().getStack());
proxy.execute();
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java Sun Dec 9 04:11:25 2007
@@ -59,7 +59,6 @@
*
*
* @see FilterDispatcher
- * @see AbstractFilter
* @see Dispatcher
*
* @version $Date$ $Id$
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/Dispatcher.java Sun Dec 9 04:11:25 2007
@@ -464,8 +464,8 @@
Configuration config = configurationManager.getConfiguration();
ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
- namespace, name, extraContext, true, false);
- proxy.setMethod(method);
+ namespace, name, method, extraContext, true, false);
+
request.setAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY, proxy.getInvocation().getStack());
// if the ActionMapping says to go straight to a result, do it!
@@ -484,7 +484,7 @@
LOG.error("Could not find action or result", e);
sendError(request, response, context, HttpServletResponse.SC_NOT_FOUND, e);
} catch (Exception e) {
- throw new ServletException(e);
+ sendError(request, response, context, HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e);
} finally {
UtilTimerStack.pop(timerKey);
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxy.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxy.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxy.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxy.java Sun Dec 9 04:11:25 2007
@@ -32,9 +32,9 @@
private static final long serialVersionUID = -2434901249671934080L;
- public StrutsActionProxy(ActionInvocation inv, String namespace, String actionName, Map extraContext,
- boolean executeResult, boolean cleanupContext) throws Exception {
- super(inv, namespace, actionName, extraContext, executeResult, cleanupContext);
+ public StrutsActionProxy(ActionInvocation inv, String namespace, String actionName, String methodName,
+ boolean executeResult, boolean cleanupContext) {
+ super(inv, namespace, actionName, methodName, executeResult, cleanupContext);
}
public String execute() throws Exception {
@@ -54,4 +54,10 @@
ActionContext.setContext(previous);
}
}
+
+ @Override
+ protected void prepare() {
+ super.prepare();
+ }
+
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxyFactory.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxyFactory.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxyFactory.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/impl/StrutsActionProxyFactory.java Sun Dec 9 04:11:25 2007
@@ -30,9 +30,10 @@
public class StrutsActionProxyFactory extends DefaultActionProxyFactory {
- public ActionProxy createActionProxy(ActionInvocation inv, String namespace, String actionName, Map extraContext, boolean executeResult, boolean cleanupContext) throws Exception {
+ @Override
+ public ActionProxy createActionProxy(ActionInvocation inv, String namespace, String actionName, String methodName, boolean executeResult, boolean cleanupContext) {
- ActionProxy proxy = new StrutsActionProxy(inv, namespace, actionName, extraContext, executeResult, cleanupContext);
+ StrutsActionProxy proxy = new StrutsActionProxy(inv, namespace, actionName, methodName, executeResult, cleanupContext);
container.inject(proxy);
proxy.prepare();
return proxy;
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptor.java Sun Dec 9 04:11:25 2007
@@ -242,8 +242,9 @@
"provide an action-specific or global result named '" + WAIT +
"'! This requires FreeMarker support and won't work if you don't have it installed");
// no wait result? hmm -- let's try to do dynamically put it in for you!
- ResultConfig rc = new ResultConfig(WAIT, "org.apache.struts2.views.freemarker.FreemarkerResult",
- Collections.singletonMap("location", "/org/apache/struts2/interceptor/wait.ftl"));
+ ResultConfig rc = new ResultConfig.Builder(WAIT, "org.apache.struts2.views.freemarker.FreemarkerResult")
+ .addParams(Collections.singletonMap("location", "/org/apache/struts2/interceptor/wait.ftl"))
+ .build();
results.put(WAIT, rc);
}
Modified: struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java (original)
+++ struts/struts2/trunk/core/src/main/java/org/apache/struts2/validators/DWRValidator.java Sun Dec 9 04:11:25 2007
@@ -100,7 +100,7 @@
try {
Configuration cfg = du.getConfigurationManager().getConfiguration();
ActionInvocation inv = new ValidatorActionInvocation(ctx, true);
- ActionProxy proxy = actionProxyFactory.createActionProxy(inv, namespace, action, ctx, true, true);
+ ActionProxy proxy = actionProxyFactory.createActionProxy(inv, namespace, action, null, true, true);
proxy.execute();
Object a = proxy.getAction();
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/checkbox.ftl Sun Dec 9 04:11:25 2007
@@ -36,12 +36,7 @@
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
-<#if parameters.cssClass?exists>
- class="${parameters.cssClass?html}"<#rt/>
-</#if>
-<#if parameters.cssStyle?exists>
- style="${parameters.cssStyle?html}"<#rt/>
-</#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/file.ftl Sun Dec 9 04:11:25 2007
@@ -40,12 +40,7 @@
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
-<#if parameters.cssClass?exists>
- class="${parameters.cssClass?html}"<#rt/>
-</#if>
-<#if parameters.cssStyle?exists>
- style="${parameters.cssStyle?html}"<#rt/>
-</#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/password.ftl Sun Dec 9 04:11:25 2007
@@ -43,12 +43,7 @@
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
-<#if parameters.cssClass?exists>
- class="${parameters.cssClass?html}"<#rt/>
-</#if>
-<#if parameters.cssStyle?exists>
- style="${parameters.cssStyle?html}"<#rt/>
-</#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/select.ftl Sun Dec 9 04:11:25 2007
@@ -35,12 +35,7 @@
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
-<#if parameters.cssClass?exists>
- class="${parameters.cssClass?html}"<#rt/>
-</#if>
-<#if parameters.cssStyle?exists>
- style="${parameters.cssStyle?html}"<#rt/>
-</#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/text.ftl Sun Dec 9 04:11:25 2007
@@ -43,12 +43,7 @@
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
-<#if parameters.cssClass?exists>
- class="${parameters.cssClass?html}"<#rt/>
-</#if>
-<#if parameters.cssStyle?exists>
- style="${parameters.cssStyle?html}"<#rt/>
-</#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl (original)
+++ struts/struts2/trunk/core/src/main/resources/template/simple/textarea.ftl Sun Dec 9 04:11:25 2007
@@ -39,12 +39,7 @@
<#if parameters.id?exists>
id="${parameters.id?html}"<#rt/>
</#if>
-<#if parameters.cssClass?exists>
- class="${parameters.cssClass?html}"<#rt/>
-</#if>
-<#if parameters.cssStyle?exists>
- style="${parameters.cssStyle?html}"<#rt/>
-</#if>
+<#include "/${parameters.templateDir}/simple/css.ftl" />
<#if parameters.title?exists>
title="${parameters.title?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/TestConfigurationProvider.java Sun Dec 9 04:11:25 2007
@@ -77,80 +77,58 @@
* Initializes the configuration object.
*/
public void loadPackages() {
- PackageConfig defaultPackageConfig = new PackageConfig("");
-
- HashMap results = new HashMap();
HashMap successParams = new HashMap();
successParams.put("propertyName", "executionCount");
successParams.put("expectedValue", "1");
- ResultConfig successConfig = new ResultConfig(Action.SUCCESS, TestResult.class.getName(), successParams);
-
- results.put(Action.SUCCESS, successConfig);
-
- List interceptors = new ArrayList();
-
- ActionConfig executionCountActionConfig = new ActionConfig(null, ExecutionCountTestAction.class, null, results, interceptors);
- defaultPackageConfig.addActionConfig(EXECUTION_COUNT_ACTION_NAME, executionCountActionConfig);
-
- results = new HashMap();
-
- successParams = new HashMap();
- successParams.put("location", "success.jsp");
-
- successConfig = new ResultConfig(Action.SUCCESS, ServletDispatcherResult.class.getName(), successParams);
-
- results.put(Action.SUCCESS, successConfig);
-
- interceptors.add(new InterceptorMapping("params", new ParametersInterceptor()));
+ ActionConfig executionCountActionConfig = new ActionConfig.Builder("", "", ExecutionCountTestAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, TestResult.class.getName())
+ .addParams(successParams)
+ .build())
+ .build();
+
+
+ ActionConfig testActionConfig = new ActionConfig.Builder("", "", TestAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, ServletDispatcherResult.class.getName())
+ .addParam("location", "success.jsp")
+ .build())
+ .addInterceptor(new InterceptorMapping("params", new ParametersInterceptor()))
+ .build();
+
+
+ ActionConfig tokenActionConfig = new ActionConfig.Builder("", "", TestAction.class.getName())
+ .addInterceptor(new InterceptorMapping("token", new TokenInterceptor()))
+ .addResultConfig(new ResultConfig.Builder("invalid.token", MockResult.class.getName()).build())
+ .addResultConfig(new ResultConfig.Builder("success", MockResult.class.getName()).build())
+ .build();
- ActionConfig testActionConfig = new ActionConfig(null, TestAction.class, null, results, interceptors);
- defaultPackageConfig.addActionConfig(TEST_ACTION_NAME, testActionConfig);
-
- interceptors = new ArrayList();
- interceptors.add(new InterceptorMapping("token", new TokenInterceptor()));
-
- results = new HashMap();
-
- ActionConfig tokenActionConfig = new ActionConfig(null, TestAction.class, null, results, interceptors);
- tokenActionConfig.addResultConfig(new ResultConfig("invalid.token", MockResult.class.getName()));
- tokenActionConfig.addResultConfig(new ResultConfig("success", MockResult.class.getName()));
- defaultPackageConfig.addActionConfig(TOKEN_ACTION_NAME, tokenActionConfig);
-
- interceptors = new ArrayList();
- interceptors.add(new InterceptorMapping("token-session", new TokenSessionStoreInterceptor()));
-
- results = new HashMap();
-
- successParams = new HashMap();
- successParams.put("actionName", EXECUTION_COUNT_ACTION_NAME);
-
- successConfig = new ResultConfig(Action.SUCCESS, ActionChainResult.class.getName(), successParams);
-
- results.put(Action.SUCCESS, successConfig);
// empty results for token session unit test
- results = new HashMap();
- ActionConfig tokenSessionActionConfig = new ActionConfig(null, TestAction.class, null, results, interceptors);
- tokenSessionActionConfig.addResultConfig(new ResultConfig("invalid.token", MockResult.class.getName()));
- tokenSessionActionConfig.addResultConfig(new ResultConfig("success", MockResult.class.getName()));
- defaultPackageConfig.addActionConfig(TOKEN_SESSION_ACTION_NAME, tokenSessionActionConfig);
+ ActionConfig tokenSessionActionConfig = new ActionConfig.Builder("", "", TestAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder("invalid.token", MockResult.class.getName()).build())
+ .addResultConfig(new ResultConfig.Builder("success", MockResult.class.getName()).build())
+ .addInterceptor(new InterceptorMapping("token-session", new TokenSessionStoreInterceptor()))
+ .build();
+
+ PackageConfig defaultPackageConfig = new PackageConfig.Builder("")
+ .addActionConfig(EXECUTION_COUNT_ACTION_NAME, executionCountActionConfig)
+ .addActionConfig(TEST_ACTION_NAME, testActionConfig)
+ .addActionConfig(TOKEN_ACTION_NAME, tokenActionConfig)
+ .addActionConfig(TOKEN_SESSION_ACTION_NAME, tokenSessionActionConfig)
+ .addActionConfig("testActionTagAction", new ActionConfig.Builder("", "", TestAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, TestActionTagResult.class.getName()).build())
+ .addResultConfig(new ResultConfig.Builder(Action.INPUT, TestActionTagResult.class.getName()).build())
+ .build())
+ .build();
configuration.addPackageConfig("", defaultPackageConfig);
- Map testActionTagResults = new HashMap();
- testActionTagResults.put(Action.SUCCESS, new ResultConfig(Action.SUCCESS, TestActionTagResult.class.getName(), new HashMap()));
- testActionTagResults.put(Action.INPUT, new ResultConfig(Action.INPUT, TestActionTagResult.class.getName(), new HashMap()));
- ActionConfig testActionTagActionConfig = new ActionConfig((String) null, TestAction.class, (Map) null, testActionTagResults, new ArrayList());
- defaultPackageConfig.addActionConfig("testActionTagAction", testActionTagActionConfig);
-
- PackageConfig namespacePackageConfig = new PackageConfig("namespacePackage");
- namespacePackageConfig.setNamespace(TEST_NAMESPACE);
- namespacePackageConfig.addParent(defaultPackageConfig);
-
- ActionConfig namespaceAction = new ActionConfig(null, TestAction.class, null, null, null);
- namespacePackageConfig.addActionConfig(TEST_NAMESPACE_ACTION, namespaceAction);
+ PackageConfig namespacePackageConfig = new PackageConfig.Builder("namespacePackage")
+ .namespace(TEST_NAMESPACE)
+ .addParent(defaultPackageConfig)
+ .addActionConfig(TEST_NAMESPACE_ACTION, new ActionConfig.Builder("", "", TestAction.class.getName()).build())
+ .build();
configuration.addPackageConfig("namespacePackage", namespacePackageConfig);
}
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletActionRedirectResultTest.java Sun Dec 9 04:11:25 2007
@@ -46,17 +46,18 @@
public void testIncludeParameterInResultWithConditionParseOn() throws Exception {
- ResultConfig resultConfig = new ResultConfig();
- resultConfig.addParam("actionName", "someActionName");
- resultConfig.addParam("namespace", "someNamespace");
- resultConfig.addParam("encode", "true");
- resultConfig.addParam("parse", "true");
- resultConfig.addParam("location", "someLocation");
- resultConfig.addParam("prependServletContext", "true");
- resultConfig.addParam("method", "someMethod");
- resultConfig.addParam("param1", "${#value1}");
- resultConfig.addParam("param2", "${#value2}");
- resultConfig.addParam("param3", "${#value3}");
+ ResultConfig resultConfig = new ResultConfig.Builder("", "")
+ .addParam("actionName", "someActionName")
+ .addParam("namespace", "someNamespace")
+ .addParam("encode", "true")
+ .addParam("parse", "true")
+ .addParam("location", "someLocation")
+ .addParam("prependServletContext", "true")
+ .addParam("method", "someMethod")
+ .addParam("param1", "${#value1}")
+ .addParam("param2", "${#value2}")
+ .addParam("param3", "${#value3}")
+ .build();
@@ -74,8 +75,8 @@
Map<String, ResultConfig> results= new HashMap<String, ResultConfig>();
results.put("myResult", resultConfig);
- ActionConfig actionConfig = new ActionConfig();
- actionConfig.setResults(results);
+ ActionConfig actionConfig = new ActionConfig.Builder("", "", "")
+ .addResultConfigs(results).build();
ServletActionRedirectResult result = new ServletActionRedirectResult();
result.setActionName("myAction");
@@ -109,17 +110,18 @@
public void testIncludeParameterInResult() throws Exception {
- ResultConfig resultConfig = new ResultConfig();
- resultConfig.addParam("actionName", "someActionName");
- resultConfig.addParam("namespace", "someNamespace");
- resultConfig.addParam("encode", "true");
- resultConfig.addParam("parse", "true");
- resultConfig.addParam("location", "someLocation");
- resultConfig.addParam("prependServletContext", "true");
- resultConfig.addParam("method", "someMethod");
- resultConfig.addParam("param1", "value 1");
- resultConfig.addParam("param2", "value 2");
- resultConfig.addParam("param3", "value 3");
+ ResultConfig resultConfig = new ResultConfig.Builder("", "")
+ .addParam("actionName", "someActionName")
+ .addParam("namespace", "someNamespace")
+ .addParam("encode", "true")
+ .addParam("parse", "true")
+ .addParam("location", "someLocation")
+ .addParam("prependServletContext", "true")
+ .addParam("method", "someMethod")
+ .addParam("param1", "value 1")
+ .addParam("param2", "value 2")
+ .addParam("param3", "value 3")
+ .build();
ActionContext context = ActionContext.getContext();
MockHttpServletRequest req = new MockHttpServletRequest();
@@ -131,8 +133,8 @@
Map<String, ResultConfig> results= new HashMap<String, ResultConfig>();
results.put("myResult", resultConfig);
- ActionConfig actionConfig = new ActionConfig();
- actionConfig.setResults(results);
+ ActionConfig actionConfig = new ActionConfig.Builder("", "", "")
+ .addResultConfigs(results).build();
ServletActionRedirectResult result = new ServletActionRedirectResult();
result.setActionName("myAction");
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/ServletRedirectResultTest.java Sun Dec 9 04:11:25 2007
@@ -140,8 +140,7 @@
protected void setUp() throws Exception {
super.setUp();
configurationManager.getConfiguration().
- addPackageConfig("foo", new PackageConfig("foo", "/namespace", false, null));
-
+ addPackageConfig("foo", new PackageConfig.Builder("foo").namespace("/namespace").build());
view = new ServletRedirectResult();
container.inject(view);
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/DefaultActionMapperTest.java Sun Dec 9 04:11:25 2007
@@ -62,8 +62,9 @@
req.setupGetContextPath("/my/namespace");
config = new DefaultConfiguration();
- PackageConfig pkg = new PackageConfig("myns", "/my/namespace", false, null);
- PackageConfig pkg2 = new PackageConfig("my", "/my", false, null);
+ PackageConfig pkg = new PackageConfig.Builder("myns")
+ .namespace("/my/namespace").build();
+ PackageConfig pkg2 = new PackageConfig.Builder("my").namespace("/my").build();
config.addPackageConfig("mvns", pkg);
config.addPackageConfig("my", pkg2);
configManager = new ConfigurationManager() {
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/dispatcher/mapper/Restful2ActionMapperTest.java Sun Dec 9 04:11:25 2007
@@ -47,8 +47,10 @@
req.setupGetContextPath("/my/namespace");
config = new DefaultConfiguration();
- PackageConfig pkg = new PackageConfig("myns", "/my/namespace", false, null);
- PackageConfig pkg2 = new PackageConfig("my", "/my", false, null);
+ PackageConfig pkg = new PackageConfig.Builder("myns")
+ .namespace("/my/namespace").build();
+ PackageConfig pkg2 = new PackageConfig.Builder("my")
+ .namespace("/my").build();
config.addPackageConfig("mvns", pkg);
config.addPackageConfig("my", pkg2);
configManager = new ConfigurationManager() {
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptorTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptorTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/interceptor/ExecuteAndWaitInterceptorTest.java Sun Dec 9 04:11:25 2007
@@ -170,7 +170,7 @@
}
protected ActionProxy buildProxy(String actionName) throws Exception {
- return actionProxyFactory.createActionProxy("", actionName, context);
+ return actionProxyFactory.createActionProxy("", actionName, null, context);
}
protected void setUp() throws Exception {
@@ -211,21 +211,19 @@
}
public void loadPackages() throws ConfigurationException {
- PackageConfig wait = new PackageConfig("");
- Map results = new HashMap();
- results.put(Action.SUCCESS, new ResultConfig(Action.SUCCESS, MockResult.class.getName(), null));
- results.put(ExecuteAndWaitInterceptor.WAIT, new ResultConfig(ExecuteAndWaitInterceptor.WAIT, MockResult.class.getName(), null));
// interceptors
waitInterceptor = new ExecuteAndWaitInterceptor();
- List interceptors = new ArrayList();
- interceptors.add(new InterceptorMapping("params", new ParametersInterceptor()));
- interceptors.add(new InterceptorMapping("execAndWait", waitInterceptor));
-
- ActionConfig ac = new ActionConfig(null, ExecuteAndWaitDelayAction.class, null, results, interceptors);
- wait.addActionConfig("action1", ac);
+ PackageConfig wait = new PackageConfig.Builder("")
+ .addActionConfig("action1", new ActionConfig.Builder("", "action1", ExecuteAndWaitDelayAction.class.getName())
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, MockResult.class.getName()).build())
+ .addResultConfig(new ResultConfig.Builder(ExecuteAndWaitInterceptor.WAIT, MockResult.class.getName()).build())
+ .addInterceptor(new InterceptorMapping("params", new ParametersInterceptor()))
+ .addInterceptor(new InterceptorMapping("execAndWait", waitInterceptor))
+ .build())
+ .build();
configuration.addPackageConfig("", wait);
}
Modified: struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java (original)
+++ struts/struts2/trunk/core/src/test/java/org/apache/struts2/views/jsp/ui/FormTagTest.java Sun Dec 9 04:11:25 2007
@@ -156,16 +156,14 @@
public RuntimeConfiguration getRuntimeConfiguration() {
return new RuntimeConfiguration() {
public ActionConfig getActionConfig(String namespace, String name) {
- ActionConfig actionConfig = new ActionConfig() {
+ ActionConfig actionConfig = new ActionConfig("", name, "") {
public List getInterceptors() {
List interceptors = new ArrayList();
ValidationInterceptor validationInterceptor = new ValidationInterceptor();
validationInterceptor.setIncludeMethods("*");
- InterceptorMapping interceptorMapping = new InterceptorMapping();
- interceptorMapping.setName("validation");
- interceptorMapping.setInterceptor(validationInterceptor);
+ InterceptorMapping interceptorMapping = new InterceptorMapping("validation", validationInterceptor);
interceptors.add(interceptorMapping);
return interceptors;
@@ -249,16 +247,14 @@
public RuntimeConfiguration getRuntimeConfiguration() {
return new RuntimeConfiguration() {
public ActionConfig getActionConfig(String namespace, String name) {
- ActionConfig actionConfig = new ActionConfig() {
+ ActionConfig actionConfig = new ActionConfig("", name, "") {
public List getInterceptors() {
List interceptors = new ArrayList();
ValidationInterceptor validationInterceptor = new ValidationInterceptor();
validationInterceptor.setExcludeMethods("*");
- InterceptorMapping interceptorMapping = new InterceptorMapping();
- interceptorMapping.setName("validation");
- interceptorMapping.setInterceptor(validationInterceptor);
+ InterceptorMapping interceptorMapping = new InterceptorMapping("validation", validationInterceptor);
interceptors.add(interceptorMapping);
return interceptors;
Modified: struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java (original)
+++ struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/codebehind/CodebehindUnknownHandler.java Sun Dec 9 04:11:25 2007
@@ -120,19 +120,15 @@
}
protected ActionConfig buildActionConfig(String path, String namespace, String actionName, ResultTypeConfig resultTypeConfig) {
- Map<String,ResultConfig> results = new HashMap<String,ResultConfig>();
- HashMap params = new HashMap();
- if (resultTypeConfig.getParams() != null) {
- params.putAll(resultTypeConfig.getParams());
- }
- params.put(resultTypeConfig.getDefaultResultParam(), path);
-
PackageConfig pkg = configuration.getPackageConfig(defaultPackageName);
- List interceptors = InterceptorBuilder.constructInterceptorReference(pkg, pkg.getFullDefaultInterceptorRef(),
- Collections.EMPTY_MAP, null, objectFactory);
- ResultConfig config = new ResultConfig(Action.SUCCESS, resultTypeConfig.getClazz(), params);
- results.put(Action.SUCCESS, config);
- return new ActionConfig("execute", ActionSupport.class.getName(), defaultPackageName, new HashMap(), results, interceptors);
+ return new ActionConfig.Builder(defaultPackageName, "execute", ActionSupport.class.getName())
+ .addInterceptors(InterceptorBuilder.constructInterceptorReference(pkg, pkg.getFullDefaultInterceptorRef(),
+ Collections.EMPTY_MAP, null, objectFactory))
+ .addResultConfig(new ResultConfig.Builder(Action.SUCCESS, resultTypeConfig.getClassName())
+ .addParams(resultTypeConfig.getParams())
+ .addParam(resultTypeConfig.getDefaultResultParam(), path)
+ .build())
+ .build();
}
public Result handleUnknownResult(ActionContext actionContext, String actionName,
@@ -172,15 +168,10 @@
}
protected Result buildResult(String path, String resultCode, ResultTypeConfig config, ActionContext invocationContext) {
- String resultClass = config.getClazz();
-
- Map<String,String> params = new LinkedHashMap<String,String>();
- if (config.getParams() != null) {
- params.putAll(config.getParams());
- }
- params.put(config.getDefaultResultParam(), path);
-
- ResultConfig resultConfig = new ResultConfig(resultCode, resultClass, params);
+ ResultConfig resultConfig = new ResultConfig.Builder(resultCode, config.getClassName())
+ .addParams(config.getParams())
+ .addParam(config.getDefaultResultParam(), path)
+ .build();
try {
return objectFactory.buildResult(resultConfig, invocationContext.getContextMap());
} catch (Exception e) {
Modified: struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/config/ClasspathPackageProvider.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/config/ClasspathPackageProvider.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/config/ClasspathPackageProvider.java (original)
+++ struts/struts2/trunk/plugins/codebehind/src/main/java/org/apache/struts2/config/ClasspathPackageProvider.java Sun Dec 9 04:11:25 2007
@@ -24,9 +24,7 @@
import java.lang.reflect.Modifier;
import java.net.MalformedURLException;
import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import javax.servlet.ServletContext;
@@ -123,12 +121,7 @@
*/
private boolean initialized = false;
- /**
- * The package configurations for scanned Actions.
- *
- * @see #loadPackageConfig
- */
- private Map<String,PackageConfig> loadedPackageConfigs = new HashMap<String,PackageConfig>();
+ private PackageLoader packageLoader;
/**
* Logging instance for this class.
@@ -235,6 +228,7 @@
*/
protected void loadPackages(String[] pkgs) {
+ packageLoader = new PackageLoader();
ResolverUtil<Class> resolver = new ResolverUtil<Class>();
resolver.find(createActionClassTest(), pkgs);
@@ -246,8 +240,8 @@
}
}
- for (String key : loadedPackageConfigs.keySet()) {
- configuration.addPackageConfig(key, loadedPackageConfigs.get(key));
+ for (PackageConfig config : packageLoader.createPackageConfigs()) {
+ configuration.addPackageConfig(config.getName(), config);
}
}
@@ -279,7 +273,6 @@
* @param pkgs List of packages that were scanned for Actions
*/
protected void processActionClass(Class<?> cls, String[] pkgs) {
- ActionConfig actionConfig = new ActionConfig();
String name = cls.getName();
String actionPackage = cls.getPackage().getName();
String actionNamespace = null;
@@ -328,7 +321,7 @@
}
}
- PackageConfig pkgConfig = loadPackageConfig(actionNamespace, actionPackage, cls);
+ PackageConfig.Builder pkgConfig = loadPackageConfig(actionNamespace, actionPackage, cls);
// In case the package changed due to namespace annotation processing
if (!actionPackage.equals(pkgConfig.getName())) {
@@ -345,14 +338,14 @@
pkgConfig.addParent(parentPkg);
if (!TextUtils.stringSet(pkgConfig.getNamespace()) && TextUtils.stringSet(parentPkg.getNamespace())) {
- pkgConfig.setNamespace(parentPkg.getNamespace());
+ pkgConfig.namespace(parentPkg.getNamespace());
}
}
- actionConfig.setClassName(cls.getName());
- actionConfig.setPackageName(actionPackage);
-
- actionConfig.setResults(new ResultMap<String,ResultConfig>(cls, actionName, pkgConfig));
+ ResultTypeConfig defaultResultType = packageLoader.getDefaultResultType(pkgConfig);
+ ActionConfig actionConfig = new ActionConfig.Builder(actionPackage, actionName, cls.getName())
+ .addResultConfigs(new ResultMap<String,ResultConfig>(cls, actionName, defaultResultType))
+ .build();
pkgConfig.addActionConfig(actionName, actionConfig);
}
@@ -367,8 +360,8 @@
* @param actionClass The Action class instance
* @return PackageConfig object for the Action class
*/
- protected PackageConfig loadPackageConfig(String actionNamespace, String actionPackage, Class actionClass) {
- PackageConfig parent = null;
+ protected PackageConfig.Builder loadPackageConfig(String actionNamespace, String actionPackage, Class actionClass) {
+ PackageConfig.Builder parent = null;
// Check for the @Namespace annotation
if (actionClass != null) {
@@ -391,29 +384,34 @@
}
- PackageConfig pkgConfig = loadedPackageConfigs.get(actionPackage);
+ PackageConfig.Builder pkgConfig = packageLoader.getPackage(actionPackage);
if (pkgConfig == null) {
- pkgConfig = new PackageConfig();
- pkgConfig.setName(actionPackage);
-
- if (parent == null) {
- parent = configuration.getPackageConfig(defaultParentPackage);
- }
+ pkgConfig = new PackageConfig.Builder(actionPackage);
+ pkgConfig.namespace(actionNamespace);
if (parent == null) {
- throw new ConfigurationException("ClasspathPackageProvider: Unable to locate default parent package: " +
+ PackageConfig cfg = configuration.getPackageConfig(defaultParentPackage);
+ if (cfg != null) {
+ pkgConfig.addParent(cfg);
+ } else {
+ throw new ConfigurationException("ClasspathPackageProvider: Unable to locate default parent package: " +
defaultParentPackage);
+ }
}
- pkgConfig.addParent(parent);
- pkgConfig.setNamespace(actionNamespace);
+ packageLoader.registerPackage(pkgConfig);
- loadedPackageConfigs.put(actionPackage, pkgConfig);
-
// if the parent package was first created by a child, ensure the namespace is correct
} else if (pkgConfig.getNamespace() == null) {
- pkgConfig.setNamespace(actionNamespace);
+ pkgConfig.namespace(actionNamespace);
+ }
+
+ if (parent != null) {
+ packageLoader.registerChildToParent(pkgConfig, parent);
}
+
+ System.out.println("class:"+actionClass+" parent:"+parent+" current:"+(pkgConfig != null ? pkgConfig.getName() : ""));
+
return pkgConfig;
}
@@ -439,7 +437,6 @@
* @throws ConfigurationException
*/
public void loadPackages() throws ConfigurationException {
- loadedPackageConfigs.clear();
if (actionPackages != null) {
String[] names = actionPackages.split("\\s*[,]\\s*");
// Initialize the classloader scanner with the configured packages
@@ -467,12 +464,12 @@
class ResultMap<K,V> extends HashMap<K,V> {
private Class actionClass;
private String actionName;
- private PackageConfig pkgConfig;
+ private ResultTypeConfig defaultResultType;
- public ResultMap(Class actionClass, String actionName, PackageConfig pkgConfig) {
+ public ResultMap(Class actionClass, String actionName, ResultTypeConfig defaultResultType) {
this.actionClass = actionClass;
this.actionName = actionName;
- this.pkgConfig = pkgConfig;
+ this.defaultResultType = defaultResultType;
// check if any annotations are around
while (!actionClass.getName().equals(Object.class.getName())) {
@@ -543,10 +540,8 @@
String location,
Map<? extends Object,? extends Object > configParams) {
if (resultClass == null) {
- String defaultResultType = pkgConfig.getFullDefaultResultType();
- ResultTypeConfig resultType = pkgConfig.getAllResultTypeConfigs().get(defaultResultType);
- configParams = resultType.getParams();
- String className = resultType.getClazz();
+ configParams = defaultResultType.getParams();
+ String className = defaultResultType.getClassName();
try {
resultClass = ClassLoaderUtil.loadClass(className, getClass());
} catch (ClassNotFoundException ex) {
@@ -568,7 +563,7 @@
}
params.put(defaultParam, location);
- return new ResultConfig((String) key, resultClass.getName(), params);
+ return new ResultConfig.Builder((String) key, resultClass.getName()).addParams(params).build();
}
}
@@ -596,6 +591,70 @@
}
}
return url;
+ }
+ }
+
+ private static class PackageLoader {
+
+ /**
+ * The package configurations for scanned Actions.
+ */
+ private Map<String,PackageConfig.Builder> packageConfigBuilders = new HashMap<String,PackageConfig.Builder>();
+
+ private Map<PackageConfig.Builder,PackageConfig.Builder> childToParent = new HashMap<PackageConfig.Builder,PackageConfig.Builder>();
+
+ public PackageConfig.Builder getPackage(String name) {
+ return packageConfigBuilders.get(name);
+ }
+
+ public void registerChildToParent(PackageConfig.Builder child, PackageConfig.Builder parent) {
+ childToParent.put(child, parent);
+ }
+
+ public void registerPackage(PackageConfig.Builder builder) {
+ packageConfigBuilders.put(builder.getName(), builder);
+ }
+
+ public Collection<PackageConfig> createPackageConfigs() {
+ Map<String, PackageConfig> configs = new HashMap<String, PackageConfig>();
+
+ Set<PackageConfig.Builder> builders;
+ while ((builders = findPackagesWithNoParents()).size() > 0) {
+ for (PackageConfig.Builder parent : builders) {
+ PackageConfig config = parent.build();
+ configs.put(config.getName(), config);
+ packageConfigBuilders.remove(config.getName());
+
+ for (Iterator<Map.Entry<PackageConfig.Builder,PackageConfig.Builder>> i = childToParent.entrySet().iterator(); i.hasNext(); ) {
+ Map.Entry<PackageConfig.Builder,PackageConfig.Builder> entry = i.next();
+ if (entry.getValue() == parent) {
+ entry.getKey().addParent(config);
+ i.remove();
+ }
+ }
+ }
+ }
+ return configs.values();
+ }
+
+ Set<PackageConfig.Builder> findPackagesWithNoParents() {
+ Set<PackageConfig.Builder> builders = new HashSet<PackageConfig.Builder>();
+ for (PackageConfig.Builder child : packageConfigBuilders.values()) {
+ if (!childToParent.containsKey(child)) {
+ builders.add(child);
+ }
+ }
+ return builders;
+ }
+
+ public ResultTypeConfig getDefaultResultType(PackageConfig.Builder pkgConfig) {
+ PackageConfig.Builder parent;
+ PackageConfig.Builder current = pkgConfig;
+
+ while ((parent = childToParent.get(current)) != null) {
+ current = parent;
+ }
+ return current.getResultType(current.getFullDefaultResultType());
}
}
}
Modified: struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java (original)
+++ struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/codebehind/CodebehindUnknownHandlerTest.java Sun Dec 9 04:11:25 2007
@@ -61,7 +61,7 @@
public void testBuildResult() {
ActionContext ctx = new ActionContext(new HashMap());
- ResultTypeConfig config = new ResultTypeConfig("null", SomeResult.class.getName(), "location");
+ ResultTypeConfig config = new ResultTypeConfig.Builder("null", SomeResult.class.getName()).defaultResultParam("location").build();
Result result = handler.buildResult("/foo.jsp", "success", config, ctx);
assertNotNull(result);
Modified: struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/config/ClasspathPackageProviderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/config/ClasspathPackageProviderTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/config/ClasspathPackageProviderTest.java (original)
+++ struts/struts2/trunk/plugins/codebehind/src/test/java/org/apache/struts2/config/ClasspathPackageProviderTest.java Sun Dec 9 04:11:25 2007
@@ -44,12 +44,16 @@
provider = new ClasspathPackageProvider();
provider.setActionPackages("org.apache.struts2.config");
config = new DefaultConfiguration();
- PackageConfig strutsDefault = new PackageConfig("struts-default");
- strutsDefault.addResultTypeConfig(new ResultTypeConfig("dispatcher", ServletDispatcherResult.class.getName(), "location"));
- strutsDefault.setDefaultResultType("dispatcher");
+ PackageConfig strutsDefault = new PackageConfig.Builder("struts-default")
+ .addResultTypeConfig(new ResultTypeConfig.Builder("dispatcher", ServletDispatcherResult.class.getName())
+ .defaultResultParam("location")
+ .build())
+ .defaultResultType("dispatcher")
+ .build();
config.addPackageConfig("struts-default", strutsDefault);
- PackageConfig customPackage = new PackageConfig("custom-package");
- customPackage.setNamespace("/custom");
+ PackageConfig customPackage = new PackageConfig.Builder("custom-package")
+ .namespace("/custom")
+ .build();
config.addPackageConfig("custom-package", customPackage);
provider.init(config);
provider.loadPackages();
@@ -59,7 +63,7 @@
provider = null;
config = null;
}
-
+
public void testFoundRootPackages() {
assertEquals(6, config.getPackageConfigs().size());
PackageConfig pkg = config.getPackageConfig("org.apache.struts2.config");
Modified: struts/struts2/trunk/plugins/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pom.xml?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/pom.xml (original)
+++ struts/struts2/trunk/plugins/pom.xml Sun Dec 9 04:11:25 2007
@@ -55,7 +55,7 @@
<module>tiles</module>
<module>dojo</module>
<module>rest</module>
- <module>portlet</module>
+ <module>portlet</module>
</modules>
<dependencies>
Modified: struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher/Jsr168Dispatcher.java Sun Dec 9 04:11:25 2007
@@ -439,8 +439,7 @@
LOG.debug("Creating action proxy for name = " + actionName
+ ", namespace = " + namespace);
ActionProxy proxy = factory.createActionProxy(namespace,
- actionName, extraContext);
- proxy.setMethod(mapping.getMethod());
+ actionName, mapping.getMethod(), extraContext);
request.setAttribute("struts.valueStack", proxy.getInvocation()
.getStack());
proxy.execute();
Modified: struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java (original)
+++ struts/struts2/trunk/plugins/portlet/src/test/java/org/apache/struts2/portlet/dispatcher/Jsr168DispatcherTest.java Sun Dec 9 04:11:25 2007
@@ -115,11 +115,10 @@
mockActionProxy = mock(ActionProxy.class);
mockInvocation = mock(ActionInvocation.class);
- mockActionFactory.expects(once()).method("createActionProxy").with(new Constraint[]{eq(namespace), eq(actionName), isA(Map.class)}).will(returnValue(mockActionProxy.proxy()));
+ mockActionFactory.expects(once()).method("createActionProxy").with(new Constraint[]{eq(namespace), eq(actionName), NULL, isA(Map.class)}).will(returnValue(mockActionProxy.proxy()));
mockActionProxy.stubs().method("getAction").will(returnValue(mockAction.proxy()));
mockActionProxy.expects(once()).method("execute").will(returnValue(result));
mockActionProxy.expects(once()).method("getInvocation").will(returnValue(mockInvocation.proxy()));
- mockActionProxy.expects(once()).method("setMethod");
mockInvocation.stubs().method("getStack").will(returnValue(stack));
}
@@ -243,11 +242,6 @@
mockRequest.stubs().method("getWindowState").will(returnValue(state));
}
- /**
- * @param requestParams
- * @param mockRequest2
- * @param string
- */
private void setupParamStub(Map requestParams, Mock mockRequest, String method) {
Map newMap = new HashMap();
Iterator it = requestParams.keySet().iterator();
Modified: struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java (original)
+++ struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionInvocation.java Sun Dec 9 04:11:25 2007
@@ -78,7 +78,7 @@
private ContentTypeHandlerManager handlerSelector;
- protected RestActionInvocation(Map extraContext, boolean pushAction) throws Exception {
+ protected RestActionInvocation(Map extraContext, boolean pushAction) {
super(extraContext, pushAction);
}
Modified: struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java (original)
+++ struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestActionProxyFactory.java Sun Dec 9 04:11:25 2007
@@ -35,10 +35,11 @@
*/
public class RestActionProxyFactory extends DefaultActionProxyFactory {
- public ActionProxy createActionProxy(String namespace, String actionName, Map extraContext, boolean executeResult, boolean cleanupContext) throws Exception {
+ @Override
+ public ActionProxy createActionProxy(String namespace, String actionName, String methodName, Map extraContext, boolean executeResult, boolean cleanupContext) {
ActionInvocation inv = new RestActionInvocation(extraContext, true);
container.inject(inv);
- return createActionProxy(inv, namespace, actionName, extraContext, executeResult, cleanupContext);
+ return createActionProxy(inv, namespace, actionName, methodName, executeResult, cleanupContext);
}
}
Modified: struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java (original)
+++ struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/RestWorkflowInterceptor.java Sun Dec 9 04:11:25 2007
@@ -43,7 +43,7 @@
* An interceptor that makes sure there are not validation errors before allowing the interceptor chain to continue.
* <b>This interceptor does not perform any validation</b>.
*
- * <p>Copied from the {@link DefaultWorkflowInterceptor}, this interceptor adds support for error handling of Restful
+ * <p>Copied from the {@link com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor}, this interceptor adds support for error handling of Restful
* operations. For example, if an validation error is discovered, a map of errors is created and processed to be
* returned, using the appropriate content handler for rendering the body.</p>
*
Modified: struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java (original)
+++ struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/ContentTypeHandlerManagerTest.java Sun Dec 9 04:11:25 2007
@@ -79,7 +79,7 @@
};
mgr.handlers.put("xml", handler);
mgr.defaultExtension = "xml";
- mgr.handleResult(new ActionConfig(), new DefaultHttpHeaders().withStatus(SC_OK), obj);
+ mgr.handleResult(new ActionConfig.Builder("", "", "").build(), new DefaultHttpHeaders().withStatus(SC_OK), obj);
assertEquals(obj.getBytes().length, mockResponse.getContentLength());
}
Modified: struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java (original)
+++ struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/RestActionMapperTest.java Sun Dec 9 04:11:25 2007
@@ -24,8 +24,8 @@
mapper = new RestActionMapper();
config = new DefaultConfiguration();
- PackageConfig pkg = new PackageConfig("myns", "/animals", false, null);
- PackageConfig pkg2 = new PackageConfig("my", "/my", false, null);
+ PackageConfig pkg = new PackageConfig.Builder("myns").namespace("/animals").build();
+ PackageConfig pkg2 = new PackageConfig.Builder("my").namespace("/my").build();
config.addPackageConfig("mvns", pkg);
config.addPackageConfig("my", pkg2);
configManager = new ConfigurationManager() {
Modified: struts/struts2/trunk/plugins/sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt (original)
+++ struts/struts2/trunk/plugins/sitegraph/src/test/resources/org/apache/struts2/sitegraph/out.txt Sun Dec 9 04:11:25 2007
@@ -12,9 +12,9 @@
fontcolor=grey;
label="sitegraph";
tutorial_sitegraph_guess [label="guess",color="coral1"];
- tutorial_sitegraph_guess_error_ftl [label="guess-error.ftl",color="darkseagreen2"];
- tutorial_sitegraph_guess_input_ftl [label="guess-input.ftl",color="darkseagreen2"];
tutorial_sitegraph_guess_success_jsp [label="guess-success.jsp",color="darkseagreen2"];
+ tutorial_sitegraph_guess_input_ftl [label="guess-input.ftl",color="darkseagreen2"];
+ tutorial_sitegraph_guess_error_ftl [label="guess-error.ftl",color="darkseagreen2"];
}
tutorial_test [label="test",color="coral1"];
tutorial_guess_input_ftl [label="guess-input.ftl",color="darkseagreen2"];
Modified: struts/struts2/trunk/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/TemplatePageFilter.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/TemplatePageFilter.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/TemplatePageFilter.java (original)
+++ struts/struts2/trunk/plugins/sitemesh/src/main/java/org/apache/struts2/sitemesh/TemplatePageFilter.java Sun Dec 9 04:11:25 2007
@@ -185,7 +185,7 @@
public void setActionEventListener(ActionEventListener listener) {
}
- public void init(ActionProxy proxy) throws Exception {
+ public void init(ActionProxy proxy) {
}
}
}
Modified: struts/struts2/trunk/plugins/struts1/src/main/java/org/apache/struts2/s1/ActionFormValidationInterceptor.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/struts1/src/main/java/org/apache/struts2/s1/ActionFormValidationInterceptor.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/struts1/src/main/java/org/apache/struts2/s1/ActionFormValidationInterceptor.java (original)
+++ struts/struts2/trunk/plugins/struts1/src/main/java/org/apache/struts2/s1/ActionFormValidationInterceptor.java Sun Dec 9 04:11:25 2007
@@ -208,7 +208,7 @@
}
/**
- * @param pathnames the pathnames to set
+ * @param pathNames the pathnames to set
*/
public void setPathnames(String pathNames) {
this.pathnames = pathNames;
Modified: struts/struts2/trunk/plugins/struts1/src/test/java/org/apache/struts2/s1/Struts1FactoryTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/struts1/src/test/java/org/apache/struts2/s1/Struts1FactoryTest.java?rev=602665&r1=602664&r2=602665&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/struts1/src/test/java/org/apache/struts2/s1/Struts1FactoryTest.java (original)
+++ struts/struts2/trunk/plugins/struts1/src/test/java/org/apache/struts2/s1/Struts1FactoryTest.java Sun Dec 9 04:11:25 2007
@@ -138,7 +138,7 @@
ExceptionConfig[] exceptionConfigs = mapping.findExceptionConfigs();
assertNotNull(exceptionConfigs);
- assertEquals(3, exceptionConfigs.length);
+ assertEquals(2, exceptionConfigs.length);
ModuleConfig moduleConfig = mapping.getModuleConfig();
assertNotNull(moduleConfig);