--- old/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java 2014-12-12 18:00:43.368297600 +0400 +++ new/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java 2014-12-12 18:00:42.534249900 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2010, 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 @@ -57,7 +57,6 @@ import sun.awt.SunToolkit; import sun.awt.datatransfer.DataTransferer; import sun.awt.datatransfer.ToolkitThreadBlockedHandler; -import sun.security.util.SecurityConstants; /** *

@@ -239,13 +238,6 @@ if (localTransferable != null) { return localTransferable.getTransferData(df); - } else if (df.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType)) { - // Workaround to JDK-8024061: Exception thrown when drag and drop - // between two components is executed quickly. - // It is expected localTransferable is not null if javaJVMLocalObjectMimeType - // is used. Executing further results in ClassCastException, so null is - // returned here as no transfer data is available in this case. - return null; } if (dropStatus != STATUS_ACCEPT || dropComplete) { @@ -267,6 +259,7 @@ } final long format = lFormat.longValue(); + Object ret = getNativeData(format); if (ret instanceof byte[]) { @@ -277,11 +270,14 @@ throw new InvalidDnDOperationException(e.getMessage()); } } else if (ret instanceof InputStream) { + InputStream inputStream = (InputStream)ret; try { return DataTransferer.getInstance(). - translateStream((InputStream)ret, df, format, this); + translateStream(inputStream, df, format, this); } catch (IOException e) { throw new InvalidDnDOperationException(e.getMessage()); + } finally { + inputStream.close(); } } else { throw new IOException("no native data was transfered");