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