From 06b052c4d95e608ab0162a2307fa56f0778a95ce Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 27 Feb 2020 10:46:33 +0100 Subject: [PATCH 1/4] Minor cleanup --- .../java/datadog/trace/agent/tooling/Instrumenter.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java index f532086ae4..1ec4562b57 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/Instrumenter.java @@ -217,11 +217,13 @@ public interface Instrumenter { public abstract Map, String> transformers(); /** - * A map of {class-name -> context-class-name}. Keys (and their subclasses) will be associated - * with a context of the value. + * Context stores to define for this instrumentation. + * + *

A map of {class-name -> context-class-name}. Keys (and their subclasses) will be + * associated with a context of the value. */ public Map contextStore() { - return Collections.EMPTY_MAP; + return Collections.emptyMap(); } protected boolean defaultEnabled() { From 5a17e57e9965a97e689ad4d5278b752c34c1d267 Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 27 Feb 2020 10:46:48 +0100 Subject: [PATCH 2/4] Provide `toString` for SafeExtendsClassMatcher --- .../tooling/bytebuddy/matcher/SafeExtendsClassMatcher.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/SafeExtendsClassMatcher.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/SafeExtendsClassMatcher.java index 9438be49e8..ddce190fd6 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/SafeExtendsClassMatcher.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/bytebuddy/matcher/SafeExtendsClassMatcher.java @@ -28,4 +28,9 @@ class SafeExtendsClassMatcher } return false; } + + @Override + public String toString() { + return "safeExtendsClass(" + matcher + ")"; + } } From 70bed6f4acb3b10e5a5fb3714814e11b3a6279d7 Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 27 Feb 2020 11:27:14 +0100 Subject: [PATCH 3/4] Remove javadoc from some inappropriate places --- .../agent/tooling/context/FieldBackedProvider.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java index 522e8e6cf9..443a5248f9 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java @@ -128,7 +128,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { public AgentBuilder.Identified.Extendable instrumentationTransformer( AgentBuilder.Identified.Extendable builder) { if (instrumenter.contextStore().size() > 0) { - /** + /* * Install transformer that rewrites accesses to context store with specialized bytecode that * invokes appropriate storage implementation. */ @@ -304,14 +304,14 @@ public class FieldBackedProvider implements InstrumentationContextProvider { private AgentBuilder.Identified.Extendable injectHelpersIntoBootstrapClassloader( AgentBuilder.Identified.Extendable builder) { - /** + /* * We inject into bootstrap classloader because field accessor interfaces are needed by context * store implementations. Unfortunately this forces us to remove stored type checking because * actual classes may not be available at this point. */ builder = builder.transform(fieldAccessorInterfacesInjector); - /** + /* * We inject context store implementation into bootstrap classloader because same implementation * may be used by different instrumentations and it has to use same static map in case of * fallback to map-backed storage. @@ -348,7 +348,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { if (fieldInjectionEnabled) { for (final Map.Entry entry : instrumenter.contextStore().entrySet()) { - /** + /* * For each context store defined in a current instrumentation we create an agent builder * that injects necessary fields. */ @@ -363,7 +363,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { .and(not(isAnnotatedWith(named("javax.decorator.Decorator")))) .transform(AgentBuilder.Transformer.NoOp.INSTANCE); - /** + /* * We inject helpers here as well as when instrumentation is applied to ensure that helpers * are present even if instrumented classes are not loaded, but classes with state fields * added are loaded (e.g. sun.net.www.protocol.https.HttpsURLConnectionImpl). @@ -388,7 +388,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { final JavaModule module, final Class classBeingRedefined, final ProtectionDomain protectionDomain) { - /** + /* * The idea here is that we can add fields if class is just being loaded * (classBeingRedefined == null) and we have to add same fields again if class we added * fields before is being transformed again. Note: here we assume that Class#getInterfaces() From 6e10eee6ee62bba82d92a80f4addf0db6ad73a67 Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 27 Feb 2020 15:46:39 +0100 Subject: [PATCH 4/4] Use isEmpty --- .../trace/agent/tooling/context/FieldBackedProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java index 443a5248f9..e8ab3ab7ec 100644 --- a/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java +++ b/dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/context/FieldBackedProvider.java @@ -127,7 +127,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { @Override public AgentBuilder.Identified.Extendable instrumentationTransformer( AgentBuilder.Identified.Extendable builder) { - if (instrumenter.contextStore().size() > 0) { + if (!instrumenter.contextStore().isEmpty()) { /* * Install transformer that rewrites accesses to context store with specialized bytecode that * invokes appropriate storage implementation.