chapter3.calculator
Class ComputationAction2
java.lang.Object
ch.qos.logback.core.spi.ContextAwareBase
ch.qos.logback.core.joran.action.Action
chapter3.calculator.ComputationAction2
- All Implemented Interfaces:
- ContextAware
public class ComputationAction2
- extends Action
ComputationAction2 will print the result of the compuration made by
children elements but only if the compuration itself is named, that is if the
name attribute of the associated computation element is not null. In other
words, anonymous computations will not print their result.
ComputationAction2 differs from ComputationAction1 in its handling of
instance variables. ComputationAction1 has a simple nameStr
instance variable. This variable is set when the begin() method is called
and then later used within the end() method.
This simple approach works properly if the begin() and end()
method of a given action are expected to be called in sequence. However,
there are situations where the begin() method of the same action instance is
invoked multiple times before the matching end() method is invoked.
When this happens, the second call to begin() overwrites values set by
the first invocation to begin(). The solution is to save parameter values
into a separate stack. The well-formedness of XML will guarantee that a value
saved by one begin() will be consumed only by the matching end() method.
Note that in the vast majority of cases there is no need to resort to a
separate stack for each variable. The situation of successibe begin()
invocations can only occur if:
1) the associated pattern contains a wildcard, i.e. the * character
and
2) the associated element tag can contain itself as a child
For example, "*/computation" pattern means that computations can contain
other computation elements as children.
- Author:
- Ceki Gülcü
NAME_ATR
public static String NAME_ATR
ComputationAction2
public ComputationAction2()
begin
public void begin(InterpretationContext ec,
String name,
Attributes attributes)
- Description copied from class:
Action
- Called when the parser first encounters an element.
The return value indicates whether child elements should be processed. If
the returned value is 'false', then child elements are ignored.
- Specified by:
begin
in class Action
end
public void end(InterpretationContext ec,
String name)
- Specified by:
end
in class Action
Copyright © 2005-2009 QOS.ch. All Rights Reserved.