<#assign keys = [] /> <#list reportModel.relatedResources.contexts as context > <#list context.constraints as constraint > <#if constraint.paramName?? && !keys?seq_contains(constraint.paramName)> <#assign keys += [ constraint.paramName ] /> <#assign width = keys?size + 2/>
<#list 0..(width-1) as i> <#list keys as key> <#list reportModel.relatedResources.contexts as context> <#assign cs = {} /> <#list context.constraints as constraint> <#if constraint.methodName?? > <#assign cs += { "k0": constraint.javaClass.qualifiedName, "k1": constraint.methodName } /> <#if constraint.paramName?? && keys?seq_contains(constraint.paramName) > <#assign cs += { "k" + (keys?seq_index_of(constraint.paramName) + 2): constraint.paramValue } /> <#list 0..(width - 1) as i >
entry class entry method${key}
<#if i == 0> ${ cs["k" + i]! }
<#list context.transactions as tx> <#list tx.ops as op> <#if op.sql?? > <#assign optext = op.sql /> <#else> <#if op.endpointMethod?? > <#assign optext = op.endpointMethod.javaClass.className + "." + op.endpointMethod.methodName + "( " /> <#elseif op.urlPath?? > <#assign optext = op.method.javaClass.className + op.urlPath + "( " /> <#else> <#assign optext = op.method.javaClass.className + "." + op.method.methodName + "( " /> <#list op.callParams! as param> <#assign optext += param.paramName + "=" + param.paramValue + " " /> <#assign optext += ")"/> <#if optext??>
<#list stackTraceToList(op.stackTrace) as trace>
 ${optext}
<@render_link model=trace.location text=(trace.method.javaClass.qualifiedName + "." + trace.method.methodName + " (" + trace.location.file.fileName + ", line " + trace.location.lineNumber + ")") project=reportModel.projectModel/>
<#include "include/timestamp.ftl" />