Return-Path: X-Original-To: apmail-commons-commits-archive@minotaur.apache.org Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 193495E0A for ; Thu, 12 May 2011 18:03:59 +0000 (UTC) Received: (qmail 68647 invoked by uid 500); 12 May 2011 18:03:58 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 68547 invoked by uid 500); 12 May 2011 18:03:58 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 68534 invoked by uid 99); 12 May 2011 18:03:58 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 May 2011 18:03:58 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 May 2011 18:03:57 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 0132023889ED; Thu, 12 May 2011 18:03:37 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1102402 [2/20] - in /commons/sandbox/digester3/trunk/src: main/java/org/apache/commons/digester3/ main/java/org/apache/commons/digester3/annotations/ main/java/org/apache/commons/digester3/annotations/handlers/ main/java/org/apache/commons... Date: Thu, 12 May 2011 18:03:33 -0000 To: commits@commons.apache.org From: simonetripodi@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110512180337.0132023889ED@eris.apache.org> Modified: commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallParamRule.java URL: http://svn.apache.org/viewvc/commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallParamRule.java?rev=1102402&r1=1102401&r2=1102402&view=diff ============================================================================== --- commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallParamRule.java (original) +++ commons/sandbox/digester3/trunk/src/main/java/org/apache/commons/digester3/CallParamRule.java Thu May 12 18:03:26 2011 @@ -16,201 +16,202 @@ * limitations under the License. */ - package org.apache.commons.digester3; - import java.util.Stack; import org.xml.sax.Attributes; - /** - *

Rule implementation that saves a parameter for use by a surrounding - * CallMethodRule.

- * - *

This parameter may be: + *

+ * Rule implementation that saves a parameter for use by a surrounding CallMethodRule. + *

+ *

