Skip to content

Commit 18dccd0

Browse files
committed
Fixed breakpoint creation when using melange resource
1 parent 4bab0c9 commit 18dccd0

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

framework/execution_framework/plugins/org.gemoc.executionframework.engine.ui/META-INF/MANIFEST.MF

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ Require-Bundle: org.gemoc.xdsmlframework.api,
2121
fr.inria.diverse.commons.eclipse.messagingsystem.api,
2222
fr.obeo.dsl.debug.ide.ui;bundle-version="1.0.0",
2323
fr.inria.diverse.trace.commons.model;bundle-version="0.1.0",
24-
fr.obeo.dsl.debug
24+
fr.obeo.dsl.debug,
25+
fr.inria.diverse.melange
2526
Bundle-ActivationPolicy: lazy
2627
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
2728
Export-Package: org.gemoc.executionframework.engine.ui;

framework/execution_framework/plugins/org.gemoc.executionframework.engine.ui/src/org/gemoc/executionframework/engine/ui/debug/sirius/action/GemocToggleBreakpointAction.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@
1212

1313
import org.eclipse.core.runtime.CoreException;
1414
import org.eclipse.emf.ecore.EObject;
15+
import org.eclipse.emf.ecore.resource.Resource;
16+
import org.eclipse.emf.ecore.resource.ResourceSet;
1517
import org.gemoc.executionframework.engine.ui.debug.breakpoint.GemocBreakpoint;
1618
import org.gemoc.executionframework.engine.ui.launcher.AbstractGemocLauncher;
1719

20+
import fr.inria.diverse.melange.resource.MelangeResource;
1821
import fr.obeo.dsl.debug.ide.DSLBreakpoint;
1922
import fr.obeo.dsl.debug.ide.sirius.ui.DSLToggleBreakpointsUtils;
2023
import fr.obeo.dsl.debug.ide.sirius.ui.action.AbstractToggleBreakpointAction;
@@ -38,6 +41,15 @@ protected DSLToggleBreakpointsUtils createToggleBreakpointsUtils() {
3841
@Override
3942
protected DSLBreakpoint createBreakpoint(Object selected,
4043
EObject instruction) throws CoreException {
44+
final Resource res = ((EObject)instruction).eResource();
45+
final ResourceSet resSet = res.getResourceSet();
46+
final MelangeResource mr = resSet.getResources().stream().filter(r -> {
47+
return r instanceof MelangeResource;
48+
}).map(r -> (MelangeResource)r).findFirst().orElse(null);
49+
if (mr != null) {
50+
final String fragmentURI = res.getURIFragment(instruction);
51+
instruction = mr.getWrappedResource().getEObject(fragmentURI);
52+
}
4153
return new GemocBreakpoint(identifier, instruction, true);
4254
}
4355

java_execution/java_engine/plugins/org.gemoc.execution.sequential.javaengine.ui/src/org/gemoc/execution/sequential/javaengine/ui/commands/GemocToggleBreakpointHandler.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import org.eclipse.core.commands.ExecutionException;
1818
import org.eclipse.core.runtime.CoreException;
1919
import org.eclipse.emf.ecore.EObject;
20+
import org.eclipse.emf.ecore.resource.Resource;
21+
import org.eclipse.emf.ecore.resource.ResourceSet;
2022
import org.eclipse.jface.viewers.ISelection;
2123
import org.eclipse.jface.viewers.IStructuredSelection;
2224
import org.eclipse.ui.ISelectionService;
@@ -25,6 +27,7 @@
2527
import org.gemoc.execution.sequential.javaengine.ui.launcher.Launcher;
2628
import org.gemoc.executionframework.engine.ui.debug.breakpoint.GemocBreakpoint;
2729

30+
import fr.inria.diverse.melange.resource.MelangeResource;
2831
import fr.inria.diverse.trace.commons.model.trace.MSE;
2932
import fr.inria.diverse.trace.commons.model.trace.MSEOccurrence;
3033
import fr.obeo.dsl.debug.ide.DSLBreakpoint;
@@ -66,6 +69,15 @@ else if (selected instanceof MSEOccurrence)
6669
@Override
6770
protected DSLBreakpoint createBreakpoint(Object selected,
6871
EObject instruction) throws CoreException {
72+
final Resource res = ((EObject)instruction).eResource();
73+
final ResourceSet resSet = res.getResourceSet();
74+
final MelangeResource mr = resSet.getResources().stream().filter(r -> {
75+
return r instanceof MelangeResource;
76+
}).map(r -> (MelangeResource)r).findFirst().orElse(null);
77+
if (mr != null) {
78+
final String fragmentURI = res.getURIFragment(instruction);
79+
instruction = mr.getWrappedResource().getEObject(fragmentURI);
80+
}
6981
return new GemocBreakpoint(identifier, instruction, true);
7082
}
7183

0 commit comments

Comments
 (0)