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

Bug 489416

Summary: A3 Queries call from odesign don't seems more supported
Product: [Modeling] Sirius Reporter: Esteban DUGUEPEROUX <esteban.dugueperoux>
Component: CoreAssignee: Laurent Redor <laurent.redor>
Status: CLOSED FIXED QA Contact: Maxime Porhel <maxime.porhel>
Severity: normal    
Priority: P3 CC: laurent.redor, maxime.porhel, pierre-charles.david
Version: unspecifiedKeywords: triaged
Target Milestone: 4.0.0M7   
Hardware: All   
OS: All   
See Also: https://git.eclipse.org/r/68217
https://git.eclipse.org/r/68218
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=7b6dac390119069e35f8760d1fa360bba4d53a92
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=b81b53cf852ab0e53169684eedfab83b54ea9a0b
https://git.eclipse.org/r/72369
https://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=e4fd6945a5cbc9ec4e0cfdccfeb719be4a967ea5
Whiteboard:
Attachments:
Description Flags
Sample projects to reproduce
none
Modeling Project to reproduce none

Description Esteban DUGUEPEROUX CLA 2016-03-11 05:19:19 EST
Created attachment 260244 [details]
Sample projects to reproduce

On master, while specifier documentation of Sirius tells that A3 query call is supported from odesign, in "Using Acceleo" section of "Queries and Interpreted Expressions" part, fourth paragraph, when opening a diagram created with Sirius 2.0.x whose odesign use A3 queries I get the following exception :

!ENTRY org.eclipse.sirius.common 2 0 2016-03-11 11:16:18.865
!MESSAGE Could not find Java extension class fr::obeo::dsl::relational::design::queries.mtl
!STACK 0
java.lang.RuntimeException
	at org.eclipse.sirius.common.tools.internal.interpreter.ServiceInterpreter$1.notFound(ServiceInterpreter.java:83)
	at org.eclipse.sirius.common.tools.api.interpreter.JavaExtensionsManager.notFound(JavaExtensionsManager.java:539)
	at org.eclipse.sirius.common.tools.api.interpreter.JavaExtensionsManager.loadJavaExtensions(JavaExtensionsManager.java:532)
	at org.eclipse.sirius.common.tools.api.interpreter.JavaExtensionsManager.reloadIfNeeded(JavaExtensionsManager.java:241)
	at org.eclipse.sirius.common.tools.internal.interpreter.ServiceInterpreter.evaluate(ServiceInterpreter.java:127)
	at org.eclipse.sirius.common.tools.internal.interpreter.AbstractInterpreter.evaluateString(AbstractInterpreter.java:113)
	at org.eclipse.sirius.tools.internal.interpreter.ODesignGenericInterpreter.evaluateString(ODesignGenericInterpreter.java:188)
	at org.eclipse.sirius.diagram.business.internal.metamodel.helper.DiagramElementMappingHelper.computeLabel(DiagramElementMappingHelper.java:116)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramElementSynchronizer.computeLabel(DDiagramElementSynchronizer.java:833)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramElementSynchronizer.refresh(DDiagramElementSynchronizer.java:559)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramElementSynchronizer.refresh(DDiagramElementSynchronizer.java:509)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramElementSynchronizer.createNewNode(DDiagramElementSynchronizer.java:176)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramElementSynchronizer.createNewNode(DDiagramElementSynchronizer.java:150)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.createNewContent(DDiagramSynchronizer.java:1272)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.createNewContent(DDiagramSynchronizer.java:1260)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.refreshContainerMapping(DDiagramSynchronizer.java:816)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.refreshMappingsInContainerMapping(DDiagramSynchronizer.java:862)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.refreshContainerMapping(DDiagramSynchronizer.java:832)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.refreshOperation(DDiagramSynchronizer.java:415)
	at org.eclipse.sirius.diagram.business.internal.experimental.sync.DDiagramSynchronizer.refresh(DDiagramSynchronizer.java:355)
	at org.eclipse.sirius.diagram.business.internal.sync.DDiagramSynchronizer.refresh(DDiagramSynchronizer.java:91)
	at org.eclipse.sirius.diagram.business.internal.dialect.DiagramDialectServices.refresh(DiagramDialectServices.java:259)
	at org.eclipse.sirius.business.internal.dialect.DialectManagerImpl.refresh(DialectManagerImpl.java:124)
	at org.eclipse.sirius.business.internal.dialect.DialectManagerImpl.refresh(DialectManagerImpl.java:112)
	at org.eclipse.sirius.diagram.ui.business.internal.command.RefreshDiagramOnOpeningCommand.doExecute(RefreshDiagramOnOpeningCommand.java:62)
	at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
	at org.eclipse.emf.common.command.CompoundCommand.execute(CompoundCommand.java:261)
	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:488)
	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.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.launchRefresh(DDiagramEditorImpl.java:1246)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.initializeGraphicalViewer(DDiagramEditorImpl.java:1413)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.createOriginalGraphicalViewer(DDiagramEditorImpl.java:1385)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.createMainDiagramSection(DDiagramEditorImpl.java:1311)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.createGraphicalViewer(DDiagramEditorImpl.java:1300)
	at org.eclipse.gef.ui.parts.GraphicalEditor.createPartControl(GraphicalEditor.java:171)
	at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor.createPartControl(DiagramEditor.java:1580)
	at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorWithFlyOutPalette.createPartControl(DiagramEditorWithFlyOutPalette.java:328)
	at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.createPartControl(DiagramDocumentEditor.java:1514)
	at org.eclipse.sirius.diagram.ui.tools.internal.editor.DDiagramEditorImpl.createPartControl(DDiagramEditorImpl.java:497)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.createPartControl(CompatibilityPart.java:151)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityEditor.createPartControl(CompatibilityEditor.java:99)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:341)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:54)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:966)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:931)
	at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56)
	at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:972)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:648)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:754)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:725)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:719)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:703)
	at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1306)
	at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer$1.handleEvent(LazyStackRenderer.java:72)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4646)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:211)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
	at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
	at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
	at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
	at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:92)
	at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
	at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:173)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:663)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:627)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:747)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:396)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1191)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3261)
	at org.eclipse.ui.internal.WorkbenchPage.access$25(WorkbenchPage.java:3176)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:3158)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3153)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3117)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3098)
	at org.eclipse.sirius.diagram.ui.business.internal.dialect.DiagramDialectUIServices$1.run(DiagramDialectUIServices.java:207)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4646)
	at org.eclipse.sirius.common.ui.tools.api.util.EclipseUIUtil.displaySyncExec(EclipseUIUtil.java:336)
	at org.eclipse.sirius.diagram.ui.business.internal.dialect.DiagramDialectUIServices.openEditor(DiagramDialectUIServices.java:217)
	at org.eclipse.sirius.diagram.ui.business.internal.dialect.DiagramDialectUIServices.openEditor(DiagramDialectUIServices.java:178)
	at org.eclipse.sirius.ui.business.internal.dialect.DialectUIManagerImpl.openEditor(DialectUIManagerImpl.java:106)
	at org.eclipse.sirius.ui.tools.internal.actions.session.OpenRepresentationsAction.openRepresentations(OpenRepresentationsAction.java:118)
	at org.eclipse.sirius.ui.tools.internal.actions.session.OpenRepresentationsAction.access$1(OpenRepresentationsAction.java:97)
	at org.eclipse.sirius.ui.tools.internal.actions.session.OpenRepresentationsAction$1.run(OpenRepresentationsAction.java:83)
	at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:460)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368)
	at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:481)
	at org.eclipse.ui.internal.progress.ProgressManager$RunnableWithStatus.run(ProgressManager.java:1248)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:1098)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4646)
	at org.eclipse.ui.internal.progress.ProgressManager.runInUI(ProgressManager.java:1095)
	at org.eclipse.sirius.ui.tools.internal.actions.session.OpenRepresentationsAction.run(OpenRepresentationsAction.java:86)
	at org.eclipse.sirius.ui.tools.internal.views.common.navigator.OpenRepresentationListener.doubleClick(OpenRepresentationListener.java:42)
	at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:833)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
	at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:830)
	at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1470)
	at org.eclipse.ui.navigator.CommonViewer.handleDoubleSelect(CommonViewer.java:443)
	at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1264)
	at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:252)
	at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:249)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:311)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4494)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1339)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3832)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3443)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1118)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1019)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:157)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:691)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:670)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:609)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1516)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1489)
