From d0decb505bfb82d556291ea495d014621a46d5f0 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Wed, 18 Apr 2012 17:47:45 +0200 Subject: [PATCH] EA-35645 (JRE bug - just catch and log) --- .../intellij/ide/ClipboardSynchronizer.java | 43 +++++++++++-------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ClipboardSynchronizer.java b/platform/platform-impl/src/com/intellij/ide/ClipboardSynchronizer.java index 6c7283520aa6..b7701915a5a1 100644 --- a/platform/platform-impl/src/com/intellij/ide/ClipboardSynchronizer.java +++ b/platform/platform-impl/src/com/intellij/ide/ClipboardSynchronizer.java @@ -328,12 +328,18 @@ public class ClipboardSynchronizer implements ApplicationComponent { return currentContent.isDataFlavorSupported(dataFlavor); } - final Collection flavors = checkContentsQuick(); - if (flavors != null) { - return flavors.contains(dataFlavor); - } + try { + final Collection flavors = checkContentsQuick(); + if (flavors != null) { + return flavors.contains(dataFlavor); + } - return super.isDataFlavorAvailable(dataFlavor); + return super.isDataFlavorAvailable(dataFlavor); + } + catch (NullPointerException e) { + LOG.warn("Sun bug #6322854", e); + return false; + } } @Override @@ -343,12 +349,18 @@ public class ClipboardSynchronizer implements ApplicationComponent { return currentContent; } - final Collection flavors = checkContentsQuick(); - if (flavors != null && flavors.isEmpty()) { + try { + final Collection flavors = checkContentsQuick(); + if (flavors != null && flavors.isEmpty()) { + return null; + } + + return super.getContents(); + } + catch (NullPointerException e) { + LOG.warn("Sun bug #6322854", e); return null; } - - return super.getContents(); } @Override @@ -369,7 +381,7 @@ public class ClipboardSynchronizer implements ApplicationComponent { * collection of available data flavors otherwise. */ @Nullable - public static Collection checkContentsQuick() { + private static Collection checkContentsQuick() { final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); final Class aClass = clipboard.getClass(); if (!"sun.awt.X11.XClipboard".equals(aClass.getName())) return null; @@ -391,14 +403,9 @@ public class ClipboardSynchronizer implements ApplicationComponent { if (formats == null || formats.length == 0) { return Collections.emptySet(); } - try { - @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"}) - final Set set = DataTransferer.getInstance().getFlavorsForFormats(formats, FLAVOR_MAP).keySet(); - return set; - } - catch (NullPointerException e) { - LOG.warn("Sun bug #6322854", e); - } + @SuppressWarnings({"unchecked", "UnnecessaryLocalVariable"}) + final Set set = DataTransferer.getInstance().getFlavorsForFormats(formats, FLAVOR_MAP).keySet(); + return set; } catch (IllegalAccessException ignore) { } catch (IllegalArgumentException ignore) { }