8134612: clipboard.getData(dataFlavor) can throw UnsupportedFlavorException for registered data flavor
authoraghaisas
Fri, 16 Dec 2016 12:02:10 +0530 (2016-12-16)
changeset 42936 2b8cc27c159c
parent 42935 b98bdba7ce61
child 42937 3acb5995b491
8134612: clipboard.getData(dataFlavor) can throw UnsupportedFlavorException for registered data flavor Reviewed-by: alexsch, serb Contributed-by: ajit.ghaisas@oracle.com
jdk/test/java/awt/datatransfer/ConstructFlavoredObjectTest/ConstructFlavoredObjectTest.java
--- 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 @@
         }
     }
 }
+