Bug 435756

Summary: Bug when using an edge creation tool with extra mapping for relation based edge
Product: [Modeling] Sirius Reporter: Laurent Redor <laurent.redor>
Component: DiagramAssignee: Project Inbox <sirius.diagram-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3 CC: maxime.porhel
Version: 1.0.0M7Keywords: triaged
Target Milestone: ---   
Hardware: All   
OS: All   
See Also: https://bugs.eclipse.org/bugs/show_bug.cgi?id=435507
Whiteboard:
Attachments:
Description Flags
createBorderNodeWithEdge.zip: Use case for steps to reproduce none

Description Laurent Redor CLA 2014-05-26 05:31:43 EDT
In the case where the edge creation tool also creates the source and the target of the edge, there is a bug. This kind of tool try to create an edge between the extra source mapping and the extra target mapping whereas it is impossible (the evaluation of the targetFinderExpression fails).

Steps to reproduce:
* Imports the joined project from createBorderNodeWithEdge.zip
* Disable the Sirius "Automatic Refresh" preference (to avoid an edge creation by the automatic refresh)
* Open the diagram new "SampleDiagram"
* Execute one of the tool "Case1-withCreateEdgeView" or "Case2-withouCreateEdgeView" (the result is the same) by clicking between P1 and P2
** This tool creates an interface in P1, an interface in P2, and the interface of P1 inherits the interface of P2.
* The border nodes are created and the edge too. But there are warnings in "Error Log" view because Sirius try to create an edge between P1 and P2

Corresponding warning in Error Log: the following edge mapping target finder expression could not be correctly evaluated : feature:eSuperTypes
org.eclipse.sirius.common.tools.api.interpreter.EvaluationException: Unknown feature name eSuperTypes.
	at org.eclipse.sirius.common.tools.internal.interpreter.FeatureInterpreter.evaluate(FeatureInterpreter.java:95)
	at org.eclipse.sirius.common.tools.internal.interpreter.AbstractInterpreter.evaluateCollection(AbstractInterpreter.java:52)
	at org.eclipse.sirius.tools.internal.interpreter.ODesignGenericInterpreter.evaluateCollection(ODesignGenericInterpreter.java:175)
	at org.eclipse.sirius.diagram.business.api.query.EdgeMappingQuery.evaluateTargetFinderExpression(EdgeMappingQuery.java:186)
	at org.eclipse.sirius.diagram.tools.api.refresh.BestMappingGetter.isSemanticCandidate(BestMappingGetter.java:350)
	at org.eclipse.sirius.diagram.tools.api.refresh.BestMappingGetter.getBestEdgeMapping(BestMappingGetter.java:272)
	at org.eclipse.sirius.diagram.business.internal.helper.task.CreateDEdgeTask.execute(CreateDEdgeTask.java:118)
	at org.eclipse.sirius.business.api.helper.task.TaskExecutor.operation(TaskExecutor.java:95)
	at org.eclipse.sirius.business.api.helper.task.TaskExecutor.execute(TaskExecutor.java:65)
	at org.eclipse.sirius.tools.api.command.SiriusCommand.doExecute(SiriusCommand.java:80)
	at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
	at org.eclipse.sirius.diagram.ui.tools.api.command.GMFCommandWrapper.doExecuteWithResult(GMFCommandWrapper.java:103)
	at org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand.doExecute(AbstractTransactionalCommand.java:247)
	at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
Comment 1 Laurent Redor CLA 2014-05-26 05:35:45 EDT
Created attachment 243479 [details]
createBorderNodeWithEdge.zip: Use case for steps to reproduce