Skip to content

Commit 540a9a6

Browse files
committed
Working demo with omniscient debugging and REPL
1 parent f796be2 commit 540a9a6

File tree

17 files changed

+362
-49
lines changed

17 files changed

+362
-49
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ bin/
22
**/xtend-gen/
33
*/*.class
44
**/target/
5+
**/.settings

.project

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@
55
<projects>
66
</projects>
77
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.m2e.core.maven2Builder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
813
</buildSpec>
914
<natures>
15+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
1016
</natures>
1117
</projectDescription>

java_engine/plugins/org.eclipse.gemoc.execution.sequential.javaengine.ui/.project

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,14 @@
2525
<arguments>
2626
</arguments>
2727
</buildCommand>
28+
<buildCommand>
29+
<name>org.eclipse.m2e.core.maven2Builder</name>
30+
<arguments>
31+
</arguments>
32+
</buildCommand>
2833
</buildSpec>
2934
<natures>
35+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
3036
<nature>org.eclipse.jdt.core.javanature</nature>
3137
<nature>org.eclipse.pde.PluginNature</nature>
3238
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>

java_engine/plugins/org.eclipse.gemoc.execution.sequential.javaengine/.project

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,14 @@
2525
<arguments>
2626
</arguments>
2727
</buildCommand>
28+
<buildCommand>
29+
<name>org.eclipse.m2e.core.maven2Builder</name>
30+
<arguments>
31+
</arguments>
32+
</buildCommand>
2833
</buildSpec>
2934
<natures>
35+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
3036
<nature>org.eclipse.pde.PluginNature</nature>
3137
<nature>org.eclipse.jdt.core.javanature</nature>
3238
<nature>net.sf.eclipsecs.core.CheckstyleNature</nature>

java_engine/plugins/org.eclipse.gemoc.execution.sequential.javaengine/src/org/eclipse/gemoc/execution/sequential/javaengine/PlainK3ExecutionEngine.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,8 @@ private Bundle findBundle(final ISequentialModelExecutionContext<?> executionCon
350350
// We try to look into an already loaded bundle
351351
bundle = Platform.getBundle(bundleName);
352352
}
353-
} else {
353+
}
354+
if (bundle == null) {
354355
// the main isn't visible directly from the workspace, try another
355356
// method
356357
bundle = _executionContext.getDslBundle();

java_engine/pomfirst/.project

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>pomfirst</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.m2e.core.maven2Builder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
16+
</natures>
17+
</projectDescription>

java_engine/pomfirst/org.eclipse.gemoc.execution.sequential.javaengine.mep/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@
5454
<artifactId>org.eclipse.gemoc.execution.sequential.javaengine</artifactId>
5555
<version>4.0.0-SNAPSHOT</version>
5656
</dependency>
57+
<dependency>
58+
<groupId>org.eclipse.emf</groupId>
59+
<artifactId>org.eclipse.emf.compare</artifactId>
60+
<version>3.5.2.201805161152</version>
61+
<scope>system</scope>
62+
<systemPath>${basedir}/lib_not_correctly_deployed/org.eclipse.emf.compare_3.5.2.201805161152.jar</systemPath>
63+
</dependency>
5764
<dependency>
5865
<groupId>org.eclipse.emf</groupId>
5966
<artifactId>org.eclipse.emf.transaction</artifactId>
@@ -76,6 +83,19 @@
7683
<artifactId>org.eclipse.gemoc.trace.gemoc</artifactId>
7784
<version>3.0.1-SNAPSHOT</version>
7885
</dependency>
86+
<dependency>
87+
<groupId>org.emfjson</groupId>
88+
<artifactId>emfjson-jackson</artifactId>
89+
<version>1.3.0</version>
90+
</dependency>
91+
92+
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
93+
<dependency>
94+
<groupId>com.fasterxml.jackson.core</groupId>
95+
<artifactId>jackson-core</artifactId>
96+
<version>2.12.1</version>
97+
</dependency>
98+
7999
</dependencies>
80100
<repositories>
81101
<repository>

java_engine/pomfirst/org.eclipse.gemoc.execution.sequential.javaengine.mep/src/main/java/org/eclipse/gemoc/execution/sequential/javaengine/mep/HeadlessDebugEventHandler.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,35 +5,33 @@
55
import org.eclipse.gemoc.dsl.debug.ide.event.IDSLDebugEvent;
66
import org.eclipse.gemoc.dsl.debug.ide.event.IDSLDebugEventProcessor;
77
import org.eclipse.gemoc.dsl.debug.ide.event.debugger.BreakpointReply;
8+
import org.eclipse.gemoc.dsl.debug.ide.event.debugger.SetCurrentInstructionReply;
89
import org.eclipse.gemoc.dsl.debug.ide.event.debugger.SpawnRunningThreadReply;
910
import org.eclipse.gemoc.dsl.debug.ide.event.debugger.TerminatedReply;
1011

1112
public class HeadlessDebugEventHandler implements IDSLDebugEventProcessor {
1213

1314
private volatile Semaphore breakReached;
14-
private volatile boolean simulationEnded;
15+
16+
public HeadlessDebugEventHandler() {
17+
this.breakReached = new Semaphore(0);
18+
}
1519

1620
@Override
1721
public Object handleEvent(IDSLDebugEvent event) {
18-
if (event instanceof SpawnRunningThreadReply) {
19-
simulationEnded = false;
20-
breakReached = new Semaphore(-1);
21-
} else if (event instanceof BreakpointReply) {
22-
breakReached.release();
23-
} else if (event instanceof TerminatedReply) {
24-
simulationEnded = true;
22+
if (event instanceof BreakpointReply || event instanceof TerminatedReply) {
2523
breakReached.release();
2624
}
27-
//System.out.println(" Debug event: " + event.toString());
25+
System.err.println(" Debug event: " + event.toString());
2826
return null;
2927
}
3028

31-
public boolean isSimulationEnded() {
32-
return this.simulationEnded;
33-
}
34-
3529
public void waitBreakReached() throws InterruptedException {
3630
this.breakReached.acquire();
3731
}
3832

33+
public void clearPermits() {
34+
this.breakReached.drainPermits();
35+
}
36+
3937
}

java_engine/pomfirst/org.eclipse.gemoc.execution.sequential.javaengine.mep/src/main/java/org/eclipse/gemoc/execution/sequential/javaengine/mep/HeadlessGenericSequentialModelDebugger.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@
55
import org.eclipse.gemoc.executionframework.debugger.GenericSequentialModelDebugger;
66
import org.eclipse.gemoc.xdsmlframework.api.core.IExecutionEngine;
77

8-
public class HeadlessGenericSequentialModelDebugger extends GenericSequentialModelDebugger {
8+
public class HeadlessGenericSequentialModelDebugger extends GenericSequentialModelDebugger implements IHeadlessGemocDebugger {
99

1010
public HeadlessGenericSequentialModelDebugger(IDSLDebugEventProcessor target, IExecutionEngine<?> engine) {
1111
super(target, engine);
1212
}
1313

14+
@Override
1415
public String getThreadName() {
1516
return threadName;
1617
}
1718

19+
@Override
1820
public EObject getCurrentInstruction() {
1921
return currentInstructions.get(threadName);
2022
}

0 commit comments

Comments
 (0)