changeset 11440:a0672663e789

8130242: DataFlavorComparator transitivity exception Reviewed-by: serb
author mcherkas
date Thu, 18 Feb 2016 15:48:13 +0300
parents bd0e1778eac6
children 53abec8a0aaf
files src/share/classes/sun/awt/datatransfer/DataTransferer.java test/sun/awt/datatransfer/DataFlavorComparatorTest1.java
diffstat 2 files changed, 62 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Tue Nov 10 01:38:35 2015 +0300
+++ b/src/share/classes/sun/awt/datatransfer/DataTransferer.java	Thu Feb 18 15:48:13 2016 +0300
@@ -2898,13 +2898,7 @@
                     return comp;
                 }
             } else {
-                // First, prefer application types.
-                comp = compareIndices(primaryTypes, primaryType1, primaryType2,
-                                      UNKNOWN_OBJECT_LOSES);
-                if (comp != 0) {
-                    return comp;
-                }
-
+                // First, prefer text types
                 if (flavor1.isFlavorTextType()) {
                     return 1;
                 }
@@ -2913,6 +2907,13 @@
                     return -1;
                 }
 
+                // Next, prefer application types.
+                comp = compareIndices(primaryTypes, primaryType1, primaryType2,
+                        UNKNOWN_OBJECT_LOSES);
+                if (comp != 0) {
+                    return comp;
+                }
+
                 // Next, look for application/x-java-* types. Prefer unknown
                 // MIME types because if the user provides his own data flavor,
                 // it will likely be the most descriptive one.
--- a/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java	Tue Nov 10 01:38:35 2015 +0300
+++ b/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java	Thu Feb 18 15:48:13 2016 +0300
@@ -37,42 +37,61 @@
 
     public static void main(String[] args) throws Exception {
         String[] mimes = new String[] {
+                "text/plain;class=java.nio.ByteBuffer;charset=UTF-8",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-8",
+                "text/plain;class=java.nio.ByteBuffer;charset=UTF-16LE",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-16LE",
+                "application/x-java-text-encoding",
+                "application/x-java-serialized-object;class=java.lang.String",
+                "text/plain;class=java.io.InputStream;charset=UTF-8",
+                "text/uri-list;class=java.io.InputStream;charset=UTF-8",
+                "text/plain;class=java.io.InputStream;charset=windows-1252",
+                "text/uri-list;class=java.io.InputStream;charset=windows-1252",
+                "application/x-java-url;class=java.net.URL",
+                "text/plain;class=java.io.Reader",
+                "text/plain;charset=windows-1252",
+                "text/uri-list;class=java.io.Reader",
+                "text/uri-list;charset=windows-1252",
+                "text/plain;charset=UTF-8",
+                "text/uri-list;charset=UTF-8",
+                "text/plain;class=java.io.InputStream;charset=US-ASCII",
+                "text/uri-list;class=java.io.InputStream;charset=US-ASCII",
+                "text/plain;class=java.io.InputStream;charset=UTF-16LE",
+                "text/plain;charset=US-ASCII",
+                "text/uri-list;class=java.io.InputStream;charset=UTF-16LE",
+                "text/uri-list;charset=US-ASCII",
+                "text/plain;charset=UTF-16LE",
+                "text/uri-list;charset=UTF-16LE",
+                "text/plain;class=java.nio.ByteBuffer;charset=UTF-16BE",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-16BE",
+                "text/plain;class=java.nio.ByteBuffer;charset=ISO-8859-1",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=ISO-8859-1",
                 "text/plain",
-                "text/plain; charset=unicode",
-                "text/plain; charset=cp1251",
-                "text/plain; charset=unicode; class=java.io.InputStream",
-                "text/plain; charset=unicode; class=java.io.Serializable",
-                "text/plain; charset=unicode; class=java.lang.Object",
-                "text/plain; class=java.lang.String",
-                "text/plain; class=java.io.Reader",
-                "text/plain; class=java.lang.Object",
-                "text/html",
-                "text/html; charset=unicode",
-                "text/html; charset=cp1251",
-                "text/html; charset=unicode; class=java.io.InputStream",
-                "text/html; charset=unicode; class=java.io.Serializable",
-                "text/html; charset=unicode; class=java.lang.Object",
-                "text/html; class=java.lang.String",
-                "text/html; class=java.io.Reader",
-                "text/html; class=java.lang.Object",
-                "text/unknown",
-                "text/unknown; charset=unicode",
-                "text/unknown; charset=cp1251",
-                "text/unknown; charset=unicode; class=java.io.InputStream",
-                "text/unknown; charset=unicode; class=java.io.Serializable",
-                "text/unknown; charset=unicode; class=java.lang.Object",
-                "text/unknown; class=java.lang.String",
-                "text/unknown; class=java.io.Reader",
-                "text/unknown; class=java.lang.Object",
-                "application/unknown; class=java.io.InputStream",
-                "application/unknown; class=java.lang.Object",
-                "application/unknown",
-                "application/x-java-jvm-local-objectref; class=java.io.InputStream",
-                "application/x-java-jvm-local-objectref; class=java.lang.Object",
-                "application/x-java-jvm-local-objectref",
-                "unknown/flavor",
-                "unknown/flavor; class=java.io.InputStream",
-                "unknown/flavor; class=java.lang.Object",
+                "text/uri-list",
+                "text/plain;class=java.nio.ByteBuffer;charset=UTF-16",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=UTF-16",
+                "text/plain;class=java.io.InputStream;charset=unicode",
+                "text/uri-list;class=java.io.InputStream;charset=UTF-16",
+                "text/plain;class=java.nio.CharBuffer",
+                "text/uri-list;class=java.nio.CharBuffer",
+                "text/plain;class=java.lang.String",
+                "text/plain;charset=UTF-16BE",
+                "text/uri-list;class=java.lang.String",
+                "text/uri-list;charset=UTF-16BE",
+                "text/plain;charset=ISO-8859-1",
+                "text/uri-list;charset=ISO-8859-1",
+                "text/plain;class=java.io.InputStream;charset=UTF-16BE",
+                "text/uri-list;class=java.io.InputStream;charset=UTF-16BE",
+                "text/plain;class=java.nio.ByteBuffer;charset=US-ASCII",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=US-ASCII",
+                "text/plain;class=java.io.InputStream;charset=ISO-8859-1",
+                "text/uri-list;class=java.io.InputStream;charset=ISO-8859-1",
+                "text/plain;charset=UTF-16",
+                "text/plain;class=java.nio.ByteBuffer;charset=windows-1252",
+                "text/uri-list;charset=UTF-16",
+                "text/uri-list;class=java.nio.ByteBuffer;charset=windows-1252",
+                "text/plain;class=java.io.InputStream;charset=windows-1252",
+                "text/uri-list;class=java.io.InputStream;charset=windows-1252",
         };
 
         DataFlavor[] flavors = new DataFlavor[mimes.length];