Search in sources :

Example 1 with COGView

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();
    }
}
Also used : COGView(abs.backend.java.observing.COGView) SystemObserver(abs.backend.java.observing.SystemObserver) JavaCode(abs.backend.java.codegeneration.JavaCode) ObjectView(abs.backend.java.observing.ObjectView) JavaCodeGenerationException(abs.backend.java.codegeneration.JavaCodeGenerationException) ABSException(abs.backend.java.lib.runtime.ABSException) ABSRuntime(abs.backend.java.lib.runtime.ABSRuntime) ABSException(abs.backend.java.lib.runtime.ABSException)

Example 2 with COGView

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;
}
Also used : COGView(abs.backend.java.observing.COGView) TaskView(abs.backend.java.observing.TaskView) Tasks(org.absmodels.abs.plugin.debug.model.Tasks) DebugModel(abs.backend.java.debugging.DebugModel) TaskStackView(abs.backend.java.observing.TaskStackView) Objects(org.absmodels.abs.plugin.debug.model.Objects) ArrayList(java.util.ArrayList) TaskStackFrameView(abs.backend.java.observing.TaskStackFrameView)

Example 3 with COGView

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);
    }
}
Also used : COGView(abs.backend.java.observing.COGView) TaskView(abs.backend.java.observing.TaskView) Tasks(org.absmodels.abs.plugin.debug.model.Tasks) DebugModel(abs.backend.java.debugging.DebugModel) Objects(org.absmodels.abs.plugin.debug.model.Objects) StyledString(org.eclipse.jface.viewers.StyledString) StyledString(org.eclipse.jface.viewers.StyledString) TaskStackFrameView(abs.backend.java.observing.TaskStackFrameView) MethodView(abs.backend.java.observing.MethodView) ObjectView(abs.backend.java.observing.ObjectView)

Aggregations

COGView (abs.backend.java.observing.COGView)3 DebugModel (abs.backend.java.debugging.DebugModel)2 ObjectView (abs.backend.java.observing.ObjectView)2 TaskStackFrameView (abs.backend.java.observing.TaskStackFrameView)2 TaskView (abs.backend.java.observing.TaskView)2 Objects (org.absmodels.abs.plugin.debug.model.Objects)2 Tasks (org.absmodels.abs.plugin.debug.model.Tasks)2 JavaCode (abs.backend.java.codegeneration.JavaCode)1 JavaCodeGenerationException (abs.backend.java.codegeneration.JavaCodeGenerationException)1 ABSException (abs.backend.java.lib.runtime.ABSException)1 ABSRuntime (abs.backend.java.lib.runtime.ABSRuntime)1 MethodView (abs.backend.java.observing.MethodView)1 SystemObserver (abs.backend.java.observing.SystemObserver)1 TaskStackView (abs.backend.java.observing.TaskStackView)1 ArrayList (java.util.ArrayList)1 StyledString (org.eclipse.jface.viewers.StyledString)1