diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java index db455c87571..8cd53a2c479 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageConsumerInstrumentation.java @@ -19,16 +19,12 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.jms.MessageConsumerState; import datadog.trace.bootstrap.instrumentation.jms.SessionState; -import java.util.HashMap; -import java.util.Map; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; @@ -36,14 +32,9 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -@AutoService(InstrumenterModule.class) -public final class JMSMessageConsumerInstrumentation extends InstrumenterModule.Tracing +public final class JMSMessageConsumerInstrumentation implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice { - public JMSMessageConsumerInstrumentation() { - super("jms", "jms-1", "jms-2"); - } - @Override public String hierarchyMarkerType() { return "javax.jms.MessageConsumer"; @@ -54,24 +45,6 @@ public ElementMatcher hierarchyMatcher() { return implementsInterface(named(hierarchyMarkerType())); } - @Override - public String[] helperClassNames() { - return new String[] { - packageName + ".JMSDecorator", - packageName + ".MessageExtractAdapter", - packageName + ".MessageExtractAdapter$1", - packageName + ".DatadogMessageListener" - }; - } - - @Override - public Map contextStore() { - Map contextStore = new HashMap<>(4); - contextStore.put("javax.jms.MessageConsumer", MessageConsumerState.class.getName()); - contextStore.put("javax.jms.Message", SessionState.class.getName()); - return contextStore; - } - @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice( diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java index c060307e339..7defd35ee4c 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JMSMessageProducerInstrumentation.java @@ -10,20 +10,16 @@ import static datadog.trace.instrumentation.jms.JMSDecorator.PRODUCER_DECORATE; import static datadog.trace.instrumentation.jms.JMSDecorator.TIME_IN_QUEUE_ENABLED; import static datadog.trace.instrumentation.jms.MessageInjectAdapter.SETTER; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState; -import java.util.Map; import javax.jms.Destination; import javax.jms.Message; import javax.jms.MessageProducer; @@ -31,14 +27,9 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -@AutoService(InstrumenterModule.class) -public final class JMSMessageProducerInstrumentation extends InstrumenterModule.Tracing +public final class JMSMessageProducerInstrumentation implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice { - public JMSMessageProducerInstrumentation() { - super("jms", "jms-1", "jms-2"); - } - @Override public String hierarchyMarkerType() { return "javax.jms.MessageProducer"; @@ -49,16 +40,6 @@ public ElementMatcher hierarchyMatcher() { return implementsInterface(named(hierarchyMarkerType())); } - @Override - public String[] helperClassNames() { - return new String[] {packageName + ".JMSDecorator", packageName + ".MessageInjectAdapter"}; - } - - @Override - public Map contextStore() { - return singletonMap("javax.jms.MessageProducer", MessageProducerState.class.getName()); - } - @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice( diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java new file mode 100644 index 00000000000..23d8f8139f1 --- /dev/null +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/JavaxJmsModule.java @@ -0,0 +1,50 @@ +package datadog.trace.instrumentation.jms; + +import com.google.auto.service.AutoService; +import datadog.trace.agent.tooling.Instrumenter; +import datadog.trace.agent.tooling.InstrumenterModule; +import datadog.trace.bootstrap.instrumentation.jms.MessageConsumerState; +import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState; +import datadog.trace.bootstrap.instrumentation.jms.SessionState; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@AutoService(InstrumenterModule.class) +public class JavaxJmsModule extends InstrumenterModule.Tracing { + public JavaxJmsModule() { + super("jms", "jms-1", "jms-2"); + } + + @Override + public String[] helperClassNames() { + return new String[] { + packageName + ".JMSDecorator", + packageName + ".MessageExtractAdapter", + packageName + ".MessageExtractAdapter$1", + packageName + ".MessageInjectAdapter", + packageName + ".DatadogMessageListener" + }; + } + + @Override + public Map contextStore() { + Map contextStore = new HashMap<>(4); + contextStore.put("javax.jms.MessageConsumer", MessageConsumerState.class.getName()); + contextStore.put("javax.jms.MessageProducer", MessageProducerState.class.getName()); + contextStore.put("javax.jms.Message", SessionState.class.getName()); + contextStore.put("javax.jms.Session", SessionState.class.getName()); + return contextStore; + } + + @Override + public List typeInstrumentations() { + return Arrays.asList( + new JMSMessageConsumerInstrumentation(), + new JMSMessageProducerInstrumentation(), + new MDBMessageConsumerInstrumentation(), + new MessageInstrumentation(), + new SessionInstrumentation()); + } +} diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java index 714e470cebc..e2733c62100 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MDBMessageConsumerInstrumentation.java @@ -16,9 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import datadog.trace.bootstrap.instrumentation.api.AgentScope; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; @@ -30,23 +28,9 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -@AutoService(InstrumenterModule.class) -public final class MDBMessageConsumerInstrumentation extends InstrumenterModule.Tracing +public final class MDBMessageConsumerInstrumentation implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice { - public MDBMessageConsumerInstrumentation() { - super("jms", "javax-mdb"); - } - - @Override - public String[] helperClassNames() { - return new String[] { - packageName + ".JMSDecorator", - packageName + ".MessageExtractAdapter", - packageName + ".MessageExtractAdapter$1" - }; - } - @Override public String hierarchyMarkerType() { return "javax.jms.MessageListener"; diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInstrumentation.java index a795746c826..ec2119bdce5 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/MessageInstrumentation.java @@ -3,28 +3,20 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.nameStartsWith; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; -import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments; -import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.jms.SessionState; -import java.util.Map; import javax.jms.Message; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -@AutoService(InstrumenterModule.class) -public class MessageInstrumentation extends InstrumenterModule.Tracing +public class MessageInstrumentation implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice { - public MessageInstrumentation() { - super("jms", "jms-1", "jms-2"); - } @Override public String hierarchyMarkerType() { @@ -36,11 +28,6 @@ public ElementMatcher hierarchyMatcher() { return implementsInterface(named(hierarchyMarkerType())); } - @Override - public Map contextStore() { - return singletonMap("javax.jms.Message", SessionState.class.getName()); - } - @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice( diff --git a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/SessionInstrumentation.java b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/SessionInstrumentation.java index 0798de0c0f6..8b2f8db31ca 100644 --- a/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/SessionInstrumentation.java +++ b/dd-java-agent/instrumentation/jms/src/main/java/datadog/trace/instrumentation/jms/SessionInstrumentation.java @@ -13,17 +13,13 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments; -import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; -import datadog.trace.agent.tooling.InstrumenterModule; import datadog.trace.api.Config; import datadog.trace.bootstrap.ContextStore; import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.jms.MessageConsumerState; import datadog.trace.bootstrap.instrumentation.jms.MessageProducerState; import datadog.trace.bootstrap.instrumentation.jms.SessionState; -import java.util.HashMap; -import java.util.Map; import javax.jms.Destination; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; @@ -32,12 +28,8 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -@AutoService(InstrumenterModule.class) -public class SessionInstrumentation extends InstrumenterModule.Tracing +public class SessionInstrumentation implements Instrumenter.ForTypeHierarchy, Instrumenter.HasMethodAdvice { - public SessionInstrumentation() { - super("jms", "jms-1", "jms-2"); - } @Override public String hierarchyMarkerType() { @@ -49,20 +41,6 @@ public ElementMatcher hierarchyMatcher() { return implementsInterface(named(hierarchyMarkerType())); } - @Override - public String[] helperClassNames() { - return new String[] {packageName + ".JMSDecorator"}; - } - - @Override - public Map contextStore() { - Map contextStore = new HashMap<>(4); - contextStore.put("javax.jms.MessageConsumer", MessageConsumerState.class.getName()); - contextStore.put("javax.jms.MessageProducer", MessageProducerState.class.getName()); - contextStore.put("javax.jms.Session", SessionState.class.getName()); - return contextStore; - } - @Override public void methodAdvice(MethodTransformer transformer) { transformer.applyAdvice(