From a6bdacc304850b90c29271bac7f883413fbfafe2 Mon Sep 17 00:00:00 2001 From: pchelko Date: Wed, 27 Aug 2014 18:49:12 +0400 Subject: [PATCH] 8051588: DataTransferer.getInstance throws ClassCastException in headless mode Reviewed-by: serb, alexsch --- src/share/classes/sun/awt/ComponentFactory.java | 4 ++++ src/share/classes/sun/awt/HeadlessToolkit.java | 7 +++++++ src/share/classes/sun/awt/SunToolkit.java | 2 -- src/share/classes/sun/awt/datatransfer/DataTransferer.java | 3 ++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/share/classes/sun/awt/ComponentFactory.java b/src/share/classes/sun/awt/ComponentFactory.java index e1d616f1d..4d1678047 100644 --- a/src/share/classes/sun/awt/ComponentFactory.java +++ b/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/src/share/classes/sun/awt/HeadlessToolkit.java b/src/share/classes/sun/awt/HeadlessToolkit.java index 9d68bd48b..c0757be82 100644 --- a/src/share/classes/sun/awt/HeadlessToolkit.java +++ b/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; @@ -401,6 +403,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/src/share/classes/sun/awt/SunToolkit.java b/src/share/classes/sun/awt/SunToolkit.java index 08c3615ae..03d6245e5 100644 --- a/src/share/classes/sun/awt/SunToolkit.java +++ b/src/share/classes/sun/awt/SunToolkit.java @@ -205,8 +205,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/src/share/classes/sun/awt/datatransfer/DataTransferer.java b/src/share/classes/sun/awt/datatransfer/DataTransferer.java index 2c4b75fca..c5a7f5919 100644 --- a/src/share/classes/sun/awt/datatransfer/DataTransferer.java +++ b/src/share/classes/sun/awt/datatransfer/DataTransferer.java @@ -86,6 +86,7 @@ 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; @@ -272,7 +273,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(); } /** -- GitLab