use of abs.backend.java.observing.COGView in project abstools by abstools.
the class JavaBackendTest method assertValidJavaExecution.
void assertValidJavaExecution(boolean withStdLib, String... codeLines) throws Exception {
StringBuilder absCode = new StringBuilder();
for (String line : codeLines) {
absCode.append(line);
absCode.append("\n");
}
JavaCode javaCode = getJavaCode(absCode.toString(), withStdLib ? Config.WITH_STD_LIB : null);
try {
String genDir = javaCode.getSrcDir().getAbsolutePath() + "/gen/test";
javaCode.compile("-classpath", "bin", "-d", genDir);
final ABSRuntime r = makeAbsRuntime();
r.enableDebugging(true);
final boolean[] finished = new boolean[] { false };
final List<ABSException> exceptions = Collections.synchronizedList(new ArrayList<ABSException>());
r.addSystemObserver(new SystemObserver() {
@Override
public void systemStarted() {
}
@Override
public void systemFinished() {
synchronized (finished) {
finished[0] = true;
finished.notifyAll();
}
}
@Override
public void systemError(ABSException e) {
exceptions.add(e);
}
@Override
public void newCOGCreated(COGView cog, ObjectView initialObject) {
}
});
r.start(new File(genDir), "Test.Main");
while (!finished[0]) {
synchronized (finished) {
finished.wait(100);
}
}
r.shutdown();
for (ABSException e : exceptions) {
throw e;
}
} catch (Exception e) {
System.out.println(javaCode);
throw e;
} finally {
javaCode.deleteCode();
}
}
use of abs.backend.java.observing.COGView in project abstools by abstools.
the class DebugTreeContentProvider method getChildren.
@Override
public Object[] getChildren(Object parentElement) {
DebugModel model = getDebugger().getModel();
if (model != null && parentElement != null) {
if (parentElement instanceof DebugModel) {
List<COGView> cogs = ((DebugModel) parentElement).getCOGs();
Collections.sort(cogs, new COGViewComparator());
return cogs.toArray();
} else if (parentElement instanceof COGView) {
COGView cog = (COGView) parentElement;
Tasks t = getDebugger().getTasks(cog);
Objects o = getDebugger().getObjects(cog);
return new Object[] { t, o };
} else if (parentElement instanceof Tasks) {
return model.getTasks(((Tasks) parentElement).getCOG()).toArray();
} else if (parentElement instanceof Objects) {
return ((Objects) parentElement).getObjects().toArray();
} else if (parentElement instanceof TaskView) {
TaskView t = (TaskView) parentElement;
TaskStackView s = t.getStack();
ArrayList<TaskStackFrameView> list = new ArrayList<TaskStackFrameView>(s.getFrames());
Collections.reverse(list);
return list.toArray();
}
}
return EMPTY_OBJECT_ARRAY;
}
use of abs.backend.java.observing.COGView in project abstools by abstools.
the class DebugTreeStyledLabelProvider method getLabel.
private StyledString getLabel(Object element) {
if (element instanceof TaskView) {
String s = "Task " + ((TaskView) element).getID() + " (" + ((TaskView) element).getMethodName() + ")";
List<TaskView> schedulableTasks = getSchedulerRef().getSchedulableTasks();
if (schedulableTasks != null) {
for (TaskView taskView : schedulableTasks) {
if (taskView.getID() == ((TaskView) element).getID()) {
return new StyledString(s, STYLER_BLACK);
}
}
}
return new StyledString(s, STYLER_GREY);
} else if (element instanceof COGView) {
COGView cog = (COGView) element;
String s = "COG " + cog.getID() + " (" + getInitialObject(cog).getClassName() + " " + getInitialObject(cog).getID() + ")";
// for color of the string, check if there is a task that can be stepped
if (cog.getScheduler().getSchedulableTasks().size() > 0) {
return new StyledString(s, STYLER_BLACK);
} else {
return new StyledString(s, STYLER_GREY);
}
} else if (element instanceof Tasks) {
String s = "Tasks (" + getCOGInfo(((Tasks) element).getCOG()).getTasks().size() + ")";
// for color of the string, check if there is a task that can be stepped
if (((Tasks) element).getCOG().getScheduler().getSchedulableTasks().size() > 0) {
return new StyledString(s, STYLER_BLACK);
} else {
return new StyledString(s, STYLER_GREY);
}
} else if (element instanceof Objects) {
return new StyledString("Objects (" + ((Objects) element).getObjects().size() + ")", STYLER_BLACK);
} else if (element instanceof TaskStackFrameView) {
TaskStackFrameView tsv = ((TaskStackFrameView) element);
MethodView mv = tsv.getMethod();
return new StyledString("StackFrame (" + mv.toString() + ")", STYLER_BLACK);
} else if (element instanceof ObjectView) {
ObjectView obj = (ObjectView) element;
return new StyledString(obj.getClassName() + " " + obj.getID(), STYLER_BLACK);
} else if (element instanceof DebugModel) {
return new StyledString(getDebugger().getProjectName(), STYLER_BLACK);
} else {
return new StyledString("UnknownObject", STYLER_GREY);
}
}
Aggregations