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

Bug 315371

Summary: EVL quickfix throws NullPointerException
Product: [Modeling] Epsilon Reporter: Balogh Endre <iglo3>
Component: CoreAssignee: Dimitris Kolovos <dkolovos>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Whiteboard:
Attachments:
Description Flags
Contains all the needed plugin projects and the diagram file to edit. none

Description Balogh Endre CLA 2010-06-02 06:16:39 EDT
Created attachment 170769 [details]
Contains all the needed plugin projects and the diagram file to edit.

Executing more than one quickfix written in EVL from the "Problems" view has no effect on the validated model; a NullPointerException is thrown in the Eclipse instance that spawned the editor.

Steps to Reproduce: 

Import the plug-in projects attached in the zip file.
Spawn a new Eclipse instance.
Open the default2.ddd_diagram file.
Validate the model by using Edit -> Validate.
Apply any quick fix.
Apply more quick fixes. The second or third applied quick fix should throw the exception.


Actual Results: 
Nothing happens in the spawned Eclipse instance.
The following stacktrace is displayed in the spawning Eclipse instance:

java.lang.NullPointerException
	at org.eclipse.epsilon.emc.emf.transactions.EmfModelTransaction.start(EmfModelTransaction.java:27)
	at org.eclipse.epsilon.eol.models.transactions.NestedModelTransactionSupport.startTransaction(NestedModelTransactionSupport.java:44)
	at org.eclipse.epsilon.eol.models.transactions.CompositeModelTransactionSupport.startTransaction(CompositeModelTransactionSupport.java:36)
	at org.eclipse.epsilon.evl.EvlFixInstance.perform(EvlFixInstance.java:75)
	at org.eclipse.epsilon.evl.emf.validation.ExecuteEvlFixCommand.execute(ExecuteEvlFixCommand.java:39)
	at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
	at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
	at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511)
	at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
	at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
	at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
	at org.eclipse.epsilon.evl.emf.validation.EvlMarkerResolution.run(EvlMarkerResolution.java:55)
	at org.eclipse.ui.internal.views.markers.QuickFixPage$12.run(QuickFixPage.java:596)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:944)
	at org.eclipse.ui.internal.views.markers.QuickFixPage.performFinish(QuickFixPage.java:576)
	at org.eclipse.ui.internal.views.markers.QuickFixWizard$1.run(QuickFixWizard.java:96)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372)
	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:944)
	at org.eclipse.ui.internal.views.markers.QuickFixWizard.performFinish(QuickFixWizard.java:105)
	at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752)
	at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.ui.internal.views.markers.QuickFixHandler.execute(QuickFixHandler.java:166)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:770)
	at org.eclipse.ui.menus.CommandContributionItem.access$10(CommandContributionItem.java:756)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:746)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1287)

Expected Results: 
The quickfix should be applied normally to fix the error/warning.

Platform: 
Windows 7

Additional Builds and Platforms: 
Current version of EMF, GMF and Epsilon (as in 02.06.2010)
Comment 1 Dimitris Kolovos CLA 2010-06-02 09:59:06 EDT
I've reproduced this. I'll investigate and get back to you within the next couple of days.
Comment 2 Dimitris Kolovos CLA 2010-06-10 10:18:02 EDT
I've committed a fix in the SVN and released a new interim version (0.8.9.201006101638). Could you please update to this version and verify that the fix works fine for you?
Comment 3 Dimitris Kolovos CLA 2010-07-07 09:23:46 EDT
Changing status to RESOLVED
Comment 4 Dimitris Kolovos CLA 2010-11-25 08:15:28 EST
Fixed in 0.9.0.
Comment 5 Dimitris Kolovos CLA 2010-11-25 08:16:34 EST
Fixed in 0.9.0.