Author: craigmcc Date: Sat Jul 23 16:15:13 2005 New Revision: 224583 URL: http://svn.apache.org/viewcvs?rev=224583&view=rev Log: Support a "className" attribute on all of the configuration elements for a Shale dialog, defaulting in each case to the existing implementation class. This allows developers to supply custom implementations of the configuration information with extra properties.
PR: Bugzilla #35783 Submitted By: Sean Schofield <sean.schofield AT gmail.com> Modified: struts/shale/trunk/core-library/build.xml struts/shale/trunk/core-library/src/conf/dialog.dtd struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationInit.java Modified: struts/shale/trunk/core-library/build.xml URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/build.xml?rev=224583&r1=224582&r2=224583&view=diff ============================================================================== --- struts/shale/trunk/core-library/build.xml (original) +++ struts/shale/trunk/core-library/build.xml Sat Jul 23 16:15:13 2005 @@ -65,7 +65,7 @@ value="${spring.home}/dist/spring-context.jar"/> <property name="spring-core.jar" value="${spring.home}/dist/spring-core.jar"/> <property name="spring-web.jar" value="${spring.home}/dist/spring-web.jar"/> - <property name="tiles.jar" value="${tiles.home}/core-library/dist/lib/tiles-core.jar"/> + <property name="tiles.jar" value="${tiles.home}/dist/lib/tiles-core.jar"/> <!-- Build Defaults --> Modified: struts/shale/trunk/core-library/src/conf/dialog.dtd URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/conf/dialog.dtd?rev=224583&r1=224582&r2=224583&view=diff ============================================================================== --- struts/shale/trunk/core-library/src/conf/dialog.dtd (original) +++ struts/shale/trunk/core-library/src/conf/dialog.dtd Sat Jul 23 16:15:13 2005 @@ -46,13 +46,18 @@ <!-- The "dialog" element defines the states for a particular reusable dialog, which itself consists of zero or more states (of particular types). The following attributes are defined: - + + className Fully qualified class name of the configuration + object for this element. + [org.apache.shale.dialog.impl.DialogImpl] + name Name of this dialog (must be unique among all defined dialogs). start Name of the starting state for this dialog. --> <!ELEMENT dialog ((transition|action|end|subdialog|view)*)> +<!ATTLIST dialog className CDATA #IMPLIED> <!ATTLIST dialog name CDATA #REQUIRED> <!ATTLIST dialog start CDATA #REQUIRED> @@ -61,6 +66,10 @@ invocation of a public method that takes no arguments, and returns the logical outcome as a String. The following attributes are defined: + className Fully qualified class name of the configuration + object for this element. + [org.apache.shale.dialog.impl.ActionStateImpl] + name Name of this state (must be unique among all states defined for this dialog). @@ -70,6 +79,7 @@ the logical outcome of this state. --> <!ELEMENT action (transition*)> +<!ATTLIST action className CDATA #IMPLIED> <!ATTLIST action name CDATA #REQUIRED> <!ATTLIST action method CDATA #REQUIRED> @@ -80,6 +90,10 @@ returns will be used to trigger a transition in this dialog. The following attributes are defined: + className Fully qualified class name of the configuration + object for this element. + [org.apache.shale.dialog.impl.SubdialogStateImpl] + name Name of this state (must be unique among all states defined for this dialog). @@ -88,6 +102,7 @@ --> <!ELEMENT subdialog (transition*)> +<!ATTLIST subdialog className CDATA #IMPLIED> <!ATTLIST subdialog name CDATA #REQUIRED> <!ATTLIST subdialog dialogName CDATA #REQUIRED> @@ -98,6 +113,10 @@ invoked is returned in order to determine the next transition. The following attributes are defined: + className Fully qualified class name of the configuration + object for this element. + [org.apache.shale.dialog.impl.ViewStateImpl] + name Name of this state (must be unique among all states defined for this dialog). @@ -109,6 +128,7 @@ --> <!ELEMENT view (transition*)> +<!ATTLIST view className CDATA #IMPLIED> <!ATTLIST view name CDATA #REQUIRED> <!ATTLIST view viewId CDATA #REQUIRED> @@ -118,6 +138,10 @@ that a parent dialog which invoked the current dialog will be responsible for producing the view for the current response. + className Fully qualified class name of the configuration + object for this element. + [org.apache.shale.dialog.impl.EndStateImpl] + name Name of this state (must be unique among all states defined for this dialog). @@ -129,6 +153,7 @@ own state transition. --> <!ELEMENT end (transition*)> +<!ATTLIST end className CDATA #IMPLIED> <!ATTLIST end name CDATA #REQUIRED> <!ATTLIST end viewId CDATA #IMPLIED> @@ -137,6 +162,10 @@ state (in which this "transition" element is nested) to a subsequent state. The following attributes are defined: + className Fully qualified class name of the configuration + object for this element. + [org.apache.shale.dialog.impl.TransitionImpl] + outcome Logical outcome String returned by the invoked method (for an "action" element), or by the invoked action's action method (for a "view" @@ -148,6 +177,7 @@ --> <!ELEMENT transition EMPTY> +<!ATTLIST transition className CDATA #IMPLIED> <!ATTLIST transition outcome CDATA #REQUIRED> <!ATTLIST transition target CDATA #REQUIRED> Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationInit.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationInit.java?rev=224583&r1=224582&r2=224583&view=diff ============================================================================== --- struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationInit.java (original) +++ struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationInit.java Sat Jul 23 16:15:13 2005 @@ -146,60 +146,69 @@ // Configure processing rules // dialogs/dialog - digester.addObjectCreate("dialogs/dialog", DialogImpl.class); + digester.addObjectCreate("dialogs/dialog", "className", DialogImpl.class); digester.addSetProperties("dialogs/dialog"); digester.addRule("dialogs/dialog", new AddDialogRule()); // dialogs/dialog/action - digester.addObjectCreate("dialogs/dialog/action", ActionStateImpl.class); + digester.addObjectCreate("dialogs/dialog/action", "className", + ActionStateImpl.class); digester.addSetProperties("dialogs/dialog/action"); digester.addSetNext("dialogs/dialog/action", "addState", "org.apache.shale.dialog.State"); // dialogs/dialog/action/transition - digester.addObjectCreate("dialogs/dialog/action/transition", TransitionImpl.class); + digester.addObjectCreate("dialogs/dialog/action/transition", "className", + TransitionImpl.class); digester.addSetProperties("dialogs/dialog/action/transition"); digester.addSetNext("dialogs/dialog/action/transition", "addTransition", "org.apache.shale.dialog.Transition"); // dialogs/dialog/end - digester.addObjectCreate("dialogs/dialog/end", EndStateImpl.class); + digester.addObjectCreate("dialogs/dialog/end", "className", + EndStateImpl.class); digester.addSetProperties("dialogs/dialog/end"); digester.addSetNext("dialogs/dialog/end", "addState", "org.apache.shale.dialog.State"); // dialogs/dialog/end/transition - digester.addObjectCreate("dialogs/dialog/end/transition", TransitionImpl.class); + digester.addObjectCreate("dialogs/dialog/end/transition", "className", + TransitionImpl.class); digester.addSetProperties("dialogs/dialog/end/transition"); digester.addSetNext("dialogs/dialog/end/transition", "addTransition", "org.apache.shale.dialog.Transition"); // dialogs/dialog/subdialog - digester.addObjectCreate("dialogs/dialog/subdialog", SubdialogStateImpl.class); + digester.addObjectCreate("dialogs/dialog/subdialog", "className", + SubdialogStateImpl.class); digester.addSetProperties("dialogs/dialog/subdialog"); digester.addSetNext("dialogs/dialog/subdialog", "addState", "org.apache.shale.dialog.State"); // dialogs/dialog/subdialog/transition - digester.addObjectCreate("dialogs/dialog/subdialog/transition", TransitionImpl.class); + digester.addObjectCreate("dialogs/dialog/subdialog/transition", "className", + TransitionImpl.class); digester.addSetProperties("dialogs/dialog/subdialog/transition"); digester.addSetNext("dialogs/dialog/subdialog/transition", "addTransition", "org.apache.shale.dialog.Transition"); // dialogs/dialog/transition - digester.addObjectCreate("dialogs/dialog/transition", TransitionImpl.class); + digester.addObjectCreate("dialogs/dialog/transition", "className", + TransitionImpl.class); digester.addSetProperties("dialogs/dialog/transition"); digester.addSetNext("dialogs/dialog/transition", "addTransition", "org.apache.shale.dialog.Transition"); // dialogs/dialog/view - digester.addObjectCreate("dialogs/dialog/view", ViewStateImpl.class); + digester.addObjectCreate("dialogs/dialog/view", "className", + ViewStateImpl.class); digester.addSetProperties("dialogs/dialog/view"); digester.addSetNext("dialogs/dialog/view", "addState", "org.apache.shale.dialog.State"); // dialogs/dialog/view/transition - digester.addObjectCreate("dialogs/dialog/view/transition", TransitionImpl.class); + digester.addObjectCreate("dialogs/dialog/view/transition", "className", + TransitionImpl.class); digester.addSetProperties("dialogs/dialog/view/transition"); digester.addSetNext("dialogs/dialog/view/transition", "addTransition", "org.apache.shale.dialog.Transition"); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]