use of org.eclipse.debug.core.model.IValue in project liferay-ide by liferay.
the class FMStackFrame method getVariables.
public IVariable[] getVariables() throws DebugException {
if (this.variables == null) {
/*
* Represents the debugger-side mirror of a debugged freemarker.core.Environment object in the remote VM.
*
* This interface extends DebugModel, and the properties of the Environment are exposed as hash keys on it.
* Specifically, the following keys are supported: "currentNamespace", "dataModel", "globalNamespace",
* "knownVariables", "mainNamespace", and "template".
*
* The debug model for the template supports keys
* "configuration" and "name".
*
* The debug model for the configuration supports key "sharedVariables".
* Additionally, all of the debug models for environment, template, and configuration also support all the
* setting keys of freemarker.core.Configurable objects.
*/
boolean advancedView = PortalCore.getPrefs().getBoolean(PortalCore.PREF_ADVANCED_VARIABLES_VIEW, false);
final DebuggedEnvironment env = this.thread.getEnvironment();
FMVariable[] topLevelVars = null;
try {
topLevelVars = new FMVariable[] { new FMVariable(this, "currentNamespace", env.get("currentNamespace")), new FMVariable(this, "dataModel", env.get("dataModel")), new FMVariable(this, "globalNamespace", env.get("globalNamespace")), new FMVariable(this, "knownVariables", env.get("knownVariables")), new FMVariable(this, "mainNamespace", env.get("mainNamespace")), new FMVariable(this, "template", env.get("template")) {
@Override
public IValue getValue() throws DebugException {
return new TemplateVMValue(stackFrame, debugModel);
}
} };
} catch (Exception e) {
PortalCore.logError("Unable to create freemarker variables", e);
}
if (topLevelVars != null) {
if (advancedView) {
this.variables = topLevelVars;
} else {
// collapse all the variables into one list and remove duplicates
Map<String, IVariable> vars = new HashMap<String, IVariable>();
for (FMVariable topLevelVar : topLevelVars) {
for (IVariable nestedVar : topLevelVar.getValue().getVariables()) {
IVariable existingVar = vars.get(nestedVar.getName());
if (existingVar == null) {
vars.put(nestedVar.getName(), nestedVar);
}
}
}
this.variables = filterVariables(vars.values().toArray(new IVariable[0]));
sortVariables(this.variables);
}
}
}
return this.variables;
}
Aggregations