IDEA-146095 Code paste causes IllegalArgumentException (backport of JDK-8130242)
diff --git a/src/share/classes/sun/awt/datatransfer/DataTransferer.java b/src/share/classes/sun/awt/datatransfer/DataTransferer.java
index 79c2792..d990b70 100644
--- a/src/share/classes/sun/awt/datatransfer/DataTransferer.java
+++ b/src/share/classes/sun/awt/datatransfer/DataTransferer.java
@@ -25,95 +25,36 @@
 
 package sun.awt.datatransfer;
 
-import java.awt.EventQueue;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Toolkit;
+import sun.awt.AppContext;
+import sun.awt.ComponentFactory;
+import sun.awt.SunToolkit;
+import sun.awt.image.ImageRepresentation;
+import sun.awt.image.ToolkitImage;
+import sun.util.logging.PlatformLogger;
 
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.FlavorMap;
-import java.awt.datatransfer.FlavorTable;
-import java.awt.datatransfer.Transferable;
-import java.awt.datatransfer.UnsupportedFlavorException;
-
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Reader;
-import java.io.SequenceInputStream;
-import java.io.StringReader;
-
+import javax.imageio.*;
+import javax.imageio.spi.ImageWriterSpi;
+import javax.imageio.stream.ImageInputStream;
+import javax.imageio.stream.ImageOutputStream;
+import java.awt.*;
+import java.awt.datatransfer.*;
+import java.awt.image.*;
+import java.io.*;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.net.URI;
 import java.net.URISyntaxException;
-
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.IllegalCharsetNameException;
 import java.nio.charset.UnsupportedCharsetException;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.security.ProtectionDomain;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
+import java.security.*;
+import java.util.*;
 import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.Set;
-import java.util.Stack;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import sun.awt.ComponentFactory;
-import sun.util.logging.PlatformLogger;
-
-import sun.awt.AppContext;
-import sun.awt.SunToolkit;
-
-import java.awt.image.BufferedImage;
-import java.awt.image.ImageObserver;
-import java.awt.image.RenderedImage;
-import java.awt.image.WritableRaster;
-import java.awt.image.ColorModel;
-
-import javax.imageio.ImageIO;
-import javax.imageio.ImageReader;
-import javax.imageio.ImageReadParam;
-import javax.imageio.ImageWriter;
-import javax.imageio.ImageTypeSpecifier;
-
-import javax.imageio.spi.ImageWriterSpi;
-
-import javax.imageio.stream.ImageInputStream;
-import javax.imageio.stream.ImageOutputStream;
-
-import sun.awt.image.ImageRepresentation;
-import sun.awt.image.ToolkitImage;
-
-import java.io.FilePermission;
 
 
 /**
@@ -2898,13 +2839,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 +2848,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.
diff --git a/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java b/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java
index cc926c8..d9af913 100644
--- a/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java
+++ b/test/sun/awt/datatransfer/DataFlavorComparatorTest1.java
@@ -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];