Skip to content

Commit

Permalink
Changed value filter abstraction to be easier to use and create an ea…
Browse files Browse the repository at this point in the history
…sier API for end users.
  • Loading branch information
raphw committed Jan 3, 2016
1 parent 989a03d commit 6bb81ea
Show file tree
Hide file tree
Showing 12 changed files with 248 additions and 550 deletions.
8 changes: 3 additions & 5 deletions byte-buddy-dep/src/main/java/net/bytebuddy/ByteBuddy.java
Expand Up @@ -944,7 +944,7 @@ public ByteBuddy withTypeAnnotation(Collection<? extends AnnotationDescription>
classVisitorWrapper, classVisitorWrapper,
methodRegistry, methodRegistry,
modifiers, modifiers,
new TypeAttributeAppender.ForAnnotation(new ArrayList<AnnotationDescription>(annotations), AnnotationAppender.ValueFilter.Default.APPEND_DEFAULTS), new TypeAttributeAppender.Explicit(new ArrayList<AnnotationDescription>(annotations)),
methodGraphCompiler, methodGraphCompiler,
defaultFieldAttributeAppenderFactory, defaultFieldAttributeAppenderFactory,
defaultMethodAttributeAppenderFactory); defaultMethodAttributeAppenderFactory);
Expand Down Expand Up @@ -1524,8 +1524,7 @@ public MethodAnnotationTarget annotateMethod(AnnotationDescription... annotation
* annotations added to the currently selected methods. * annotations added to the currently selected methods.
*/ */
public MethodAnnotationTarget annotateMethod(Collection<? extends AnnotationDescription> annotations) { public MethodAnnotationTarget annotateMethod(Collection<? extends AnnotationDescription> annotations) {
return attribute(new MethodAttributeAppender.ForAnnotation(new ArrayList<AnnotationDescription>(annotations), return attribute(new MethodAttributeAppender.Explicit(new ArrayList<AnnotationDescription>(annotations)));
AnnotationAppender.ValueFilter.Default.APPEND_DEFAULTS));
} }


/** /**
Expand Down Expand Up @@ -1567,8 +1566,7 @@ public MethodAnnotationTarget annotateParameter(int parameterIndex, AnnotationDe
* annotations added to the currently selected methods' parameters at the given index. * annotations added to the currently selected methods' parameters at the given index.
*/ */
public MethodAnnotationTarget annotateParameter(int parameterIndex, Collection<? extends AnnotationDescription> annotations) { public MethodAnnotationTarget annotateParameter(int parameterIndex, Collection<? extends AnnotationDescription> annotations) {
return attribute(new MethodAttributeAppender.ForAnnotation(parameterIndex, new ArrayList<AnnotationDescription>(annotations), return attribute(new MethodAttributeAppender.Explicit(parameterIndex, new ArrayList<AnnotationDescription>(annotations)));
AnnotationAppender.ValueFilter.Default.APPEND_DEFAULTS));
} }


@Override @Override
Expand Down
56 changes: 27 additions & 29 deletions byte-buddy-dep/src/main/java/net/bytebuddy/dynamic/Builder.java
Expand Up @@ -962,7 +962,7 @@ public abstract static class Adapter<U> extends AbstractBase<U> {


protected final MethodVisitorWrapper methodVisitorWrapper; protected final MethodVisitorWrapper methodVisitorWrapper;


protected final AnnotationAppender.ValueFilter valueFilter; protected final AnnotationAppender.ValueFilter.Factory valueFilterFactory;


protected Adapter(InstrumentedType.WithFlexibleName instrumentedType, protected Adapter(InstrumentedType.WithFlexibleName instrumentedType,
FieldRegistry fieldRegistry, FieldRegistry fieldRegistry,
Expand All @@ -972,7 +972,7 @@ protected Adapter(InstrumentedType.WithFlexibleName instrumentedType,
ClassVisitorWrapper classVisitorWrapper, ClassVisitorWrapper classVisitorWrapper,
FieldVisitorWrapper fieldVisitorWrapper, FieldVisitorWrapper fieldVisitorWrapper,
MethodVisitorWrapper methodVisitorWrapper, MethodVisitorWrapper methodVisitorWrapper,
AnnotationAppender.ValueFilter valueFilter) { AnnotationAppender.ValueFilter.Factory valueFilterFactory) {
this.instrumentedType = instrumentedType; this.instrumentedType = instrumentedType;
this.fieldRegistry = fieldRegistry; this.fieldRegistry = fieldRegistry;
this.methodRegistry = methodRegistry; this.methodRegistry = methodRegistry;
Expand All @@ -981,7 +981,7 @@ protected Adapter(InstrumentedType.WithFlexibleName instrumentedType,
this.classVisitorWrapper = classVisitorWrapper; this.classVisitorWrapper = classVisitorWrapper;
this.fieldVisitorWrapper = fieldVisitorWrapper; this.fieldVisitorWrapper = fieldVisitorWrapper;
this.methodVisitorWrapper = methodVisitorWrapper; this.methodVisitorWrapper = methodVisitorWrapper;
this.valueFilter = valueFilter; this.valueFilterFactory = valueFilterFactory;
} }


@Override @Override
Expand Down Expand Up @@ -1024,7 +1024,7 @@ public Builder<U> ignore(ElementMatcher<? super MethodDescription> ignored) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1037,7 +1037,7 @@ public Builder<U> initializer(ByteCodeAppender byteCodeAppender) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1050,7 +1050,7 @@ public Builder<U> initializer(LoadedTypeInitializer loadedTypeInitializer) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1063,7 +1063,7 @@ public Builder<U> name(String name) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1076,7 +1076,7 @@ public Builder<U> modifiers(int modifiers) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1089,7 +1089,7 @@ public Builder<U> typeVariable(String symbol, TypeDefinition bound) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1102,7 +1102,7 @@ public Builder<U> attribute(TypeAttributeAppender typeAttributeAppender) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1115,7 +1115,7 @@ public Builder<U> annotateType(Collection<? extends AnnotationDescription> annot
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1128,7 +1128,7 @@ public Builder<U> visit(ClassVisitorWrapper classVisitorWrapper) {
new ClassVisitorWrapper.Compound(this.classVisitorWrapper, classVisitorWrapper), new ClassVisitorWrapper.Compound(this.classVisitorWrapper, classVisitorWrapper),
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1141,7 +1141,7 @@ public Builder<U> visit(FieldVisitorWrapper fieldVisitorWrapper) {
classVisitorWrapper, classVisitorWrapper,
new FieldVisitorWrapper.Compound(this.fieldVisitorWrapper, fieldVisitorWrapper), new FieldVisitorWrapper.Compound(this.fieldVisitorWrapper, fieldVisitorWrapper),
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand All @@ -1154,7 +1154,7 @@ public Builder<U> visit(MethodVisitorWrapper methodVisitorWrapper) {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
new MethodVisitorWrapper.Compound(this.methodVisitorWrapper, methodVisitorWrapper), new MethodVisitorWrapper.Compound(this.methodVisitorWrapper, methodVisitorWrapper),
valueFilter); valueFilterFactory);
} }


protected abstract Builder<U> materialize(InstrumentedType instrumentedType, protected abstract Builder<U> materialize(InstrumentedType instrumentedType,
Expand All @@ -1165,14 +1165,14 @@ protected abstract Builder<U> materialize(InstrumentedType instrumentedType,
ClassVisitorWrapper classVisitorWrapper, ClassVisitorWrapper classVisitorWrapper,
FieldVisitorWrapper fieldVisitorWrapper, FieldVisitorWrapper fieldVisitorWrapper,
MethodVisitorWrapper methodVisitorWrapper, MethodVisitorWrapper methodVisitorWrapper,
AnnotationAppender.ValueFilter valueFilter); AnnotationAppender.ValueFilter.Factory valueFilterFactory);


protected class FieldDefinitionAdapter extends FieldDefinition.Optional.Valuable.AbstractBase.Adapter<U> { protected class FieldDefinitionAdapter extends FieldDefinition.Optional.Valuable.AbstractBase.Adapter<U> {


private final FieldDescription.Token token; private final FieldDescription.Token token;


protected FieldDefinitionAdapter(FieldDescription.Token token) { protected FieldDefinitionAdapter(FieldDescription.Token token) {
this(FieldAttributeAppender.NoOp.INSTANCE, FieldTransformer.NoOp.INSTANCE, FieldDescription.NO_DEFAULT_VALUE, token); // TODO: Field appender this(FieldAttributeAppender.ForInstrumentedField.INSTANCE, FieldTransformer.NoOp.INSTANCE, FieldDescription.NO_DEFAULT_VALUE, token);
} }


protected FieldDefinitionAdapter(FieldAttributeAppender.Factory fieldAttributeAppenderFactory, protected FieldDefinitionAdapter(FieldAttributeAppender.Factory fieldAttributeAppenderFactory,
Expand Down Expand Up @@ -1201,7 +1201,7 @@ protected Builder<U> materialize() {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand Down Expand Up @@ -1230,7 +1230,7 @@ protected FieldMatchAdapter(FieldAttributeAppender.Factory fieldAttributeAppende


@Override @Override
public Optional<U> annotateField(Collection<? extends AnnotationDescription> annotations) { public Optional<U> annotateField(Collection<? extends AnnotationDescription> annotations) {
return attribute(new FieldAttributeAppender.ForAnnotations(valueFilter, new ArrayList<AnnotationDescription>(annotations))); return attribute(new FieldAttributeAppender.Explicit(new ArrayList<AnnotationDescription>(annotations)));
} }


@Override @Override
Expand All @@ -1243,7 +1243,7 @@ protected Builder<U> materialize() {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


@Override @Override
Expand Down Expand Up @@ -1383,9 +1383,7 @@ protected MethodDefinition.ParameterDefinition.Simple<U> materialize() {
protected class AnnotationAdapter extends MethodDefinition.AbstractBase.Adapter<U> { protected class AnnotationAdapter extends MethodDefinition.AbstractBase.Adapter<U> {


protected AnnotationAdapter(MethodRegistry.Handler handler) { protected AnnotationAdapter(MethodRegistry.Handler handler) {
this(handler, this(handler, MethodAttributeAppender.ForInstrumentedMethod.INSTANCE, MethodTransformer.NoOp.INSTANCE);
MethodAttributeAppender.NoOp.INSTANCE, // TODO
MethodTransformer.NoOp.INSTANCE);
} }


protected AnnotationAdapter(MethodRegistry.Handler handler, MethodAttributeAppender.Factory methodAttributeAppenderFactory, MethodTransformer methodTransformer) { protected AnnotationAdapter(MethodRegistry.Handler handler, MethodAttributeAppender.Factory methodAttributeAppenderFactory, MethodTransformer methodTransformer) {
Expand Down Expand Up @@ -1430,13 +1428,13 @@ protected MethodDefinition<U> materialize(MethodRegistry.Handler handler, Method
protected Builder<U> materialize() { protected Builder<U> materialize() {
return Builder.AbstractBase.Adapter.this.materialize(instrumentedType.withMethod(token), return Builder.AbstractBase.Adapter.this.materialize(instrumentedType.withMethod(token),
fieldRegistry, fieldRegistry,
methodRegistry.append(new LatentMatcher.ForMethodToken(token), handler, methodAttributeAppenderFactory, null), // TODO methodRegistry.append(new LatentMatcher.ForMethodToken(token), handler, methodAttributeAppenderFactory, methodTransformer),
ignored, ignored,
typeAttributeAppender, typeAttributeAppender,
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }
} }
} }
Expand Down Expand Up @@ -1481,14 +1479,14 @@ protected AnnotationAdapter(MethodRegistry.Handler handler, MethodAttributeAppen
@Override @Override
public MethodDefinition<U> annotateMethod(Collection<? extends AnnotationDescription> annotations) { public MethodDefinition<U> annotateMethod(Collection<? extends AnnotationDescription> annotations) {
return new AnnotationAdapter(handler, return new AnnotationAdapter(handler,
new MethodAttributeAppender.Factory.Compound(methodAttributeAppenderFactory, new MethodAttributeAppender.ForAnnotation(null)), // TODO new MethodAttributeAppender.Factory.Compound(methodAttributeAppenderFactory, new MethodAttributeAppender.Explicit(new ArrayList<AnnotationDescription>(annotations))),
methodTransformer); methodTransformer);
} }


@Override @Override
public MethodDefinition<U> annotateParameter(int index, Collection<? extends AnnotationDescription> annotations) { public MethodDefinition<U> annotateParameter(int index, Collection<? extends AnnotationDescription> annotations) {
return new AnnotationAdapter(handler, return new AnnotationAdapter(handler,
new MethodAttributeAppender.Factory.Compound(methodAttributeAppenderFactory, new MethodAttributeAppender.ForAnnotation(index, null)), // TODO new MethodAttributeAppender.Factory.Compound(methodAttributeAppenderFactory, new MethodAttributeAppender.Explicit(index, new ArrayList<AnnotationDescription>(annotations))),
methodTransformer); methodTransformer);
} }


Expand All @@ -1501,13 +1499,13 @@ protected MethodDefinition<U> materialize(MethodRegistry.Handler handler, Method
protected Builder<U> materialize() { protected Builder<U> materialize() {
return Builder.AbstractBase.Adapter.this.materialize(instrumentedType, return Builder.AbstractBase.Adapter.this.materialize(instrumentedType,
fieldRegistry, fieldRegistry,
methodRegistry.append(matcher, handler, methodAttributeAppenderFactory, null), // TODO methodRegistry.append(matcher, handler, methodAttributeAppenderFactory, methodTransformer),
ignored, ignored,
typeAttributeAppender, typeAttributeAppender,
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }
} }
} }
Expand All @@ -1530,7 +1528,7 @@ protected Builder<U> materialize() {
classVisitorWrapper, classVisitorWrapper,
fieldVisitorWrapper, fieldVisitorWrapper,
methodVisitorWrapper, methodVisitorWrapper,
valueFilter); valueFilterFactory);
} }


// TODO: Inherited interface methods are not matched properly! // TODO: Inherited interface methods are not matched properly!
Expand Down

0 comments on commit 6bb81ea

Please sign in to comment.