/* AbstractExecutionInfoCollector.java
Purpose:
Description:
History:
2013/1/7 Created by Dennis Chen
Copyright (C) 2013 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind.sys.debugger.impl;
import java.util.Stack;
import org.zkoss.bind.sys.debugger.BindingExecutionInfoCollector;
import org.zkoss.bind.sys.debugger.ExecutionInfo;
import org.zkoss.bind.sys.debugger.impl.info.ExecutionInfoBase;
import org.zkoss.bind.sys.debugger.impl.info.StackInfo;
import org.zkoss.json.JSONObject;
import org.zkoss.zk.ui.Execution;
import org.zkoss.zk.ui.Executions;
/**
* abstract implementation
* @author dennis
*
*/
public abstract class AbstractExecutionInfoCollector implements BindingExecutionInfoCollector {
public abstract void addInfo(JSONObject info);
public void addInfo(ExecutionInfo info) {
JSONObject json = ((ExecutionInfoBase) info).toJSON();
json.put("stack", _infoStack.size());
Execution exec = Executions.getCurrent();
String sid = exec.getHeader("ZK-SID");
int sid0 = 0;
try {
sid0 = sid == null ? sid0 : Integer.parseInt(sid);
} catch (Exception x) {
}
json.put("sid", Integer.valueOf(sid0));
addInfo(json);
}
Stack<String> _infoStack = new Stack<String>();
public void pushStack(String name) {
addInfo(new StackInfo(name, null));
_infoStack.push(name);
}
public String popStack() {
String name = _infoStack.pop();
return name;
}
}