I've checked in some new Xwork configuration code. Here's the test xwork.xml file:
<xwork> <package name="default"> <result-types> <result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/> </result-types> <interceptors> <interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/> <interceptor name="logger" class="com.opensymphony.xwork.interceptor.LoggingInterceptor"/> <interceptor name="chain" class="com.opensymphony.xwork.interceptor.ChainingInterceptor"/> <interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/> <interceptor name="static-params" class="com.opensymphony.xwork.interceptor.StaticParametersInterceptor"/> <interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor "/> <interceptor name="result" class="com.opensymphony.xwork.interceptor.ResultInterceptor"/> <interceptor name="stack" class="com.opensymphony.xwork.interceptor.StackInterceptor"/> <interceptor-stack name="defaultStack"> <interceptor-ref name="result"/> <interceptor-ref name="static-params"/> <interceptor-ref name="params"/> <interceptor-ref name="stack"/> </interceptor-stack> <interceptor-stack name="debugStack"> <interceptor-ref name="timer"/> <interceptor-ref name="logger"/> </interceptor-stack> </interceptors> <action name="Foo" class="com.opensymphony.xwork.SimpleAction"> <action-params> <param name="foo">17</param> <param name="bar">23</param> </action-params> <result name="success" type="chain"> <param name="actionName">Bar</param> </result> <interceptor-ref name="debugStack"/> <interceptor-ref name="defaultStack"/> </action> </package> <package name="bar" extends="default" namespace="/foo/bar"> <interceptors> <interceptor-stack name="barDefaultStack"> <interceptor-ref name="debugStack"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <action name="Bar" class="com.opensymphony.xwork.SimpleAction"> <interceptor-ref name="barDefaultStack"/> </action> </package> </xwork> Here you can see that I've implemented Rickard's ideas (see http://www.opensymphony.com:8668/space/RickardXWorkThoughts). 1) Packages - All configuration settings are in a package. Result types, interceptors, and actions are all package context specific, no more global settings (unless you have a "default" package and have your other packages extend it). Result, Interceptor, and Action configurations are inherited by packages which "extend" another package, such as package "bar" above, which extends "default". 2) Interceptor stacks - Make it easier to have sets of interceptors you apply together in a certain order. These are also inherited as part of the interceptor definition inheritance. Essentially these are just name mappings to lists of interceptors instead of one Interceptor. 3)Namespaces - a new idea of mine, this allows actions to be aliased with the same name, providing they are in different namespaces. With the ServletDispatcher, this equates to the path before the action name, which will allow for J2EE declarative security. Namespaces are optional attributes of package definitions and, if excluded, defaults to "". If the action configuration is not found with the supplied namespace, the "" namespace is checked as the default namespace, which makes it work like we have now (any path works, you get the action aliased with the name). Check out the code in the sandbox in CVS. Jason -- Jason Carreira Technical Architect, Notiva Corp. phone: 585.240.2793 fax: 585.272.8118 email: [EMAIL PROTECTED] --- Notiva - optimizing trade relationships (tm) ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork