blob: 26b7f693870a831b14bcfc52d49f457766e0fb27 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 Chase Technology Ltd - http://www.chasetechnology.co.uk
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Doug Satchwell (Chase Technology Ltd) - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xsl.jaxp.debug.debugger;
import java.io.FileWriter;
import java.io.Writer;
import java.net.URL;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import org.eclipse.wst.xsl.jaxp.debug.invoker.IProcessorInvoker;
/**
* An interface to XSL debugger instances.
*
* @author Doug Satchwell
*/
public interface IXSLDebugger extends Runnable
{
/**
* Set the invoker to use.
*
* @param invoker the invoker to set
*/
void setInvoker(IProcessorInvoker invoker);
/**
* Set the transformer factory to use.
*
* @param factory the factory to use
*/
void setTransformerFactory(TransformerFactory factory);
/**
* Add a transformer to this.
*
* @param transformer
*/
void addTransformer(Transformer transformer);
/**
* Set the Writer for this to write events to.
*
* @param writer the writer to write events to
*/
void setEventWriter(Writer writer);
/**
* Set the ObjectOutputStream for this to write generated events to.
*
* @param writer the stream to write generate events to
*/
void setGeneratedWriter(Writer writer);
/**
* Set the URL of the transformation source file.
*
* @param sourceURL the source URL
*/
void setSource(URL sourceURL);
/**
* Set the transformation Result.
*
* @param writer the result
*/
void setTarget(Writer writer);
/**
* Add a breakpoint to this.
*
* @param breakpoint
*/
void addBreakpoint(BreakPoint breakpoint);
/**
* Remove a breakpoint from this.
*
* @param breakpoint
*/
void removeBreakpoint(BreakPoint breakpoint);
/**
* Perform a 'step into' operation.
*/
void stepInto();
/**
* Perform a 'step over' operation.
*/
void stepOver();
/**
* Perform a 'step return' operation.
*/
void stepReturn();
/**
* Perform a 'suspend' operation.
*/
void suspend();
/**
* Perform a 'resume' operation.
*/
void resume();
/**
* Quit debugging.
*/
void quit();
/**
* Generate a string that represents the current call stack of frames and their variables.
* <p>
* Frames are generated with the following format: <i>file</i>|<i>frameId</i>|<i>lineNumber</i>|<i>name</i>
* This is immediately followed with the id's of the frame's variables (each variable id being unique for the whole process).
* </p>
* <p>
* The separator for frames is $$$. Within a frame, the separator for variable id's is |.
* </p>
* <p>
* e.g. file:/tran1.xsl|1|12|xsl:template name="temp1"|1|2|3$$$file:/tran2.xsl|2|34|xsl:template name="temp2"|4|5|6
*
* This defines 2 frames with id's 1 and 2, which are occur in files tran1.xsl and tran2.xsl respectively.
* Frame 1 is currently at line 12, in a template with name temp1, and it defines 3 variables with id's 1, 2 and 3.
* </p>
*
* @return the generated string
*/
String stack();
/**
* Get the variable with the given id.
*
* @param id the id of the variable
* @return the variable
*/
Variable getVariable(int id);
}