Package org.apache.tomcat.util.digester

## Class CallParamRule

- java.lang.Object
- - org.apache.tomcat.util.digester.Rule
  - - org.apache.tomcat.util.digester.CallParamRule

    public class CallParamRule
    extends Rule

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

This parameter may be:

- from an attribute of the current element See `CallParamRule(int paramIndex, String attributeName)`
- from current the element body See `CallParamRule(int paramIndex)`

### Field Summary

Fields
`protected String` `attributeName` The attribute from which to save the parameter value
`protected ArrayStack<String>` `bodyTextStack` Stack is used to allow nested body text to be processed.
`protected boolean` `fromStack` Is the parameter to be set from the stack?
`protected int` `paramIndex` The zero-relative index of the parameter we are saving.
`protected int` `stackIndex` The position of the object from the top of the stack

### Fields inherited from class org.apache.tomcat.util.digester.Rule

`digester, namespaceURI, sm`

### Constructor Summary

Constructors
`CallParamRule​(int paramIndex)` Construct a "call parameter" rule that will save the body text of this element as the parameter value.
`CallParamRule​(int paramIndex, String attributeName)` Construct a "call parameter" rule that will save the value of the specified attribute as the parameter value.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `begin​(String namespace, String name, Attributes attributes)` Process the start of this element.
`void` `body​(String namespace, String name, String bodyText)` Process the body text of this element.
`void` `end​(String namespace, String name)` Process any body texts now.
`String` `toString()` Render a printable version of this Rule.

### Methods inherited from class org.apache.tomcat.util.digester.Rule

`finish, getDigester, getNamespaceURI, setDigester, setNamespaceURI`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### attributeName

    protected final String attributeName

The attribute from which to save the parameter value

#### paramIndex

    protected final int paramIndex

The zero-relative index of the parameter we are saving.

#### fromStack

    protected final boolean fromStack

Is the parameter to be set from the stack?

#### stackIndex

    protected final int stackIndex

The position of the object from the top of the stack

#### bodyTextStack

    protected ArrayStack<String> bodyTextStack

Stack is used to allow nested body text to be processed. Lazy creation.

### Constructor Detail

#### CallParamRule

    public CallParamRule​(int paramIndex)

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

Parameters:
  `paramIndex` - The zero-relative parameter number

#### CallParamRule

    public CallParamRule​(int paramIndex,
                         String attributeName)

Construct a "call parameter" rule that will save the value of the specified attribute as the parameter value.

Parameters:
  `paramIndex` - The zero-relative parameter number
  `attributeName` - The name of the attribute to save

### Method Detail

#### begin

    public void begin​(String namespace,
                      String name,
                      Attributes attributes)
               throws Exception

Process the start of this element.

Overrides:
  `begin` in class `Rule`
Parameters:
  `namespace` - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespace
  `name` - the local name if the parser is namespace aware, or just the element name otherwise
  `attributes` - The attribute list for this element
Throws:
  `Exception` - if an error occurs while processing the event

#### body

    public void body​(String namespace,
                     String name,
                     String bodyText)
              throws Exception

Process the body text of this element.

Overrides:
  `body` in class `Rule`
Parameters:
  `namespace` - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespace
  `name` - the local name if the parser is namespace aware, or just the element name otherwise
  `bodyText` - The body text of this element
Throws:
  `Exception` - if an error occurs while processing the event

#### end

    public void end​(String namespace,
                    String name)

Process any body texts now.

Overrides:
  `end` in class `Rule`
Parameters:
  `namespace` - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespace
  `name` - the local name if the parser is namespace aware, or just the element name otherwise

#### toString

    public String toString()

Render a printable version of this Rule.

Overrides:
  `toString` in class `Object`