Minor InstrumentationClassPredicate refactor (don't treat javaagent-t… (#2536)
* Minor InstrumentationClassPredicate refactor (don't treat javaagent-tooling as helper classes) * Update javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/InstrumentationClassPredicate.java Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com> * fix tests Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
This commit is contained in:
parent
ff3542eff8
commit
670a9cde3f
|
@ -11,7 +11,7 @@ import io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
|
||||
import io.opentelemetry.instrumentation.api.tracer.BaseTracer;
|
||||
import io.opentelemetry.instrumentation.api.tracer.ServerSpan;
|
||||
import io.opentelemetry.javaagent.tooling.ClassHierarchyIterable;
|
||||
import io.opentelemetry.javaagent.instrumentation.api.ClassHierarchyIterable;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
|
|
|
@ -12,7 +12,7 @@ import io.opentelemetry.context.Context;
|
|||
import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
|
||||
import io.opentelemetry.instrumentation.api.tracer.BaseTracer;
|
||||
import io.opentelemetry.instrumentation.api.tracer.ServerSpan;
|
||||
import io.opentelemetry.javaagent.tooling.ClassHierarchyIterable;
|
||||
import io.opentelemetry.javaagent.instrumentation.api.ClassHierarchyIterable;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Map;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.javaagent.tooling;
|
||||
package io.opentelemetry.javaagent.instrumentation.api;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.HashSet;
|
|
@ -6,34 +6,36 @@
|
|||
package io.opentelemetry.javaagent.tooling.muzzle;
|
||||
|
||||
public final class InstrumentationClassPredicate {
|
||||
// non-shaded packages
|
||||
private static final String AUTO_INSTRUMENTATION_PACKAGE =
|
||||
// javaagent instrumentation packages
|
||||
private static final String JAVAAGENT_INSTRUMENTATION_PACKAGE =
|
||||
"io.opentelemetry.javaagent.instrumentation.";
|
||||
private static final String JAVA_AGENT_TOOLING_PACKAGE = "io.opentelemetry.javaagent.tooling.";
|
||||
private static final String AUTO_INSTRUMENTATION_API_PACKAGE =
|
||||
private static final String JAVAAGENT_API_PACKAGE =
|
||||
"io.opentelemetry.javaagent.instrumentation.api.";
|
||||
|
||||
// shaded packages
|
||||
// library instrumentation packages (both shaded in the agent)
|
||||
private static final String LIBRARY_INSTRUMENTATION_PACKAGE = "io.opentelemetry.instrumentation.";
|
||||
private static final String INSTRUMENTATION_API_PACKAGE = "io.opentelemetry.instrumentation.api.";
|
||||
|
||||
/**
|
||||
* Defines which classes are treated by muzzle as "internal", "helper" instrumentation classes.
|
||||
*
|
||||
* <p>This set of classes is defined by a package naming convention: all automatic and manual
|
||||
* instrumentation classes and {@code javaagent.tooling} classes are treated as "helper" classes
|
||||
* and are subjected to the reference collection process. All others (including {@code
|
||||
* instrumentation-api} and {@code javaagent-api} modules are not scanned for referenced (but
|
||||
* references to them are collected).
|
||||
* <p>This set of classes is defined by a package naming convention: all javaagent and library
|
||||
* instrumentation classes are treated as "helper" classes and are subjected to the reference
|
||||
* collection process. All others (including {@code instrumentation-api} and {@code javaagent-api}
|
||||
* modules are not scanned for references (but references to them are collected).
|
||||
*/
|
||||
public static boolean isInstrumentationClass(String className) {
|
||||
if (className.startsWith(INSTRUMENTATION_API_PACKAGE)
|
||||
|| className.startsWith(AUTO_INSTRUMENTATION_API_PACKAGE)) {
|
||||
return false;
|
||||
}
|
||||
return className.startsWith(AUTO_INSTRUMENTATION_PACKAGE)
|
||||
|| className.startsWith(JAVA_AGENT_TOOLING_PACKAGE)
|
||||
|| className.startsWith(LIBRARY_INSTRUMENTATION_PACKAGE);
|
||||
return isJavaagentInstrumentationClass(className) || isLibraryInstrumentationClass(className);
|
||||
}
|
||||
|
||||
private static boolean isJavaagentInstrumentationClass(String className) {
|
||||
return className.startsWith(JAVAAGENT_INSTRUMENTATION_PACKAGE)
|
||||
&& !className.startsWith(JAVAAGENT_API_PACKAGE);
|
||||
}
|
||||
|
||||
private static boolean isLibraryInstrumentationClass(String className) {
|
||||
return className.startsWith(LIBRARY_INSTRUMENTATION_PACKAGE)
|
||||
&& !className.startsWith(INSTRUMENTATION_API_PACKAGE);
|
||||
}
|
||||
|
||||
private InstrumentationClassPredicate() {}
|
||||
|
|
|
@ -15,10 +15,9 @@ class InstrumentationClassPredicateTest extends Specification {
|
|||
InstrumentationClassPredicate.isInstrumentationClass(className)
|
||||
|
||||
where:
|
||||
desc | className
|
||||
"auto instrumentation class" | "io.opentelemetry.javaagent.instrumentation.some_instrumentation.Advice"
|
||||
"javaagent-tooling class" | "io.opentelemetry.javaagent.tooling.Constants"
|
||||
"library instrumentation class" | "io.opentelemetry.instrumentation.LibraryClass"
|
||||
desc | className
|
||||
"javaagent instrumentation class" | "io.opentelemetry.javaagent.instrumentation.some_instrumentation.Advice"
|
||||
"library instrumentation class" | "io.opentelemetry.instrumentation.LibraryClass"
|
||||
}
|
||||
|
||||
@Unroll
|
||||
|
@ -29,6 +28,7 @@ class InstrumentationClassPredicateTest extends Specification {
|
|||
where:
|
||||
desc | className
|
||||
"Java SDK class" | "java.util.ArrayList"
|
||||
"javaagent-tooling class" | "io.opentelemetry.javaagent.tooling.Constants"
|
||||
"instrumentation-api class" | "io.opentelemetry.instrumentation.api.InstrumentationVersion"
|
||||
"javaagent-api class" | "io.opentelemetry.javaagent.instrumentation.api.ContextStore"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue