@Override public ConversionResult convert(/*@NotNull*/ AtomicValue input) { if (input instanceof UntypedAtomicValue) { return untypedConverter.convert(input); } else { return input; } } }
/** * Determine whether a value is castable to a given type * * @param value the value to be tested * @param targetType the type to be tested against * @param context XPath dynamic context * @return true if the value is castable to the required type */ private boolean isCastable(AtomicValue value, AtomicType targetType, XPathContext context) { Converter converter = this.converter; if (converter == null) { converter = context.getConfiguration().getConversionRules().getConverter(value.getPrimitiveType(), targetType); if (converter == null) { return false; } if (converter.isAlwaysSuccessful()) { return true; } if (getTargetType().isNamespaceSensitive()) { converter = converter.setNamespaceResolver(getRetainedStaticContext()); } } return !(converter.convert(value) instanceof ValidationFailure); }
/** * Construct a converter with a given set of conversion rules. For use in constructing subclasses * * @param rules the conversion rules for the configuration */ protected Converter(ConversionRules rules) { setConversionRules(rules); }
private static Expression makePromoter(Expression exp, Converter converter, BuiltInAtomicType type) { ConversionRules rules = exp.getConfiguration().getConversionRules(); converter.setConversionRules(rules); if (exp instanceof Literal && ((Literal) exp).getValue() instanceof AtomicValue) { ConversionResult result = converter.convert((AtomicValue) ((Literal) exp).getValue()); if (result instanceof AtomicValue) { Literal converted = Literal.makeLiteral((AtomicValue) result, exp); ExpressionTool.copyLocationInfo(exp, converted); return converted; } } AtomicSequenceConverter asc = new AtomicSequenceConverter(exp, type); asc.setConverter(converter); ExpressionTool.copyLocationInfo(exp, asc); return asc; }
converter = converter.setNamespaceResolver(getRetainedStaticContext()); ConversionResult result = converter.convert(value); if (result instanceof ValidationFailure) { ValidationFailure err = (ValidationFailure) result;
converter = converter.setNamespaceResolver(getRetainedStaticContext()); if (converter.isAlwaysSuccessful() && !allowsEmpty() && operand.getCardinality() == StaticProperty.ALLOWS_ONE) { return Literal.makeLiteral(BooleanValue.TRUE, this);
@Override public Converter setNamespaceResolver(NamespaceResolver resolver) { return new TwoPhaseConverter(phaseOne.setNamespaceResolver(resolver), phaseTwo.setNamespaceResolver(resolver)); }
private static Expression makePromoter(Expression exp, Converter converter, BuiltInAtomicType type) { ConversionRules rules = exp.getConfiguration().getConversionRules(); converter.setConversionRules(rules); if (exp instanceof Literal && ((Literal) exp).getValue() instanceof AtomicValue) { ConversionResult result = converter.convert((AtomicValue) ((Literal) exp).getValue()); if (result instanceof AtomicValue) { Literal converted = Literal.makeLiteral((AtomicValue) result, exp); ExpressionTool.copyLocationInfo(exp, converted); return converted; } } AtomicSequenceConverter asc = new AtomicSequenceConverter(exp, type); asc.setConverter(converter); ExpressionTool.copyLocationInfo(exp, asc); return asc; }
converter = converter.setNamespaceResolver(getRetainedStaticContext()); ConversionResult result = converter.convert(value); if (result instanceof ValidationFailure) { ValidationFailure err = (ValidationFailure) result;
converter = converter.setNamespaceResolver(getRetainedStaticContext()); if (converter.isAlwaysSuccessful() && !allowsEmpty() && operand.getCardinality() == StaticProperty.ALLOWS_ONE) { return Literal.makeLiteral(BooleanValue.TRUE, this);
@Override public Converter setNamespaceResolver(NamespaceResolver resolver) { return new TwoPhaseConverter(phaseOne.setNamespaceResolver(resolver), phaseTwo.setNamespaceResolver(resolver)); }
@Override public ConversionResult convert(/*@NotNull*/ AtomicValue input) { if (input instanceof UntypedAtomicValue) { return untypedConverter.convert(input); } else { return input; } } }
/** * Determine whether a value is castable to a given type * * @param value the value to be tested * @param targetType the type to be tested against * @param context XPath dynamic context * @return true if the value is castable to the required type */ private boolean isCastable(AtomicValue value, AtomicType targetType, XPathContext context) { Converter converter = this.converter; if (converter == null) { converter = context.getConfiguration().getConversionRules().getConverter(value.getPrimitiveType(), targetType); if (converter == null) { return false; } if (converter.isAlwaysSuccessful()) { return true; } if (getTargetType().isNamespaceSensitive()) { converter = converter.setNamespaceResolver(getRetainedStaticContext()); } } return !(converter.convert(value) instanceof ValidationFailure); }
} else { if (getTargetType().isNamespaceSensitive()) { converter = converter.setNamespaceResolver(getRetainedStaticContext());
/** * Construct a converter with a given set of conversion rules. For use in constructing subclasses * * @param rules the conversion rules for the configuration */ protected Converter(ConversionRules rules) { setConversionRules(rules); }
public ConversionResult convert(AtomicValue input) { ConversionResult temp = phaseOne.convert(input); if (temp instanceof ValidationFailure) { return temp; } AtomicValue aTemp = (AtomicValue)temp; if (phaseTwo instanceof DownCastingConverter) { return ((DownCastingConverter) phaseTwo).convert(aTemp, aTemp.getCanonicalLexicalRepresentation()); } else { return phaseTwo.convert(aTemp); } }
} else { if (getTargetType().isNamespaceSensitive()) { converter = converter.setNamespaceResolver(getRetainedStaticContext());
public ConversionResult convert(AtomicValue input) { ConversionResult temp = phaseOne.convert(input); if (temp instanceof ValidationFailure) { return temp; } AtomicValue aTemp = (AtomicValue)temp; if (phaseTwo instanceof DownCastingConverter) { return ((DownCastingConverter) phaseTwo).convert(aTemp, aTemp.getCanonicalLexicalRepresentation()); } else { return phaseTwo.convert(aTemp); } }
public AtomicValue mapItem(AtomicValue item) throws XPathException { ConversionResult result = converter.convert(item); if (errorCode != null && result instanceof ValidationFailure) { ((ValidationFailure)result).setErrorCode(errorCode); } return result.asAtomic(); } }
public AtomicValue mapItem(AtomicValue item) throws XPathException { ConversionResult result = converter.convert(item); if (errorCode != null && result instanceof ValidationFailure) { ((ValidationFailure)result).setErrorCode(errorCode); } return result.asAtomic(); } }