NullPointerException during merge request
I'm attempting to implement merge functionality but am running into a NullPointerException when I call DiffTool.show()
Here is my code (fragment from CMMergeProvider.java):
public static void doSingleMerge(Project project, VirtualFile current, History.HistoryObject last, History.HistoryObject original) {
ActionButtonPresentation actionButton = new ActionButtonPresentation(true, "Merge", true);
String leftText;
String rightText;
String originalContent;
// Get string contents for all
if(!current.isDirectory()) {
try {
leftText = StringUtil.convertLineSeparators(new String(current.contentsToByteArray()));
rightText = StringUtil.convertLineSeparators(new String(last.getSource()));
originalContent = StringUtil.convertLineSeparators(new String(current.contentsToByteArray()));
MergeRequest mergeRequest = PeerFactory.getInstance().getDiffRequestFactory()
.createMergeRequest(leftText, rightText, originalContent, current, project, actionButton);
DiffTool diffTool = DiffManager.getInstance().getDiffTool();
if(diffTool.canShow(mergeRequest)) {
diffTool.show(mergeRequest); /* This is line 342 referenced by the NullPointerException */
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Here is the error I'm receving:
java.lang.NullPointerException
at com.intellij.openapi.diff.impl.incrementalMerge.ui.MergePanel2.setDiffRequest(MergePanel2.java:8)
at com.intellij.openapi.diff.impl.mergeTool.MergeTool.a(MergeTool.java:14)
at com.intellij.openapi.diff.impl.mergeTool.MergeTool.a(MergeTool.java:11)
at com.intellij.openapi.diff.impl.mergeTool.MergeTool.show(MergeTool.java:17)
at com.intellij.openapi.diff.impl.external.CompositeDiffTool.show(CompositeDiffTool.java:17)
at com.telelogic.integration.intellij.cm.CMMergeProvider.doSingleMerge(CMMergeProvider.java:342)
at com.telelogic.integration.intellij.ui.dialogs.ParallelsDialog$2.mouseClicked(ParallelsDialog.java:148)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:10)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:132)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:188)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1039)
at java.awt.Dialog$3.run(Dialog.java:1091)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1089)
at java.awt.Component.show(Component.java:1419)
at java.awt.Component.setVisible(Component.java:1372)
at java.awt.Window.setVisible(Window.java:801)
at java.awt.Dialog.setVisible(Dialog.java:979)
at com.telelogic.integration.intellij.ui.dialogs.ParallelsDialog.(ParallelsDialog.java:110)
at com.telelogic.integration.intellij.ui.dialogs.ParallelsDialog.]]>(ParallelsDialog.java:65)
at com.telelogic.integration.intellij.actions.ShowParallelsAction.actionPerformed(ShowParallelsAction.java:31)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:5)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:39)
at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:139)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:29)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:2)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:10)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:132)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:188)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
ERROR - com.intellij.ide.IdeEventQueue - Error during dispatching of java.awt.event.MouseEvent[MOUSE_CLICKED,(595,257),absolute(595,257),button=1,modifiers=Button1,clickCount=1] on dialog11
java.lang.NullPointerException
at com.intellij.openapi.diff.impl.incrementalMerge.ui.MergePanel2.setDiffRequest(MergePanel2.java:8)
at com.intellij.openapi.diff.impl.mergeTool.MergeTool.a(MergeTool.java:14)
at com.intellij.openapi.diff.impl.mergeTool.MergeTool.a(MergeTool.java:11)
at com.intellij.openapi.diff.impl.mergeTool.MergeTool.show(MergeTool.java:17)
at com.intellij.openapi.diff.impl.external.CompositeDiffTool.show(CompositeDiffTool.java:17)
at com.telelogic.integration.intellij.cm.CMMergeProvider.doSingleMerge(CMMergeProvider.java:342)
at com.telelogic.integration.intellij.ui.dialogs.ParallelsDialog$2.mouseClicked(ParallelsDialog.java:148)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3995)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:10)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:132)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:188)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1039)
at java.awt.Dialog$3.run(Dialog.java:1091)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1089)
at java.awt.Component.show(Component.java:1419)
at java.awt.Component.setVisible(Component.java:1372)
at java.awt.Window.setVisible(Window.java:801)
at java.awt.Dialog.setVisible(Dialog.java:979)
at com.telelogic.integration.intellij.ui.dialogs.ParallelsDialog.(ParallelsDialog.java:110)
at com.telelogic.integration.intellij.ui.dialogs.ParallelsDialog.]]>(ParallelsDialog.java:65)
at com.telelogic.integration.intellij.actions.ShowParallelsAction.actionPerformed(ShowParallelsAction.java:31)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:5)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:39)
at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:139)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:29)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:2)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:10)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:132)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:188)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
ERROR - com.intellij.ide.IdeEventQueue - IntelliJ IDEA 7.0.2 Build #7590
ERROR - com.intellij.ide.IdeEventQueue - JDK: 1.6.0_03
ERROR - com.intellij.ide.IdeEventQueue - VM: Java HotSpot(TM) Client VM
ERROR - com.intellij.ide.IdeEventQueue - Vendor: Sun Microsystems Inc.
ERROR - com.intellij.ide.IdeEventQueue - OS: Windows XP
ERROR - com.intellij.ide.IdeEventQueue - Last Action: Show Parallels
During debugging, I changed left/right/original string values to "123", "24", "234" just in case I was passing bad data to MergeRequest, but I received the same exception. Changing ActionButtonPresentation also didn't help.
I'm calling the merge from a dialog that displays a list of files with their merge candidates.
Thanks in advance for any assistance.
Please sign in to leave a comment.
Hello lstahlm,
You must call the setVersionTitles() method before calling DiffTool.show().
--
Dmitry Jemerov
Development Lead
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"
That fixed it, thanks.