http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/DisplayAction.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/DisplayAction.java 
b/debugger/src/flex/tools/debugger/cli/DisplayAction.java
deleted file mode 100644
index d8612d5..0000000
--- a/debugger/src/flex/tools/debugger/cli/DisplayAction.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.expression.ValueExp;
-
-/**
- * An object that relates a CLI debugger 'display' command
- * with the contents of the display 
- */
-public class DisplayAction
-{
-       private static int s_uniqueIdentifier  = 1;
-
-       boolean         m_enabled;
-       int                     m_id;
-       ValueExp        m_expression;
-       String          m_content;
-       int m_isolateId;
-
-       public DisplayAction(ValueExp expr, String content, int isolateId)
-       {
-               init();
-               m_expression = expr;
-               m_content = content;
-               m_isolateId = isolateId;
-       }
-
-       void init()
-       {
-               m_enabled = true;
-               m_id = s_uniqueIdentifier++;
-       }
-
-       /* getters */
-       public String           getContent()                                    
{ return m_content; }
-       public int                      getId()                                 
                { return m_id; }
-       
-       public int getIsolateId() {
-               return m_isolateId;
-       }
-       public boolean          isEnabled()                                     
        { return m_enabled; }
-       public ValueExp         getExpression()                                 
{ return m_expression; }
-
-       /* setters */
-       public void setEnabled(boolean enable)                          { 
m_enabled = enable; }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/ExpressionCache.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/ExpressionCache.java 
b/debugger/src/flex/tools/debugger/cli/ExpressionCache.java
deleted file mode 100644
index 95698d5..0000000
--- a/debugger/src/flex/tools/debugger/cli/ExpressionCache.java
+++ /dev/null
@@ -1,596 +0,0 @@
-/*
- * 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 java.io.IOException;
-import java.io.StringReader;
-import java.text.ParseException;
-import java.util.NoSuchElementException;
-import java.util.Set;
-import java.util.Vector;
-
-import flash.localization.LocalizationManager;
-import flash.tools.debugger.Bootstrap;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.NotSuspendedException;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.ValueAttribute;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VariableAttribute;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.concrete.DValue;
-import flash.tools.debugger.expression.ASTBuilder;
-import flash.tools.debugger.expression.IASTBuilder;
-import flash.tools.debugger.expression.NoSuchVariableException;
-import flash.tools.debugger.expression.PlayerFaultException;
-import flash.tools.debugger.expression.ValueExp;
-
-public class ExpressionCache
-{
-       Session                         m_session;
-       IASTBuilder                     m_builder;
-       Vector<Object>          m_expressions;
-       IntProperties           m_props;
-       DebugCLI                        m_cli;
-
-       /**
-        * Returned by evaluate().
-        */
-       public static class EvaluationResult
-       {
-               /**
-                * The value to which the expression evaluated.
-                */
-               public Object value;
-
-               /**
-                * The context that was used to evaluate the expression. 
Sometimes used
-                * to convert the <code>value</code> field to a 
<code>Value</code>
-                * with <code>context.toValue()</code>.
-                */
-               public ExpressionContext context;
-       }
-
-       /**
-        * We can get at files by name or module id, eventually we will put 
functions in here too
-        */
-
-       public ExpressionCache(DebugCLI cli)
-       {
-               m_builder = new ASTBuilder(true); // allow fdb's "*x" and "x." 
indirection operators
-               m_expressions = new Vector<Object>();
-               m_props = new IntProperties();
-               m_cli = cli;
-       }
-
-       public void                     clear()                 { 
m_expressions.clear(); }
-       public void                     unbind()                { m_session = 
null; }
-       public int                      size()                  { return 
m_expressions.size(); }
-       public Object           at(int i)               { return 
m_expressions.elementAt(i); }
-
-       void setSession(Session s)      { m_session = s; }
-
-       public Session          getSession()                    { return 
m_session; }
-       public String           getPackageName(int id)  { return 
m_cli.module2ClassName(id); }
-
-       public void bind(Session s)
-       { 
-               setSession(s); 
-
-               // propagates our properties to the session / non-critical if 
fails
-               try { 
((flash.tools.debugger.concrete.PlayerSession)s).setPreferences(m_props.map()); 
} catch(Exception e) {}
-       }
-
-       public EvaluationResult evaluate(ValueExp e, int isolateId) throws 
NumberFormatException, NoSuchVariableException, PlayerFaultException, 
PlayerDebugException
-       {
-               EvaluationResult result = new EvaluationResult();
-               result.context = new ExpressionContext(this);
-               result.context.setIsolateId(isolateId);
-               result.value = e.evaluate(result.context);
-               return result;
-       }
-
-       public ValueExp parse(String s) throws IOException, ParseException
-       {
-               return m_builder.parse(new StringReader(s));
-       }
-
-       public int add(Object e)
-       {
-               int at = m_expressions.size();
-               m_expressions.add(e);
-               return at+1;
-       }
-
-       //
-       // Interface for accessing previous expression values and also the 
properties
-       //
-       public boolean propertyEnabled(String which)
-       {
-               boolean enabled = false;
-               try
-               {
-                       Number number = (Number) get(which);
-                       if (number != null)
-                               enabled = (number.intValue() != 0);
-               }
-               catch (Exception e)
-               {
-                       // nothing; leave 'enabled' as false
-               }
-               return enabled;
-       }
-
-       // this goes in properties
-       public void put(String s, int value) { m_props.put(s, value); 
setSessionProperty(s, value); }
-       public Set<String>  keySet() { return m_props.keySet(); }
-
-       /**
-        * Allow the session to receive property updates 
-        */
-       void setSessionProperty(String s, int value)
-       {
-               Session sess = getSession();
-           if (sess != null)
-                       sess.setPreference(s, value);
-               Bootstrap.sessionManager().setPreference(s, value);
-       }
-
-       /**
-        * We are able to fetch properties or expressions (i.e previous 
expression)
-        * using this single call, despite the fact that each of these types of 
-        * results lie in different data structures m_expressions and m_props.
-        * This allows us to easily perform expression evaluation without
-        * need or concern over which 'type' of $ reference we are dealing with
-        */
-       public Object get(String s) throws NumberFormatException, 
ArrayIndexOutOfBoundsException, NoSuchElementException
-       {
-               Object exp = null;
-
-               // should be of form '$n' where n is a number 0..size()
-               if (s.charAt(0) != '$')
-                       throw new NoSuchElementException(s);
-
-           String num = s.substring(1);
-               if (num == null || num.length() == 0)
-                       exp = at(size()-1);
-               else if (num.equals("$")) //$NON-NLS-1$
-                       exp = at(size()-2);
-               else
-               {
-                       try
-                       {
-                               int index = Integer.parseInt(num);
-                               exp = at(index-1);
-                       }
-                       catch(NumberFormatException nfe)
-                       {
-                               // must be in the property list 
-                               exp = m_props.getInteger(s);
-                       }
-               }
-               return exp;
-       }
-
-       //
-       // Statics for formatting stuff
-       //
-
-       /**
-        * Formatting function for variable
-        */
-       public void appendVariable(StringBuilder sb, Variable v, int isolateId)
-       {
-               //sb.append('\'');
-               String name = v.getName();
-               sb.append(name);
-               //sb.append('\'');
-               sb.append(" = "); //$NON-NLS-1$
-               appendVariableValue(sb, v.getValue(), name, isolateId);
-               //appendVariableAttributes(sb, v);
-       }
-
-       /**
-        * Given any arbitrary constant value, such as a Double, a String, etc.,
-        * format its value appropriately. For example, strings will be quoted.
-        * 
-        * @param sb
-        *            a StringBuilder to which the formatted value will be 
appended.
-        * @param o
-        *            the value to format.
-        */
-       public void appendVariableValue(StringBuilder sb, final Object o, final 
int isolateId)
-       {
-               Value v;
-
-               if (o instanceof Value) {
-                       v = (Value) o;
-               } else {
-                       v = new Value() {
-                               public int getAttributes() {
-                                       return 0;
-                               }
-
-                               public String[] getClassHierarchy(boolean 
allLevels) {
-                                       return new String[0];
-                               }
-
-                               public String getClassName() {
-                                       return ""; //$NON-NLS-1$
-                               }
-
-                               public long getId() {
-                                       return UNKNOWN_ID;
-                               }
-
-                               public int getMemberCount(Session s) throws 
NotSuspendedException,
-                                               NoResponseException, 
NotConnectedException {
-                                       return 0;
-                               }
-
-                               public Variable getMemberNamed(Session s, 
String name)
-                                               throws NotSuspendedException, 
NoResponseException,
-                                               NotConnectedException {
-                                       return null;
-                               }
-
-                               public Variable[] getMembers(Session s)
-                                               throws NotSuspendedException, 
NoResponseException,
-                                               NotConnectedException {
-                                       return new Variable[0];
-                               }
-
-                               public int getType() {
-                                       if (o instanceof Number)
-                                               return VariableType.NUMBER;
-                                       else if (o instanceof Boolean)
-                                               return VariableType.BOOLEAN;
-                                       else if (o instanceof String)
-                                               return VariableType.STRING;
-                                       else if (o == Value.UNDEFINED)
-                                               return VariableType.UNDEFINED;
-                                       else if (o == null)
-                                               return VariableType.NULL;
-
-                                       assert false;
-                                       return VariableType.UNKNOWN;
-                               }
-
-                               public String getTypeName() {
-                                       return ""; //$NON-NLS-1$
-                               }
-
-                               public Object getValueAsObject() {
-                                       return o;
-                               }
-
-                               public String getValueAsString() {
-                                       return DValue.getValueAsString(o);
-                               }
-
-                               public boolean isAttributeSet(int 
variableAttribute) {
-                                       return false;
-                               }
-
-                               public Variable[] getPrivateInheritedMembers() {
-                                       return new Variable[0];
-                               }
-
-                               public Variable[] 
getPrivateInheritedMemberNamed(String name) {
-                                       return new Variable[0];
-                               }
-                               
-                               public int getIsolateId() {
-                                       return isolateId;
-                               }
-                       };
-               }
-
-               appendVariableValue(sb, v, isolateId);
-       }
-
-       public void appendVariableValue(StringBuilder sb, Value val, final int 
isolateId) { appendVariableValue(sb,val,"", isolateId); } //$NON-NLS-1$
-
-       public void appendVariableValue(StringBuilder sb, Value val, String 
variableName, final int isolateId)
-       {
-               int type = val.getType();
-               String typeName = val.getTypeName();
-               String className = val.getClassName();
-
-               // if no string or empty then typeName is blank
-               if (typeName != null && typeName.length() == 0)
-                       typeName = null;
-
-        switch (type)
-        {
-            case VariableType.NUMBER:
-            {
-                               double value = 
((Number)val.getValueAsObject()).doubleValue();
-                               long longValue = (long) value;
-                               // The value is stored as a double; however, in 
practice most values are
-                               // actually integers.  Check to see if this is 
the case, and if it is,
-                               // then display it:
-                               //    - without a fraction, and
-                               //    - with its hex equivalent in parentheses.
-                               // Note, we use 'long' instead of 'int', in 
order to deal with the
-                               // ActionScript type 'uint'.
-                               if (longValue == value)
-                               {
-                                       sb.append(longValue);
-                                       sb.append(" (0x"); //$NON-NLS-1$
-                                       sb.append(Long.toHexString(longValue));
-                                       sb.append(")"); //$NON-NLS-1$
-                               }
-                               else
-                               {
-                                       sb.append(value);
-                               }
-                break;
-            }
-
-            case VariableType.BOOLEAN:
-            {
-                Boolean b = (Boolean)val.getValueAsObject();
-                if (b.booleanValue())
-                    sb.append("true"); //$NON-NLS-1$
-                else
-                    sb.append("false"); //$NON-NLS-1$
-                break;
-            }
-
-            case VariableType.STRING:
-            {
-               // Exceptions are displayed in angle brackets, e.g.
-               //     foo = <Text of exception here>
-               // Strings are displayed quoted:
-               //     foo = "Value of string here"
-               //
-               // Note that quotation marks within the string are not escaped. 
 This
-               // is sort of weird, but it's what we want to do, at least for 
now;
-               // the debugger's output is intended to be human-readable, not
-               // machine-readable, and it's easier for a person to read the 
string
-               // if there is no escaping of quotation marks.
-               //
-               // As a small step in the direction of avoiding that weirdness, 
if
-               // the string contains double-quotes but no single-quotes, we 
will
-               // quote it in single quotes.
-               String s = val.getValueAsString();
-               char start, end;
-
-                               if 
(val.isAttributeSet(ValueAttribute.IS_EXCEPTION))
-                               {
-                                       start = '<';
-                                       end = '>';
-                               }
-                               else if (s.indexOf('"') != -1 && 
s.indexOf('\'') == -1)
-                               {
-                                       start = end = '\'';
-                               }
-                               else
-                               {
-                                       start = end = '"';
-                               }
-
-                sb.append(start);
-                sb.append(escapeIfIde(s));
-                sb.append(end);
-                break;
-            }
-
-            case VariableType.OBJECT:
-            {
-                sb.append("["); //$NON-NLS-1$
-                               sb.append(className);
-
-                               // Normally, we include the object id after the 
class name.
-                               // However, when running fdbunit, don't show 
object IDs, so that
-                               // results can reproduce consistently from one 
run to the next.
-                               if (System.getProperty("fdbunit") == null) 
//$NON-NLS-1$
-                               {
-                                       sb.append(" "); //$NON-NLS-1$
-                                       
sb.append(escapeIfIde(String.valueOf(val.getValueAsObject()))); // object id
-                               }
-                if (typeName != null && !typeName.equals(className))
-                {
-                    sb.append(", class='"); //$NON-NLS-1$
-
-                                       // Often the typename is of the form 
'classname@hexaddress',
-                                       // but the hex address is the same as 
the object id which
-                                       // is returned by getValue() -- we 
don't want to display it
-                                       // here.
-                                       int at = typeName.indexOf('@');
-                                       if (at != -1)
-                                               typeName = 
typeName.substring(0, at);
-
-                    sb.append(typeName);
-                    sb.append('\'');
-                }
-                sb.append(']');
-                break;
-            }
-
-            case VariableType.FUNCTION:
-            {
-                               // here we have a special case for 
getters/setters which 
-                               // look like functions to us, except the 
attribute is set.
-                               sb.append('[');
-                               if 
(val.isAttributeSet(VariableAttribute.HAS_GETTER))
-                                       
sb.append(getLocalizationManager().getLocalizedTextString("getterFunction")); 
//$NON-NLS-1$
-                               else if 
(val.isAttributeSet(VariableAttribute.HAS_SETTER))
-                                       
sb.append(getLocalizationManager().getLocalizedTextString("setterFunction")); 
//$NON-NLS-1$
-                               else
-                                       
sb.append(getLocalizationManager().getLocalizedTextString("function")); 
//$NON-NLS-1$
-                               sb.append(' ');
-
-                               
sb.append(escapeIfIde(String.valueOf(val.getValueAsObject())));
-                if (typeName != null && !typeName.equals(variableName))
-                {
-                    sb.append(", name='"); //$NON-NLS-1$
-                    sb.append(typeName);
-                    sb.append('\'');
-                }
-                sb.append(']');
-                break;
-            }
-
-            case VariableType.MOVIECLIP:
-            {
-                sb.append("["); //$NON-NLS-1$
-                               sb.append(className);
-                               sb.append(" "); //$NON-NLS-1$
-                               
sb.append(escapeIfIde(String.valueOf(val.getValueAsObject())));
-                if (typeName != null && !typeName.equals(className))
-                {
-                    sb.append(", named='"); //$NON-NLS-1$
-                    sb.append(typeName);
-                    sb.append('\'');
-                }
-                sb.append(']');
-                break;
-            }
-
-            case VariableType.NULL:
-            {
-                sb.append("null"); //$NON-NLS-1$
-                break;
-            }
-
-            case VariableType.UNDEFINED:
-            {
-                sb.append("undefined"); //$NON-NLS-1$
-                break;
-            }
-
-            case VariableType.UNKNOWN:
-            {
-                
sb.append(getLocalizationManager().getLocalizedTextString("unknownVariableType"));
 //$NON-NLS-1$
-                break;
-            }
-        }
-       }
-
-       private static LocalizationManager getLocalizationManager()
-       {
-               return DebugCLI.getLocalizationManager();
-       }
-
-       public static void appendVariableAttributes(StringBuilder sb, Variable 
v)
-       {
-               if (v.getAttributes() == 0)
-                       return;
-
-               sb.append("  "); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.DONT_ENUMERATE))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_dontEnumerate"));
 //$NON-NLS-1$ //$NON-NLS-2$
