package railo.runtime.tag;
import railo.runtime.exp.PageException;
import railo.runtime.ext.tag.TagImpl;
import railo.runtime.functions.dynamicEvaluation.Evaluate;
import railo.runtime.op.Caster;
/**
* Outputs variables for debugging purposes. Using cfdump, you can display the contents of simple variables, queries,
* arrays, structures, and WDDX variables created with cfwddx. if no var attribute defined it dump the hole site information
*
*
*
**/
public final class Dump extends TagImpl {
/** Variable to display. Enclose a variable name in pound signs */
private Object var;
/** Name of Variable to display */
private Object eval;
/** string; header for the dump output. */
private String label;
private String format;
private String output;
//private double maxlevel=Integer.MAX_VALUE;
private boolean expand=true;
private int top=9999;
private String hide;
private String show;
private double keys=9999;
private boolean showUDFs=true;
private boolean metainfo=true;
private boolean abort=false;
@Override
public void release() {
super.release();
var=null;
eval=null;
label=null;
//maxlevel=Integer.MAX_VALUE;
format=null;
output=null;
expand=true;
top=9999;
hide=null;
show=null;
keys=9999;
metainfo=true;
showUDFs=true;
abort=false;
}
/**
* @param top the top to set
*/
public void setTop(double top) {
this.top = (int) top+1;
}
public void setHide(String hide) {
this.hide = hide;
}
public void setShow(String show) {
this.show = show;
}
public void setOutput(String output) {
this.output = output;
}
public void setKeys(double keys) {
this.keys = keys;
}
public void setMetainfo(boolean metainfo) {
this.metainfo = metainfo;
}
/** set the value expand
* not supported at the moment
* @param expand value to set
**/
public void setExpand(boolean expand) {
this.expand=expand;
}
/** set the value var
* Variable to display. Enclose a variable name in pound signs
* @param var value to set
**/
public void setVar(Object var) {
this.var=var;
}
/** set the value eval
* Variable to display. Enclose a variable name in pound signs
* @param eval value to set
**/
public void setEval(Object eval) {
this.eval=eval;
}
/** set the value label
* string; header for the dump output.
* @param label value to set
**/
public void setLabel(String label) {
this.label=label;
}
/**
* @param maxlevel the maxlevel to set
*/
public void setMaxlevel(double maxlevel) {
this.top = (int) maxlevel;
}
/**
* @param type the type to set
*/
public void setType(String type) {
this.format = type;
}
public void setFormat(String format) {
this.format = format;
}
@Override
public int doStartTag() throws PageException {
if(var==null && eval!=null) {
var=Evaluate.call(pageContext,new Object[]{eval});
if(label==null)label=Caster.toString(eval);
}
railo.runtime.functions.other.Dump.call(pageContext,var,label,expand,top,show,hide,output,format,keys,metainfo,showUDFs);
if(abort)throw new railo.runtime.exp.Abort(railo.runtime.exp.Abort.SCOPE_REQUEST);
return SKIP_BODY;
}
@Override
public int doEndTag() {
return EVAL_PAGE;
}
/**
* @param showUDFs the showUDFs to set
*/
public void setShowudfs(boolean showUDFs) {
this.showUDFs = showUDFs;
}
/**
* @param abort the abort to set
*/
public void setAbort(boolean abort) {
this.abort = abort;
}
}