Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 298447

Summary: [DND] NullPointerException using LocalTransfer
Product: [RT] RAP Reporter: Flavio Donze <flavio.donze>
Component: JFaceAssignee: Project Inbox <rap-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: flavio.donze, passport123
Version: 1.3   
Target Milestone: 1.3 M5   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
fix none

Description Flavio Donze CLA 2009-12-22 18:17:33 EST
Build Identifier: M20090917-0800

I copied LocalTransfer and ViewerDragAdapter from the org.eclipse.emf.edit.ui.dnd package into my compability plug-in (because the plug-in "org.eclipse.emf.edit.ui" has a dependency on org.eclipse.ui).

LocalTransfer extends ByteArrayTransfer, dropping an EMF element in my tree I get an NullPointerException. Seems like transferData.data is null and System.arraycopy() does not like that.

Here the exception:
java.lang.NullPointerException
	at java.lang.System.arraycopy(Native Method)
	at org.eclipse.swt.dnd.ByteArrayTransfer.javaToNative(ByteArrayTransfer.java:157)
	at org.eclipse.emf.edit.ui.dnd.LocalTransfer.javaToNative(LocalTransfer.java:99)
	at org.eclipse.swt.internal.widgets.displaykit.DNDSupport.transferData(DNDSupport.java:409)
	at org.eclipse.swt.internal.widgets.displaykit.DNDSupport.processDragFinished(DNDSupport.java:271)
	at org.eclipse.swt.internal.widgets.displaykit.DNDSupport.access$5(DNDSupport.java:238)
	at org.eclipse.swt.internal.widgets.displaykit.DNDSupport$1.run(DNDSupport.java:123)
	at org.eclipse.rwt.lifecycle.ProcessActionRunner.executeNext(ProcessActionRunner.java:57)
	at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.readAndDispatch(RWTLifeCycle.java:238)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:982)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2396)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2355)
	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2206)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:424)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.jface.internal.databinding.realmadapter.RealmAdapter.run(RealmAdapter.java:44)
	at org.eclipse.rap.ui.internal.RealmAdapterHook.runWithDefault(RealmAdapterHook.java:48)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:427)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
	at ch.scodi.viewer.ViewerApplication.createUI(ViewerApplication.java:30)
	at org.eclipse.rwt.internal.lifecycle.EntryPointManager.createUI(EntryPointManager.java:92)
	at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:227)
	at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:115)
	at java.lang.Thread.run(Thread.java:619)
	at org.eclipse.rwt.internal.lifecycle.UIThread.run(UIThread.java:80)


Reproducible: Always
Comment 1 Flavio Donze CLA 2009-12-23 05:55:37 EST
I did some testing and think that using
transferData.data = Arrays.copyOf(data, data.length);
instead of 
System.arraycopy(data, 0, transferData.data, 0, data.length);
would solve the problem.
Comment 2 Tim Buschtoens CLA 2010-01-11 07:46:04 EST
Created attachment 155735 [details]
fix

Create the array before arraycopy is called. Includes test.
Comment 3 RĂ¼diger Herrmann CLA 2010-01-13 07:36:31 EST
Fixed in CVS HEAD
Comment 4 Ivan Furnadjiev CLA 2010-02-02 08:55:43 EST
*** Bug 301532 has been marked as a duplicate of this bug. ***