Skip to content

Commit 35a825a

Browse files
Update datadog.trace.agent.tooling.bytebuddy.outline.TypeOutline to work with ByteBuddy 1.17.6 (#9457)
1 parent 526075f commit 35a825a

File tree

3 files changed

+50
-9
lines changed

3 files changed

+50
-9
lines changed

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/outline/TypeOutline.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import net.bytebuddy.description.method.MethodList;
1414
import net.bytebuddy.description.type.TypeDescription;
1515
import net.bytebuddy.description.type.TypeList;
16+
import net.bytebuddy.jar.asm.Opcodes;
1617

1718
/** Provides an outline of a type; i.e. the named elements making up its structure. */
1819
final class TypeOutline extends WithName {
@@ -89,6 +90,30 @@ public int getModifiers() {
8990
return modifiers;
9091
}
9192

93+
@Override
94+
public boolean isAbstract() {
95+
return matchesMask(Opcodes.ACC_ABSTRACT);
96+
}
97+
98+
@Override
99+
public boolean isEnum() {
100+
return matchesMask(Opcodes.ACC_ENUM);
101+
}
102+
103+
@Override
104+
public boolean isInterface() {
105+
return matchesMask(Opcodes.ACC_INTERFACE);
106+
}
107+
108+
@Override
109+
public boolean isAnnotation() {
110+
return matchesMask(Opcodes.ACC_ANNOTATION);
111+
}
112+
113+
private boolean matchesMask(int mask) {
114+
return (this.getModifiers() & mask) == mask;
115+
}
116+
92117
@Override
93118
public ClassFileVersion getClassFileVersion() {
94119
return ClassFileVersion.ofMinorMajor(classFileVersion);

dd-java-agent/agent-tooling/src/test/groovy/datadog/trace/agent/tooling/bytebuddy/outline/OutlineTypeParserTest.groovy

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import spock.lang.Specification
55

66
class OutlineTypeParserTest extends Specification {
77

8-
void 'test anonymous classes are detected'() {
8+
void 'test modifiers are correct and anonymous classes are detected'() {
99
setup:
1010
final parser = new OutlineTypeParser()
1111
final locator = ClassFileLocators.classFileLocator(Thread.currentThread().contextClassLoader)
@@ -16,15 +16,23 @@ class OutlineTypeParserTest extends Specification {
1616

1717
then:
1818
outline.anonymousType == anonymous
19+
outline.interface == isinterface
20+
outline.abstract == isabstract
21+
outline.annotation == annotation
22+
outline.enum == isenum
1923

2024
where:
21-
clazz | anonymous
22-
'datadog.trace.agent.test.EnclosedClasses' | false
23-
'datadog.trace.agent.test.EnclosedClasses$Inner' | false
24-
'datadog.trace.agent.test.EnclosedClasses$InnerStatic' | false
25-
'datadog.trace.agent.test.EnclosedClasses$1' | true
26-
'datadog.trace.agent.test.EnclosedClasses$2' | true
27-
'datadog.trace.agent.test.EnclosedClasses$Inner$1' | true
28-
'datadog.trace.agent.test.EnclosedClasses$InnerStatic$1' | true
25+
clazz | anonymous | isinterface | isabstract | annotation | isenum
26+
'datadog.trace.agent.test.EnclosedClasses' | false | false | false | false | false
27+
'datadog.trace.agent.test.EnclosedClasses$Inner' | false | false | false | false | false
28+
'datadog.trace.agent.test.EnclosedClasses$InnerStatic' | false | false | false | false | false
29+
'datadog.trace.agent.test.EnclosedClasses$1' | true | false | false | false | false
30+
'datadog.trace.agent.test.EnclosedClasses$2' | true | false | false | false | false
31+
'datadog.trace.agent.test.EnclosedClasses$Inner$1' | true | false | false | false | false
32+
'datadog.trace.agent.test.EnclosedClasses$InnerStatic$1' | true | false | false | false | false
33+
'datadog.trace.agent.test.EnclosedClasses$Interface' | false | true | true | false | false
34+
'datadog.trace.agent.test.EnclosedClasses$Abstract' | false | false | true | false | false
35+
'datadog.trace.agent.test.EnclosedClasses$Annotation' | false | true | true | true | false
36+
'datadog.trace.agent.test.EnclosedClasses$Enum' | false | false | false | false | true
2937
}
3038
}

dd-java-agent/agent-tooling/src/test/java/datadog/trace/agent/test/EnclosedClasses.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,12 @@ public String get() {
4848
}.get();
4949
}
5050
}
51+
52+
public interface Interface {}
53+
54+
public abstract static class Abstract {}
55+
56+
public @interface Annotation {}
57+
58+
public enum Enum {}
5159
}

0 commit comments

Comments
 (0)