Esempio n. 1
0
 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;
 }
Esempio n. 2
0
  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;
  }
Esempio n. 3
0
  /**
   * All the really good stuff about finding where name exists goes here!
   *
   * <p>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
   *
   * <p>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;
  }