Package org.jibx.schema.elements
Class SchemaPath
- java.lang.Object
-
- org.jibx.schema.elements.SchemaPath
-
public class SchemaPath extends java.lang.Object
Path 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 class
SchemaPath.PathStep
static class
SchemaPath.StepBase
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Object
m_sourceObject
Source object for path expression.private SchemaPath.StepBase[]
m_steps
Path steps.private ValidationContext
m_validationContext
Validation context used for reporting errors.private static SchemaPath.StepBase
WILDCARD_ELEMENT_STEP
Single element wildcard step.private static SchemaPath.StepBase
WILDCARD_NESTING_STEP
Nesteing element wildcard step.
-
Constructor Summary
Constructors Modifier Constructor Description private
SchemaPath(java.lang.Object obj, ValidationContext vctx)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.private SchemaPath.StepBase
buildPathStep(java.lang.String step)
Build a path step.private int
convertPosition(java.lang.String postext)
Validate and convert a position value.int
getPathLength()
Get length of this path (minimum number of nested elements).boolean
isWildStart()
Check if the first path step is a wildcard.private void
match(int offset, int end, OpenAttrBase base, java.util.ArrayList matches)
Find matches for expression starting from a supplied schema element.OpenAttrBase
matchUnique(OpenAttrBase base)
Find unique match for expression starting from a supplied schema element annotation.java.util.List
partialMatchMultiple(int first, int last, OpenAttrBase base)
Find any number of matches for subexpression starting from a supplied schema element annotation.OpenAttrBase
partialMatchUnique(int first, int last, OpenAttrBase base)
Find unique match for subexpression starting from a supplied schema element annotation.private boolean
validateName(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:
true
if valid,false
if 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
-1
if error
-
buildPathStep
private SchemaPath.StepBase buildPathStep(java.lang.String step)
Build a path step.- Parameters:
step
- expression- Returns:
- constructed step, or
null
if 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:
true
if wildcard,false
if 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
null
if 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
null
if 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
null
if 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 (null
if none)elemname
- element name for final step in pathnameattr
- name attribute (applied to final step in path,null
if none)postext
- position (applied to final step in path,null
if none)obj
- object defining the pathvctx
- validation context- Returns:
- constructed path, or
null
if error
-
-