/** * Evaluate as an Item. This should only be called if the AtomicSequenceConverter has cardinality zero-or-one */ public AtomicValue evaluateItem(XPathContext context) throws XPathException { Converter conv = getConverterDynamically(context); AtomicValue item = (AtomicValue) getBaseExpression().evaluateItem(context); if (item == null) { return null; } ConversionResult result = conv.convert(item); if (roleDiagnostic != null && result instanceof ValidationFailure) { // TODO: use more of the information in the roleDiagnostic to form the error message ((ValidationFailure)result).setErrorCode(roleDiagnostic.getErrorCode()); } return result.asAtomic(); }
/** * Evaluate as an Item. This should only be called if the AtomicSequenceConverter has cardinality zero-or-one */ public AtomicValue evaluateItem(XPathContext context) throws XPathException { Converter conv = getConverterDynamically(context); AtomicValue item = (AtomicValue) getBaseExpression().evaluateItem(context); if (item == null) { return null; } ConversionResult result = conv.convert(item); if (roleDiagnostic != null && result instanceof ValidationFailure) { // TODO: use more of the information in the roleDiagnostic to form the error message ((ValidationFailure)result).setErrorCode(roleDiagnostic.getErrorCode()); } return result.asAtomic(); }
/** * Iterate over the sequence of values */ /*@NotNull*/ public SequenceIterator<? extends AtomicValue> iterate(final XPathContext context) throws XPathException { SequenceIterator<?> base = getBaseExpression().iterate(context); Converter conv = getConverterDynamically(context); if (conv == Converter.ToStringConverter.INSTANCE) { return new ItemMappingIterator<>(base, TO_STRING_MAPPER, true); } else { AtomicSequenceMappingFunction mapper = new AtomicSequenceMappingFunction(); mapper.setConverter(conv); if (roleDiagnostic != null) { mapper.setErrorCode(roleDiagnostic.getErrorCode()); } return new ItemMappingIterator<>((SequenceIterator<? extends AtomicValue>)base, mapper, true); } }
/** * Iterate over the sequence of values */ /*@NotNull*/ public SequenceIterator<? extends AtomicValue> iterate(final XPathContext context) throws XPathException { SequenceIterator<?> base = getBaseExpression().iterate(context); Converter conv = getConverterDynamically(context); if (conv == Converter.ToStringConverter.INSTANCE) { return new ItemMappingIterator<>(base, TO_STRING_MAPPER, true); } else { AtomicSequenceMappingFunction mapper = new AtomicSequenceMappingFunction(); mapper.setConverter(conv); if (roleDiagnostic != null) { mapper.setErrorCode(roleDiagnostic.getErrorCode()); } return new ItemMappingIterator<>((SequenceIterator<? extends AtomicValue>)base, mapper, true); } }