List of usage examples for org.eclipse.jdt.core.dom Message Message
public Message(String message, int startPosition)
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; }