-
-               if (v.isAttributeSet(VariableAttribute.READ_ONLY))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_readOnly")); 
//$NON-NLS-1$ //$NON-NLS-2$
-
-               if (v.isAttributeSet(VariableAttribute.IS_LOCAL))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_localVariable"));
 //$NON-NLS-1$ //$NON-NLS-2$
-
-               if (v.isAttributeSet(VariableAttribute.IS_ARGUMENT))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_functionArgument"));
 //$NON-NLS-1$ //$NON-NLS-2$
-
-               if (v.isAttributeSet(VariableAttribute.HAS_GETTER))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_getterFunction"));
 //$NON-NLS-1$ //$NON-NLS-2$
-
-               if (v.isAttributeSet(VariableAttribute.HAS_SETTER))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_setterFunction"));
 //$NON-NLS-1$ //$NON-NLS-2$
-
-               if (v.isAttributeSet(VariableAttribute.IS_DYNAMIC))
-                       sb.append(", dynamic"); //$NON-NLS-1$
-               
-               if (v.isAttributeSet(VariableAttribute.IS_STATIC))
-                       sb.append(", static"); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.IS_CONST))
-                       sb.append(", const"); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.PRIVATE_SCOPE))
-                       sb.append(", private"); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.PUBLIC_SCOPE))
-                       sb.append(", public"); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.PROTECTED_SCOPE))
-                       sb.append(", protected"); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.INTERNAL_SCOPE))
-                       sb.append(", internal"); //$NON-NLS-1$
-
-               if (v.isAttributeSet(VariableAttribute.NAMESPACE_SCOPE))
-                       sb.append(", " + 
getLocalizationManager().getLocalizedTextString("variableAttribute_hasNamespace"));
 //$NON-NLS-1$ //$NON-NLS-2$
