Mercurial > hg > release > icedtea7-forest-2.1 > jdk
changeset 4874:8abc50bce580
8009305: Improve AWT data transfer
Reviewed-by: art, skoivu, smarks, ant
author | dfuchs |
---|---|
date | Thu, 14 Mar 2013 17:27:32 +0100 |
parents | 5b067978a725 |
children | b836de51e07a |
files | src/share/classes/sun/awt/datatransfer/TransferableProxy.java |
diffstat | 1 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/classes/sun/awt/datatransfer/TransferableProxy.java Wed Apr 17 23:16:21 2013 +0100 +++ b/src/share/classes/sun/awt/datatransfer/TransferableProxy.java Thu Mar 14 17:27:32 2013 +0100 @@ -102,11 +102,11 @@ protected final boolean isLocal; } -class ClassLoaderObjectOutputStream extends ObjectOutputStream { +final class ClassLoaderObjectOutputStream extends ObjectOutputStream { private final Map<Set<String>, ClassLoader> map = new HashMap<Set<String>, ClassLoader>(); - public ClassLoaderObjectOutputStream(OutputStream os) throws IOException { + ClassLoaderObjectOutputStream(OutputStream os) throws IOException { super(os); } @@ -140,15 +140,15 @@ map.put(s, classLoader); } - public Map<Set<String>, ClassLoader> getClassLoaderMap() { + Map<Set<String>, ClassLoader> getClassLoaderMap() { return new HashMap(map); } } -class ClassLoaderObjectInputStream extends ObjectInputStream { +final class ClassLoaderObjectInputStream extends ObjectInputStream { private final Map<Set<String>, ClassLoader> map; - public ClassLoaderObjectInputStream(InputStream is, + ClassLoaderObjectInputStream(InputStream is, Map<Set<String>, ClassLoader> map) throws IOException { super(is); @@ -166,8 +166,11 @@ s.add(className); ClassLoader classLoader = map.get(s); - - return Class.forName(className, false, classLoader); + if (classLoader != null) { + return Class.forName(className, false, classLoader); + } else { + return super.resolveClass(classDesc); + } } protected Class<?> resolveProxyClass(String[] interfaces) @@ -179,6 +182,9 @@ } ClassLoader classLoader = map.get(s); + if (classLoader == null) { + return super.resolveProxyClass(interfaces); + } // The code below is mostly copied from the superclass. ClassLoader nonPublicLoader = null;