8134612: clipboard.getData(dataFlavor) can throw UnsupportedFlavorException for registered data flavor
Reviewed-by: alexsch, serb
Contributed-by: ajit.ghaisas@oracle.com
--- a/jdk/test/java/awt/datatransfer/ConstructFlavoredObjectTest/ConstructFlavoredObjectTest.java Thu Dec 15 14:30:12 2016 -0800
+++ b/jdk/test/java/awt/datatransfer/ConstructFlavoredObjectTest/ConstructFlavoredObjectTest.java Fri Dec 16 12:02:10 2016 +0530
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -31,34 +31,57 @@
/*
* @test
* @key headful
- * @bug 8130329
+ * @bug 8130329 8134612 8133719
* @summary Audit Core Reflection in module java.desktop AWT/Miscellaneous area
* for places that will require changes to work with modules
* @author Alexander Scherbatiy
+ * @run main/othervm ConstructFlavoredObjectTest COPY
+ * @run main/othervm ConstructFlavoredObjectTest PASTE
*/
public class ConstructFlavoredObjectTest {
- private static final String TEST_MIME_TYPE = "text/plain;class="
- + MyStringReader.class.getName();
-
public static void main(String[] args) throws Exception {
- final DataFlavor dataFlavor = new DataFlavor(TEST_MIME_TYPE);
- SystemFlavorMap systemFlavorMap = (SystemFlavorMap) SystemFlavorMap.
- getDefaultFlavorMap();
- systemFlavorMap.addUnencodedNativeForFlavor(dataFlavor, "TEXT");
- systemFlavorMap.addFlavorForUnencodedNative("TEXT", dataFlavor);
+ if (args[0].equals("COPY")) {
+
+ // Copy a simple text string on to the System clipboard
+
+ final String TEXT_MIME_TYPE = DataFlavor.javaJVMLocalObjectMimeType +
+ ";class=" + String.class.getName();
- TransferHandler transferHandler = new TransferHandler("Test Handler");
+ final DataFlavor dataFlavor = new DataFlavor(TEXT_MIME_TYPE);
+ SystemFlavorMap systemFlavorMap =
+ (SystemFlavorMap) SystemFlavorMap.getDefaultFlavorMap();
+ systemFlavorMap.addUnencodedNativeForFlavor(dataFlavor, "TEXT");
+ systemFlavorMap.addFlavorForUnencodedNative("TEXT", dataFlavor);
+
+ TransferHandler transferHandler = new TransferHandler("text");
- Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
- transferHandler.exportToClipboard(new JLabel("Test"), clipboard,
- TransferHandler.COPY);
+ String text = "This is sample export text";
+ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+ transferHandler.exportToClipboard(new JLabel(text), clipboard,
+ TransferHandler.COPY);
+ }
+ else if (args[0].equals("PASTE")) {
+
+ // Try to read text data from the System clipboard
+
+ final String TEST_MIME_TYPE = "text/plain;class=" +
+ MyStringReader.class.getName();
- Object clipboardData = clipboard.getData(dataFlavor);
+ final DataFlavor dataFlavor = new DataFlavor(TEST_MIME_TYPE);
+ SystemFlavorMap systemFlavorMap = (SystemFlavorMap) SystemFlavorMap.
+ getDefaultFlavorMap();
+ systemFlavorMap.addUnencodedNativeForFlavor(dataFlavor, "TEXT");
+ systemFlavorMap.addFlavorForUnencodedNative("TEXT", dataFlavor);
- if (!(clipboardData instanceof MyStringReader)) {
- throw new RuntimeException("Wrong clipboard data!");
+ Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+
+ Object clipboardData = clipboard.getData(dataFlavor);
+
+ if (!(clipboardData instanceof MyStringReader)) {
+ throw new RuntimeException("Wrong clipboard data!");
+ }
}
}
@@ -78,3 +101,4 @@
}
}
}
+