-       }
-       
-    private String escapeIfIde(String s)
-    {
-        return m_cli != null && m_cli.isIde() ? escape(s) : s;
-    }
-
-    public static String escape(final String str) {
-        final StringBuilder buffer = new StringBuilder();
-
-        for (int idx = 0; idx < str.length(); idx++) {
-            char ch = str.charAt(idx);
-            switch (ch) {
-                case '\b':
-                    buffer.append("\\b");
-                    break;
-
-                case '\t':
-                    buffer.append("\\t");
-                    break;
-
-                case '\n':
-                    buffer.append("\\n");
-                    break;
-
-                case '\f':
-                    buffer.append("\\f");
-                    break;
-
-                case '\r':
-                    buffer.append("\\r");
-                    break;
-
-                case '\\':
-                    buffer.append("\\\\");
-                    break;
-
-                default:
-                    if (Character.isISOControl(ch)) {
-                        String hexCode = Integer.toHexString(ch).toUpperCase();
-                        buffer.append("\\u");
-                        int paddingCount = 4 - hexCode.length();
-                        while (paddingCount-- > 0) {
-                            buffer.append(0);
-                        }
-                        buffer.append(hexCode);
-                    } else {
-                        buffer.append(ch);
-                    }
-            }
-        }
-        return buffer.toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/ExpressionContext.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/ExpressionContext.java 
b/debugger/src/flex/tools/debugger/cli/ExpressionContext.java
deleted file mode 100644
index 2bed5ee..0000000
--- a/debugger/src/flex/tools/debugger/cli/ExpressionContext.java
+++ /dev/null
@@ -1,653 +0,0 @@
-/*
- * 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 java.util.StringTokenizer;
-import java.util.Vector;
-
-import flash.tools.debugger.Isolate;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SessionManager;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.ValueAttribute;
-import flash.tools.debugger.Variable;
-import flash.tools.debugger.VariableType;
-import flash.tools.debugger.concrete.DValue;
-import flash.tools.debugger.events.ExceptionFault;
-import flash.tools.debugger.events.FaultEvent;
-import flash.tools.debugger.expression.Context;
-import flash.tools.debugger.expression.ExpressionEvaluatorException;
-import flash.tools.debugger.expression.NoSuchVariableException;
-import flash.tools.debugger.expression.PlayerFaultException;
-
-public class ExpressionContext implements Context
-{
-       ExpressionCache         m_cache;
-       Object                          m_current;
-       boolean                         m_createIfMissing;  // set if we need 
to create a variable if it doesn't exist
-       Vector<String>          m_namedPath;
-       boolean                         m_nameLocked;
-       String                          m_newline = 
System.getProperty("line.separator"); //$NON-NLS-1$
-       int m_isolateId;
-
-       // used when evaluating an expression
-       public ExpressionContext(ExpressionCache cache)
-       {
-               m_cache = cache;
-               m_current = null;
-               m_createIfMissing = false;
-               m_namedPath = new Vector<String>();
-               m_nameLocked = false;
-               m_isolateId = Isolate.DEFAULT_ID;
-       }
-       
-       public void setIsolateId(int id) {
-               m_isolateId = id;
-       }
-
-       void            setContext(Object o)    { m_current = o; }
-
-       void            pushName(String name)   { if (m_nameLocked || 
name.length() < 1) return; m_namedPath.add(name);  }
-       boolean         setName(String name)    { if (m_nameLocked) return 
true; m_namedPath.clear(); pushName(name); return true; }
-       void            lockName()                              { m_nameLocked 
= true; }
-
-       public String getName()
-       {
-               int size = m_namedPath.size();
-               StringBuilder sb = new StringBuilder();
-               for(int i=0; i<size; i++)
-               {
-                       String s = m_namedPath.get(i);
-                       if (i > 0)
-                               sb.append('.');
-                       sb.append(s);
-               }
-               return ( sb.toString() );
-       }
-
-       String getCurrentPackageName()
-       { 
-               String s = null;
-               try
-               {
-                       Integer o = (Integer)m_cache.get(DebugCLI.LIST_MODULE);
-                       s = m_cache.getPackageName(o.intValue());
-               }
-               catch(NullPointerException npe)
-               {
-               }
-               catch(ClassCastException cce)
-               {
-               }
-               return s; 
-       }
-
-       //
-       //
-       // Start of Context API implementation
-       //
-       //
-       public void createPseudoVariables(boolean oui) { m_createIfMissing = 
oui; }
-
-       // create a new context object by combining the current one and o 
-       public Context createContext(Object o)
-       {
-               ExpressionContext c = new ExpressionContext(m_cache);
-               c.setContext(o);
-               c.createPseudoVariables(m_createIfMissing);
-               c.m_namedPath.addAll(m_namedPath);
-               c.setIsolateId(m_isolateId);
-               return c;
-       }
-
-       // assign the object o, the value v
-       public void assign(Object o, Value v) throws NoSuchVariableException, 
PlayerFaultException
-       {
-               try
-               {
-                       // first see if it is an internal property (avoids 
player calls)
-                       InternalProperty prop = resolveToInternalProperty(o);
-
-                       // we expect that o is a variable that can be resolved 
or is a specially marked internal variable
-                       if (prop != null)
-                       {
-                               assignInternal(prop, v);
-                       }
-                       else
-                       {
-                               boolean wasCreateIfMissing = m_createIfMissing;
-                               createPseudoVariables(true);
-                               Variable var = null;
-                               try {
-                                       var = resolveToVariable(o);
-                               } finally {
-                                       
createPseudoVariables(wasCreateIfMissing);
-                               }
-
-                               if (var == null)
-                                       throw new NoSuchVariableException((var 
== null) ? m_current : var.getName());
-
-                               // set the value, for the case of a variable 
that does not exist it will not have a type
-                               // so we try to glean one from v.
-                               FaultEvent faultEvent = 
var.setValue(getSession(), v.getType(), v.getValueAsString());
-                               if (faultEvent != null)
-                                       throw new 
PlayerFaultException(faultEvent);
-                       }
-               }
-               catch(PlayerDebugException pde)
-               {
-                       throw new ExpressionEvaluatorException(pde);
-               }
-       }
-
-       /**
-        * The Context interface which goes out and gets values from the session
-        * Expressions use this interface as a means of evaluation.
-        * 
-        * We also use this to create a reference to internal variables.
-        */
-       public Object lookup(Object o) throws NoSuchVariableException, 
PlayerFaultException
-       {
-               Object result = null;
-               try
-               {
-                       // first see if it is an internal property (avoids 
player calls)
-                       if ( (result = resolveToInternalProperty(o)) != null)
-                               ;
-
-                       // attempt to resolve to a player variable
-                       else if ( (result = resolveToVariable(o)) != null)
-                               ;
-
-                       // or value
-                       else if ( (result = resolveToValue(o)) != null)
-                               ;
-
-                       else
-                               throw new NoSuchVariableException(o);
-
-                       // take on the path to the variable; so 'what' command 
prints something nice
-                       if ((result != null) && result instanceof 
VariableFacade)
-                       {
-                               ((VariableFacade)result).setPath(getName());
-                       }
-
-                       // if the attempt to get the variable's value threw an 
exception inside the
-                       // player (most likely because the variable is actually 
a getter, and the
-                       // getter threw something), then throw something here
-                       Value resultValue = null;
-
-                       if (result instanceof Variable)
-                       {
-                               if (result instanceof VariableFacade && 
((VariableFacade)result).getVariable() == null)
-                                       resultValue = null;
-                               else
-                                       resultValue = 
((Variable)result).getValue();
-                       }
-                       else if (result instanceof Value)
-                       {
-                               resultValue = (Value) result;
-                       }
-
-                       if (resultValue != null)
-                       {
-                               if 
(resultValue.isAttributeSet(ValueAttribute.IS_EXCEPTION))
-                               {
-                                       String value = 
resultValue.getValueAsString();
-                                       throw new PlayerFaultException(new 
ExceptionFault(value, false, resultValue, resultValue.getIsolateId()));
-                               }
-                       }
-               }
-               catch(PlayerDebugException pde)
-               {
-                       result = Value.UNDEFINED;
-               }
-               return result;
-       }
-
-       /* returns a string consisting of formatted member names and values */
-       public Object lookupMembers(Object o) throws NoSuchVariableException
-       {
-               Variable var = null;
-               Value val = null;
-               Variable[] mems = null;
-               try
-               {
-                       var = resolveToVariable(o);
-                       if (var != null)
-                               val = var.getValue();
-                       else
-                               val = resolveToValue(o);
-                       mems = val.getMembers(getSession());
-               }
-               catch(NullPointerException npe)
-               {
-                       throw new NoSuchVariableException(o);
-               }
-               catch(PlayerDebugException pde)
-               {
-                       throw new NoSuchVariableException(o); // not quite 
right...
-               }
-
-               StringBuilder sb = new StringBuilder();
-
-               if (var != null)
-                       m_cache.appendVariable(sb, var, m_isolateId);
-               else
-                       m_cache.appendVariableValue(sb, val, m_isolateId);
-
-               boolean attrs = 
m_cache.propertyEnabled(DebugCLI.DISPLAY_ATTRIBUTES);
-               if (attrs && var != null)
-                       ExpressionCache.appendVariableAttributes(sb, var);
-
-               // [mmorearty] experimenting with hierarchical display of 
members
-               String[] classHierarchy = val.getClassHierarchy(false);
-               if (classHierarchy != null && 
getSession().getPreference(SessionManager.PREF_HIERARCHICAL_VARIABLES) != 0)
-               {
-                       for (int c=0; c<classHierarchy.length; ++c)
-                       {
-                               String classname = classHierarchy[c];
-                               sb.append(m_newline + "(Members of " + 
classname + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-                               for (int i=0; i<mems.length; ++i)
-                               {
-                                       if 
(classname.equals(mems[i].getDefiningClass()))
-                                       {
-                                               sb.append(m_newline + " "); 
//$NON-NLS-1$
-                                               m_cache.appendVariable(sb, 
mems[i], m_isolateId);
-                                               if (attrs)
-                                                       
ExpressionCache.appendVariableAttributes(sb, mems[i]);
-                                       }
-                               }
-                       }
-               }
-               else
-               {
-                       for(int i=0; i<mems.length; i++)
-                       {
-                               sb.append(m_newline + " "); //$NON-NLS-1$
-                               m_cache.appendVariable(sb, mems[i], 
m_isolateId);
-                               if (attrs)
-                                       
ExpressionCache.appendVariableAttributes(sb, mems[i]);
-                       }
-               }
-
-               return sb.toString();
-       }
-
-       //
-       //
-       // End of Context API implementation 
-       //
-       //
-
-       // used to assign a value to an internal variable 
-       private void assignInternal(InternalProperty var, Value v) throws 
NoSuchVariableException, NumberFormatException, PlayerDebugException
-       {
-               // otherwise set it
-               if (v.getType() != VariableType.NUMBER)
-                       throw new NumberFormatException(v.getValueAsString());
-               long l = Long.parseLong(v.getValueAsString());
-               m_cache.put(var.getName(), (int)l);
-       }
-
-       InternalProperty resolveToInternalProperty(Object o)
-       {
-               if (o instanceof String && ((String)o).charAt(0) == '$')
-               {
-                       String key = (String)o;
-                       Object value = null;
-
-                       try { value = m_cache.get(key); } catch(Exception e) {}
-                       return new InternalProperty(key, value);
-               }
-
-               return null;
-       }
-
-       /**
-        * Resolve the object into a variable by various means and 
-        * using the current context.
-        * @return variable, or <code>null</code>
-        */
-       Variable resolveToVariable(Object o) throws PlayerDebugException
-       {
-               Variable v = null;
-
-               // if o is a variable already, then we're done!
-               if (o instanceof Variable)
-                       return (Variable)o;
-
-               /**
-                * Resolve the name to something
-                */
-               {
-                       // not an id so try as name 
-                       String name = o.toString();
-                       long id = nameAsId(name);
-
-                       /**
-                        * if #N was used just pick up the variable, otherwise
-                        * we need to use the current context to resolve 
-                        * the name to a member
-                        */
-                       if (id != Value.UNKNOWN_ID)
-                       {
-                               // TODO what here?
-                       }
-                       else
-                       {
-                               // try to resolve as a member of current 
context (will set context if null)
-                               id = determineContext(name);
-                               v = locateForNamed(id, name, true);
-                               if (v != null)
-                                       v = new VariableFacade(v, id, 
m_isolateId);
-                               else if (v == null && m_createIfMissing && 
name.charAt(0) != '$')
-                                       v = new VariableFacade(id, name, 
m_isolateId);
-                       }
-               }
-
-               /* return the variable */
-               return v;
-       }
-
-       /*
-        * Resolve the object into a variable by various means and 
-        * using the current context.
-        */
-       Value resolveToValue(Object o) throws PlayerDebugException
-       {
-               Value v = null;
-
-               // if o is a variable or a value already, then we're done!
-               if (o instanceof Value)
-                       return (Value)o;
-               else if (o instanceof Variable)
-                       return ((Variable)o).getValue();
-               else if (o instanceof InternalProperty)
-                       return 
DValue.forPrimitive(((InternalProperty)o).m_value, m_isolateId);
-
-               /**
-                * Resolve the name to something
-                */
-               if (m_current == null)
-               {
-                       // not an id so try as name 
-                       String name = o.toString();
-                       long id = nameAsId(name);
-
-                       /**
-                        * if #N was used just pick up the variable, otherwise
-                        * we need to use the current context to resolve 
-                        * the name to a member
-                        */
-                       if (id != Value.UNKNOWN_ID)
-                       {
-                               v = 
getSession().getWorkerSession(m_isolateId).getValue((int)id);
-                       }
-                       else if (name.equals("undefined")) //$NON-NLS-1$
-                       {
-                               v = DValue.forPrimitive(Value.UNDEFINED, 
m_isolateId);
-                       }
-                       else
-                       {
-                               // Ask the player to find something, anything, 
on the scope chain
-                               // with this name.  We'll end up here, for 
example, when resolving
-                               // things like MyClass, String, Number, etc.
-                               v = 
getSession().getWorkerSession(m_isolateId).getGlobal(name);
-                       }
-               }
-
-               /* return the value */
-               return v;
-       }
-
-       // special code for #N support. I.e. naming a variable via an ID
-       long nameAsId(String name)
-       {
-               long id = Value.UNKNOWN_ID;
-               try
-               {
-                       if (name.charAt(0) == '#')
-                               id = Long.parseLong(name.substring(1));
-               }
-               catch(Exception e) 
-               {
-                       id = Value.UNKNOWN_ID;
-               }
-               return id;
-       }
-
-       /**
-        * Using the given id as a parent find the member named
-        * name.
-        * @throws NoSuchVariableException if id is UNKNOWN_ID
-        */
-       Variable memberNamed(long id, String name) throws 
NoSuchVariableException, PlayerDebugException
-       {
-               Variable v = null;
-               Value parent = 
getSession().getWorkerSession(m_isolateId).getValue(id);
-
-               if (parent == null)
-                       throw new NoSuchVariableException(name);
-
-               /* got a variable now return the member if any */
-               v = parent.getMemberNamed(getSession(), name);
-
-               return v;
-       }
-
-       /**
-        * All the really good stuff about finding where name exists goes here!
-        * 
-        * If name is not null, then it implies that we use the existing
-        * m_current to find a member of m_current.  If m_current is null
-        * Then we need to probe variable context points attempting to locate
-        * name.  When we find a match we set the m_current to this context
-        *
-        * If name is null then we simply return the current context.
-        */
-       long determineContext(String name) throws PlayerDebugException
-       {
-               long id = Value.UNKNOWN_ID;
-
-               // have we already resolved our context...
-               if (m_current != null)
-               {
-                       id = toValue().getId();
-               }
-
-               // nothing to go on, so we're done
-               else if (name == null)
-                       ;
-
-               // use the name and try and resolve where we are...
-               else
-               {
-                       // Each stack frame has a root variable under 
(BASE_ID-depth)
-                       // where depth is the depth of the stack.
-                       // So we query for our current stack depth and use that 
-                       // as the context for our base computation
-                       long baseId = Value.BASE_ID;
-                       int depth = 
((Integer)m_cache.get(DebugCLI.DISPLAY_FRAME_NUMBER)).intValue();
-                       baseId -= depth;
-
-                       // obtain data about our current state 
-                       Variable contextVar = null;
-                       Value contextVal = null;
-                       Value val = null;
-
-                       // look for 'name' starting from local scope
-                       if ( (val = locateParentForNamed(baseId, name, false)) 
!= null)
-                               ;
-
-                       // get the this pointer, then look for 'name' starting 
from that point
-                       else if ( ( (contextVar = locateForNamed(baseId, 
"this", false)) != null ) &&  //$NON-NLS-1$
-                                         ( setName("this") && (val = 
locateParentForNamed(contextVar.getValue().getId(), name, true)) != null ) ) 
//$NON-NLS-1$
-                               ;
-
-                       // now try to see if 'name' exists off of _root
-                       else if ( setName("_root") && (val = 
locateParentForNamed(Value.ROOT_ID, name, true)) != null ) //$NON-NLS-1$
-                               ;
-
-                       // now try to see if 'name' exists off of _global
-                       else if ( setName("_global") && (val = 
locateParentForNamed(Value.GLOBAL_ID, name, true)) != null ) //$NON-NLS-1$
-                               ;
-
-                       // now try off of class level, if such a thing can be 
found
-                       else if ( ( (contextVal = locate(Value.GLOBAL_ID, 
getCurrentPackageName(), false)) != null ) && 
-                                         ( 
setName("_global."+getCurrentPackageName()) && (val = 
locateParentForNamed(contextVal.getId(), name, true)) != null ) ) //$NON-NLS-1$
-                               ;
-
-                       // if we found it then stake this as our context!
-                       if (val != null)
-                       {
-                               id = val.getId();
-                               pushName(name);
-                               lockName();
-                       }
-               }
-               
-               return id;
-       }
-
-       /**
-        * Performs a search for a member with the given name using the
-        * given id as the parent variable.
-        * 
-        * If a match is found then, we return the parent variable of
-        * the member that matched.  The proto chain is optionally traversed.
-        * 
-        * No exceptions are thrown
-        */
-       Value locateParentForNamed(long id, String name, boolean traverseProto) 
throws PlayerDebugException
-       {
-               StringBuilder sb = new StringBuilder();
-
-               Variable var = null;
-               Value val = null;
-               try
-               {
-                       var = memberNamed(id, name);
-
-                       // see if we need to traverse the proto chain
-                       while (var == null && traverseProto)
-                       {
-                               // first attempt to get __proto__, then resolve 
name
-                               Variable proto = memberNamed(id, "__proto__"); 
//$NON-NLS-1$
-                               sb.append("__proto__"); //$NON-NLS-1$
-                               if (proto == null)
-                                       traverseProto = false;
-                               else
-                               {
-                                       id = proto.getValue().getId();
-                                       var = memberNamed(id, name);
-                                       if (var == null)
-                                               sb.append('.');
-                               }
-                       }
-               }
-               catch(NoSuchVariableException nsv)
-               {
-                       // don't worry about this one, it means variable with 
id couldn't be found
-               }
-               catch(NullPointerException npe)
-               {
-                       // probably no session
-               }
-
-               // what we really want is the parent not the child variable
-               if (var != null)
-               {
-                       pushName(sb.toString());
-                       val = 
getSession().getWorkerSession(m_isolateId).getValue(id);
-               }
-
-               return val;
-       }
-
-       // variant of locateParentForNamed, whereby we return the child variable
-       Variable locateForNamed(long id, String name, boolean traverseProto) 
throws PlayerDebugException
-       {
-               Variable var = null;
-               Value v = locateParentForNamed(id, name, traverseProto);
-               if (v != null)
-               {
-                       try
-                       {
-                               var = memberNamed(v.getId(), name);
-                       }
-                       catch(NoSuchVariableException nse)
-                       {
-                               v = null;
-                       }
-               }
-
-               return var;
-       }
-
-       /**
-        * Locates the member via a dotted name starting at the given id.
-        * It will traverse any and all proto chains if necc. to find the name.
-        */
-       Value locate(long startingId, String dottedName, boolean traverseProto) 
throws PlayerDebugException
-       {
-               if (dottedName == null)
-                       return null;
-
-               // first rip apart the dottedName
-               StringTokenizer names = new StringTokenizer(dottedName, "."); 
//$NON-NLS-1$
-               Value val = 
getSession().getWorkerSession(m_isolateId).getValue(startingId);
-
-               while(names.hasMoreTokens() && val != null)
-                       val = locateForNamed(val.getId(), names.nextToken(), 
traverseProto).getValue();
-
-               return val;
-       }
-
-       /*
-        * @see 
flash.tools.debugger.expression.Context#toValue(java.lang.Object)
-        */
-       public Value toValue(Object o)
-       {
-               // if o is a variable or a value already, then we're done!
-               if (o instanceof Value)
-                       return (Value)o;
-               else if (o instanceof Variable)
-                       return ((Variable)o).getValue();
-               else if (o instanceof InternalProperty)
-                       return 
DValue.forPrimitive(((InternalProperty)o).m_value, m_isolateId);
-               else
-                       return DValue.forPrimitive(o, m_isolateId);
-       }
-
-       public Value toValue()
-       {
-               return toValue(m_current);
-       }
-
-       public Session getSession()
-       {
-               return m_cache.getSession();
-       }
-
-       @Override
-       public int getIsolateId() {
-               return m_isolateId;
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/Extensions.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/Extensions.java 
b/debugger/src/flex/tools/debugger/cli/Extensions.java
deleted file mode 100644
index 0222290..0000000
--- a/debugger/src/flex/tools/debugger/cli/Extensions.java
+++ /dev/null
@@ -1,547 +0,0 @@
-/*
- * 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 java.io.PrintWriter;
-import java.text.ParseException;
-import java.util.HashMap;
-import java.util.Map;
-
-import flash.localization.LocalizationManager;
-import flash.swf.tools.Disassembler;
-import flash.swf.types.ActionList;
-import flash.tools.ActionLocation;
-import flash.tools.debugger.Bootstrap;
-import flash.tools.debugger.NotConnectedException;
-import flash.tools.debugger.PlayerDebugException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SuspendReason;
-import flash.tools.debugger.SuspendedException;
-import flash.tools.debugger.SwfInfo;
-import flash.tools.debugger.Value;
-import flash.tools.debugger.concrete.DMessage;
-import flash.tools.debugger.concrete.DMessageCounter;
-import flash.tools.debugger.concrete.DModule;
-import flash.tools.debugger.concrete.DSuspendInfo;
-import flash.tools.debugger.concrete.DSwfInfo;
-import flash.tools.debugger.concrete.PlayerSession;
-import flash.tools.debugger.concrete.PlayerSessionManager;
-import flash.util.FieldFormat;
-
-/**
- * Extensions class is a singleton that contains
- * every cli method that does not conform to the 
- * API.  Thus we can easily remove these features
- * from the cli if the implementation does not
- * support these calls.
- */
-public class Extensions
-{
-       public final static String m_newline = 
System.getProperty("line.separator"); //$NON-NLS-1$
-
-       public static void doShowStats(DebugCLI cli) throws 
IllegalStateException
-       {
-               /* we do some magic casting */
-               Session session = cli.getSession();
-               StringBuilder sb = new StringBuilder();
-               try
-               {
-                       PlayerSession p = (PlayerSession)session;
-                       DMessageCounter cnt = p.getMessageCounter();
-
-                       
sb.append(getLocalizationManager().getLocalizedTextString("key16")); 
//$NON-NLS-1$
-                       sb.append(m_newline);
-                       for(int i=0; i<=DMessage.InSIZE; i++)
-                       {
-                               long amt = cnt.getInCount(i);
-                               if (amt > 0)
-                               {
-                                       sb.append('\n');
-                                       sb.append(DMessage.inTypeName(i));
-                                       sb.append(" = "); //$NON-NLS-1$
-                                       sb.append(amt);
-                               }
-                       }
-
-                       sb.append("\n\n"); //$NON-NLS-1$
-                       
sb.append(getLocalizationManager().getLocalizedTextString("key17")); 
//$NON-NLS-1$
-                       sb.append("\n"); //$NON-NLS-1$
-                       for(int i=0; i<=DMessage.OutSIZE; i++)
-                       {
-                               long amt = cnt.getOutCount(i);
-                               if (amt > 0)
-                               {
-                                       sb.append('\n');
-                                       sb.append(DMessage.outTypeName(i));
-                                       sb.append(" = "); //$NON-NLS-1$
-                                       sb.append(amt);
-                               }
-                       }
-
-                       sb.append('\n');
-                       cli.out( sb.toString() );
-               }
-               catch(NullPointerException e)
-               {
-                       throw new IllegalStateException();
-               }
-       }
-
-       public static void doShowFuncs(DebugCLI cli)
-       {
-               StringBuilder sb = new StringBuilder();
-
-               String arg = null;
-               FileInfoCache fileInfo = cli.getFileCache();
-
-               // we take an optional single arg which specifies a module
-               try
-               {
-                       if (cli.hasMoreTokens())
-                       {
-                               arg = cli.nextToken();
-                int id = arg.equals(".") ? 
cli.propertyGet(DebugCLI.LIST_MODULE) : 
cli.parseFileArg(cli.getActiveIsolateId(), -1, arg); //$NON
-
-                               DModule m = (DModule)fileInfo.getFile(id, 
cli.getActiveIsolateId());
-                m.lineMapping(sb);
-                       }
-                       else
-                       {
-                               SourceFile[] ar = fileInfo.getFileList();
-                               if (ar == null)
-                                       
cli.err(getLocalizationManager().getLocalizedTextString("key18")); //$NON-NLS-1$
-                               else
-                {
-                    for (int i = 0; ar != null && i < ar.length; i++)
-                    {
-                        DModule m = (DModule)ar[i];
-                        m.lineMapping(sb);
-                    }
-                }
-                       }
-
-                       cli.out(sb.toString());
-               }
-               catch(NullPointerException npe)
-               {
-                       
cli.err(getLocalizationManager().getLocalizedTextString("key19")); //$NON-NLS-1$
-               }
-               catch(ParseException pe)
-               {
-                       cli.err(pe.getMessage());
-               }
-               catch(AmbiguousException ae)
-               {
-                       cli.err(ae.getMessage());
-               }
-               catch(NoMatchException nme)
-               {
-                       cli.err(nme.getMessage());
-               }
-       }
-
-       /**
-        * Dump the content of internal variables
-        */
-       public static void doShowProperties(DebugCLI cli)
-       {
-               StringBuilder sb = new StringBuilder();
-
-               Session session = cli.getSession();
-               for (String key: cli.propertyKeys())
-               {
-                       int value = cli.propertyGet(key);
-                       sb.append(key);
-                       sb.append(" = "); //$NON-NLS-1$
-                       sb.append(value);
-                       sb.append('\n');
-               }
-
-               // session manager
-               {
-                       PlayerSessionManager mgr = 
(PlayerSessionManager)Bootstrap.sessionManager();
-                       
sb.append(getLocalizationManager().getLocalizedTextString("key21")); 
//$NON-NLS-1$
-                       sb.append('\n');
-                       for (String key: mgr.keySet())
-                       {
-                               Object value = mgr.getPreferenceAsObject(key);
-                               sb.append(key);
-                               sb.append(" = "); //$NON-NLS-1$
-                               sb.append(value);
-                               sb.append('\n');
-                       }
-               }
-
-               if (session != null)
-               {
-                       PlayerSession psession = (PlayerSession)session;
-                       
sb.append(getLocalizationManager().getLocalizedTextString("key22")); 
//$NON-NLS-1$
-                       sb.append('\n');
-                       for (String key: psession.keySet())
-                       {
-                               Object value = 
psession.getPreferenceAsObject(key);
-                               sb.append(key);
-                               sb.append(" = "); //$NON-NLS-1$
-                               sb.append(value);
-                               sb.append('\n');
-                       }
-               }
-
-               cli.out( sb.toString() );
-       }
-
-       /**
-        * Dump the break reason and offset
-        */
-       public static void doShowBreak(DebugCLI cli) throws 
NotConnectedException
-       {
-               int isolateId = cli.getActiveIsolateId();
-               cli.waitTilHalted(isolateId);
-               try
-               {
-                       Session session = cli.getSession();
-                       StringBuilder sb = new StringBuilder();
-                       if (session.getWorkerSession(isolateId).isSuspended())
-                       {
-                               
sb.append(getLocalizationManager().getLocalizedTextString("stopped")); 
//$NON-NLS-1$
-                               sb.append(' ');
-                               appendBreakInfo(cli, sb, true, isolateId);
-                       }
-                       else
-                               
sb.append(getLocalizationManager().getLocalizedTextString("key24")); 
//$NON-NLS-1$
-
-                       cli.out( sb.toString() );
-               }
-               catch(NullPointerException npe)
-               {
-                       
cli.err(getLocalizationManager().getLocalizedTextString("key25")); //$NON-NLS-1$
-               }
-       }
-
-       // Extended low level break information
-       public static void appendBreakInfo(DebugCLI cli, StringBuilder sb, 
boolean includeFault, int isolateId) throws NotConnectedException
-       {
-               Session session = cli.getSession();
-               FileInfoCache fileInfo = cli.getFileCache();
-
-               int reason = session.suspendReason();
-               int offset = ((PlayerSession)session).getSuspendOffset();
-               int index = ((PlayerSession)session).getSuspendActionIndex();
-
-               SwfInfo info = null;
-               try { info = fileInfo.getSwfs(isolateId)[index]; } 
catch(ArrayIndexOutOfBoundsException oobe) {}
-               if (info != null)
-               {
-                       Map<String, String> args = new HashMap<String, 
String>();
-                       args.put("swfName", FileInfoCache.nameOfSwf(info) ); 
//$NON-NLS-1$
-                       
sb.append(getLocalizationManager().getLocalizedTextString("key35", args)); 
//$NON-NLS-1$
-                       sb.append(' ');
-               }
-
-               Map<String, String> args = new HashMap<String, String>();
-               args.put("address", "0x" + FieldFormat.formatLongToHex(new 
StringBuilder(), offset, 8) + " (" + offset + ")"); //$NON-NLS-1$ //$NON-NLS-2$ 
//$NON-NLS-3$ //$NON-NLS-4$
-               
sb.append(getLocalizationManager().getLocalizedTextString("atAddress", args)); 
//$NON-NLS-1$
-
-               if (includeFault)
-               {
-                       args = new HashMap<String, String>();
-                       StringBuilder reasonBuffer = new StringBuilder();
-                       cli.appendReason(reasonBuffer, reason);
-                       args.put("fault", reasonBuffer.toString() ); 
//$NON-NLS-1$
-                       sb.append(' ');
-                       
sb.append(getLocalizationManager().getLocalizedTextString("haltedDueToFault", 
args)); //$NON-NLS-1$
-               }
-       }
-
-       // Raw direct call to Player
-       public static void doShowVariable(DebugCLI cli) throws 
PlayerDebugException
-       {
-               int isolateId = cli.getActiveIsolateId();
-               cli.waitTilHalted(isolateId);
-               try
-               {
-                       // an integer followed by a variable name
-                       Session session = cli.getSession();
-                       long id = cli.nextLongToken();
-                       String name = (cli.hasMoreTokens()) ? cli.nextToken() : 
null;
-
-                       StringBuilder sb = new StringBuilder();
-                       sb.append(name);
-                       sb.append(" = "); //$NON-NLS-1$
-                       Value v = ((PlayerSession)session).getValue(id, name, 
isolateId);
-                       cli.m_exprCache.appendVariableValue(sb, v, isolateId);
-                       cli.out( sb.toString() );
-               }
-               catch(NullPointerException npe)
-               {
-                       
cli.err(getLocalizationManager().getLocalizedTextString("key26")); //$NON-NLS-1$
-               }
-       }
-
-       public static void doDisassemble(DebugCLI cli) throws 
PlayerDebugException
-       {
-               /* currentXXX may NOT be invalid! */
-               int currentModule = cli.propertyGet(DebugCLI.LIST_MODULE);
-               int currentLine = cli.propertyGet(DebugCLI.LIST_LINE);
-               int currentIsolate = cli.propertyGet(DebugCLI.LIST_WORKER);
- 
-               String arg1 = null;
-               int module1 = currentModule;
-               int line1 = currentLine;
- 
-               String arg2 = null;
-               int line2 = currentLine;
- 
-               boolean functionNamed = false;
-               int numLines = 0;
-               try
-               {
-                       FileInfoCache fileInfo = cli.getFileCache();
-                       Session session = cli.getSession();
-            int isolateId = cli.getActiveIsolateId();
-                       if (cli.hasMoreTokens())
-                       {
-                               arg1 = cli.nextToken();
-                               if (arg1.equals("-")) //$NON-NLS-1$
-                               {
-                                       // move back one line
-                                       line1 = line2 = line1 - 1;
-                               }
-                               else
-                               {
-                    int wasFunc = 0;
-
-                    FileLocation[] fileLocations = 
cli.parseLocationArg(currentModule, currentLine, arg1, false);
-
-                    if (fileLocations.length == 1) {
-                        module1 = fileLocations[0].getModule();
-                        line2 = line1 = fileLocations[0].getLine();
-                        functionNamed = (fileLocations[0].getWasFunc() != 0);
-                    }
-
-                    if (cli.hasMoreTokens()) {
-                        arg2 = cli.nextToken();
-                        line2 = cli.parseLineArg(module1, arg2);
-                    }
-                               }
-                       }
-                       else
-                       {
-                               // since no parms test for valid location if 
none use players concept of where we stopped
-                               if( fileInfo.getFile(currentModule, 
currentIsolate) == null)
-                               {
-                                       //here we simply use the players 
concept of suspsend
-                                       DSuspendInfo info = 
((PlayerSession)session).getSuspendInfoIsolate(isolateId);
-                                       int at = info.getOffset();
-                                       int which = info.getActionIndex();
-                                       int until = info.getNextOffset();
-                                       if (info.getReason() == 
SuspendReason.Unknown)
-                                               throw new SuspendedException();
- 
-                                       SwfInfo swf = 
fileInfo.getSwfs(isolateId)[which];
-                                       outputAssembly(cli, (DSwfInfo)swf, at, 
until);
-                                       throw new 
AmbiguousException(getLocalizationManager().getLocalizedTextString("key27")); 
//$NON-NLS-1$
-                               }
-                       }                       
- 
-                       /**
-                        * Check for a few error conditions, otherwise we'll 
write a listing!
-                        */
-                       if (cli.hasMoreTokens())
-                       {
-                               
cli.err(getLocalizationManager().getLocalizedTextString("key28")); //$NON-NLS-1$
-                       }
-                       else
-                       {
-                               SourceFile file = fileInfo.getFile(module1);
-                               numLines = file.getLineCount();
- 
-                               // pressing return is ok, otherwise throw the 
exception
-                               if (line1 > numLines && arg1 != null)
-                                       throw new IndexOutOfBoundsException();
- 
-                               /* if no arg2 then user list a single line */
-                               if (arg2 == null)
-                                       line2 = line1;
- 
-                               /* adjust our range of lines to ensure we 
conform */
-                               if (line1 < 1)
-                               {
-                                       /* shrink line 1, grow line2 */
-                                       line2 += -(line1 - 1);
-                                       line1 = 1;
-                               }
- 
-                               if (line2 > numLines)
-                                       line2 = numLines;
- 
-                               //                          
System.out.println("1="+module1+":"+line1+",2="+module2+":"+line2+",num="+numLines+",half="+half);
- 
-                               /* nothing to display */
-                               if (line1 > line2)
-                                       throw new IndexOutOfBoundsException();
- 
-                               /* now dump the mixed source / assembly */
-                               // now lets find which swf this in 
-                               DSwfInfo swf = 
(DSwfInfo)fileInfo.swfForFile(file, cli.getActiveIsolateId());
-                               ActionLocation lStart = null;
-                               ActionLocation lEnd = null;
- 
-                               if (swf == null)
-                               {
-                                       Map<String, String> args = new 
HashMap<String, String>();
-                                       args.put("arg3", file.getName()); 
//$NON-NLS-1$
-                                       
cli.err(getLocalizationManager().getLocalizedTextString("key29", args)); 
//$NON-NLS-1$
-                               }
-                               else if (functionNamed)
-                               {
-                                       // if we name a function just dump the 
whole thing without source.
-                                       int offset = 
file.getOffsetForLine(line1);
-                                       lStart = swf.locate(offset);
-                                       if (lStart.function == null)
-                                               
cli.err(getLocalizationManager().getLocalizedTextString("key30")); //$NON-NLS-1$
-                                       else
-                                       {
-                                               // create a psudeo action list 
from which to disasemble the function
-                                               ActionList al = new 
ActionList(true);
-                                               al.setActionOffset(0, 
lStart.function);
-                                               lStart.actions = al;
-                                               lStart.at = 0;
-                                               lEnd = new ActionLocation();
-                                               lEnd.actions = al;
-                                               lEnd.at = 0;
-                                               outputAssembly(cli, swf, 
lStart, lEnd);
-                                       }
-                               }
-                               else
-                               {
-                                       ActionLocation lastEnd = null;
-                                       for(int i=line1; i<=line2; i++)
-                                       {
-                                               int offset = 
file.getOffsetForLine(i);
- 
-                                               // locate the action list 
associated with this of the swf
-                                               if (offset != 0)
-                                               {
-                                                       // get the starting 
point and try to locate a nice ending
-                                                       lStart = 
swf.locate(offset);
-                                                       lEnd = 
swf.locateSourceLineEnd(lStart);
- 
-                                                       // now see if we 
skipped some assembly between source lines
-                                                       if (lastEnd != null)
-                                                       {
-                                                               lastEnd.at++;  
// point our pseudo start to the next action
- 
-                                                               // new actions 
list so attempt to find the end of source in the old actions list
-                                                               if 
(lastEnd.actions != lStart.actions && lastEnd.actions.size() != lastEnd.at)
-                                                               {
-                                                                       String 
atString = Integer.toHexString(lastEnd.actions.getOffset(lastEnd.at));
-                                                                       
Map<String, String> args = new HashMap<String, String>();
-                                                                       
args.put("arg4", atString); //$NON-NLS-1$
-                                                                       
cli.out(getLocalizationManager().getLocalizedTextString("key31", args)); 
//$NON-NLS-1$
- 
-                                                                       // we 
are missing some of the dissassembly, so back up a bit and dump it out
-                                                                       
ActionLocation gapEnd = swf.locateSourceLineEnd(lastEnd);
-                                                                       
outputAssembly(cli, swf, lastEnd, gapEnd);
-                                                               }
-                                                               else if 
(lastEnd.at < lStart.at)
-                                                               {
-                                                                       // same 
action list but we skipped some instructions 
-                                                                       
ActionLocation gapEnd = new ActionLocation(lStart);
-                                                                       
gapEnd.at--;
-                                                                       
outputAssembly(cli, swf, lastEnd, gapEnd);
-                                                               }
-                                                       }
-                                                       lastEnd = lEnd;
-                                               }
- 
-                                               // dump source
-                                               cli.outputSource(module1, i, 
file.getLine(i));
-                                               
-                                               // obtain the offset, locate it 
in the swf
-                                               if (offset != 0)
-                                                       outputAssembly(cli, 
swf, lStart, lEnd);
-                                       }
- 
-                                       /* save away valid context */
-                                       cli.propertyPut(DebugCLI.LIST_MODULE, 
module1);
-                                       cli.propertyPut(DebugCLI.LIST_LINE, 
line2 + 1);  // add one
-                                       cli.m_repeatLine = "disassemble";   /* 
allow repeated listing by typing CR */ //$NON-NLS-1$
-                               }
-                       }
-               }
-               catch(IndexOutOfBoundsException iob)
-               {
-                       String name = "#"+module1; //$NON-NLS-1$
-                       Map<String, String> args = new HashMap<String, 
String>();
-                       args.put("arg5", Integer.toString(line1)); //$NON-NLS-1$
-                       args.put("arg6", name); //$NON-NLS-1$
-                       args.put("arg7", Integer.toString(numLines)); 
//$NON-NLS-1$
-                       
cli.err(getLocalizationManager().getLocalizedTextString("key32", args)); 
//$NON-NLS-1$
-               }
-               catch(AmbiguousException ae)
-               {
-                       cli.err(ae.getMessage());
-               }
-               catch(NullPointerException npe)
-               {
-                       
cli.err(getLocalizationManager().getLocalizedTextString("key33")); //$NON-NLS-1$
-               }
-               catch(ParseException pe)
-               {
-                       cli.err(pe.getMessage());
-               }
-               catch(NoMatchException nme)
-               {
-                       cli.err(nme.getMessage());
-               }
-               catch(SuspendedException se)
-               {
-                       
cli.err(getLocalizationManager().getLocalizedTextString("key34")); //$NON-NLS-1$
-               }
-       }
- 
-       private static LocalizationManager getLocalizationManager()
-       {
-               return DebugCLI.getLocalizationManager();
-       }
-
-       /**
-        * Disassemble part of the swf to the output 
-        */
-       public static ActionLocation outputAssembly(DebugCLI cli, DSwfInfo swf, 
int start, int end)
-       {
-               // first we need to locate the action list associated with this
-               // portion of the swf
-               ActionLocation lStart = swf.locate(start);
-               ActionLocation lEnd = (end > -1) ? swf.locate(end) : 
swf.locateSourceLineEnd(lStart);
- 
-               return outputAssembly(cli, swf, lStart, lEnd);
-       }
- 
-       public static ActionLocation outputAssembly(DebugCLI cli, SwfInfo info, 
ActionLocation lStart, ActionLocation lEnd)
-       {
-               // now make sure our actions lists are the same (i.e we haven't 
spanned past one tag)
-               if (lStart.actions != lEnd.actions)
-                       lEnd.at = lStart.actions.size()-1;
-               
-               Disassembler.disassemble(lStart.actions, lStart.pool, 
lStart.at, lEnd.at, new PrintWriter(cli.getOut()));
-               return lEnd;
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/ExtensionsDisabled.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/ExtensionsDisabled.java 
b/debugger/src/flex/tools/debugger/cli/ExtensionsDisabled.java
deleted file mode 100644
index caf33af..0000000
--- a/debugger/src/flex/tools/debugger/cli/ExtensionsDisabled.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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;
-
-/**
- * ExtensionsDisabled class is a singleton that contains
- * every cli method that does not conform to the 
- * API.  There are two implementations of this singleton
- * In Extensions the full code is provided in this class
- * ExtensionsDisabled emtpy stubs are provided that allow
- * for DebugCLI to be fully compliant with the API 
- */
-public class ExtensionsDisabled
-{
-       public static void doShowStats(DebugCLI cli) { cli.out("Command not 
supported."); } //$NON-NLS-1$
-       public static void doShowFuncs(DebugCLI cli) { cli.out("Command not 
supported."); } //$NON-NLS-1$
-       public static void doShowProperties(DebugCLI cli) { cli.out("Command 
not supported."); } //$NON-NLS-1$
-       public static void doShowBreak(DebugCLI cli) { cli.out("Command not 
supported."); } //$NON-NLS-1$
-       public static void appendBreakInfo(DebugCLI cli, StringBuilder sb, 
boolean includeFault) { cli.out("Command not supported."); } //$NON-NLS-1$
-       public static void doShowVariable(DebugCLI cli) { cli.out("Command not 
supported."); } //$NON-NLS-1$
-       public static void doDisassemble(DebugCLI cli) { cli.out("Command not 
supported."); } //$NON-NLS-1$
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/FaultActions.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/FaultActions.java 
b/debugger/src/flex/tools/debugger/cli/FaultActions.java
deleted file mode 100644
index 73bc074..0000000
--- a/debugger/src/flex/tools/debugger/cli/FaultActions.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * 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 java.util.HashMap;
-
-import flash.localization.LocalizationManager;
-import flash.tools.debugger.events.DivideByZeroFault;
-import flash.tools.debugger.events.ExceptionFault;
-import flash.tools.debugger.events.InvalidTargetFault;
-import flash.tools.debugger.events.InvalidURLFault;
-import flash.tools.debugger.events.InvalidWithFault;
-import flash.tools.debugger.events.ProtoLimitFault;
-import flash.tools.debugger.events.RecursionLimitFault;
-import flash.tools.debugger.events.ScriptTimeoutFault;
-import flash.tools.debugger.events.StackUnderFlowFault;
-
-/**
- * FaultActions proivdes a convenient wrapper for housing the user specified
- * behaviour for a set of faults (aka text strings)
- * 
- * The underlying data structure is a HashMap that maps strings (i.e. fault
- * names) to Integers.  The integers are used as bit fields for holding
- * the state of setting per fault.
- * 
- * Add new actions by calling addAction("name") 
- */
-public class FaultActions
-{
-       HashMap<String, Integer> m_faults = new HashMap<String, Integer>();
-       HashMap<String, String> m_description = new HashMap<String, String>();  
// @todo should really use an object within the faults map for this 
-       HashMap<String, Integer> m_actions = new HashMap<String, Integer>();
-
-       int m_nextBitForAction = 0x1;  // the next bit to use for the action
-
-       private FaultActions() {}
-
-       Integer         get(String o)                   { return 
m_faults.get(o); }
-       Integer         getAction(String o)             { return 
m_actions.get(o); }
-       void            put(String k, Integer v){ m_faults.put(k,v); }
-
-       /* getters */
-       public void                     clear()                                 
{ m_faults.clear(); }
-       public int                      size()                                  
{ return m_faults.size(); }
-       public Object[]     names()                                     { 
return m_faults.keySet().toArray(); }
-       public Object[]     actions()                           { return 
m_actions.keySet().toArray(); }
-       public boolean          exists(String k)                { return 
(get(k) == null) ? false : true;  }
-
-       public void                     putDescription(String k, String v)      
{ m_description.put(k,v);       }
-       public String           getDescription(String k)                        
{ return (m_description.get(k) == null) ? "" :  m_description.get(k);   } 
//$NON-NLS-1$
-
-       /**
-        * Add a new fault to the table, with all actions disabled
-        */
-       public void add(String k)                               
-       { 
-               put(k, new Integer(0)); 
-       }
-
-       /**
-        * Add a new action type to the table 
-        */
-       public void addAction(String k) 
-       { 
-               Integer v = new Integer(m_nextBitForAction++);
-               m_actions.put(k,v); 
-       }
-
-       /**
-        * Check if the given fault has the action set or not 
-        */
-       public boolean is(String fault, String action)
-       {
-               int mask  = getAction(action).intValue();
-               int bits = get(fault).intValue();
-
-               boolean set = ( (bits & mask) == mask ) ? true : false;
-               return set;
-       }
-
-       /**
-        * Sets the action bits as appropriate for the given fault 
-        * and action 
-        */
-       public int action(String fault, String action)
-       {
-               // first check if fault is legal
-               Integer current = get(fault);
-               if (current == null)
-                       throw new IllegalArgumentException(fault);              
        
-               
-               // check for no?
-               boolean no = action.startsWith("no"); //$NON-NLS-1$
-               if (no)
-                       action = action.substring(2);
-
-               // do the search for action 
-               Integer bit = getAction(action);
-               if (bit == null)
-                       throw new IllegalArgumentException(action);
-
-               // now do the math
-               int old = current.intValue();
-               int mask = bit.intValue();
-
-               int n = (old & (~mask));  // turn it off
-               n = (no) ? n : (n | mask); // leave it off or turn it on
-
-               put(fault, new Integer(n));
-
-               return n;
-       }
-       
-       public static class FaultActionsBuilder {
-
-               private final LocalizationManager localizationManager;
-
-               public FaultActionsBuilder(LocalizationManager 
localizationManager) {
-                       super();
-                       this.localizationManager = localizationManager;
-               }
-
-               public FaultActions build() {
-                       FaultActions faultActions = new FaultActions();
-                       populateFaultTable(faultActions);
-                       return faultActions;
-               }
-
-               private void populateFaultTable(FaultActions faultActions) {
-                       // possible actions for our fault table
-                       faultActions.addAction("stop"); //$NON-NLS-1$
-                       faultActions.addAction("print"); //$NON-NLS-1$
-
-                       // the faults we support
-                       faultActions.add(InvalidTargetFault.name);
-                       faultActions.add(RecursionLimitFault.name);
-                       faultActions.add(InvalidWithFault.name);
-                       faultActions.add(ProtoLimitFault.name);
-                       faultActions.add(InvalidURLFault.name);
-                       faultActions.add(ExceptionFault.name);
-                       faultActions.add(StackUnderFlowFault.name);
-                       faultActions.add(DivideByZeroFault.name);
-                       faultActions.add(ScriptTimeoutFault.name);
-                       // faultActions.add(ConsoleErrorFault.name);
-
-                       // nice description of the faults
-                       faultActions.putDescription(
-                                       InvalidTargetFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "invalidTargetFault")); 
//$NON-NLS-1$
-                       faultActions.putDescription(
-                                       RecursionLimitFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       
"recursionLimitFault")); //$NON-NLS-1$
-                       faultActions.putDescription(
-                                       InvalidWithFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "invalidWithFault")); 
//$NON-NLS-1$
-                       faultActions.putDescription(
-                                       ProtoLimitFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "protoLimitFault")); 
//$NON-NLS-1$
-                       faultActions.putDescription(
-                                       InvalidURLFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "invalidUrlFault")); 
//$NON-NLS-1$
-                       faultActions.putDescription(
-                                       ExceptionFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "exceptionFault")); 
//$NON-NLS-1$
-                       faultActions.putDescription(
-                                       StackUnderFlowFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       
"stackUnderflowFault")); //$NON-NLS-1$
-                       faultActions.putDescription(
-                                       DivideByZeroFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "divideByZeroFault")); 
//$NON-NLS-1$
-                       faultActions.putDescription(
-                                       ScriptTimeoutFault.name,
-                                       
getLocalizationManager().getLocalizedTextString(
-                                                       "scriptTimeoutFault")); 
//$NON-NLS-1$
-                       // faultActions.putDescription(ConsoleErrorFault.name,
-                       // "ActionScript recoverable error");
-
-                       // default values for the faults
-                       faultActions.action(InvalidTargetFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(InvalidTargetFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(RecursionLimitFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(RecursionLimitFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(InvalidWithFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(InvalidWithFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(ProtoLimitFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(ProtoLimitFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(InvalidURLFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(InvalidURLFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(ExceptionFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(ExceptionFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(StackUnderFlowFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(StackUnderFlowFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(DivideByZeroFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(DivideByZeroFault.name, "print"); 
//$NON-NLS-1$
-                       faultActions.action(ScriptTimeoutFault.name, "stop"); 
//$NON-NLS-1$
-                       faultActions.action(ScriptTimeoutFault.name, "print"); 
//$NON-NLS-1$
-                       //                      
faultActions.action(ConsoleErrorFault.name, "print"); //$NON-NLS-1$
-                       //                      
faultActions.action(ConsoleErrorFault.name, "stop"); //$NON-NLS-1$
-               }
-
-               private LocalizationManager getLocalizationManager() {
-                       return localizationManager;
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/07f5a7de/debugger/src/flex/tools/debugger/cli/FileInfoCache.java
----------------------------------------------------------------------
diff --git a/debugger/src/flex/tools/debugger/cli/FileInfoCache.java 
b/debugger/src/flex/tools/debugger/cli/FileInfoCache.java
deleted file mode 100644
index e66b89a..0000000
--- a/debugger/src/flex/tools/debugger/cli/FileInfoCache.java
+++ /dev/null
@@ -1,569 +0,0 @@
-/*
- * 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 java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import flash.tools.debugger.InProgressException;
-import flash.tools.debugger.Isolate;
-import flash.tools.debugger.NoResponseException;
-import flash.tools.debugger.Session;
-import flash.tools.debugger.SourceFile;
-import flash.tools.debugger.SwfInfo;
-import flash.util.IntMap;
-
-/**
- * FileInfoCache manages a list of files that are unique
- * across multiple swfs.
- */
-public class FileInfoCache implements Comparator<SourceFile>
-{
-       Session m_session;
-
-       /**
-        * We can get at files by module id or path
-        */
-       IntMap                          m_byInt = new IntMap();
-       HashMap<Integer, IntMap> m_isolateState = new HashMap<Integer, IntMap> 
();
-       
-       private IntMap getIsolateState(int isolateId) {
-               IntMap isolateState = null;
-               if (!m_isolateState.containsKey(isolateId)) {
-                       isolateState = new IntMap();
-                       m_isolateState.put(isolateId, isolateState);
-               }
-               else
-                       isolateState = m_isolateState.get(isolateId);
-               return isolateState;
-       }
-       
-       SourceFile[]            m_files = null;
-       SourceFile[]            m_isolateFiles = null;
-       SwfInfo                         m_swfFilter = null;
-       int                                     m_swfsLoaded = 0;
-    boolean             m_dirty = false;
-    int lastActiveIsolate = Isolate.DEFAULT_ID;
-
-       public FileInfoCache() {
-               
-       }
-
-       public void                     bind(Session s)                         
                                        { setSession(s); }
-       public void                     unbind()                                
                                                { m_session = null; }
-       
-       public SourceFile getFile(int i) {
-               return getFile(i, Isolate.DEFAULT_ID);
-       }
-
-       public SourceFile getFile(int i, int isolateId) {
-               populate();
-               if (isolateId == Isolate.DEFAULT_ID)
-                       return (SourceFile) m_byInt.get(i);
-               else
-                       return (SourceFile)getIsolateState(isolateId).get(i);
-       }
-       
-       public SourceFile[] getFileList() {
-               populate();
-               return m_files;
-       }
-       
-       public SourceFile[] getFileList(int isolateId) {
-               populate();
-               if (isolateId == Isolate.DEFAULT_ID) {
-                       final Object[] valuesToArray = 
m_byInt.valuesToArray(new Object[m_byInt.size()]);
-               return Arrays.copyOf(valuesToArray, valuesToArray.length, 
SourceFile[].class);
-               } 
-               else if (isolateId != lastActiveIsolate) {
-                       buildIsolateFiles(isolateId);
-               }
-               return m_isolateFiles;
-       }
-       
-       private void buildIsolateFiles(int isolateId) {
-               SwfInfo[] swfs = getSwfs(isolateId);
-               boolean worked = true; // check that all worked correctly
-               ArrayList<SourceFile> files = new ArrayList<SourceFile>();
-
-               for(int i=0; i<swfs.length; i++)
-               {
-                       if (swfs[i] != null)
-                               worked = loadSwfFiles(files, swfs[i]) ? worked 
: false;
-               }
-
-               // trim the file list
-               ArrayList<SourceFile> fa = trimFileList(files);
-               m_isolateFiles = fa.toArray( new SourceFile[fa.size()] );
-
-               // sort this array in place so calls to getFileList will be 
ordered
-               Arrays.sort(m_isolateFiles, this);
-       }
-
-       public Iterator getAllFiles(int isolateId) {
-               populate();             
-               if (isolateId == Isolate.DEFAULT_ID)
-                       return m_byInt.iterator();
-               else
-                       return getIsolateState(isolateId).iterator();
-       }
-       
-    public SwfInfo      getSwfFilter()                                  { 
return m_swfFilter; }
-    public boolean      isSwfFilterOn()                                 { 
return (m_swfFilter != null); }
-    public void         setDirty()                                      { 
m_dirty = true; }
-
-       void setSession(Session s)
-       {
-               m_session = s;
-               m_swfFilter = null;
-               clear();
-       }
-       
-       SwfInfo[] getAllSwfs() {
-               ArrayList<SwfInfo> result = new ArrayList<SwfInfo>();
-               
-               for ( Isolate isolate : m_session.getWorkers()) {
-                       SwfInfo[] swfs = new SwfInfo[0];
-                       try {
-                               swfs = 
m_session.getWorkerSession(isolate.getId()).getSwfs();
-                       } catch (NoResponseException e) {
-                               swfs = new SwfInfo[0];
-                       }
-                       
-                       for (SwfInfo swf : swfs)
-                               result.add(swf);
-               }
-               
-               return result.toArray(new SwfInfo[0]);
-       }
-
-       void populate()
-       {
-               // do we have a new swf to load?
-               if (m_session != null && (m_dirty || getAllSwfs().length > 
m_swfsLoaded))
-                       reloadCache();
-       }
-
-       void reloadCache()
-       {
-               clear();
-               loadCache();
-        m_dirty = false;
-       }
-
-       void clear()
-       {
-               m_byInt.clear();
-               m_isolateState.clear();
-               m_files = null;
-       }
-
-       /**
-        * Determine if the given SourceFile is in the current fileList
-        */
-       public boolean inFileList(SourceFile f)
-       {
-               boolean isIt = false;
-
-               SourceFile[] files = getFileList();
-               for(int i=0; i<files.length && !isIt; i++)
-               {
-                       if (files[i] == f)
-                               isIt = true;
-               }
-               return isIt;
-       }
-
-       /**
-        * Go out to the session and request a list of files
-        * But we dump ones that have a name collision.
-        * Also if selectedSwf is set then we only add files
-        * that are contained within the given swf.
-        */
-       void loadCache()
-       {
-               boolean worked = true; // check that all worked correctly
-               ArrayList<SourceFile> files = new ArrayList<SourceFile>();
-               SwfInfo[] swfs = getAllSwfs();
-               for(int i=0; i<swfs.length; i++)
-               {
-                       if (swfs[i] != null)
-                               worked = loadSwfFiles(files, swfs[i]) ? worked 
: false;
-               }
-
-               // trim the file list
-               ArrayList<SourceFile> fa = trimFileList(files);
-               m_files = fa.toArray( new SourceFile[fa.size()] );
-
-               // sort this array in place so calls to getFileList will be 
ordered
-               Arrays.sort(m_files, this);
-
-               // mark our cache complete if all was good.
-               if (worked)
-                       m_swfsLoaded = swfs.length;
-       }
-
-       boolean loadSwfFiles(ArrayList<SourceFile> ar, SwfInfo swf)
-       {
-               boolean worked = true;
-               try
-               {
-                       // @todo should we include unloaded swfs?
-                       SourceFile[] files = swf.getSourceList(m_session);
-                       ar.ensureCapacity(ar.size()+files.length);
-
-                       // add each file to our global source file IntMap and 
our list
-                       for(int i=0; i<files.length; i++)
-                       {
-                               putFile(files[i], swf.getIsolateId());
-                               ar.add(files[i]);
-                       }
-               }
-               catch(InProgressException ipe)
-               {
-                       // can't load this one, its not ready yet
-                       worked = false;
-               }
-               return worked;
-       }
-
-       /**
-        * Walk the file list looking for name collisions.
-        * If we find one, then we remove it
-        */
-       ArrayList<SourceFile> trimFileList(ArrayList<SourceFile> files)
-       {
-               HashMap<String, String> names = new HashMap<String, String>();
-               ArrayList<SourceFile> list = new ArrayList<SourceFile>();
-
-               int size = files.size();
-               for(int i=0; i<size; i++)
-               {
-                       boolean addIt = false;
-
-                       SourceFile fi = files.get(i);
-                       // no filter currently in place so we add the file as 
long
-                       // as no duplicates exist.  We use the original Swd full
-                       // name for matching.
-                       String fName = fi.getRawName();
-                       if (m_swfFilter == null)
-                       {
-                               // If it exists, then we don't add it!
-                               if (names.get(fName) == null)
-                                       addIt = true;
-                       }
-                       else
-                       {
-                               // we have a filter in place so, see
-                               // if the source file is in our currently
-                               // selected swf.
-                               addIt = m_swfFilter.containsSource(fi);
-                       }
-
-                       // did we mark this one to add?
-                       if (addIt)
-                       {
-                               names.put(fName, fName);
-                               list.add(fi);
-                       }
-               }
-               return list;
-       }
-       
-       /**
-        * All files from all swfs are placed into our byInt map
-        * since we know that ids are unique across the entire
-        * Player session.
-        *
-        * This is also important in the case that the player
-        * halts in one of these files, that the debugger
-        * be able to locate the SourceFile so that we can
-        * display the correct context for the user.
-        */
-       void putFile(SourceFile s, int isolateId)
-       {
-               int i = s.getId();
-               if (isolateId == Isolate.DEFAULT_ID)
-                       m_byInt.put(i, s);
-               else
-                       getIsolateState(isolateId).put(i, s);
-       }
-
-       /**
-        * Attempt to set a swf as a filter
-        * for the file list that we create
-        */
-       public boolean setSwfFilter(String swfName)
-       {
-               // look for a match in our list
-               boolean worked = false;
-               if (swfName == null)
-               {
-                       m_swfFilter = null;
-                       worked = true;
-               }
-               else
-               {
-                       SwfInfo[] swfs = getAllSwfs();
-                       for(int i=0; i<swfs.length; i++)
-                       {
-                               SwfInfo e = swfs[i];
-                               if (e != null && 
nameOfSwf(e).equalsIgnoreCase(swfName))
-                               {
-                                       worked = true;
-                                       m_swfFilter = e;
-                                       break;
-                               }
-                       }
-               }
-
-               // reload if it worked
-               if (worked)
-                       reloadCache();
-
-               return worked;
-       }
-
-       // list all swfs we know about
-       public SwfInfo[] getSwfs(int isolateId)
-       {
-               return getSwfsIsolate(isolateId);
-       }
-       
-       public SwfInfo[] getSwfsIsolate(int isolateId)
-       {
-               SwfInfo[] swfs = null;
-               try
-               {
-                       swfs = m_session.getWorkerSession(isolateId).getSwfs();
-               }
-               catch(NoResponseException nre)
-               {
-                       swfs = new SwfInfo[] {};  // oh bery bad
-               }
-               return swfs;
-       }
-
-       /**
-        * Given a SourceFile locate the swf which it came from
-        */
-       public SwfInfo swfForFile(SourceFile f, int isolateId)
-       {
-               // We use the id to determine which swf this source files 
resides in
-               int id = f.getId();
-               SwfInfo info = null;
-               SwfInfo[] swfs = getSwfs(isolateId);//getAllSwfs();
-               for(int i=0; ( i<swfs.length && (info == null) ); i++)
-               {
-                       if (swfs[i] != null && swfs[i].containsSource(f))
-                               info = swfs[i];
-               }
-               return info;
-       }
-
-       // locate the name of the swf
-       public static String nameOfSwf(SwfInfo e)
-       {
-               int at = -1;
-               String name = e.getUrl();
-               if ( (at = e.getUrl().lastIndexOf('/')) > -1)
-                       name = e.getUrl().substring(at+1);
-               if ( (at = e.getUrl().lastIndexOf('\\')) > -1)
-                       name = e.getUrl().substring(at+1);
-               else if ( (at = e.getPath().lastIndexOf('\\')) > -1)
-                       name = e.getPath().substring(at+1);
-               else if ( (at = e.getPath().lastIndexOf('/')) > -1)
-                       name = e.getPath().substring(at+1);
-
-               // now rip off any trailing ? options
-               at = name.lastIndexOf('?');
-               name = (at > -1) ? name.substring(0, at) : name;
-
-               return name;
-       }
-
-       // locate the name of the swf
-       public static String shortNameOfSwf(SwfInfo e)
-       {
-               String name = nameOfSwf(e);
-
-               // now strip off any leading path
-               int at = -1;
-               if ( (at = name.lastIndexOf('/')) > -1)
-                       name = name.substring(at+1);
-               else if ( (at = name.lastIndexOf('\\')) > -1)
-                       name = name.substring(at+1);
-               return name;
-       }
-
-    /**
-     * Given the URL of a specfic swf determine
-     * if there is a file within it that appears
-     * to be the same as the given source file
-     * @param f
-     * @return
-     */
-    public SourceFile similarFileInSwf(SwfInfo info, SourceFile f) throws 
InProgressException
-    {
-        SourceFile hit = null;
-               SourceFile[] files = info.getSourceList(m_session);
-               if (!info.isProcessingComplete())
-                       throw new InProgressException();
-
-               for(int i=0; i<files.length; i++)
-               {
-                       if (filesMatch(f, files[i]))
-                               hit = files[i];
-               }
-        return hit;
-    }
-
-       /**
-        * Comparator interface for sorting SourceFiles
-        */
-       public int compare(SourceFile o1, SourceFile o2)
-       {
-               String n1 = o1.getName();
-               String n2 = o2.getName();
-
-               return n1.compareTo(n2);
-       }
-
-    /**
-     * Compare two files and determine if they are the same.
-     * Our criteria included only line count package names
-     * and the name of the class itself.  If there are
-     * any other differences then we won't be able to detect
-     * them.  We should probably do something like an MD5
-     * computation on the characters in ScriptText. Then
-     * we'd really be sure of a match.
-     * @param a first file to compare
-     * @param b second file to compare
-     * @return  true if files appear to be the same
-     */
-    public boolean filesMatch(SourceFile a, SourceFile b)
-    {
-        boolean yes = true;
-
-               if (a == null || b == null)
-                       yes = false;
-        else if (a.getPackageName().compareTo(b.getPackageName()) != 0)
-            yes = false;
-        else if (a.getName().compareTo(b.getName()) != 0)
-            yes = false;
-        else if (a.getLineCount() != b.getLineCount()) // warning, this is 
sometimes expensive, so do it last
-            yes = false;
-
-        return yes;
-    }
-    /**
-     * Return a array of SourceFiles whose names match
-     * the specified string. The array is sorted by name.
-        * The input can be mx.controls.xxx which will
-     */
-    public SourceFile[] getFiles(String matchString)
-    {
-        return getFiles(matchString, -1);
-    }
-
-    public SourceFile[] getFiles(String matchString, int isolateId)
-    {
-        boolean doStartsWith = false;
-        boolean doIndexOf = false;
-        boolean doEndsWith = false;
-
-        boolean leadingAsterisk = matchString.startsWith("*") && 
matchString.length() > 1; //$NON-NLS-1$
-        boolean trailingAsterisk = matchString.endsWith("*"); //$NON-NLS-1$
-        boolean usePath = matchString.indexOf('.') > -1;
-
-        if (leadingAsterisk && trailingAsterisk)
-        {
-            matchString = matchString.substring(1, matchString.length() - 1);
-            doIndexOf = true;
-        }
-        else if (leadingAsterisk)
-        {
-            matchString = matchString.substring(1);
-            doEndsWith = true;
-        }
-        else if (trailingAsterisk)
-        {
-            matchString = matchString.substring(0, matchString.length() - 1);
-            doStartsWith = true;
-        }
-               else if (usePath)
-               {
-                       doIndexOf = true;
-               }
-               else
-        {
-            doStartsWith = true;
-        }
-
-        SourceFile[] files = isolateId > -1 ? getFileList(isolateId) : 
getFileList();
-        ArrayList<SourceFile> fileList = new ArrayList<SourceFile>();
-        int n = files.length;
-               int exactHitAt = -1;
-               // If the matchString already starts with "." (e.g. ".as" or 
".mxml"), then dotMatchString
-               // will be equal to matchString; otherwise, dotMatchString will 
be "." + matchString
-               String dotMatchString = (matchString.startsWith(".")) ? 
matchString : ("." + matchString); //$NON-NLS-1$ //$NON-NLS-2$
-        for (int i = 0; i < n; i++)
-        {
-            SourceFile sourceFile = files[i];
-                       boolean pathExists = (usePath && 
sourceFile.getFullPath().matches(".*[/\\\\].*")); //$NON-NLS-1$
-            String name = pathExists ? sourceFile.getFullPath() : 
sourceFile.getName();
-
-                       // if we are using the full path string, then prefix a 
'.' to our matching string so that abc.as and Gabc.as don't both hit
-                       String match = (usePath && pathExists) ? dotMatchString 
: matchString;
-
-            match = match.replace('/', '.');  // get rid of path identifiers 
and use dots
-            match = match.replace('\\', '.');
-
-                       name = name.replace('/', '.');  // get rid of path 
identifiers and use dots
-                       name = name.replace('\\', '.'); // would be better to 
modify the input string, but we don't know which path char will be used.
-
-                       // exact match? We are done
-                       if (name.equals(match))
-                       {
-                               exactHitAt = i;
-                               break;
-                       }
-            else if (doStartsWith && name.startsWith(match))
-                               fileList.add(sourceFile);
-                       else if (doEndsWith && name.endsWith(match))
-                fileList.add(sourceFile);
-                       else if (doIndexOf && name.contains(match))
-                               fileList.add(sourceFile);
-        }
-
-               // trim all others if we have an exact file match
-               if (exactHitAt > -1)
-               {
-                       fileList.clear();
-                       fileList.add(files[exactHitAt]);
-               }
-
-               SourceFile[] fileArray = fileList.toArray( new 
SourceFile[fileList.size()] );
-               Arrays.sort(fileArray, this);
-        return fileArray;
-    }
-
-}

Reply via email to