You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by cr...@apache.org on 2005/10/28 08:20:15 UTC

svn commit: r329122 - in /struts/shale/trunk: build.xml core-library/src/conf/dialog.dtd core-library/src/java/org/apache/shale/dialog/config/ConfigurationParser.java

Author: craigmcc
Date: Thu Oct 27 23:20:11 2005
New Revision: 329122

URL: http://svn.apache.org/viewcvs?rev=329122&view=rev
Log:
Add the ability to configure arbitrary properties of custom implementation
classes for the dialog configuration, by specifying nested elements of type

  <property name="foo" value="bar"/>

inside the configuration elements for dialogs, states, and transitions.  This
implements the Option #2 solution discussed in the referenced Bugzilla issue.

Submitted by:  Sean Schofield <sean.schofield AT gmail.com>
PR:  Bugzilla #36439

Modified:
    struts/shale/trunk/build.xml
    struts/shale/trunk/core-library/src/conf/dialog.dtd
    struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationParser.java

Modified: struts/shale/trunk/build.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/build.xml?rev=329122&r1=329121&r2=329122&view=diff
==============================================================================
--- struts/shale/trunk/build.xml (original)
+++ struts/shale/trunk/build.xml Thu Oct 27 23:20:11 2005
@@ -359,6 +359,17 @@
   </target>
 
 
+  <target        name="test"
+          description="Execute 'test' on all modules">
+
+    <antcall   target="execute">
+      <param     name="target"
+                value="test"/>
+    </antcall>
+
+  </target>
+
+
   <!-- =================== Initialize Local Repository ===================== -->
 
 

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=329122&r1=329121&r2=329122&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/conf/dialog.dtd (original)
+++ struts/shale/trunk/core-library/src/conf/dialog.dtd Thu Oct 27 23:20:11 2005
@@ -56,7 +56,7 @@
 
      start                      Name of the starting state for this dialog.
 -->
-<!ELEMENT dialog ((transition|action|end|subdialog|view)*)>
+<!ELEMENT dialog ((transition|action|end|subdialog|view|property)*)>
 <!ATTLIST dialog                className       CDATA          #IMPLIED>
 <!ATTLIST dialog                name            CDATA          #REQUIRED>
 <!ATTLIST dialog                start           CDATA          #REQUIRED>
@@ -78,7 +78,7 @@
                                 arguments, and returns a String that represents
                                 the logical outcome of this state.
 -->
-<!ELEMENT action (transition*)>
+<!ELEMENT action (property|transition*)>
 <!ATTLIST action                className       CDATA          #IMPLIED>
 <!ATTLIST action                name            CDATA          #REQUIRED>
 <!ATTLIST action                method          CDATA          #REQUIRED>
@@ -101,7 +101,7 @@
                                 executed.
 
 -->
-<!ELEMENT subdialog (transition*)>
+<!ELEMENT subdialog (property|transition*)>
 <!ATTLIST subdialog             className       CDATA          #IMPLIED>
 <!ATTLIST subdialog             name            CDATA          #REQUIRED>
 <!ATTLIST subdialog             dialogName      CDATA          #REQUIRED>
@@ -127,7 +127,7 @@
                                 to determine the next state transition.
 
 -->
-<!ELEMENT view (transition*)>
+<!ELEMENT view (property|transition*)>
 <!ATTLIST view                  className       CDATA          #IMPLIED>
 <!ATTLIST view                  name            CDATA          #REQUIRED>
 <!ATTLIST view                  viewId          CDATA          #REQUIRED>
@@ -152,7 +152,7 @@
                                 returned to the parent dialog to drive its
                                 own state transition.
 -->
-<!ELEMENT end (transition*)>
+<!ELEMENT end (property|transition*)>
 <!ATTLIST end                   className       CDATA          #IMPLIED>
 <!ATTLIST end                   name            CDATA          #REQUIRED>
 <!ATTLIST end                   viewId          CDATA          #IMPLIED>
@@ -176,8 +176,25 @@
                                 attribute of a state defined in this dialog.
 -->
 
-<!ELEMENT transition EMPTY>
+<!ELEMENT transition (property)*>
 <!ATTLIST transition            className       CDATA          #IMPLIED>
 <!ATTLIST transition            outcome         CDATA          #REQUIRED>
 <!ATTLIST transition            target          CDATA          #REQUIRED>
 
+
+<!-- The "property" element allows the configuration of an arbitrary property
+     of the base class (typically customized via the "className" attribute)
+     instanace for the surrounding configuration element.  The following
+     attributes are defined:
+
+     name                       Property name to be configured.
+
+     value                      String representation of the value to which
+                                this property will be set.  Appropriate type
+                                conversion will be applied, based on the type
+                                of the underlying property.
+-->
+
+<!ELEMENT property EMPTY>
+<!ATTLIST property              name            CDATA          #REQUIRED>
+<!ATTLIST property              value           CDATA          #REQUIRED>

