OLink olink = _oxpath.links.get(variableName.getLocalPart());
try {
return _ectx.isLinkActive(olink) ? Boolean.TRUE : Boolean.FALSE;
} catch (FaultException e) {
throw new WrappedResolverException(e);
}
}else{
String varName;
String partName;
int dotloc = variableName.getLocalPart().indexOf('.');
if (dotloc == -1) {
varName = variableName.getLocalPart();
partName = null;
} else {
varName = variableName.getLocalPart().substring(0, dotloc);
partName = variableName.getLocalPart().substring(dotloc + 1);
}
OScope.Variable variable = _oxpath.vars.get(varName);
OMessageVarType.Part part = partName == null ? null : ((OMessageVarType)variable.type).parts.get(partName);
try{
final Node variableNode = _ectx.readVariable(variable, part);
if (variableNode == null)
throw new FaultException(variable.getOwner().constants.qnSelectionFailure,
"Unknown variable " + variableName.getLocalPart());
if (_ectx.narrowTypes()) {
if (variable.type instanceof OXsdTypeVarType && ((OXsdTypeVarType)variable.type).simple)
return getSimpleContent(variableNode,((OXsdTypeVarType)variable.type).xsdType);
if (part != null && part.type instanceof OXsdTypeVarType && ((OXsdTypeVarType)part.type).simple)
return getSimpleContent(variableNode,((OXsdTypeVarType)part.type).xsdType);
}
// Saxon used to expect a node list, but now a regular node will suffice.
return variableNode;
}catch(FaultException e){
throw new WrappedResolverException(e);
}
}
}