--- a/jdk/src/java.datatransfer/share/classes/sun/datatransfer/DataFlavorUtil.java Tue Jul 14 13:57:16 2015 +0300
+++ b/jdk/src/java.datatransfer/share/classes/sun/datatransfer/DataFlavorUtil.java Tue Jul 14 20:36:12 2015 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 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
@@ -574,14 +574,7 @@
return comp;
}
} else {
- // First, prefer application types.
- comp = compareIndices(primaryTypes, primaryType1, primaryType2,
- UNKNOWN_OBJECT_LOSES);
- if (comp != 0) {
- return comp;
- }
-
- // Next prefer text types
+ // First, prefer text types
if (flavor1.isFlavorTextType()) {
return 1;
}
@@ -590,6 +583,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/jdk/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java Tue Jul 14 13:57:16 2015 +0300
+++ b/jdk/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java Tue Jul 14 20:36:12 2015 +0300
@@ -38,42 +38,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];