public class Interpreter
extends java.lang.Object
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
The pattern corresponding to an element <b> embedded within a top level
<a> element is the string
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.
| Modifier and Type | Field and Description |
|---|---|
(package private) java.util.Stack<java.util.List<Action>> |
actionListStack
The
|
private CAI_WithLocatorSupport |
cai |
private ElementPath |
elementPath |
private static java.util.List<Action> |
EMPTY_LIST |
(package private) EventPlayer |
eventPlayer |
private java.util.ArrayList<ImplicitAction> |
implicitActions |
private InterpretationContext |
interpretationContext |
(package private) org.xml.sax.Locator |
locator |
private RuleStore |
ruleStore |
(package private) ElementPath |
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 and Description |
|---|
Interpreter(Context context,
RuleStore rs,
ElementPath initialElementPath) |
| Modifier and Type | Method and Description |
|---|---|
void |
addImplicitAction(ImplicitAction ia) |
(package private) void |
callBeginAction(java.util.List<Action> applicableActionList,
java.lang.String tagName,
org.xml.sax.Attributes atts) |
private void |
callBodyAction(java.util.List<Action> applicableActionList,
java.lang.String body) |
private void |
callEndAction(java.util.List<Action> applicableActionList,
java.lang.String tagName) |
void |
characters(BodyEvent be) |
void |
endElement(EndEvent endEvent) |
private void |
endElement(java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String qName) |
(package private) java.util.List<Action> |
getApplicableActionList(ElementPath elementPath,
org.xml.sax.Attributes attributes)
Return the list of applicable patterns for this
|
EventPlayer |
getEventPlayer() |
InterpretationContext |
getExecutionContext()
Deprecated.
replaced by
getInterpretationContext() |
InterpretationContext |
getInterpretationContext() |
org.xml.sax.Locator |
getLocator() |
RuleStore |
getRuleStore() |
(package private) java.lang.String |
getTagName(java.lang.String localName,
java.lang.String qName) |
(package private) java.util.List<Action> |
lookupImplicitAction(ElementPath elementPath,
org.xml.sax.Attributes attributes,
InterpretationContext ec)
Check if any implicit actions are applicable.
|
private void |
pushEmptyActionList()
This method is used to
|
void |
setDocumentLocator(org.xml.sax.Locator l) |
void |
setInterpretationContextPropertiesMap(java.util.Map<java.lang.String,java.lang.String> propertiesMap) |
void |
startDocument() |
void |
startElement(StartEvent se) |
private void |
startElement(java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.Attributes atts) |
private static java.util.List<Action> EMPTY_LIST
private final RuleStore ruleStore
private final InterpretationContext interpretationContext
private final java.util.ArrayList<ImplicitAction> implicitActions
private final CAI_WithLocatorSupport cai
private ElementPath elementPath
org.xml.sax.Locator locator
EventPlayer eventPlayer
java.util.Stack<java.util.List<Action>> actionListStack
endElement(ch.qos.logback.core.joran.event.EndEvent).ElementPath skip
public Interpreter(Context context, RuleStore rs, ElementPath initialElementPath)
public EventPlayer getEventPlayer()
public void setInterpretationContextPropertiesMap(java.util.Map<java.lang.String,java.lang.String> propertiesMap)
public InterpretationContext getExecutionContext()
getInterpretationContext()public InterpretationContext getInterpretationContext()
public void startDocument()
public void startElement(StartEvent se)
private void startElement(java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.Attributes atts)
private void pushEmptyActionList()
public void characters(BodyEvent be)
public void endElement(EndEvent endEvent)
private void endElement(java.lang.String namespaceURI,
java.lang.String localName,
java.lang.String qName)
public org.xml.sax.Locator getLocator()
public void setDocumentLocator(org.xml.sax.Locator l)
java.lang.String getTagName(java.lang.String localName,
java.lang.String qName)
public void addImplicitAction(ImplicitAction ia)
java.util.List<Action> lookupImplicitAction(ElementPath elementPath, org.xml.sax.Attributes attributes, InterpretationContext ec)
java.util.List<Action> getApplicableActionList(ElementPath elementPath, org.xml.sax.Attributes attributes)
void callBeginAction(java.util.List<Action> applicableActionList, java.lang.String tagName, org.xml.sax.Attributes atts)
private void callBodyAction(java.util.List<Action> applicableActionList, java.lang.String body)
private void callEndAction(java.util.List<Action> applicableActionList, java.lang.String tagName)
public RuleStore getRuleStore()