package bluej.debugger.jdi;

import bluej.debugger.DebuggerClass;
import bluej.debugger.DebuggerField;
import bluej.debugger.DebuggerObject;
import bluej.debugger.gentype.JavaType;

import com.sun.jdi.Field;
import com.sun.jdi.ObjectReference;
import com.sun.jdi.Value;
import threadchecker.OnThread;
import threadchecker.Tag;


| An implement of DebuggerField using the Java Debug Interface (JDI). | | @author Davin McCall | public class JdiField extends DebuggerField{ @OnThread(Tag.Any) private final Field field; @OnThread(Tag.Any) private final JdiObject object; private boolean hidden; @OnThread(Tag.Any) public JdiField(Field field, JdiObject object, boolean hidden) { this.field = field; this.object = object; this.hidden = hidden; } @Override @OnThread(Tag.Any) public String getName() { return field.name(); } @Override public JavaType getType() { if (object != null) { return JdiReflective.fromField(field, object); } else { return JdiReflective.fromField(field); } } @Override public int getModifiers() { return field.modifiers(); } @Override @OnThread(Tag.Any) @SuppressWarnings("threadchecker") public String getValueString() { Value value; if (object != null) { value = object.obj.getValue(field); } else { value = field.declaringType().getValue(field); } return JdiUtils.getJdiUtils().getValueString(value); } @Override public DebuggerObject getValueObject(JavaType expectedType) { Value value; if (object != null) { value = object.obj.getValue(field); } else { value = field.declaringType().getValue(field); } if (value == null) { return JdiObject.getDebuggerObject(null); } if (value instanceof ObjectReference) { ObjectReference or = (ObjectReference) value; if (expectedType == null) { expectedType = getType(); } return JdiObject.getDebuggerObject(or, expectedType); } return null; } @Override public DebuggerClass getDeclaringClass() { return new JdiClass(field.declaringType()); } @Override public boolean isHidden() { return hidden; } }
top, use, map, class JdiField

.   JdiField
.   getName
.   getType
.   getModifiers
.   getValueString
.   getValueObject
.   getDeclaringClass
.   isHidden




138 neLoCode + 2 LoComm