Modified: struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationParser.java
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationParser.java?rev=329122&r1=329121&r2=329122&view=diff
==============================================================================
--- struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationParser.java (original)
+++ struts/shale/trunk/core-library/src/java/org/apache/shale/dialog/config/ConfigurationParser.java Thu Oct 27 23:20:11 2005
@@ -188,12 +188,14 @@
         // dialogs/dialog
         digester.addObjectCreate("dialogs/dialog", "className", DialogImpl.class);
         digester.addSetProperties("dialogs/dialog");
+        digester.addSetProperty("dialogs/dialog/property", "name", "value");
         digester.addRule("dialogs/dialog", new AddDialogRule());
 
         // dialogs/dialog/action
         digester.addObjectCreate("dialogs/dialog/action", "className",
                                  ActionStateImpl.class);
         digester.addSetProperties("dialogs/dialog/action");
+        digester.addSetProperty("dialogs/dialog/action/property", "name", "value");
         digester.addSetNext("dialogs/dialog/action",
                             "addState", "org.apache.shale.dialog.State");
 
@@ -201,6 +203,7 @@
         digester.addObjectCreate("dialogs/dialog/action/transition", "className",
                                  TransitionImpl.class);
         digester.addSetProperties("dialogs/dialog/action/transition");
+        digester.addSetProperty("dialogs/dialog/action/transition/property", "name", "value");
         digester.addSetNext("dialogs/dialog/action/transition",
                             "addTransition", "org.apache.shale.dialog.Transition");
 
@@ -208,6 +211,7 @@
         digester.addObjectCreate("dialogs/dialog/end", "className",
                                  EndStateImpl.class);
         digester.addSetProperties("dialogs/dialog/end");
+        digester.addSetProperty("dialogs/dialog/end/property", "name", "value");
         digester.addSetNext("dialogs/dialog/end",
                             "addState", "org.apache.shale.dialog.State");
 
@@ -215,6 +219,7 @@
         digester.addObjectCreate("dialogs/dialog/end/transition", "className",
                                  TransitionImpl.class);
         digester.addSetProperties("dialogs/dialog/end/transition");
+        digester.addSetProperty("dialogs/dialog/end/transition/property", "name", "value");
         digester.addSetNext("dialogs/dialog/end/transition",
                             "addTransition", "org.apache.shale.dialog.Transition");
 
@@ -222,6 +227,7 @@
         digester.addObjectCreate("dialogs/dialog/subdialog", "className",
                                  SubdialogStateImpl.class);
         digester.addSetProperties("dialogs/dialog/subdialog");
+        digester.addSetProperty("dialogs/dialog/subdialog/property", "name", "value");
         digester.addSetNext("dialogs/dialog/subdialog",
                             "addState", "org.apache.shale.dialog.State");
 
@@ -229,6 +235,7 @@
         digester.addObjectCreate("dialogs/dialog/subdialog/transition", "className",
                                  TransitionImpl.class);
         digester.addSetProperties("dialogs/dialog/subdialog/transition");
+        digester.addSetProperty("dialogs/dialog/subdialog/transition/property", "name", "value");
         digester.addSetNext("dialogs/dialog/subdialog/transition",
                             "addTransition", "org.apache.shale.dialog.Transition");
 
@@ -236,6 +243,7 @@
         digester.addObjectCreate("dialogs/dialog/transition", "className",
                                  TransitionImpl.class);
         digester.addSetProperties("dialogs/dialog/transition");
+        digester.addSetProperty("dialogs/dialog/transition/property", "name", "value");
         digester.addSetNext("dialogs/dialog/transition",
                             "addTransition", "org.apache.shale.dialog.Transition");
 
@@ -243,6 +251,7 @@
         digester.addObjectCreate("dialogs/dialog/view", "className",
                                  ViewStateImpl.class);
         digester.addSetProperties("dialogs/dialog/view");
+        digester.addSetProperty("dialogs/dialog/view/property", "name", "value");
         digester.addSetNext("dialogs/dialog/view",
                             "addState", "org.apache.shale.dialog.State");
 
@@ -250,6 +259,7 @@
         digester.addObjectCreate("dialogs/dialog/view/transition", "className",
                                  TransitionImpl.class);
         digester.addSetProperties("dialogs/dialog/view/transition");
+        digester.addSetProperty("dialogs/dialog/view/transition/property", "name", "value");
         digester.addSetNext("dialogs/dialog/view/transition",
                             "addTransition", "org.apache.shale.dialog.Transition");
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org