Object value = internalEvaluate(xp.getExpression(), tuple);
if (value == null) {
return null;
}
XMLType.Type type = Type.DOCUMENT;
SQLXMLImpl result = null;
try {
if (value instanceof String) {
String string = (String)value;
result = new SQLXMLImpl(string);
result.setEncoding(Streamable.ENCODING);
if (!xp.isWellFormed()) {
Reader r = new StringReader(string);
type = validate(xp, r);
}
} else {
InputStreamFactory isf = null;
Streamable<?> s = (Streamable<?>)value;
isf = getInputStreamFactory(s);
result = new SQLXMLImpl(isf);
if (!xp.isWellFormed()) {
Reader r = result.getCharacterStream();
type = validate(xp, r);
}
}
} catch (TransformationException e) {
throw new ExpressionEvaluationException(e, e.getMessage());