To develop and debug Java CFX tags in isolation from the ColdFusion, you use three special debugging classes that are included in the com.allaire.cfx
package. These classes lets you simulate a call to the processRequest
method of your CFX tag within the context of the interactive debugger of a Java development environment. The three debugging classes are the following:
DebugRequest
An implementation of the Request
interface that lets you initialize the request with custom attributes, settings, and a query.
DebugResponse
An implementation of the Response
interface that lets you print the results of a request once it has completed.
DebugQuery
An implementation of the Query
interface that lets you initialize a query with a name, columns, and a data set.
main
method for your Java CFX class.
main
method, initialize a DebugRequest
and DebugResponse
, and a DebugQuery
. Use the appropriate attributes and data for your test.
processRequest
method, passing in the DebugRequest
and DebugResponse
objects.
DebugResponse.printResults
method to output the results of the request, including content generated, variables set, queries created, and so on.
After you implement a main
method as described previously, you can debug your Java CFX tag using an interactive, single-step debugger. Specify your Java CFX class as the main
class, set breakpoints as appropriate, and begin debugging.
The following example demonstrates how to use the debugging classes:
import java.util.Hashtable ; import com.allaire.cfx.* ; public class OutputQuery implements CustomTag { // debugger testbed for OutputQuery public static void main(String[] argv) { try { // initialize attributes Hashtable attributes = new Hashtable() ; attributes.put( "HEADER", "Yes" ) ; attributes.put( "BORDER", "3" ) ; // initialize query String[] columns = { "FIRSTNAME", "LASTNAME", "TITLE" } ; String[][] data = { { "Stephen", "Cheng", "Vice President" }, { "Joe", "Berrey", "Intern" }, { "Adam", "Lipinski", "Director" }, { "Lynne", "Teague", "Developer" } } ; DebugQuery query = new DebugQuery( "Employees", columns, data ) ; // create tag, process debugging request, and print results OutputQuery tag = new OutputQuery() ; DebugRequest request = new DebugRequest( attributes, query ) ; DebugResponse response = new DebugResponse() ; tag.processRequest( request, response ) ; response.printResults() ; } catch( Throwable e ) { e.printStackTrace() ; } } public void processRequest(Request request, Response response) throws Exception { // ...code for processing the request... } }