package com.fasterxml.jackson.dataformat.xml.deser;

Helper class needed to keep track of virtual wrapper elements added in the logical XML token stream.
/** * Helper class needed to keep track of virtual wrapper elements * added in the logical XML token stream. */
class ElementWrapper { protected final ElementWrapper _parent; protected final String _wrapperName; protected final String _wrapperNamespace; /* /********************************************************** /* Life-cycle /********************************************************** */ private ElementWrapper(ElementWrapper parent) { _parent = parent; _wrapperName = null; _wrapperNamespace = ""; } private ElementWrapper(ElementWrapper parent, String wrapperLocalName, String wrapperNamespace) { _parent = parent; _wrapperName = wrapperLocalName; _wrapperNamespace = (wrapperNamespace == null) ? "" : wrapperNamespace; }
Factory method called to construct a new "matching" wrapper element, at level where virtual wrapping is needed.
/** * Factory method called to construct a new "matching" wrapper element, * at level where virtual wrapping is needed. */
public static ElementWrapper matchingWrapper(ElementWrapper parent, String wrapperLocalName, String wrapperNamespace) { return new ElementWrapper(parent, wrapperLocalName, wrapperNamespace); }
Factory method used for creating intermediate wrapper level, which is only used for purpose of keeping track of physical element nesting.
/** * Factory method used for creating intermediate wrapper level, which * is only used for purpose of keeping track of physical element * nesting. */
public ElementWrapper intermediateWrapper() { return new ElementWrapper(this, null, null); } /* /********************************************************** /* API /********************************************************** */ public boolean isMatching() { return _wrapperName != null; } public String getWrapperLocalName() { return _wrapperName; } public String getWrapperNamespace() { return _wrapperNamespace; } public ElementWrapper getParent() { return _parent; } public boolean matchesWrapper(String localName, String ns) { // null means "anything goes", so: if (_wrapperName == null) { return true; } if (ns == null) { ns = ""; } return _wrapperName.equals(localName) && _wrapperNamespace.equals(ns); } /* /********************************************************** /* Overrides /********************************************************** */ @Override public String toString() { if (_parent == null) { return "Wrapper: ROOT, matching: "+_wrapperName; } if (_wrapperName == null) { return "Wrapper: empty"; } return "Wrapper: branch, matching: "+_wrapperName; } }