Using the debugging classes

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:

To use the debugging classes:

  1. Create a main method for your Java CFX class.
  2. Within the main method, initialize a DebugRequest and DebugResponse, and a DebugQuery. Use the appropriate attributes and data for your test.
  3. Create an instance of your Java CFX tag and call its processRequest method, passing in the DebugRequest and DebugResponse objects.
  4. Call the 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.

Debugging classes example

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...
   }
}

View comments in LiveDocs