+ * This parameter may be: *

    - *
  • from an attribute of the current element - * See {@link #CallParamRule(int paramIndex, String attributeName)} - *
  • from current the element body - * See {@link #CallParamRule(int paramIndex)} - *
  • from the top object on the stack. - * See {@link #CallParamRule(int paramIndex, boolean fromStack)} - *
  • the current path being processed (separate Rule). - * See {@link PathCallParamRule} + *
  • from an attribute of the current element See {@link #CallParamRule(int paramIndex, String attributeName)} + *
  • from current the element body See {@link #CallParamRule(int paramIndex)} + *
  • from the top object on the stack. See {@link #CallParamRule(int paramIndex, boolean fromStack)} + *
  • the current path being processed (separate Rule). See {@link PathCallParamRule} *
*

*/ -public class CallParamRule extends Rule { +public class CallParamRule + extends Rule +{ // ----------------------------------------------------------- Constructors /** - * Construct a "call parameter" rule that will save the body text of this - * element as the parameter value. - * - *

Note that if the element is empty the an empty string is - * passed to the target method, not null. And if automatic type conversion - * is being applied (ie if the target function takes something other than - * a string as a parameter) then the conversion will fail if the converter - * class does not accept an empty string as valid input.

- * + * Construct a "call parameter" rule that will save the body text of this element as the parameter value. + *

+ * Note that if the element is empty the an empty string is passed to the target method, not null. And if + * automatic type conversion is being applied (ie if the target function takes something other than a string as a + * parameter) then the conversion will fail if the converter class does not accept an empty string as valid input. + *

+ * * @param paramIndex The zero-relative parameter number */ - public CallParamRule(int paramIndex) { + public CallParamRule( int paramIndex ) + { - this(paramIndex, null); + this( paramIndex, null ); } - /** - * Construct a "call parameter" rule that will save the value of the - * specified attribute as the parameter value. - * + * Construct a "call parameter" rule that will save the value of the specified attribute as the parameter value. + * * @param paramIndex The zero-relative parameter number * @param attributeName The name of the attribute to save */ - public CallParamRule(int paramIndex, - String attributeName) { + public CallParamRule( int paramIndex, String attributeName ) + { this.paramIndex = paramIndex; this.attributeName = attributeName; } - /** * Construct a "call parameter" rule. - * + * * @param paramIndex The zero-relative parameter number * @param fromStack should this parameter be taken from the top of the stack? - */ - public CallParamRule(int paramIndex, boolean fromStack) { - - this.paramIndex = paramIndex; + */ + public CallParamRule( int paramIndex, boolean fromStack ) + { + + this.paramIndex = paramIndex; this.fromStack = fromStack; } - + /** - * Constructs a "call parameter" rule which sets a parameter from the stack. - * If the stack contains too few objects, then the parameter will be set to null. - * + * Constructs a "call parameter" rule which sets a parameter from the stack. If the stack contains too few objects, + * then the parameter will be set to null. + * * @param paramIndex The zero-relative parameter number - * @param stackIndex the index of the object which will be passed as a parameter. - * The zeroth object is the top of the stack, 1 is the next object down and so on. - */ - public CallParamRule(int paramIndex, int stackIndex) { - - this.paramIndex = paramIndex; + * @param stackIndex the index of the object which will be passed as a parameter. The zeroth object is the top of + * the stack, 1 is the next object down and so on. + */ + public CallParamRule( int paramIndex, int stackIndex ) + { + + this.paramIndex = paramIndex; this.fromStack = true; this.stackIndex = stackIndex; } - - // ----------------------------------------------------- Instance Variables + // ----------------------------------------------------- Instance Variables /** * The attribute from which to save the parameter value */ protected String attributeName = null; - /** * The zero-relative index of the parameter we are saving. */ protected int paramIndex = 0; - /** * Is the parameter to be set from the stack? */ protected boolean fromStack = false; - + /** * The position of the object from the top of the stack */ protected int stackIndex = 0; - /** - * Stack is used to allow nested body text to be processed. - * Lazy creation. + /** + * Stack is used to allow nested body text to be processed. Lazy creation. */ protected Stack bodyTextStack; // --------------------------------------------------------- Public Methods - /** * Process the start of this element. - * + * * @param attributes The attribute list for this element */ @Override - public void begin(String namespace, String name, Attributes attributes) throws Exception { + public void begin( String namespace, String name, Attributes attributes ) + throws Exception + { Object param = null; - - if (attributeName != null) { - - param = attributes.getValue(attributeName); - - } else if(fromStack) { - - param = getDigester().peek(stackIndex); - - if (getDigester().getLogger().isDebugEnabled()) { - - StringBuilder sb = new StringBuilder("[CallParamRule]{"); - sb.append(getDigester().getMatch()); - sb.append("} Save from stack; from stack?").append(fromStack); - sb.append("; object=").append(param); - getDigester().getLogger().debug(sb.toString()); - } + + if ( attributeName != null ) + { + + param = attributes.getValue( attributeName ); + + } + else if ( fromStack ) + { + + param = getDigester().peek( stackIndex ); + + if ( getDigester().getLogger().isDebugEnabled() ) + { + + StringBuilder sb = new StringBuilder( "[CallParamRule]{" ); + sb.append( getDigester().getMatch() ); + sb.append( "} Save from stack; from stack?" ).append( fromStack ); + sb.append( "; object=" ).append( param ); + getDigester().getLogger().debug( sb.toString() ); + } } - + // Have to save the param object to the param stack frame here. // Can't wait until end(). Otherwise, the object will be lost. - // We can't save the object as instance variables, as + // We can't save the object as instance variables, as // the instance variables will be overwritten // if this CallParamRule is reused in subsequent nesting. - - if(param != null) { + + if ( param != null ) + { Object parameters[] = getDigester().peekParams(); parameters[paramIndex] = param; } } - /** * Process the body text of this element. - * + * * @param bodyText The body text of this element */ @Override - public void body(String namespace, String name, String text) throws Exception { + public void body( String namespace, String name, String text ) + throws Exception + { - if (attributeName == null && !fromStack) { + if ( attributeName == null && !fromStack ) + { // We must wait to set the parameter until end // so that we can make sure that the right set of parameters // is at the top of the stack - if (bodyTextStack == null) { + if ( bodyTextStack == null ) + { bodyTextStack = new Stack(); } - bodyTextStack.push(text.trim()); + bodyTextStack.push( text.trim() ); } } - + /** * Process any body texts now. */ @Override - public void end(String namespace, String name) { - if (bodyTextStack != null && !bodyTextStack.empty()) { + public void end( String namespace, String name ) + { + if ( bodyTextStack != null && !bodyTextStack.empty() ) + { // what we do now is push one parameter onto the top set of parameters Object parameters[] = getDigester().peekParams(); parameters[paramIndex] = bodyTextStack.pop(); @@ -221,19 +222,19 @@ public class CallParamRule extends Rule * Render a printable version of this Rule. */ @Override - public String toString() { + public String toString() + { - StringBuilder sb = new StringBuilder("CallParamRule["); - sb.append("paramIndex="); - sb.append(paramIndex); - sb.append(", attributeName="); - sb.append(attributeName); - sb.append(", from stack="); - sb.append(fromStack); - sb.append("]"); - return (sb.toString()); + StringBuilder sb = new StringBuilder( "CallParamRule[" ); + sb.append( "paramIndex=" ); + sb.append( paramIndex ); + sb.append( ", attributeName=" ); + sb.append( attributeName ); + sb.append( ", from stack=" ); + sb.append( fromStack ); + sb.append( "]" ); + return ( sb.toString() ); } - }