Class Interpreter

java.lang.Object
ch.qos.logback.core.joran.spi.Interpreter

public class Interpreter extends Object
Interpreter is Joran's main driving class. It extends SAX DefaultHandler which invokes various actions according to predefined patterns.

Patterns are kept in a RuleStore which is programmed to store and then later produce the applicable actions for a given pattern.

The pattern corresponding to a top level <a> element is the string "a".

The pattern corresponding to an element <b> embedded within a top level <a> element is the string "a/b".

The pattern corresponding to an <b> and any level of nesting is "*/b. Thus, the * character placed at the beginning of a pattern serves as a wildcard for the level of nesting. Conceptually, this is very similar to the API of commons-digester. Joran offers several small advantages. First and foremost, it offers support for implicit actions which result in a significant leap in flexibility. Second, in our opinion better error reporting capability. Third, it is self-reliant. It does not depend on other APIs, in particular commons-logging which is too unreliable. Last but not least, Joran is quite tiny and is expected to remain so.

  • Field Details

    • EMPTY_LIST

      private static List<Action> EMPTY_LIST
    • ruleStore

      private final RuleStore ruleStore
    • interpretationContext

      private final InterpretationContext interpretationContext
    • implicitActions

      private final ArrayList<ImplicitAction> implicitActions
    • cai

      private final CAI_WithLocatorSupport cai
    • elementPath

      private ElementPath elementPath
    • locator

      Locator locator
    • eventPlayer

      EventPlayer eventPlayer
    • actionListStack

      Stack<List<Action>> actionListStack
      The actionListStack contains a list of actions that are executing for the given XML element. A list of actions is pushed by the {link #startElement} and popped by endElement(EndEvent).
    • skip

      If the skip nested is set, then we skip all its nested elements until it is set back to null at when the element's end is reached.
  • Constructor Details

  • Method Details

    • getEventPlayer

      public EventPlayer getEventPlayer()
    • setInterpretationContextPropertiesMap

      public void setInterpretationContextPropertiesMap(Map<String,String> propertiesMap)
    • getExecutionContext

      public InterpretationContext getExecutionContext()
      Deprecated.
    • getInterpretationContext

      public InterpretationContext getInterpretationContext()
    • startDocument

      public void startDocument()
    • startElement

      public void startElement(StartEvent se)
    • startElement

      private void startElement(String namespaceURI, String localName, String qName, Attributes atts)
    • pushEmptyActionList

      private void pushEmptyActionList()
      This method is used to
    • characters

      public void characters(BodyEvent be)
    • endElement

      public void endElement(EndEvent endEvent)
    • endElement

      private void endElement(String namespaceURI, String localName, String qName)
    • getLocator

      public Locator getLocator()
    • setDocumentLocator

      public void setDocumentLocator(Locator l)
    • getTagName

      String getTagName(String localName, String qName)
    • addImplicitAction

      public void addImplicitAction(ImplicitAction ia)
    • lookupImplicitAction

      List<Action> lookupImplicitAction(ElementPath elementPath, Attributes attributes, InterpretationContext ec)
      Check if any implicit actions are applicable. As soon as an applicable action is found, it is returned. Thus, the returned list will have at most one element.
    • getApplicableActionList

      List<Action> getApplicableActionList(ElementPath elementPath, Attributes attributes)
      Return the list of applicable patterns for this
    • callBeginAction

      void callBeginAction(List<Action> applicableActionList, String tagName, Attributes atts)
    • callBodyAction

      private void callBodyAction(List<Action> applicableActionList, String body)
    • callEndAction

      private void callEndAction(List<Action> applicableActionList, String tagName)
    • getRuleStore

      public RuleStore getRuleStore()