/* * 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; } }