Package org.jibx.schema.elements
Class SchemaPath
- java.lang.Object
-
- org.jibx.schema.elements.SchemaPath
-
public class SchemaPath extends java.lang.ObjectPath specification within a schema definition. This implements simple XPath-like expressions, consisting of any number of path components given as element names or '*' for any element or '**' for any nesting of elements, along with optional position number or name attribute predicates in square brackets.- Author:
- Dennis M. Sosnoski
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSchemaPath.PathStepstatic classSchemaPath.StepBase
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Objectm_sourceObjectSource object for path expression.private SchemaPath.StepBase[]m_stepsPath steps.private ValidationContextm_validationContextValidation context used for reporting errors.private static SchemaPath.StepBaseWILDCARD_ELEMENT_STEPSingle element wildcard step.private static SchemaPath.StepBaseWILDCARD_NESTING_STEPNesteing element wildcard step.
-
Constructor Summary
Constructors Modifier Constructor Description privateSchemaPath(java.lang.Object obj, ValidationContext vctx)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SchemaPathbuildPath(java.lang.String path, java.lang.String elemname, java.lang.String nameattr, java.lang.String postext, java.lang.Object obj, ValidationContext vctx)Build a path.private SchemaPath.StepBasebuildPathStep(java.lang.String step)Build a path step.private intconvertPosition(java.lang.String postext)Validate and convert a position value.intgetPathLength()Get length of this path (minimum number of nested elements).booleanisWildStart()Check if the first path step is a wildcard.private voidmatch(int offset, int end, OpenAttrBase base, java.util.ArrayList matches)Find matches for expression starting from a supplied schema element.OpenAttrBasematchUnique(OpenAttrBase base)Find unique match for expression starting from a supplied schema element annotation.java.util.ListpartialMatchMultiple(int first, int last, OpenAttrBase base)Find any number of matches for subexpression starting from a supplied schema element annotation.OpenAttrBasepartialMatchUnique(int first, int last, OpenAttrBase base)Find unique match for subexpression starting from a supplied schema element annotation.private booleanvalidateName(java.lang.String nameattr)Validate a name attribute value.
-
-
-
Field Detail
-
WILDCARD_ELEMENT_STEP
private static final SchemaPath.StepBase WILDCARD_ELEMENT_STEP
Single element wildcard step.
-
WILDCARD_NESTING_STEP
private static final SchemaPath.StepBase WILDCARD_NESTING_STEP
Nesteing element wildcard step.
-
m_sourceObject
private final java.lang.Object m_sourceObject
Source object for path expression.
-
m_validationContext
private final ValidationContext m_validationContext
Validation context used for reporting errors.
-
m_steps
private SchemaPath.StepBase[] m_steps
Path steps.
-
-
Constructor Detail
-
SchemaPath
private SchemaPath(java.lang.Object obj, ValidationContext vctx)Constructor.- Parameters:
obj- source object for expressionvctx- validation context
-
-
Method Detail
-
validateName
private boolean validateName(java.lang.String nameattr)
Validate a name attribute value.- Parameters:
nameattr- name value- Returns:
trueif valid,falseif not
-
convertPosition
private int convertPosition(java.lang.String postext)
Validate and convert a position value.- Parameters:
postext- position text- Returns:
- position value (strictly positive), or
-1if error
-
buildPathStep
private SchemaPath.StepBase buildPathStep(java.lang.String step)
Build a path step.- Parameters:
step- expression- Returns:
- constructed step, or
nullif error
-
match
private void match(int offset, int end, OpenAttrBase base, java.util.ArrayList matches)Find matches for expression starting from a supplied schema element.- Parameters:
offset- current path step offsetend- ending match list offsetbase- starting element for matchmatches- elements matching expression
-
getPathLength
public int getPathLength()
Get length of this path (minimum number of nested elements).- Returns:
- path length
-
isWildStart
public boolean isWildStart()
Check if the first path step is a wildcard.- Returns:
trueif wildcard,falseif not
-
partialMatchMultiple
public java.util.List partialMatchMultiple(int first, int last, OpenAttrBase base)Find any number of matches for subexpression starting from a supplied schema element annotation.- Parameters:
first- starting path step indexlast- ending path step indexbase- starting element for match- Returns:
- matching element, or
nullif error
-
partialMatchUnique
public OpenAttrBase partialMatchUnique(int first, int last, OpenAttrBase base)
Find unique match for subexpression starting from a supplied schema element annotation. An error is reported if no match is found, or if multiple matches are found.- Parameters:
first- starting path step indexlast- ending path step indexbase- starting element for match- Returns:
- matching element, or
nullif error
-
matchUnique
public OpenAttrBase matchUnique(OpenAttrBase base)
Find unique match for expression starting from a supplied schema element annotation. An error is reported if no match is found, or if multiple matches are found.- Parameters:
base- starting element for match- Returns:
- matching element, or
nullif error
-
buildPath
public static SchemaPath buildPath(java.lang.String path, java.lang.String elemname, java.lang.String nameattr, java.lang.String postext, java.lang.Object obj, ValidationContext vctx)
Build a path. If a path expression is supplied, the final path step in the expression must either not use an element name, or the element name must match the actual element supplied.- Parameters:
path- expression (nullif none)elemname- element name for final step in pathnameattr- name attribute (applied to final step in path,nullif none)postext- position (applied to final step in path,nullif none)obj- object defining the pathvctx- validation context- Returns:
- constructed path, or
nullif error
-
-