1748 localeTransferable);
1749
1750 // Target data is a Reader. Obtain data in InputStream format, encoded
1751 // as "Unicode" (utf-16be). Then use an InputStreamReader to decode
1752 // back to chars on demand.
1753 } else if (flavor.isRepresentationClassReader()) {
1754 if (!(isFlavorCharsetTextType(flavor) && isTextFormat(format))) {
1755 throw new IOException
1756 ("cannot transfer non-text data as Reader");
1757 }
1758
1759 InputStream is = (InputStream)translateStreamToInputStream(
1760 str, DataFlavor.plainTextFlavor,
1761 format, localeTransferable);
1762
1763 String unicode = DataTransferer.getTextCharset(DataFlavor.plainTextFlavor);
1764
1765 Reader reader = new InputStreamReader(is, unicode);
1766
1767 theObject = constructFlavoredObject(reader, flavor, Reader.class);
1768
1769 // Target data is an RMI object
1770 } else if (flavor.isRepresentationClassRemote()) {
1771
1772 try (ObjectInputStream ois =
1773 new ObjectInputStream(str))
1774 {
1775 theObject = RMI.getMarshalledObject(ois.readObject());
1776 }catch (Exception e) {
1777 throw new IOException(e.getMessage());
1778 }
1779
1780 // Target data is Serializable
1781 } else if (flavor.isRepresentationClassSerializable()) {
1782 try (ObjectInputStream ois =
1783 new ObjectInputStream(str))
1784 {
1785 theObject = ois.readObject();
1786 } catch (Exception e) {
1787 throw new IOException(e.getMessage());
1788 }
|
1748 localeTransferable);
1749
1750 // Target data is a Reader. Obtain data in InputStream format, encoded
1751 // as "Unicode" (utf-16be). Then use an InputStreamReader to decode
1752 // back to chars on demand.
1753 } else if (flavor.isRepresentationClassReader()) {
1754 if (!(isFlavorCharsetTextType(flavor) && isTextFormat(format))) {
1755 throw new IOException
1756 ("cannot transfer non-text data as Reader");
1757 }
1758
1759 InputStream is = (InputStream)translateStreamToInputStream(
1760 str, DataFlavor.plainTextFlavor,
1761 format, localeTransferable);
1762
1763 String unicode = DataTransferer.getTextCharset(DataFlavor.plainTextFlavor);
1764
1765 Reader reader = new InputStreamReader(is, unicode);
1766
1767 theObject = constructFlavoredObject(reader, flavor, Reader.class);
1768 // Target data is a byte array
1769 } else if (byteArrayClass.equals(flavor.getRepresentationClass())) {
1770 if(isFlavorCharsetTextType(flavor) && isTextFormat(format)) {
1771 theObject = translateBytesToString(inputStreamToByteArray(str), format, localeTransferable)
1772 .getBytes(DataTransferer.getTextCharset(flavor));
1773 } else {
1774 theObject = inputStreamToByteArray(str);
1775 }
1776 // Target data is an RMI object
1777 } else if (flavor.isRepresentationClassRemote()) {
1778
1779 try (ObjectInputStream ois =
1780 new ObjectInputStream(str))
1781 {
1782 theObject = RMI.getMarshalledObject(ois.readObject());
1783 }catch (Exception e) {
1784 throw new IOException(e.getMessage());
1785 }
1786
1787 // Target data is Serializable
1788 } else if (flavor.isRepresentationClassSerializable()) {
1789 try (ObjectInputStream ois =
1790 new ObjectInputStream(str))
1791 {
1792 theObject = ois.readObject();
1793 } catch (Exception e) {
1794 throw new IOException(e.getMessage());
1795 }
|