3789983e89
Reviewed-by: darcy, ihse
65 lines
2.1 KiB
Java
65 lines
2.1 KiB
Java
/*
|
|
@test
|
|
@key headful
|
|
@bug 4932376
|
|
@summary verifies that data transfer within one JVM works correctly if
|
|
the transfer data was created with a custom class loader.
|
|
@author das@sparc.spb.su area=datatransfer
|
|
@library ../../regtesthelpers
|
|
@build TransferableList AnotherInterface CopyClassFile CustomClassLoaderTransferTest
|
|
@run main CopyClassFile -r ListInterface subdir/
|
|
@run main CopyClassFile -r TransferableList subdir/
|
|
@run main CustomClassLoaderTransferTest
|
|
*/
|
|
|
|
import java.awt.*;
|
|
import java.awt.datatransfer.*;
|
|
import java.io.*;
|
|
import java.net.URL;
|
|
import java.net.URLClassLoader;
|
|
|
|
public class CustomClassLoaderTransferTest {
|
|
public static class DFTransferable implements Transferable {
|
|
private final DataFlavor df;
|
|
private final Object obj;
|
|
public DFTransferable(DataFlavor df, Object obj) {
|
|
this.df = df;
|
|
this.obj = obj;
|
|
}
|
|
|
|
@Override
|
|
public Object getTransferData(DataFlavor flavor)
|
|
throws UnsupportedFlavorException, IOException {
|
|
if (df.equals(flavor)) {
|
|
return obj;
|
|
} else {
|
|
throw new UnsupportedFlavorException(flavor);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public DataFlavor[] getTransferDataFlavors(){
|
|
return new DataFlavor[] { df };
|
|
}
|
|
|
|
@Override
|
|
public boolean isDataFlavorSupported(DataFlavor flavor) {
|
|
return df.equals(flavor);
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
|
|
URL url = new File("./subdir/").toURL();
|
|
ClassLoader classLoader = new URLClassLoader(new URL[] { url },
|
|
CustomClassLoaderTransferTest.class.getClassLoader());
|
|
Class clazz = Class.forName("TransferableList", true, classLoader);
|
|
DataFlavor df = new DataFlavor(clazz, "Transferable List");
|
|
Object obj = clazz.newInstance();
|
|
Transferable t = new DFTransferable(df, obj);
|
|
c.setContents(t, null);
|
|
Transferable ct = c.getContents(null);
|
|
ct.getTransferData(df);
|
|
}
|
|
}
|