/**
 * Copyright (c) 2010, Sebastian Sdorra
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 3. Neither the name of SCM-Manager; nor the names of its
 *    contributors may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * http://bitbucket.org/sdorra/scm-manager
 *
 */
 
 
vm.methodEntryBreakpoint("sonia.scm.template.TemplateServlet", "doGet"){
  println "enter method doGet of sonia.scm.template.TemplateServlet";
}

vm.methodEntryBreakpoint("sonia.scm.template.FreemarkerTemplateHandler", "render"){
  println "enter method render of sonia.scm.template.FreemarkerTemplateHandler";
}

vm.breakpoint("sonia.scm.template.TemplateServlet", 150){
  println "call templateHandler.render";
}

vm.breakpoint("sonia.scm.template.FreemarkerTemplateHandler", 136){
  println "try to render template " + templateName;
  println "params:";
  println "  " + params;
  println "writer:"
  println "  " + writer;
}

vm.breakpoint("sonia.scm.template.FreemarkerTemplateHandler", 138){
  if ( template == null ){
    println "could not find template " + templateName;
  } else {
    println "found template " +  templateName;
  }
}

def fthEbp = null;

vm.breakpoint("sonia.scm.template.FreemarkerTemplateHandler", 147){
  println "start rendering " + templateName;
  fthEbp = vm.exceptionBreakpoint("java.lang.Exception"){ e ->
    e.dumpStackTrace(System.out);
    if ( fthEbp != null ){
      fthEbp.delete();
    }
  }
}

vm.breakpoint("sonia.scm.template.FreemarkerTemplateHandler", 149){
  println "catch exception of render method";
}

vm.breakpoint("sonia.scm.template.FreemarkerTemplateHandler", 151){
  println "log exception " + ex.getMessage();
}

vm.breakpoint("sonia.scm.template.FreemarkerTemplateHandler", 153){
  println "wrap exception " + ex.getMessage();
}

vm.methodExitBreakpoint("sonia.scm.template.FreemarkerTemplateHandler", "render"){
  println "exit method render of sonia.scm.template.FreemarkerTemplateHandler";
}

vm.breakpoint("sonia.scm.template.TemplateServlet", 154){
  println "close writer";
}

vm.methodExitBreakpoint("sonia.scm.template.TemplateServlet", "doGet"){
  println "exit method doGet of sonia.scm.template.TemplateServlet";
}