package com.redhat.ceylon.compiler.java.test.fordebug; public interface Tracer extends AutoCloseable { /** * Enumerates what should happen after a handler has handled an event */ public enum HandlerResult { /** The {@link #resume()} method continues its loop; the VM will be resumed */ RESUME, /** The {@link #resume()} method returns; the VM is suspended */ SUSPEND } @Override public abstract void close() throws Exception; /** Starts the VM and awaits receipt of a VMStartEvent */ public abstract void start() throws Exception; public abstract void resume() throws Exception; public boolean isVmAlive(); public abstract String getTrace(); /** Creates and returns a method entry breakpoint */ public abstract MethodEntry methodEntry(); /** Represents a method entry break point */ public interface MethodEntry { /** Add a class name filter for this break point */ public MethodEntry classFilter(String className); /** Sets the method name filter for this break point */ public MethodEntry methodFilter(String methodName); /** Enables this breakpoint */ public MethodEntry enable(); /** Disables this breakpoint */ public MethodEntry disable(); /** Sets the result of this breakpoint */ public MethodEntry result(HandlerResult result); } /** Creates and returns a method exit breakpoint */ public abstract MethodExit methodExit(); /** Represents a method exit break point */ public interface MethodExit { /** Add a class name filter for this break point */ public MethodExit classFilter(String className); /** Sets the method name filter for this break point */ public MethodExit methodFilter(String methodName); public MethodExit enable(); public MethodExit disable(); /** Sets the result of this breakpoint */ public MethodExit result(HandlerResult result); } /** Creates and returns a step breakpoint */ public abstract Step step(); public interface Step { public abstract Step within(String within); public abstract Step enable(); public abstract Step disable(); public abstract Step result(HandlerResult result); public abstract Step log(); } }