Skip to content

Commit 350b2cd

Browse files
authored
Group javax.jms instrumentations under a single module (#8154)
1 parent 6bfef97 commit 350b2cd

File tree

6 files changed

+55
-102
lines changed

6 files changed

+55
-102
lines changed

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,22 @@
1919
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
2020
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
2121

22-
import com.google.auto.service.AutoService;
2322
import datadog.trace.agent.tooling.Instrumenter;
24-
import datadog.trace.agent.tooling.InstrumenterModule;
2523
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
2624
import datadog.trace.bootstrap.InstrumentationContext;
2725
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
2826
import datadog.trace.bootstrap.instrumentation.jms.MessageConsumerState;
2927
import datadog.trace.bootstrap.instrumentation.jms.SessionState;
30-
import java.util.HashMap;
31-
import java.util.Map;
3228
import javax.jms.Message;
3329
import javax.jms.MessageConsumer;
3430
import javax.jms.MessageListener;
3531
import net.bytebuddy.asm.Advice;
3632
import net.bytebuddy.description.type.TypeDescription;
3733
import net.bytebuddy.matcher.ElementMatcher;
3834

39-
@AutoService(InstrumenterModule.class)
40-
public final class JMSMessageConsumerInstrumentation extends InstrumenterModule.Tracing
35+
public final class JMSMessageConsumerInstrumentation
4136
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
4237

43-
public JMSMessageConsumerInstrumentation() {
44-
super("jms", "jms-1", "jms-2");
45-
}
46-
4738
@Override
4839
public String hierarchyMarkerType() {
4940
return "javax.jms.MessageConsumer";
@@ -54,24 +45,6 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
5445
return implementsInterface(named(hierarchyMarkerType()));
5546
}
5647

57-
@Override
58-
public String[] helperClassNames() {
59-
return new String[] {
60-
packageName + ".JMSDecorator",
61-
packageName + ".MessageExtractAdapter",
62-
packageName + ".MessageExtractAdapter$1",
63-
packageName + ".DatadogMessageListener"
64-
};
65-
}
66-
67-
@Override
68-
public Map<String, String> contextStore() {
69-
Map<String, String> contextStore = new HashMap<>(4);
70-
contextStore.put("javax.jms.MessageConsumer", MessageConsumerState.class.getName());
71-
contextStore.put("javax.jms.Message", SessionState.class.getName());
72-
return contextStore;
73-
}
74-
7548
@Override
7649
public void methodAdvice(MethodTransformer transformer) {
7750
transformer.applyAdvice(

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,26 @@
1010
import static datadog.trace.instrumentation.jms.JMSDecorator.PRODUCER_DECORATE;
1111
import static datadog.trace.instrumentation.jms.JMSDecorator.TIME_IN_QUEUE_ENABLED;
1212
import static datadog.trace.instrumentation.jms.MessageInjectAdapter.SETTER;
13-
import static java.util.Collections.singletonMap;
1413
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
1514
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1615

17-
import com.google.auto.service.AutoService;
1816
import datadog.trace.agent.tooling.Instrumenter;
19-
import datadog.trace.agent.tooling.InstrumenterModule;
2017
import datadog.trace.api.Config;
2118
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
2219
import datadog.trace.bootstrap.InstrumentationContext;
2320
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
2421
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
2522
import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState;
26-
import java.util.Map;
2723
import javax.jms.Destination;
2824
import javax.jms.Message;
2925
import javax.jms.MessageProducer;
3026
import net.bytebuddy.asm.Advice;
3127
import net.bytebuddy.description.type.TypeDescription;
3228
import net.bytebuddy.matcher.ElementMatcher;
3329

34-
@AutoService(InstrumenterModule.class)
35-
public final class JMSMessageProducerInstrumentation extends InstrumenterModule.Tracing
30+
public final class JMSMessageProducerInstrumentation
3631
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
3732

38-
public JMSMessageProducerInstrumentation() {
39-
super("jms", "jms-1", "jms-2");
40-
}
41-
4233
@Override
4334
public String hierarchyMarkerType() {
4435
return "javax.jms.MessageProducer";
@@ -49,16 +40,6 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
4940
return implementsInterface(named(hierarchyMarkerType()));
5041
}
5142

52-
@Override
53-
public String[] helperClassNames() {
54-
return new String[] {packageName + ".JMSDecorator", packageName + ".MessageInjectAdapter"};
55-
}
56-
57-
@Override
58-
public Map<String, String> contextStore() {
59-
return singletonMap("javax.jms.MessageProducer", MessageProducerState.class.getName());
60-
}
61-
6243
@Override
6344
public void methodAdvice(MethodTransformer transformer) {
6445
transformer.applyAdvice(
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package datadog.trace.instrumentation.jms;
2+
3+
import com.google.auto.service.AutoService;
4+
import datadog.trace.agent.tooling.Instrumenter;
5+
import datadog.trace.agent.tooling.InstrumenterModule;
6+
import datadog.trace.bootstrap.instrumentation.jms.MessageConsumerState;
7+
import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState;
8+
import datadog.trace.bootstrap.instrumentation.jms.SessionState;
9+
import java.util.Arrays;
10+
import java.util.HashMap;
11+
import java.util.List;
12+
import java.util.Map;
13+
14+
@AutoService(InstrumenterModule.class)
15+
public class JavaxJmsModule extends InstrumenterModule.Tracing {
16+
public JavaxJmsModule() {
17+
super("jms", "jms-1", "jms-2");
18+
}
19+
20+
@Override
21+
public String[] helperClassNames() {
22+
return new String[] {
23+
packageName + ".JMSDecorator",
24+
packageName + ".MessageExtractAdapter",
25+
packageName + ".MessageExtractAdapter$1",
26+
packageName + ".MessageInjectAdapter",
27+
packageName + ".DatadogMessageListener"
28+
};
29+
}
30+
31+
@Override
32+
public Map<String, String> contextStore() {
33+
Map<String, String> contextStore = new HashMap<>(4);
34+
contextStore.put("javax.jms.MessageConsumer", MessageConsumerState.class.getName());
35+
contextStore.put("javax.jms.MessageProducer", MessageProducerState.class.getName());
36+
contextStore.put("javax.jms.Message", SessionState.class.getName());
37+
contextStore.put("javax.jms.Session", SessionState.class.getName());
38+
return contextStore;
39+
}
40+
41+
@Override
42+
public List<Instrumenter> typeInstrumentations() {
43+
return Arrays.asList(
44+
new JMSMessageConsumerInstrumentation(),
45+
new JMSMessageProducerInstrumentation(),
46+
new MDBMessageConsumerInstrumentation(),
47+
new MessageInstrumentation(),
48+
new SessionInstrumentation());
49+
}
50+
}

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1717
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
1818

19-
import com.google.auto.service.AutoService;
2019
import datadog.trace.agent.tooling.Instrumenter;
21-
import datadog.trace.agent.tooling.InstrumenterModule;
2220
import datadog.trace.bootstrap.CallDepthThreadLocalMap;
2321
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
2422
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -30,23 +28,9 @@
3028
import net.bytebuddy.description.type.TypeDescription;
3129
import net.bytebuddy.matcher.ElementMatcher;
3230

33-
@AutoService(InstrumenterModule.class)
34-
public final class MDBMessageConsumerInstrumentation extends InstrumenterModule.Tracing
31+
public final class MDBMessageConsumerInstrumentation
3532
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
3633

37-
public MDBMessageConsumerInstrumentation() {
38-
super("jms", "javax-mdb");
39-
}
40-
41-
@Override
42-
public String[] helperClassNames() {
43-
return new String[] {
44-
packageName + ".JMSDecorator",
45-
packageName + ".MessageExtractAdapter",
46-
packageName + ".MessageExtractAdapter$1"
47-
};
48-
}
49-
5034
@Override
5135
public String hierarchyMarkerType() {
5236
return "javax.jms.MessageListener";

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInstrumentation.java

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,20 @@
33
import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface;
44
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.nameStartsWith;
55
import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
6-
import static java.util.Collections.singletonMap;
76
import static net.bytebuddy.matcher.ElementMatchers.isMethod;
87
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
98
import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments;
109

11-
import com.google.auto.service.AutoService;
1210
import datadog.trace.agent.tooling.Instrumenter;
13-
import datadog.trace.agent.tooling.InstrumenterModule;
1411
import datadog.trace.bootstrap.InstrumentationContext;
1512
import datadog.trace.bootstrap.instrumentation.jms.SessionState;
16-
import java.util.Map;
1713
import javax.jms.Message;
1814
import net.bytebuddy.asm.Advice;
1915
import net.bytebuddy.description.type.TypeDescription;
2016
import net.bytebuddy.matcher.ElementMatcher;
2117

22-
@AutoService(InstrumenterModule.class)
23-
public class MessageInstrumentation extends InstrumenterModule.Tracing
18+
public class MessageInstrumentation
2419
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
25-
public MessageInstrumentation() {
26-
super("jms", "jms-1", "jms-2");
27-
}
2820

2921
@Override
3022
public String hierarchyMarkerType() {
@@ -36,11 +28,6 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
3628
return implementsInterface(named(hierarchyMarkerType()));
3729
}
3830

39-
@Override
40-
public Map<String, String> contextStore() {
41-
return singletonMap("javax.jms.Message", SessionState.class.getName());
42-
}
43-
4431
@Override
4532
public void methodAdvice(MethodTransformer transformer) {
4633
transformer.applyAdvice(

dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/SessionInstrumentation.java

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,13 @@
1313
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
1414
import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments;
1515

16-
import com.google.auto.service.AutoService;
1716
import datadog.trace.agent.tooling.Instrumenter;
18-
import datadog.trace.agent.tooling.InstrumenterModule;
1917
import datadog.trace.api.Config;
2018
import datadog.trace.bootstrap.ContextStore;
2119
import datadog.trace.bootstrap.InstrumentationContext;
2220
import datadog.trace.bootstrap.instrumentation.jms.MessageConsumerState;
2321
import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState;
2422
import datadog.trace.bootstrap.instrumentation.jms.SessionState;
25-
import java.util.HashMap;
26-
import java.util.Map;
2723
import javax.jms.Destination;
2824
import javax.jms.MessageConsumer;
2925
import javax.jms.MessageProducer;
@@ -32,12 +28,8 @@
3228
import net.bytebuddy.description.type.TypeDescription;
3329
import net.bytebuddy.matcher.ElementMatcher;
3430

35-
@AutoService(InstrumenterModule.class)
36-
public class SessionInstrumentation extends InstrumenterModule.Tracing
31+
public class SessionInstrumentation
3732
implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice {
38-
public SessionInstrumentation() {
39-
super("jms", "jms-1", "jms-2");
40-
}
4133

4234
@Override
4335
public String hierarchyMarkerType() {
@@ -49,20 +41,6 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
4941
return implementsInterface(named(hierarchyMarkerType()));
5042
}
5143

52-
@Override
53-
public String[] helperClassNames() {
54-
return new String[] {packageName + ".JMSDecorator"};
55-
}
56-
57-
@Override
58-
public Map<String, String> contextStore() {
59-
Map<String, String> contextStore = new HashMap<>(4);
60-
contextStore.put("javax.jms.MessageConsumer", MessageConsumerState.class.getName());
61-
contextStore.put("javax.jms.MessageProducer", MessageProducerState.class.getName());
62-
contextStore.put("javax.jms.Session", SessionState.class.getName());
63-
return contextStore;
64-
}
65-
6644
@Override
6745
public void methodAdvice(MethodTransformer transformer) {
6846
transformer.applyAdvice(

0 commit comments

Comments
 (0)