Example usage for org.eclipse.jdt.core.dom Message Message

List of usage examples for org.eclipse.jdt.core.dom Message Message

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom Message Message.

Prototype

public Message(String message, int startPosition) 

Source Link

Document

Creates a message.

Usage

From source file:org.grails.ide.eclipse.groovy.debug.core.breakpoints.GroovyConditionalBreakpointHandler.java

License:Open Source License

public int conditionalBreakpointHit(IJavaThread thread, IJavaBreakpoint breakpoint) {
    if (breakpoint instanceof IJavaLineBreakpoint) {
        JavaLineBreakpoint lineBreakpoint = (JavaLineBreakpoint) breakpoint;
        try {/*ww  w .j a va2s.c o m*/
            final String condition = lineBreakpoint.getCondition();
            if (condition == null) {
                return IJavaBreakpointListener.SUSPEND;
            }
            EvaluationListener listener = new EvaluationListener(lineBreakpoint);
            IJavaStackFrame frame = (IJavaStackFrame) thread.getTopStackFrame();
            IJavaProject project = getJavaProject(lineBreakpoint, frame);
            if (project == null) {
                fireConditionHasErrors(lineBreakpoint, new Message[] { new Message(
                        JDIDebugBreakpointMessages.JavaLineBreakpoint_Unable_to_compile_conditional_breakpoint___missing_Java_project_context__1,
                        -1) });
                return IJavaBreakpointListener.SUSPEND;
            }
            IJavaDebugTarget target = (IJavaDebugTarget) thread.getDebugTarget();
            GroovyJDIEvaluator evaluator = new GroovyJDIEvaluator(project, target);

            Object lock = listener.getLock();
            synchronized (lock) {
                evaluator.evaluate(lineBreakpoint.getCondition(), null, frame, listener,
                        DebugEvent.EVALUATION_IMPLICIT, false);
                // TODO: timeout?
                try {
                    lock.wait();
                } catch (InterruptedException e) {
                    fireConditionHasRuntimeErrors(lineBreakpoint,
                            new DebugException(new Status(IStatus.ERROR, JDIDebugPlugin.getUniqueIdentifier(),
                                    JDIDebugBreakpointMessages.ConditionalBreakpointHandler_0, e)));
                    return IJavaBreakpointListener.SUSPEND;
                }
            }
            return listener.getVote();
        } catch (CoreException e) {
            DebugException de = null;
            if (e instanceof DebugException) {
                de = (DebugException) e;
            } else {
                de = new DebugException(e.getStatus());
            }
            fireConditionHasRuntimeErrors(lineBreakpoint, de);
        }
    }
    return IJavaBreakpointListener.SUSPEND;
}