/** * An order-sensitive invocation of {@link ClassVisitor#visitField(int, String, String, String, Object)}. * * @param modifiers The field's modifiers. * @param internalName The field's internal name. * @param descriptor The field type's descriptor. * @param signature The field's generic signature or {@code null} if the field is not generic. * @param defaultValue The field's default value or {@code null} if no such value exists. * @return A field visitor to visit the field or {@code null} to ignore it. */ protected FieldVisitor onVisitField(int modifiers, String internalName, String descriptor, String signature, Object defaultValue) { return super.visitField(modifiers, internalName, descriptor, signature, defaultValue); }
/** * Visits a field of the class. * * @param access the field's access flags (see {@link Opcodes}). This parameter also indicates if * the field is synthetic and/or deprecated. * @param name the field's name. * @param descriptor the field's descriptor (see {@link Type}). * @param signature the field's signature. May be {@literal null} if the field's type does not use * generic types. * @param value the field's initial value. This parameter, which may be {@literal null} if the * field does not have an initial value, must be an {@link Integer}, a {@link Float}, a {@link * Long}, a {@link Double} or a {@link String} (for {@code int}, {@code float}, {@code long} * or {@code String} fields respectively). <i>This parameter is only used for static * fields</i>. Its value is ignored for non static fields, which must be initialized through * bytecode instructions in constructors or methods. * @return a visitor to visit field annotations and attributes, or {@literal null} if this class * visitor is not interested in visiting these annotations and attributes. */ public FieldVisitor visitField( final int access, final String name, final String descriptor, final String signature, final Object value) { if (cv != null) { return cv.visitField(access, name, descriptor, signature, value); } return null; }
@Override public FieldVisitor visitField(int modifiers, String internalName, String descriptor, String signature, Object value) { FieldDescription.InDefinedShape fieldDescription = fields.get(internalName + descriptor); return fieldDescription != null && fieldMatcher.matches(fieldDescription) ? REMOVE_FIELD : super.visitField(modifiers, internalName, descriptor, signature, value); }
@Override public FieldVisitor visitField(int modifiers, String internalName, String descriptor, String signature, Object value) { FieldDescription.InDefinedShape fieldDescription = fields.get(internalName + descriptor); if (fieldDescription != null) { for (Adjustment<FieldDescription.InDefinedShape> adjustment : fieldAdjustments) { if (adjustment.matches(fieldDescription)) { modifiers = adjustment.resolve(modifiers); break; } } } return super.visitField(modifiers, internalName, descriptor, signature, value); }
@Override public FieldVisitor visitField(int modifiers, String internalName, String descriptor, String signature, Object defaultValue) { FieldVisitor fieldVisitor = super.visitField(modifiers, internalName, descriptor, signature, defaultValue); FieldDescription.InDefinedShape fieldDescription = fields.get(internalName + descriptor); if (fieldVisitor != null && fieldDescription != null) { for (Entry entry : entries) { if (entry.matches(fieldDescription)) { fieldVisitor = entry.wrap(instrumentedType, fieldDescription, fieldVisitor); } } } return fieldVisitor; } }
@Override public FieldVisitor visitField(int modifiers, String name, String descriptor, String signature, Object defaultValue) { FieldVisitor fieldVisitor = super.visitField(modifiers, name, descriptor, signature, defaultValue); if (fieldVisitor != null) { resolve(Type.getType(descriptor)); return new TypeReferenceFieldVisitor(fieldVisitor); } else { return IGNORE_FIELD; } }
(modifiers & Opcodes.ACC_FINAL) != 0, signature != null); FieldVisitor fieldVisitor = super.visitField(modifiers, name, descriptor, signature, defaultValue); return fieldVisitor == null ? IGNORE_FIELD
/** * {@inheritDoc} */ public void drain(TypeInitializer.Drain drain, ClassVisitor classVisitor, AnnotationValueFilter.Factory annotationValueFilterFactory) { fieldCacheCanAppendEntries = false; TypeInitializer typeInitializer = this.typeInitializer; for (Map.Entry<FieldCacheEntry, FieldDescription.InDefinedShape> entry : registeredFieldCacheEntries.entrySet()) { FieldVisitor fieldVisitor = classVisitor.visitField(entry.getValue().getModifiers(), entry.getValue().getInternalName(), entry.getValue().getDescriptor(), entry.getValue().getGenericSignature(), FieldDescription.NO_DEFAULT_VALUE); if (fieldVisitor != null) { fieldVisitor.visitEnd(); typeInitializer = typeInitializer.expandWith(entry.getKey().storeIn(entry.getValue())); } } drain.apply(classVisitor, typeInitializer, this); for (TypeWriter.MethodPool.Record record : registeredAccessorMethods.values()) { record.apply(classVisitor, this, annotationValueFilterFactory); } for (TypeWriter.MethodPool.Record record : registeredGetters.values()) { record.apply(classVisitor, this, annotationValueFilterFactory); } for (TypeWriter.MethodPool.Record record : registeredSetters.values()) { record.apply(classVisitor, this, annotationValueFilterFactory); } }
/** * {@inheritDoc} */ public void apply(ClassVisitor classVisitor, AnnotationValueFilter.Factory annotationValueFilterFactory) { FieldVisitor fieldVisitor = classVisitor.visitField(fieldDescription.getActualModifiers(), fieldDescription.getInternalName(), fieldDescription.getDescriptor(), fieldDescription.getGenericSignature(), FieldDescription.NO_DEFAULT_VALUE); if (fieldVisitor != null) { FieldAttributeAppender.ForInstrumentedField.INSTANCE.apply(fieldVisitor, fieldDescription, annotationValueFilterFactory.on(fieldDescription)); fieldVisitor.visitEnd(); } }
/** * {@inheritDoc} */ public void apply(ClassVisitor classVisitor, AnnotationValueFilter.Factory annotationValueFilterFactory) { FieldVisitor fieldVisitor = classVisitor.visitField(fieldDescription.getActualModifiers(), fieldDescription.getInternalName(), fieldDescription.getDescriptor(), fieldDescription.getGenericSignature(), resolveDefault(FieldDescription.NO_DEFAULT_VALUE)); if (fieldVisitor != null) { attributeAppender.apply(fieldVisitor, fieldDescription, annotationValueFilterFactory.on(fieldDescription)); fieldVisitor.visitEnd(); } }
classVisitor.visitField(accessFlags, name, descriptor, signature, constantValue); if (fieldVisitor == null) { return currentOffset;