Author: skitching
Date: Thu Apr 27 03:21:57 2006
New Revision: 397513

URL: http://svn.apache.org/viewcvs?rev=397513&view=rev
Log:
Add javadoc to encourage writing of custom Rule classes, and giving basic 
guidance.

Modified:
    
jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Rule.java

Modified: 
jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Rule.java
URL: 
http://svn.apache.org/viewcvs/jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Rule.java?rev=397513&r1=397512&r2=397513&view=diff
==============================================================================
--- 
jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Rule.java
 (original)
+++ 
jakarta/commons/proper/digester/trunk/src/java/org/apache/commons/digester/Rule.java
 Thu Apr 27 03:21:57 2006
@@ -25,6 +25,28 @@
 /**
  * Concrete implementations of this class implement actions to be taken when
  * a corresponding nested pattern of XML elements has been matched.
+ * <p>
+ * Writing a custom Rule is considered perfectly normal when using Digester,
+ * and is encouraged whenever the default set of Rule classes don't meet your
+ * requirements; the digester framework can help process xml even when the
+ * built-in rules aren't quite what is needed. Creating a custom Rule is
+ * just as easy as subclassing javax.servlet.http.HttpServlet for webapps,
+ * or javax.swing.Action for GUI applications.
+ * <p>
+ * If a rule wishes to manipulate a digester stack (the default object stack,
+ * a named stack, or the parameter stack) then it should only ever push
+ * objects in the rule's begin method and always pop exactly the same
+ * number of objects off the stack during the rule's end method. Of course
+ * peeking at the objects on the stacks can be done from anywhere.
+ * <p>
+ * Rule objects should be stateless, ie they should not update any instance
+ * member during the parsing process. A rule instance that changes state
+ * will encounter problems if invoked in a "nested" manner; this can happen
+ * if the same instance is added to digester multiple times or if a 
+ * wildcard pattern is used which can match both an element and a child of the
+ * same element. The digester object stack and named stacks should be used to
+ * store any state that a rule requires, making the rule class safe under all
+ * possible uses.
  */
 
 public abstract class Rule {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to