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];