diff --git a/instrumentation/struts/struts-2.3/javaagent/build.gradle.kts b/instrumentation/struts/struts-2.3/javaagent/build.gradle.kts index 4dabe129d9a3..ddbc92015b24 100644 --- a/instrumentation/struts/struts-2.3/javaagent/build.gradle.kts +++ b/instrumentation/struts/struts-2.3/javaagent/build.gradle.kts @@ -27,7 +27,7 @@ dependencies { testInstrumentation(project(":instrumentation:jetty:jetty-8.0:javaagent")) testInstrumentation(project(":instrumentation:struts:struts-7.0:javaagent")) - latestDepTestLibrary("org.apache.struts:struts2-core:6.0.+") + latestDepTestLibrary("org.apache.struts:struts2-core:6.+") } tasks.withType().configureEach { diff --git a/instrumentation/struts/struts-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts/v7_0/Struts2InstrumentationModule.java b/instrumentation/struts/struts-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts/v7_0/Struts2InstrumentationModule.java index a2ca8143df7f..901f9656c862 100644 --- a/instrumentation/struts/struts-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts/v7_0/Struts2InstrumentationModule.java +++ b/instrumentation/struts/struts-7.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts/v7_0/Struts2InstrumentationModule.java @@ -5,12 +5,14 @@ package io.opentelemetry.javaagent.instrumentation.struts.v7_0; +import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static java.util.Collections.singletonList; import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule; import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation; import java.util.List; +import net.bytebuddy.matcher.ElementMatcher; @AutoService(InstrumentationModule.class) public class Struts2InstrumentationModule extends InstrumentationModule { @@ -19,6 +21,12 @@ public Struts2InstrumentationModule() { super("struts", "struts-7.0"); } + @Override + public ElementMatcher.Junction classLoaderMatcher() { + // class is in different package before 7.0 + return hasClassesNamed("org.apache.struts2.config.entities.ActionConfig"); + } + @Override public List typeInstrumentations() { return singletonList(new ActionInvocationInstrumentation());