public Value valueOf(Object value, Context context) throws ValueCastException {
if (value instanceof StringValue) {
return (StringValue)value;
} else if (value instanceof String) {
return new StringValue((String)value);
} else if (value instanceof String[]) {
return new StringValue(((String [])value)[0]);
} else if (value instanceof PrintableValue) {
return new StringValue(((PrintableValue)value).print(new StringBuffer(256)).toString());
}
throw new ValueCastException(new ErrorMessage("uncastableStringValue", new Object[] { value }));
}