static Variable getDescriptionValueObject(Variable descVar) { return ((ObjectVariable) descVar).getField(FIELD_DESC_VALUE_AS_OBJECT); }
static boolean isDescriptionExpandable(Variable descVar) { Field expandableField = ((ObjectVariable) descVar).getField(FIELD_DESC_EXPANDABLE); return "true".equals(expandableField.getValue()); }
static String getDescriptionValue(Variable descVar) { Field valueAsStringField = ((ObjectVariable) descVar).getField(FIELD_DESC_VALUE_AS_STRING); return removeQuotes(valueAsStringField.getValue()); }
static String getDescriptionKey(Variable descVar) { Field keyField = ((ObjectVariable) descVar).getField(FIELD_DESC_KEY); return removeQuotes(keyField.getValue()); }
public static Source getSource(JPDADebugger debugger, JPDAClassType classType, ObjectVariable sourceVar) { long uniqueClassID = classType.classObject().getUniqueID(); Field fieldName = sourceVar.getField(SOURCE_VAR_NAME); Field fieldContent = sourceVar.getField(SOURCE_VAR_CONTENT); Field fieldHash = sourceVar.getField(SOURCE_VAR_HASH); Field fieldURL = sourceVar.getField(SOURCE_VAR_URL); if (fieldContent == null && fieldURL == null) { Field fieldData = sourceVar.getField(SOURCE_VAR_DATA); if (fieldData != null && fieldData instanceof ObjectVariable) { fieldURL = ((ObjectVariable) fieldData).getField(SOURCE_VAR_URL); fieldContent = ((ObjectVariable) fieldData).getField(SOURCE_VAR_DATA_ARRAY);
private void scriptToBeInvoked(ObjectVariable mh) { ObjectVariable member = (ObjectVariable) mh.getField("member"); if (!(member instanceof ObjectVariable)) { logger.info("Variable "+mh+" does not have member field: "+member); return ; } ObjectVariable clazz = (ObjectVariable) member.getField("clazz"); if (!(clazz instanceof ClassVariable)) { logger.info("Variable "+mh+" does not have clazz field: "+clazz); return ; } //JPDAClassType classType = ((ClassVariable) clazz).getReflectedType(); JPDAClassType classType; try { classType = (JPDAClassType) clazz.getClass().getMethod("getReflectedType").invoke(clazz); } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException ex) { Exceptions.printStackTrace(ex); return ; } String className = classType.getName(); MethodBreakpoint mb = MethodBreakpoint.create(className, ""); mb.setHidden(true); mb.setSuspend(debugger.getSuspend()); mb.setSession(debugger); mb.addJPDABreakpointListener(new InScriptBPListener(mb)); DebuggerManager.getDebuggerManager().addBreakpoint(mb); logger.log(Level.FINE, "Created {0} for any method in {1}", new Object[]{mb, className}); }