Esempio n. 1
0
  /* (non-Javadoc)
   * @see org.exist.xquery.value.Item#toJavaObject(java.lang.Class)
   */
  public Object toJavaObject(Class target) throws XPathException {
    if (target.isAssignableFrom(UntypedAtomicValue.class)) return this;
    else if (target == Object.class || target == String.class || target == CharSequence.class)
      return value;
    else if (target == double.class || target == Double.class) {
      DoubleValue v = (DoubleValue) convertTo(Type.DOUBLE);
      return new Double(v.getValue());
    } else if (target == float.class || target == Float.class) {
      FloatValue v = (FloatValue) convertTo(Type.FLOAT);
      return new Float(v.value);
    } else if (target == long.class || target == Long.class) {
      IntegerValue v = (IntegerValue) convertTo(Type.LONG);
      return new Long(v.getInt());
    } else if (target == int.class || target == Integer.class) {
      IntegerValue v = (IntegerValue) convertTo(Type.INT);
      return new Integer(v.getInt());
    } else if (target == short.class || target == Short.class) {
      IntegerValue v = (IntegerValue) convertTo(Type.SHORT);
      return new Short((short) v.getInt());
    } else if (target == byte.class || target == Byte.class) {
      IntegerValue v = (IntegerValue) convertTo(Type.BYTE);
      return new Byte((byte) v.getInt());
    } else if (target == boolean.class || target == Boolean.class) {
      return Boolean.valueOf(effectiveBooleanValue());
    } else if (target == char.class || target == Character.class) {
      if (value.length() > 1 || value.length() == 0)
        throw new XPathException(
            "cannot convert string with length = 0 or length > 1 to Java character");
      return new Character(value.charAt(0));
    }

    throw new XPathException(
        "cannot convert value of type "
            + Type.getTypeName(getType())
            + " to Java object of type "
            + target.getName());
  }