From 0b40742fe14c66e871f45b2ea8fa292e4f6a9090 Mon Sep 17 00:00:00 2001 From: Petr Pchelko Date: Mon, 28 Jul 2014 19:11:52 +0400 Subject: [PATCH] 8051588: DataTransferer.getInstance throws ClassCastException in headless mode Reviewed-by: serb, alexsch --- jdk/src/share/classes/sun/awt/ComponentFactory.java | 4 ++++ jdk/src/share/classes/sun/awt/HeadlessToolkit.java | 7 +++++++ jdk/src/share/classes/sun/awt/SunToolkit.java | 2 -- .../share/classes/sun/awt/datatransfer/DataTransferer.java | 3 ++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/sun/awt/ComponentFactory.java b/jdk/src/share/classes/sun/awt/ComponentFactory.java index e1d616f1d93..4d167804722 100644 --- a/jdk/src/share/classes/sun/awt/ComponentFactory.java +++ b/jdk/src/share/classes/sun/awt/ComponentFactory.java @@ -25,6 +25,8 @@ package sun.awt; +import sun.awt.datatransfer.DataTransferer; + import java.awt.*; import java.awt.dnd.*; import java.awt.dnd.peer.DragSourceContextPeer; @@ -93,4 +95,6 @@ public interface ComponentFactory { RobotPeer createRobot(Robot target, GraphicsDevice screen) throws AWTException, HeadlessException; + DataTransferer getDataTransferer(); + } diff --git a/jdk/src/share/classes/sun/awt/HeadlessToolkit.java b/jdk/src/share/classes/sun/awt/HeadlessToolkit.java index 08890486486..8f2fbb7f214 100644 --- a/jdk/src/share/classes/sun/awt/HeadlessToolkit.java +++ b/jdk/src/share/classes/sun/awt/HeadlessToolkit.java @@ -25,6 +25,8 @@ package sun.awt; +import sun.awt.datatransfer.DataTransferer; + import java.awt.*; import java.awt.dnd.*; import java.awt.dnd.peer.DragSourceContextPeer; @@ -402,6 +404,11 @@ public class HeadlessToolkit extends Toolkit return null; } + @Override + public DataTransferer getDataTransferer() { + return null; + } + @SuppressWarnings("deprecation") public FontMetrics getFontMetrics(Font font) { return tk.getFontMetrics(font); diff --git a/jdk/src/share/classes/sun/awt/SunToolkit.java b/jdk/src/share/classes/sun/awt/SunToolkit.java index 77a34d6ba1d..15f9e09890c 100644 --- a/jdk/src/share/classes/sun/awt/SunToolkit.java +++ b/jdk/src/share/classes/sun/awt/SunToolkit.java @@ -203,8 +203,6 @@ public abstract class SunToolkit extends Toolkit public abstract boolean isTraySupported(); - public abstract DataTransferer getDataTransferer(); - @SuppressWarnings("deprecation") public abstract FontPeer getFontPeer(String name, int style); diff --git a/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java b/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java index 43e09519849..963ca5c553b 100644 --- a/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java +++ b/jdk/src/share/classes/sun/awt/datatransfer/DataTransferer.java @@ -74,6 +74,7 @@ import java.util.*; import sun.datatransfer.DataFlavorUtil; import sun.awt.AppContext; +import sun.awt.ComponentFactory; import sun.awt.SunToolkit; import java.awt.image.BufferedImage; @@ -177,7 +178,7 @@ public abstract class DataTransferer { * instead, null will be returned. */ public static synchronized DataTransferer getInstance() { - return ((SunToolkit) Toolkit.getDefaultToolkit()).getDataTransferer(); + return ((ComponentFactory) Toolkit.getDefaultToolkit()).getDataTransferer(); } /**