-
Bug
-
Resolution: Won't Fix
-
P3
-
5.0u14
-
x86
-
linux
Many reports from users, no reliable steps to reproduce. More than 100 reports. I checked source of BasicTextUI. There is no check if returned caret is null. Looks like it happens only on JDK 5 as on JDK 6 BasicTextUI is changed - inner class TextDropTargetListener is not present in JDK 6 source.
Original report is at http://www.netbeans.org/issues/show_bug.cgi?id=131830
Exception call stack:
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTextUI$TextDropTargetListener.restoreComponentStateForDrop(BasicTextUI.java:2115)
at javax.swing.plaf.basic.BasicDropTargetListener.drop(BasicDropTargetListener.java:259)
at javax.swing.TransferHandler$SwingDropTarget.drop(TransferHandler.java:614)
at org.openide.text.QuietEditorPane$DelegatingDropTarget.drop(QuietEditorPane.java:385)
at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:500)
at sun.awt.dnd.SunDropTargetContextPeer.access$800(SunDropTargetContextPeer.java:53)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:812)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:736)
at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:29)
at java.awt.Component.dispatchEventImpl(Component.java:3926)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.LightweightDispatcher.retargetMouseEvent(LightweightDispatcher.java:4256)
at java.awt.LightweightDispatcher.processDropTargetEvent(LightweightDispatcher.java:4007)
at java.awt.LightweightDispatcher.dispatchEvent(LightweightDispatcher.java:3861)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
It is reproducible always on Linux, Metal L&F, JDK 5u16. I checked and problem is caused by registering the same DropTargetListener two times. We have our delegating drop target inner class extending DropTarget. Then drop target listener is registered first time when UI is installed and second time when editor kit is set. Possible solution is either check that the same listener is not registered more than once or make sure that BasicTextUI.TextDropTargetListener handles second call without NPE. (Problem is that it clean its inner context/component during first call so at second call component is null -> NPE).
I must add to be clear: From call stack
javax.swing.TransferHandler$SwingDropTarget.drop(TransferHandler.java:614) calls two times javax.swing.plaf.basic.BasicDropTargetListener.drop(BasicDropTargetListener.java:259)
Original report is at http://www.netbeans.org/issues/show_bug.cgi?id=131830
Exception call stack:
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTextUI$TextDropTargetListener.restoreComponentStateForDrop(BasicTextUI.java:2115)
at javax.swing.plaf.basic.BasicDropTargetListener.drop(BasicDropTargetListener.java:259)
at javax.swing.TransferHandler$SwingDropTarget.drop(TransferHandler.java:614)
at org.openide.text.QuietEditorPane$DelegatingDropTarget.drop(QuietEditorPane.java:385)
at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:500)
at sun.awt.dnd.SunDropTargetContextPeer.access$800(SunDropTargetContextPeer.java:53)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:812)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:736)
at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:29)
at java.awt.Component.dispatchEventImpl(Component.java:3926)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.LightweightDispatcher.retargetMouseEvent(LightweightDispatcher.java:4256)
at java.awt.LightweightDispatcher.processDropTargetEvent(LightweightDispatcher.java:4007)
at java.awt.LightweightDispatcher.dispatchEvent(LightweightDispatcher.java:3861)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3903)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
It is reproducible always on Linux, Metal L&F, JDK 5u16. I checked and problem is caused by registering the same DropTargetListener two times. We have our delegating drop target inner class extending DropTarget. Then drop target listener is registered first time when UI is installed and second time when editor kit is set. Possible solution is either check that the same listener is not registered more than once or make sure that BasicTextUI.TextDropTargetListener handles second call without NPE. (Problem is that it clean its inner context/component during first call so at second call component is null -> NPE).
I must add to be clear: From call stack
javax.swing.TransferHandler$SwingDropTarget.drop(TransferHandler.java:614) calls two times javax.swing.plaf.basic.BasicDropTargetListener.drop(BasicDropTargetListener.java:259)