Comment 1 Pierre-Charles David CLA 2016-03-11 10:52:29 EST
I can not reproduce the issue on master. You mention "a diagram created with Sirius 2.0.x ", but which version where you using yourself?
Comment 2 Esteban DUGUEPEROUX CLA 2016-03-11 11:05:37 EST
Created attachment 260257 [details]
Modeling Project to reproduce

In attachement the Modeling Project containing the diagram coming from Sirius 2.0.x for which the diagram opening throws the stacktrace.
Comment 3 Pierre-Charles David CLA 2016-03-11 11:11:59 EST
I reproduce on current master (de35505b28c6c6f5d583f3616950708e36b02b73) with the attached example.
Comment 4 Eclipse Genie CLA 2016-03-11 11:31:46 EST
New Gerrit change created: https://git.eclipse.org/r/68217
Comment 5 Eclipse Genie CLA 2016-03-11 11:36:20 EST
New Gerrit change created: https://git.eclipse.org/r/68218
Comment 6 Pierre-Charles David CLA 2016-03-11 11:41:42 EST
There are two issues:
* The sample VSM registers the A3 queries with a syntax that contains the ".mtl" file extension at the end. It is not needed, as we are not refering to a physical file but to the logical qualified name of an MTL module. https://git.eclipse.org/r/68218 clarifies the documentation about this.
* The criterion used in JavaExtensionManager to decide if a string represents the qualified name of a Java class was too simple, as it only tested if the name contained a ".", hence the attempt to load "fr::obeo::dsl::relational::design::queries.mtl" as a Java class, and the resulting warning. https://git.eclipse.org/r/68217 uses a more robust way to detect a valid Java class name.
Comment 9 Pierre-Charles David CLA 2016-05-09 08:07:03 EDT
This is actually resolved.
Comment 10 Eclipse Genie CLA 2016-05-10 04:09:44 EDT
New Gerrit change created: https://git.eclipse.org/r/72369
Comment 11 Laurent Redor CLA 2016-05-10 04:10:22 EDT
The above gerrit is the test for this bug. After merge, the "needtest" keyword in whiteboard can be removed.
Comment 13 Pierre-Charles David CLA 2016-05-10 09:52:22 EDT
The test was added by e4fd6945a5cbc9ec4e0cfdccfeb719be4a967ea5.
Comment 14 Maxime Porhel CLA 2016-05-23 10:53:31 EDT
Validated on Sirius 4.0.0.201605180923 (4.0.0 RC1)
Comment 15 Pierre-Charles David CLA 2016-06-24 08:03:33 EDT
Available in Sirius 4.0.0.