public boolean isStatic() { return Modifier.isStatic(field.getAccessFlags()); }
@Override public String getName() { return field.getName(); }
public String getType() { return field.getType(); }
@Nonnull public BuilderField internField(@Nonnull String definingClass, @Nonnull String name, @Nonnull String type, int accessFlags, @Nullable EncodedValue initialValue, @Nonnull Set<? extends Annotation> annotations) { return new BuilderField(context.fieldPool.internField(definingClass, name, type), accessFlags, context.internNullableEncodedValue(initialValue), context.annotationSetPool.internAnnotationSet(annotations)); }
public Object getInitialValue() { if (!Modifier.isStatic(field.getAccessFlags())) { return new UnknownValue(); BuilderEncodedValues.BuilderEncodedValue bev = field.getInitialValue(); if (bev != null) {
@Nonnull public BuilderField internField(@Nonnull String definingClass, @Nonnull String name, @Nonnull String type, int accessFlags, @Nullable EncodedValue initialValue, @Nonnull Set<? extends Annotation> annotations) { return new BuilderField(fieldSection.internField(definingClass, name, type), accessFlags, internNullableEncodedValue(initialValue), annotationSetSection.internAnnotationSet(annotations)); }
@Nonnull public BuilderField internField(@Nonnull String definingClass, @Nonnull String name, @Nonnull String type, int accessFlags, @Nullable EncodedValue initialValue, @Nonnull Set<? extends Annotation> annotations) { return new BuilderField(fieldSection.internField(definingClass, name, type), accessFlags, internNullableEncodedValue(initialValue), annotationSetSection.internAnnotationSet(annotations)); }
private static void testNegativeCase(String fieldName, String callingMethodSignature) throws Exception { spawnVM(); ExecutionContext context = buildContext(vm); ExecutionContextMethod fieldGet = test(vm, context, fieldName, callingMethodSignature, false); Set<Throwable> exceptions = fieldGet.getExceptions(); assertEquals("Should have one exception", 1, exceptions.size()); VirtualType callingClass = context.getCallerContext().getMethod().getDefiningClass(); VirtualField field = context.getMethod().getDefiningClass().getField(fieldName); String error = callingClass.getBinaryName() + " can't access a member of " + DUMMY_CLASS_NAME_BINARY + " with modifiers \"" + Modifier.toString(field.getField().getAccessFlags()) + "\""; Throwable actualException = exceptions.iterator().next(); assertEquals(IllegalAccessException.class, actualException.getClass()); assertEquals(error, actualException.getMessage()); }
private Map<String, VirtualField> buildFieldsMap() { Map<String, VirtualField> fields = new HashMap<>(); for (BuilderField builderField : getClassDef().getFields()) { String name = builderField.getName(); if (builderField.getName().startsWith("shadow$_")) { // These fields are added by debugger. continue; } VirtualField field = new VirtualField(builderField, this); fields.put(name, field); } return fields; }