chapters.onJoran.calculator
Class ComputationAction2

java.lang.Object
  extended by ch.qos.logback.core.spi.ContextAwareBase
      extended by ch.qos.logback.core.joran.action.Action
          extended by chapters.onJoran.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 computation 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 successive 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ü

Field Summary
static String NAME_ATR
           
 
Fields inherited from class ch.qos.logback.core.joran.action.Action
ACTION_CLASS_ATTRIBUTE, CLASS_ATTRIBUTE, FILE_ATTRIBUTE, KEY_ATTRIBUTE, NAME_ATTRIBUTE, PATTERN_ATTRIBUTE, SCOPE_ATTRIBUTE, VALUE_ATTRIBUTE
 
Fields inherited from class ch.qos.logback.core.spi.ContextAwareBase
context
 
Constructor Summary
ComputationAction2()
           
 
Method Summary
 void begin(InterpretationContext ec, String name, Attributes attributes)
          Called when the parser encounters an element matching a Pattern.
 void end(InterpretationContext ec, String name)
           
 
Methods inherited from class ch.qos.logback.core.joran.action.Action
body, getColumnNumber, getLineColStr, getLineNumber, toString
 
Methods inherited from class ch.qos.logback.core.spi.ContextAwareBase
addError, addError, addInfo, addInfo, addStatus, addWarn, addWarn, getContext, getDeclaredOrigin, getStatusManager, setContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NAME_ATR

public static final String NAME_ATR
See Also:
Constant Field Values
Constructor Detail

ComputationAction2

public ComputationAction2()
Method Detail

begin

public void begin(InterpretationContext ec,
                  String name,
                  Attributes attributes)
Description copied from class: Action
Called when the parser encounters an element matching a Pattern.

Specified by:
begin in class Action

end

public void end(InterpretationContext ec,
                String name)
Specified by:
end in class Action


Copyright © 2005-2013 QOS.ch. All Rights Reserved.