blob: eda7784974913226b22adc32c97ec137e1a59b89 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package flex.tools.debugger.cli;
import flash.tools.debugger.NoResponseException;
import flash.tools.debugger.NotConnectedException;
import flash.tools.debugger.NotSuspendedException;
import flash.tools.debugger.Session;
import flash.tools.debugger.Value;
import flash.tools.debugger.Variable;
import flash.tools.debugger.concrete.PlayerSession;
import flash.tools.debugger.events.FaultEvent;
/**
* A VariableFacade provides a wrapper around a Variable object
* that provides a convenient way of storing parent information.
*
* Don't ask me why we didn't just add a parent member to
* Variable and be done with it.
*/
public class VariableFacade implements Variable
{
Variable m_var;
long m_context;
String m_name;
String m_path;
int m_isolateId;
public VariableFacade(Variable v, long context, int m_isolateId) { init(context, v, null, m_isolateId); }
public VariableFacade(long context, String name, int m_isolateId) { init(context, null, name, m_isolateId); }
void init(long context, Variable v, String name, int isolateId)
{
m_var = v;
m_context = context;
m_name = name;
m_isolateId = isolateId;
}
/**
* The variable interface
*/
public String getName() { return (m_var == null) ? m_name : m_var.getName(); }
public String getQualifiedName() { return (m_var == null) ? m_name : m_var.getQualifiedName(); }
public String getNamespace() { return m_var.getNamespace(); }
public int getLevel() { return m_var.getLevel(); }
public String getDefiningClass() { return m_var.getDefiningClass(); }
public int getAttributes() { return m_var.getAttributes(); }
public int getScope() { return m_var.getScope(); }
public boolean isAttributeSet(int variableAttribute) { return m_var.isAttributeSet(variableAttribute); }
public Value getValue() { return m_var.getValue(); }
public boolean hasValueChanged(Session s) { return m_var.hasValueChanged(s); }
public FaultEvent setValue(Session s, int type, String value) throws NotSuspendedException, NoResponseException, NotConnectedException
{
return ((PlayerSession)s).setScalarMember(m_context, getQualifiedName(), type, value, m_var.getIsolateId());
}
@Override
public String toString() { return (m_var == null) ? m_name : m_var.toString(); }
public String getPath() { return m_path; }
public void setPath(String path) { m_path = path; }
public boolean needsToInvokeGetter() { return m_var.needsToInvokeGetter(); }
public void invokeGetter(Session s) throws NotSuspendedException, NoResponseException, NotConnectedException
{
m_var.invokeGetter(s);
}
/**
* Our lone get context (i.e. parent) interface
*/
public long getContext() { return m_context; }
public Variable getVariable() { return m_var; }
@Override
public int getIsolateId() {
return m_isolateId;
}
}