@SuppressWarnings({"unchecked"}) public <X> X unwrap(Character[] value, Class<X> type, WrapperOptions options) { if (value == null) { return null; } if (Character[].class.isAssignableFrom(type)) { return (X) value; } if (String.class.isAssignableFrom(type)) { return (X) new String(unwrapChars(value)); } if (Clob.class.isAssignableFrom(type)) { return (X) options.getLobCreator().createClob(new String(unwrapChars(value))); } if (Reader.class.isAssignableFrom(type)) { return (X) new StringReader(new String(unwrapChars(value))); } if (CharacterStream.class.isAssignableFrom(type)) { return (X) new CharacterStreamImpl(new String(unwrapChars(value))); } throw unknownUnwrap(type); }
@SuppressWarnings({"unchecked"}) public <X> X unwrap(Byte[] value, Class<X> type, WrapperOptions options) { if (value == null) { return null; } if (Byte[].class.isAssignableFrom(type)) { return (X) value; } if (byte[].class.isAssignableFrom(type)) { return (X) unwrapBytes(value); } if (InputStream.class.isAssignableFrom(type)) { return (X) new ByteArrayInputStream(unwrapBytes(value)); } if (BinaryStream.class.isAssignableFrom(type)) { return (X) new BinaryStreamImpl(unwrapBytes(value)); } if (Blob.class.isAssignableFrom(type)) { return (X) options.getLobCreator().createBlob(unwrapBytes(value)); } throw unknownUnwrap(type); }