*
*/
-public class SSLContextInstrumentation extends TracerAwareInstrumentation {
+public class SSLContextInstrumentation extends ElasticApmInstrumentation {
@Override
public ElementMatcher super TypeDescription> getTypeMatcher() {
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
index 763a2f2428..07cda17eee 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.vertx.v3;
-import co.elastic.apm.agent.bci.TracerAwareInstrumentation;
+import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import net.bytebuddy.matcher.ElementMatcher;
import java.util.Arrays;
@@ -27,7 +27,7 @@
import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.not;
-public abstract class Vertx3Instrumentation extends TracerAwareInstrumentation {
+public abstract class Vertx3Instrumentation extends ElasticApmInstrumentation {
@Override
public Collection getInstrumentationGroupNames() {
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
index e32c3b0f26..79a9b656ea 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.vertx.v4;
-import co.elastic.apm.agent.bci.TracerAwareInstrumentation;
+import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import net.bytebuddy.matcher.ElementMatcher;
import java.util.Arrays;
@@ -26,7 +26,7 @@
import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-public abstract class Vertx4Instrumentation extends TracerAwareInstrumentation {
+public abstract class Vertx4Instrumentation extends ElasticApmInstrumentation {
@Override
public Collection getInstrumentationGroupNames() {
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java b/apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util/TransactionNameUtilsTest.java
similarity index 91%
rename from apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java
rename to apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util/TransactionNameUtilsTest.java
index 2a4564c351..34a17618df 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java
+++ b/apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util/TransactionNameUtilsTest.java
@@ -16,13 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.util;
+package co.elastic.apm.agent.tracer.util;
-import co.elastic.apm.agent.AbstractInstrumentationTest;
-import co.elastic.apm.agent.tracer.configuration.WebConfiguration;
import co.elastic.apm.agent.common.util.WildcardMatcher;
-import co.elastic.apm.agent.tracer.util.TransactionNameUtils;
-import org.jetbrains.annotations.Nullable;
+import co.elastic.apm.agent.tracer.configuration.WebConfiguration;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
@@ -33,14 +30,15 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
-class TransactionNameUtilsTest extends AbstractInstrumentationTest {
+class TransactionNameUtilsTest {
private WebConfiguration webConfig;
@BeforeEach
void beforeEach() {
- webConfig = config.getConfig(WebConfiguration.class);
+ webConfig = mock(WebConfiguration.class);
doReturn(true).when(webConfig).isUsePathAsName();
}
@@ -117,7 +115,7 @@ void setNameFromHttpRequestPath() {
}
- private void testHttpRequestPath(String httpMethod, String firstPart, @Nullable String secondPart, List urlGroups, String expected) {
+ private void testHttpRequestPath(String httpMethod, String firstPart, String secondPart, List urlGroups, String expected) {
StringBuilder sb = new StringBuilder();
TransactionNameUtils.setNameFromHttpRequestPath(httpMethod, firstPart, secondPart, sb, urlGroups);
assertThat(sb.toString()).isEqualTo(expected);
From 97bbdbd4f8c96b68a5c60b941657cc016e40e5bf Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 10:42:19 +0200
Subject: [PATCH 04/33] Adjust visibility and imports.
---
.../apm/agent/sdk/util/ExecutorUtils.java | 20 ++++++++++++++++++-
.../sdk/util/PrivilegedActionUtilsTest.java | 1 -
...lasticsearchRestClientInstrumentation.java | 4 ++++
.../apm/agent/grpc/BaseInstrumentation.java | 4 ++++
.../AbstractServletInstrumentation.java | 2 +-
5 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
index c104e423a8..a8e5d39fbb 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package co.elastic.apm.agent.sdk.util;
import javax.annotation.Nullable;
@@ -65,7 +83,7 @@ private static class NamedScheduledThreadPoolExecutor extends ScheduledThreadPoo
private final String threadPurpose;
- public NamedScheduledThreadPoolExecutor(String threadPurpose) {
+ public NamedScheduledThreadPoolExecutor(final String threadPurpose) {
super(1, new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
index 09fefd96e4..8d75d37f7d 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
@@ -36,7 +36,6 @@
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
-import static co.elastic.apm.agent.testutils.assertions.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@EnabledForJreRange(max = JRE.JAVA_17, disabledReason = "SecurityManager is not supported anymore")
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java
index e1605426bc..747ccf703e 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java
@@ -19,6 +19,8 @@
package co.elastic.apm.agent.esrestclient;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
+import co.elastic.apm.agent.tracer.GlobalTracer;
+import co.elastic.apm.agent.tracer.Tracer;
import java.util.Collection;
import java.util.Collections;
@@ -26,6 +28,8 @@
public abstract class ElasticsearchRestClientInstrumentation extends ElasticApmInstrumentation {
+ public static final Tracer tracer = GlobalTracer.get();
+
@Override
public Collection getInstrumentationGroupNames() {
return Collections.singleton("elasticsearch-restclient");
diff --git a/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/BaseInstrumentation.java b/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/BaseInstrumentation.java
index 72952f6279..d7100e8790 100644
--- a/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/BaseInstrumentation.java
+++ b/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/BaseInstrumentation.java
@@ -19,12 +19,16 @@
package co.elastic.apm.agent.grpc;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
+import co.elastic.apm.agent.tracer.GlobalTracer;
+import co.elastic.apm.agent.tracer.Tracer;
import java.util.Collection;
import java.util.Collections;
public abstract class BaseInstrumentation extends ElasticApmInstrumentation {
+ static final Tracer tracer = GlobalTracer.get();
+
@Override
public final Collection getInstrumentationGroupNames() {
return Collections.singleton(GrpcHelper.GRPC);
diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java
index 4e8ec81b91..d9a7f6c278 100644
--- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java
+++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java
@@ -29,7 +29,7 @@
public abstract class AbstractServletInstrumentation extends ElasticApmInstrumentation {
- static final Tracer tracer = GlobalTracer.get();
+ public static final Tracer tracer = GlobalTracer.get();
@Override
public Collection getInstrumentationGroupNames() {
From e7b1b73b615e3a06ea1ee74d9ee471003be4e576 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 11:08:13 +0200
Subject: [PATCH 05/33] Move Byte Buddy-related API and boot injection class to
SDK.
---
.../co/elastic/apm/agent/PackagingTest.java | 2 +-
.../agent/bbwarmup/WarmupInstrumentation.java | 2 +-
.../apm/agent/bci/ElasticApmAgent.java | 5 +-
.../elastic/apm/agent/bci/IndyBootstrap.java | 1 +
.../bci/bytebuddy/CustomElementMatchers.java | 81 +----------
.../TraceMethodInstrumentation.java | 4 +-
.../bytebuddy/CustomElementMatchersTest.java | 20 ---
...luginClassLoaderRootPackageCustomizer.java | 6 +-
.../AnnotationValueOffsetMappingFactory.java | 2 +-
.../sdk/bytebuddy/CustomElementMatchers.java | 131 ++++++++++++++++++
.../bytebuddy/MethodHierarchyMatcher.java | 2 +-
...leMethodSignatureOffsetMappingFactory.java | 2 +-
.../bytebuddy/CustomElementMatchersTest.java | 47 +++++++
.../bytebuddy/MethodHierarchyMatcherTest.java | 2 +-
.../ApacheHttpAsyncClientInstrumentation.java | 2 +-
.../v4/ApacheHttpClientInstrumentation.java | 2 +-
.../pluginapi/CaptureSpanInstrumentation.java | 12 +-
.../CaptureTransactionInstrumentation.java | 12 +-
.../pluginapi/TracedInstrumentation.java | 12 +-
...bstractAsyncHttpClientInstrumentation.java | 2 +-
.../cassandra3/Cassandra3Instrumentation.java | 2 +-
.../AbstractAlibabaDubboInstrumentation.java | 2 +-
...eExceptionSourceFilterInstrumentation.java | 2 +-
...naglePayloadSizeFilterInstrumentation.java | 2 +-
.../GrailsTransactionNameInstrumentation.java | 2 +-
.../v5/HibernateSearch5Instrumentation.java | 2 +-
.../HibernateSearch6Instrumentation.java | 2 +-
.../BaseServerEndpointInstrumentation.java | 6 +-
.../JakartaServerEndpointInstrumentation.java | 2 +-
.../JavaxServerEndpointInstrumentation.java | 2 +-
.../concurrent/ExecutorInstrumentation.java | 2 +-
...luginClassLoaderRootPackageCustomizer.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
.../java_ldap/LdapPluginModuleOpens.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
.../JavalinHandlerLambdaInstrumentation.java | 2 +-
.../agent/javalin/JavalinInstrumentation.java | 2 +-
.../javalin/JavalinRenderInstrumentation.java | 2 +-
...eeJaxRsTransactionNameInstrumentation.java | 2 +-
...axJaxRsTransactionNameInstrumentation.java | 2 +-
.../JaxRsTransactionNameInstrumentation.java | 8 +-
.../JaxWsTransactionNameInstrumentation.java | 10 +-
.../apm/agent/jms/BaseJmsInstrumentation.java | 2 +-
.../JmsMessageListenerInstrumentation.java | 4 +-
.../AbstractJsfLifecycleInstrumentation.java | 2 +-
.../agent/kafka/BaseKafkaInstrumentation.java | 2 +-
.../kafka/KafkaConsumerInstrumentation.java | 2 +-
.../kafka/KafkaProducerInstrumentation.java | 2 +-
.../BaseKafkaHeadersInstrumentation.java | 2 +-
.../NewKafkaPollExitInstrumentation.java | 2 +-
...sLogManagerCorrelationInstrumentation.java | 2 +-
...BossLoggingCorrelationInstrumentation.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
.../Log4j1LogReformattingInstrumentation.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
.../Log4j2LogCorrelationInstrumentation.java | 2 +-
...j2LoggerErrorCapturingInstrumentation.java | 2 -
.../Log4j2EcsReformattingInstrumentation.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
...LogbackLogReformattingInstrumentation.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
...luginClassLoaderRootPackageCustomizer.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
...ractJobTransactionNameInstrumentation.java | 2 +-
...rtz1JobTransactionNameInstrumentation.java | 3 +-
...rtz2JobTransactionNameInstrumentation.java | 2 +-
.../rabbitmq/ChannelInstrumentation.java | 2 +-
.../rabbitmq/ConsumerInstrumentation.java | 2 +-
...ingAmqpMessageListenerInstrumentation.java | 2 +-
.../rabbitmq/SpringBaseInstrumentation.java | 2 +-
.../Jedis4ConnectionInstrumentation.java | 2 +-
.../jedis/JedisConnectionInstrumentation.java | 2 +-
.../lettuce/Lettuce34Instrumentation.java | 2 +-
...heduledTransactionNameInstrumentation.java | 6 +-
.../scheduled/TimerTaskInstrumentation.java | 6 +-
.../elastic/apm/agent/servlet/Constants.java | 2 +-
...tSpringTransactionNameInstrumentation.java | 2 +-
...luginClassLoaderRootPackageCustomizer.java | 2 +-
...dk.PluginClassLoaderRootPackageCustomizer} | 0
.../agent/vertx/v3/Vertx3Instrumentation.java | 2 +-
.../agent/vertx/v4/Vertx4Instrumentation.java | 2 +-
81 files changed, 281 insertions(+), 203 deletions(-)
rename {apm-agent-core/src/main/java/co/elastic/apm/agent/bci => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/PluginClassLoaderRootPackageCustomizer.java (95%)
rename {apm-agent-core/src/main/java/co/elastic/apm/agent/bci => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/bytebuddy/AnnotationValueOffsetMappingFactory.java (99%)
create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
rename {apm-agent-core/src/main/java/co/elastic/apm/agent/bci => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/bytebuddy/MethodHierarchyMatcher.java (99%)
rename {apm-agent-core/src/main/java/co/elastic/apm/agent/bci => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java (98%)
create mode 100644 apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java
rename {apm-agent-core/src/test/java/co/elastic/apm/agent/bci => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk}/bytebuddy/MethodHierarchyMatcherTest.java (99%)
rename apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/{co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer} (100%)
diff --git a/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java b/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java
index 371e26bae1..766b940af6 100644
--- a/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java
+++ b/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent;
-import co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
index 27da25c3d5..b9edd40402 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.bbwarmup;
import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.GlobalTracer;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
index c5357011e1..9bb0b10bc5 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
@@ -18,7 +18,8 @@
*/
package co.elastic.apm.agent.bci;
-import co.elastic.apm.agent.bci.bytebuddy.AnnotationValueOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.bytebuddy.AnnotationValueOffsetMappingFactory;
import co.elastic.apm.agent.bci.bytebuddy.ErrorLoggingListener;
import co.elastic.apm.agent.bci.bytebuddy.FailSafeDeclaredMethodsCompiler;
import co.elastic.apm.agent.bci.bytebuddy.InstallationListenerImpl;
@@ -28,7 +29,7 @@
import co.elastic.apm.agent.bci.bytebuddy.NonInstrumented;
import co.elastic.apm.agent.bci.bytebuddy.PatchBytecodeVersionTo51Transformer;
import co.elastic.apm.agent.bci.bytebuddy.RootPackageCustomLocator;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.bci.classloading.ExternalPluginClassLoader;
import co.elastic.apm.agent.bci.modules.ModuleOpener;
import co.elastic.apm.agent.common.ThreadUtils;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
index f389de01ed..a7bdbf7940 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
@@ -22,6 +22,7 @@
import co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader;
import co.elastic.apm.agent.bci.classloading.LookupExposer;
import co.elastic.apm.agent.common.JvmRuntimeInfo;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.sdk.state.CallDepth;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
index 5e95dd807d..a0be929cdc 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
@@ -20,6 +20,7 @@
import co.elastic.apm.agent.matcher.AnnotationMatcher;
import co.elastic.apm.agent.common.util.WildcardMatcher;
+import co.elastic.apm.agent.sdk.bytebuddy.MethodHierarchyMatcher;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
import co.elastic.apm.agent.util.ClassLoaderUtils;
@@ -70,18 +71,6 @@ public boolean matches(@Nullable ClassLoader classLoader) {
}
};
- public static ElementMatcher.Junction isInAnyPackage(Collection includedPackages,
- ElementMatcher.Junction defaultIfEmpty) {
- if (includedPackages.isEmpty()) {
- return defaultIfEmpty;
- }
- ElementMatcher.Junction matcher = none();
- for (String applicationPackage : includedPackages) {
- matcher = matcher.or(nameStartsWith(applicationPackage));
- }
- return matcher;
- }
-
/**
* Matches the target class loader to a given class loader by instance comparison
*
@@ -97,54 +86,6 @@ public boolean matches(@Nullable ClassLoader target) {
};
}
- /**
- * Matches only class loaders which can load a certain class.
- *
- * Warning: the class will be tried to load by each class loader.
- * You should choose a class which does not have optional dependencies (imports classes which are not on the class path).
- * Ideally, choose an interface or annotation without dependencies.
- *
- *
- * @param className the name of the class to check
- * @return a matcher which only matches class loaders which can load a certain class.
- */
- public static ElementMatcher.Junction classLoaderCanLoadClass(final String className) {
- return new ElementMatcher.Junction.AbstractBase() {
-
- private final boolean loadableByBootstrapClassLoader = canLoadClass(null, className);
- private final WeakMap cache = WeakConcurrent.buildMap();
-
- @Override
- public boolean matches(@Nullable ClassLoader target) {
- if (target == null) {
- return loadableByBootstrapClassLoader;
- }
-
- Boolean result = cache.get(target);
- if (result == null) {
- result = canLoadClass(target, className);
- cache.put(target, result);
- }
- return result;
- }
- };
- }
-
- private static boolean canLoadClass(@Nullable ClassLoader target, String className) {
- try {
- final URL resource;
- final String classResource = className.replace('.', '/') + ".class";
- if (target == null) {
- resource = Object.class.getResource("/" + classResource);
- } else {
- resource = target.getResource(classResource);
- }
- return resource != null;
- } catch (Exception ignore) {
- return false;
- }
- }
-
/**
* A matcher that checks whether the implementation version read from the MANIFEST.MF related for a given {@link ProtectionDomain} is
* lower than or equals to the limit version. Assumes a SemVer version format.
@@ -267,18 +208,6 @@ private static Version readImplementationVersionFromManifest(@Nullable Protectio
return version;
}
- /**
- * Matches overridden methods of a super class or implemented methods of an interface.
- * Recursively traverses the superclasses and interfaces.
- * The the superclasses and interfaces to examine can be limited via {@link MethodHierarchyMatcher#onSuperClassesThat(ElementMatcher)}.
- *
- * @param methodElementMatcher The matcher which is applied on the method hierarchy
- * @return a matcher which is applied on the method hierarchy
- */
- public static MethodHierarchyMatcher overridesOrImplementsMethodThat(ElementMatcher super MethodDescription> methodElementMatcher) {
- return new MethodHierarchyMatcher(methodElementMatcher);
- }
-
public static ElementMatcher.Junction matches(final WildcardMatcher matcher) {
return new ElementMatcher.Junction.AbstractBase() {
@Override
@@ -310,12 +239,4 @@ public String toString() {
public static ElementMatcher.Junction annotationMatches(final String annotationWildcard) {
return AnnotationMatcher.annotationMatcher(annotationWildcard);
}
-
- public static ElementMatcher.Junction isProxy() {
- return nameContains("$Proxy")
- .or(nameContains("$$"))
- .or(nameContains("$JaxbAccessor"))
- .or(nameContains("CGLIB"))
- .or(nameContains("EnhancerBy"));
- }
}
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java
index b2c0be030f..73b6e7065f 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.tracemethods;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.common.util.WildcardMatcher;
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.impl.ElasticApmTracer;
@@ -43,7 +43,7 @@
import java.util.Collections;
import java.util.List;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.matches;
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
import static net.bytebuddy.matcher.ElementMatchers.isAbstract;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java
index 03bbc6e708..ea200bb949 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java
+++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java
@@ -18,7 +18,6 @@
*/
package co.elastic.apm.agent.bci.bytebuddy;
-import net.bytebuddy.description.type.TypeDescription;
import org.apache.http.client.HttpClient;
import org.junit.jupiter.api.Test;
@@ -29,31 +28,12 @@
import java.security.CodeSigner;
import java.security.CodeSource;
import java.security.ProtectionDomain;
-import java.util.List;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionLte;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static net.bytebuddy.matcher.ElementMatchers.none;
import static org.assertj.core.api.Assertions.assertThat;
class CustomElementMatchersTest {
- @Test
- void testIncludedPackages() {
- final TypeDescription thisClass = TypeDescription.ForLoadedType.of(getClass());
- assertThat(isInAnyPackage(List.of(), none()).matches(thisClass)).isFalse();
- assertThat(isInAnyPackage(List.of(thisClass.getPackage().getName()), none()).matches(thisClass)).isTrue();
- assertThat(isInAnyPackage(List.of(thisClass.getPackage().getName()), none()).matches(TypeDescription.ForLoadedType.of(Object.class))).isFalse();
- }
-
- @Test
- void testClassLoaderCanLoadClass() {
- assertThat(classLoaderCanLoadClass(Object.class.getName()).matches(ClassLoader.getSystemClassLoader())).isTrue();
- assertThat(classLoaderCanLoadClass(Object.class.getName()).matches(null)).isTrue();
- assertThat(classLoaderCanLoadClass("not.Here").matches(ClassLoader.getSystemClassLoader())).isFalse();
- }
-
@Test
void testSemVerLteWithFileUrl() {
// Relying on Apache httpclient-4.5.6.jar
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/PluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/PluginClassLoaderRootPackageCustomizer.java
similarity index 95%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/bci/PluginClassLoaderRootPackageCustomizer.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/PluginClassLoaderRootPackageCustomizer.java
index 14ddc05ae3..07ba6653b9 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/PluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/PluginClassLoaderRootPackageCustomizer.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.bci;
+package co.elastic.apm.agent.sdk;
import java.lang.instrument.Instrumentation;
import java.util.Collection;
@@ -54,7 +54,7 @@ public final String getPluginPackage() {
/**
* All classes in the provided packages except for the ones annotated with {@link co.elastic.apm.agent.sdk.state.GlobalState}
- * and classes extending {@link org.stagemonitor.configuration.ConfigurationOptionProvider}
+ * and classes extending {@code org.stagemonitor.configuration.ConfigurationOptionProvider}
* will be loaded from a dedicated plugin class loader that has access to both the instrumented classes and the agent classes.
* If the {@linkplain #getPluginPackage() plugin package} should be part of the root packages, implementations need to explicitly add it.
*/
@@ -67,7 +67,7 @@ public final String getPluginPackage() {
*
* Instrumentation plugins are loaded in an isolated classloader and therefore in an unnamed module.
* This module by default cannot access anything "private" within other modules, including
- * the module containing the instrumented class. If such an access is required for the plugin,
+ * the module containing the instrumented class. If such access is required for the plugin,
* access can be granted using this method. Before anything from the plugin is invoked,
* {@link Instrumentation#redefineModule(Module, Set, Map, Map, Set, Map) will be used to give the classloader
* full access ("open") to the target module.}
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/AnnotationValueOffsetMappingFactory.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/AnnotationValueOffsetMappingFactory.java
similarity index 99%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/AnnotationValueOffsetMappingFactory.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/AnnotationValueOffsetMappingFactory.java
index e5b7d670f6..98e1d433c8 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/AnnotationValueOffsetMappingFactory.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/AnnotationValueOffsetMappingFactory.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.bci.bytebuddy;
+package co.elastic.apm.agent.sdk.bytebuddy;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
new file mode 100644
index 0000000000..0965e4fb25
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
@@ -0,0 +1,131 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package co.elastic.apm.agent.sdk.bytebuddy;
+
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
+import net.bytebuddy.description.NamedElement;
+import net.bytebuddy.description.method.MethodDescription;
+import net.bytebuddy.matcher.ElementMatcher;
+
+import javax.annotation.Nullable;
+import java.net.URL;
+import java.util.Collection;
+
+import static net.bytebuddy.matcher.ElementMatchers.nameContains;
+import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
+import static net.bytebuddy.matcher.ElementMatchers.none;
+
+public class CustomElementMatchers {
+
+ public static ElementMatcher.Junction isInAnyPackage(Collection includedPackages,
+ ElementMatcher.Junction defaultIfEmpty) {
+ if (includedPackages.isEmpty()) {
+ return defaultIfEmpty;
+ }
+ ElementMatcher.Junction matcher = none();
+ for (String applicationPackage : includedPackages) {
+ matcher = matcher.or(nameStartsWith(applicationPackage));
+ }
+ return matcher;
+ }
+
+ /**
+ * Matches the target class loader to a given class loader by instance comparison
+ *
+ * @param other the class loader to match to
+ * @return {@code true} if {@code other} is the same class loader instance as the target class loader
+ */
+ public static ElementMatcher.Junction isSameClassLoader(final ClassLoader other) {
+ return new ElementMatcher.Junction.AbstractBase() {
+ @Override
+ public boolean matches(@Nullable ClassLoader target) {
+ return target == other;
+ }
+ };
+ }
+
+ /**
+ * Matches only class loaders which can load a certain class.
+ *
+ * Warning: the class will be tried to load by each class loader.
+ * You should choose a class which does not have optional dependencies (imports classes which are not on the class path).
+ * Ideally, choose an interface or annotation without dependencies.
+ *
+ *
+ * @param className the name of the class to check
+ * @return a matcher which only matches class loaders which can load a certain class.
+ */
+ public static ElementMatcher.Junction classLoaderCanLoadClass(final String className) {
+ return new ElementMatcher.Junction.AbstractBase() {
+
+ private final boolean loadableByBootstrapClassLoader = canLoadClass(null, className);
+ private final WeakMap cache = WeakConcurrent.buildMap();
+
+ @Override
+ public boolean matches(@Nullable ClassLoader target) {
+ if (target == null) {
+ return loadableByBootstrapClassLoader;
+ }
+
+ Boolean result = cache.get(target);
+ if (result == null) {
+ result = canLoadClass(target, className);
+ cache.put(target, result);
+ }
+ return result;
+ }
+ };
+ }
+
+ private static boolean canLoadClass(@Nullable ClassLoader target, String className) {
+ try {
+ final URL resource;
+ final String classResource = className.replace('.', '/') + ".class";
+ if (target == null) {
+ resource = Object.class.getResource("/" + classResource);
+ } else {
+ resource = target.getResource(classResource);
+ }
+ return resource != null;
+ } catch (Exception ignore) {
+ return false;
+ }
+ }
+
+ /**
+ * Matches overridden methods of a super class or implemented methods of an interface.
+ * Recursively traverses the superclasses and interfaces.
+ * The the superclasses and interfaces to examine can be limited via {@link MethodHierarchyMatcher#onSuperClassesThat(ElementMatcher)}.
+ *
+ * @param methodElementMatcher The matcher which is applied on the method hierarchy
+ * @return a matcher which is applied on the method hierarchy
+ */
+ public static MethodHierarchyMatcher overridesOrImplementsMethodThat(ElementMatcher super MethodDescription> methodElementMatcher) {
+ return new MethodHierarchyMatcher(methodElementMatcher);
+ }
+
+ public static ElementMatcher.Junction isProxy() {
+ return nameContains("$Proxy")
+ .or(nameContains("$$"))
+ .or(nameContains("$JaxbAccessor"))
+ .or(nameContains("CGLIB"))
+ .or(nameContains("EnhancerBy"));
+ }
+}
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/MethodHierarchyMatcher.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/MethodHierarchyMatcher.java
similarity index 99%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/MethodHierarchyMatcher.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/MethodHierarchyMatcher.java
index 3d4955c995..84ec59657c 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/MethodHierarchyMatcher.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/MethodHierarchyMatcher.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.bci.bytebuddy;
+package co.elastic.apm.agent.sdk.bytebuddy;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java
similarity index 98%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java
index dc3098a95b..d0bc841cd6 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/SimpleMethodSignatureOffsetMappingFactory.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.bci.bytebuddy;
+package co.elastic.apm.agent.sdk.bytebuddy;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.annotation.AnnotationDescription;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java
new file mode 100644
index 0000000000..cd8693047b
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package co.elastic.apm.agent.sdk.bytebuddy;
+
+import net.bytebuddy.description.type.TypeDescription;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static net.bytebuddy.matcher.ElementMatchers.none;
+import static org.assertj.core.api.Assertions.assertThat;
+
+class CustomElementMatchersTest {
+
+ @Test
+ void testIncludedPackages() {
+ final TypeDescription thisClass = TypeDescription.ForLoadedType.of(getClass());
+ assertThat(isInAnyPackage(List.of(), none()).matches(thisClass)).isFalse();
+ assertThat(isInAnyPackage(List.of(thisClass.getPackage().getName()), none()).matches(thisClass)).isTrue();
+ assertThat(isInAnyPackage(List.of(thisClass.getPackage().getName()), none()).matches(TypeDescription.ForLoadedType.of(Object.class))).isFalse();
+ }
+
+ @Test
+ void testClassLoaderCanLoadClass() {
+ assertThat(classLoaderCanLoadClass(Object.class.getName()).matches(ClassLoader.getSystemClassLoader())).isTrue();
+ assertThat(classLoaderCanLoadClass(Object.class.getName()).matches(null)).isTrue();
+ assertThat(classLoaderCanLoadClass("not.Here").matches(ClassLoader.getSystemClassLoader())).isFalse();
+ }
+}
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/MethodHierarchyMatcherTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/MethodHierarchyMatcherTest.java
similarity index 99%
rename from apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/MethodHierarchyMatcherTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/MethodHierarchyMatcherTest.java
index b23432a9ca..923b222bf3 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/MethodHierarchyMatcherTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/MethodHierarchyMatcherTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.bci.bytebuddy;
+package co.elastic.apm.agent.sdk.bytebuddy;
import net.bytebuddy.description.method.MethodDescription;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientInstrumentation.java b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientInstrumentation.java
index 3093494677..b08f2782ac 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientInstrumentation.java
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientInstrumentation.java
@@ -34,7 +34,7 @@
import javax.annotation.Nullable;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.implementation.bytecode.assign.Assigner.Typing.DYNAMIC;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpClientInstrumentation.java b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpClientInstrumentation.java
index 2ccdab635b..ceaf38ea21 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpClientInstrumentation.java
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpClientInstrumentation.java
@@ -36,7 +36,7 @@
import javax.annotation.Nullable;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java
index e2adf794cc..a92af013ed 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.pluginapi;
-import co.elastic.apm.agent.bci.bytebuddy.AnnotationValueOffsetMappingFactory;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.AnnotationValueOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
@@ -42,10 +42,10 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
import static net.bytebuddy.matcher.ElementMatchers.named;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
index 69f8a8d8d2..bce896d084 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.pluginapi;
-import co.elastic.apm.agent.bci.bytebuddy.AnnotationValueOffsetMappingFactory.AnnotationValueExtractor;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory.SimpleMethodSignature;
+import co.elastic.apm.agent.sdk.bytebuddy.AnnotationValueOffsetMappingFactory.AnnotationValueExtractor;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory.SimpleMethodSignature;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
@@ -42,10 +42,10 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_METHOD_SIGNATURE;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_USER_SUPPLIED;
import static co.elastic.apm.agent.pluginapi.ElasticApmApiInstrumentation.PUBLIC_API_INSTRUMENTATION_GROUP;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
index 7a82c9bf6f..62360ad75f 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.pluginapi;
-import co.elastic.apm.agent.bci.bytebuddy.AnnotationValueOffsetMappingFactory;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.AnnotationValueOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
@@ -44,10 +44,10 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
import static co.elastic.apm.agent.pluginapi.ElasticApmApiInstrumentation.PUBLIC_API_INSTRUMENTATION_GROUP;
import static co.elastic.apm.agent.pluginapi.Utils.FRAMEWORK_NAME;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_METHOD_SIGNATURE;
diff --git a/apm-agent-plugins/apm-asynchttpclient-plugin/src/main/java/co/elastic/apm/agent/asynchttpclient/AbstractAsyncHttpClientInstrumentation.java b/apm-agent-plugins/apm-asynchttpclient-plugin/src/main/java/co/elastic/apm/agent/asynchttpclient/AbstractAsyncHttpClientInstrumentation.java
index 928763ecfe..355ef70282 100644
--- a/apm-agent-plugins/apm-asynchttpclient-plugin/src/main/java/co/elastic/apm/agent/asynchttpclient/AbstractAsyncHttpClientInstrumentation.java
+++ b/apm-agent-plugins/apm-asynchttpclient-plugin/src/main/java/co/elastic/apm/agent/asynchttpclient/AbstractAsyncHttpClientInstrumentation.java
@@ -42,7 +42,7 @@
import java.util.Collection;
import java.util.List;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.any;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.named;
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java b/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java
index ec7dea8f8b..848a85a5e7 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java
@@ -18,10 +18,10 @@
*/
package co.elastic.apm.agent.cassandra3;
-import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers;
import co.elastic.apm.agent.cassandra.CassandraHelper;
import co.elastic.apm.agent.impl.context.Destination;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
+import co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Span;
import com.datastax.driver.core.BoundStatement;
diff --git a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractAlibabaDubboInstrumentation.java b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractAlibabaDubboInstrumentation.java
index f74a1a6696..83ab3c7771 100644
--- a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractAlibabaDubboInstrumentation.java
+++ b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractAlibabaDubboInstrumentation.java
@@ -20,7 +20,7 @@
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
public abstract class AbstractAlibabaDubboInstrumentation extends AbstractDubboInstrumentation {
// these type is available as of dubbo 2.5.0
diff --git a/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleExceptionSourceFilterInstrumentation.java b/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleExceptionSourceFilterInstrumentation.java
index 539c1d1949..ba67e83ecc 100644
--- a/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleExceptionSourceFilterInstrumentation.java
+++ b/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleExceptionSourceFilterInstrumentation.java
@@ -36,7 +36,7 @@
import java.util.Collection;
import java.util.Locale;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.returns;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
diff --git a/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinaglePayloadSizeFilterInstrumentation.java b/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinaglePayloadSizeFilterInstrumentation.java
index 632ce13e73..ed30810de7 100644
--- a/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinaglePayloadSizeFilterInstrumentation.java
+++ b/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinaglePayloadSizeFilterInstrumentation.java
@@ -47,7 +47,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.returns;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
diff --git a/apm-agent-plugins/apm-grails-plugin/src/main/java/co/elastic/apm/agent/grails/GrailsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-grails-plugin/src/main/java/co/elastic/apm/agent/grails/GrailsTransactionNameInstrumentation.java
index 21db5d1c50..25aca71556 100644
--- a/apm-agent-plugins/apm-grails-plugin/src/main/java/co/elastic/apm/agent/grails/GrailsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-grails-plugin/src/main/java/co/elastic/apm/agent/grails/GrailsTransactionNameInstrumentation.java
@@ -33,7 +33,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_HIGH_LEVEL_FRAMEWORK;
import static grails.core.GrailsControllerClass.INDEX_ACTION;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
diff --git a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/src/main/java/co/elastic/apm/agent/hibernatesearch/v5/HibernateSearch5Instrumentation.java b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/src/main/java/co/elastic/apm/agent/hibernatesearch/v5/HibernateSearch5Instrumentation.java
index 23314977f3..1438fb99eb 100644
--- a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/src/main/java/co/elastic/apm/agent/hibernatesearch/v5/HibernateSearch5Instrumentation.java
+++ b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/src/main/java/co/elastic/apm/agent/hibernatesearch/v5/HibernateSearch5Instrumentation.java
@@ -35,7 +35,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
diff --git a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/src/main/java/co/elastic/apm/agent/hibernatesearch/HibernateSearch6Instrumentation.java b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/src/main/java/co/elastic/apm/agent/hibernatesearch/HibernateSearch6Instrumentation.java
index 3de5415f28..859ae7a1b9 100644
--- a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/src/main/java/co/elastic/apm/agent/hibernatesearch/HibernateSearch6Instrumentation.java
+++ b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/src/main/java/co/elastic/apm/agent/hibernatesearch/HibernateSearch6Instrumentation.java
@@ -33,7 +33,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/BaseServerEndpointInstrumentation.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/BaseServerEndpointInstrumentation.java
index ee64404258..5fac2d9689 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/BaseServerEndpointInstrumentation.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/BaseServerEndpointInstrumentation.java
@@ -34,9 +34,9 @@
import javax.annotation.Nullable;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_HIGH_LEVEL_FRAMEWORK;
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java
index dfaf678dca..79091e7de8 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.websocket;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.sdk.util.VersionUtils;
import jakarta.websocket.server.ServerEndpoint;
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java
index 43fd96b8b3..8e4c084338 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.websocket;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.sdk.util.VersionUtils;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java
index 1ef0db4b00..5f7c1b759b 100644
--- a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java
+++ b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java
@@ -45,7 +45,7 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.is;
import static net.bytebuddy.matcher.ElementMatchers.isOverriddenFrom;
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java
index 61a37f7f40..7ee26c7c31 100644
--- a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.concurrent;
-import co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
import java.util.Collection;
import java.util.Collections;
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java b/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java
index ae9cd3f848..b3b62377d4 100644
--- a/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java
+++ b/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.java_ldap;
-import co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
import java.util.Collection;
import java.util.Collections;
diff --git a/apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinHandlerLambdaInstrumentation.java b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinHandlerLambdaInstrumentation.java
index b03e7788fc..80f8caceb9 100644
--- a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinHandlerLambdaInstrumentation.java
+++ b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinHandlerLambdaInstrumentation.java
@@ -32,7 +32,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
diff --git a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java
index b8285791d5..f7590cd378 100644
--- a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java
+++ b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java
@@ -45,7 +45,7 @@
import java.util.Collections;
import java.util.concurrent.CompletableFuture;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_HIGH_LEVEL_FRAMEWORK;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
diff --git a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinRenderInstrumentation.java b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinRenderInstrumentation.java
index d9a373f914..d6e52d7fae 100644
--- a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinRenderInstrumentation.java
+++ b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinRenderInstrumentation.java
@@ -32,7 +32,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
import static net.bytebuddy.matcher.ElementMatchers.named;
diff --git a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java
index bb20680558..4b341b4c17 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.jaxrs;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.sdk.util.VersionUtils;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java
index e64c512d5d..fba48ad089 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.jaxrs;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.sdk.util.VersionUtils;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JaxRsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JaxRsTransactionNameInstrumentation.java
index a0bf823b57..6ab0c9d4b5 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JaxRsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JaxRsTransactionNameInstrumentation.java
@@ -34,10 +34,10 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_HIGH_LEVEL_FRAMEWORK;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
diff --git a/apm-agent-plugins/apm-jaxws-plugin/src/main/java/co/elastic/apm/agent/jaxws/JaxWsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-jaxws-plugin/src/main/java/co/elastic/apm/agent/jaxws/JaxWsTransactionNameInstrumentation.java
index 2da860bc78..28059c812c 100644
--- a/apm-agent-plugins/apm-jaxws-plugin/src/main/java/co/elastic/apm/agent/jaxws/JaxWsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-jaxws-plugin/src/main/java/co/elastic/apm/agent/jaxws/JaxWsTransactionNameInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.jaxws;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory.SimpleMethodSignature;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory.SimpleMethodSignature;
import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.tracer.GlobalTracer;
@@ -34,10 +34,10 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.overridesOrImplementsMethodThat;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_HIGH_LEVEL_FRAMEWORK;
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
diff --git a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/BaseJmsInstrumentation.java b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/BaseJmsInstrumentation.java
index c00dd98774..c32f17e7d2 100644
--- a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/BaseJmsInstrumentation.java
+++ b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/BaseJmsInstrumentation.java
@@ -28,7 +28,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageListenerInstrumentation.java b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageListenerInstrumentation.java
index cd56ae7bc3..9d5b70fe37 100644
--- a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageListenerInstrumentation.java
+++ b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageListenerInstrumentation.java
@@ -36,8 +36,8 @@
import javax.jms.Message;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
import static co.elastic.apm.agent.jms.JmsInstrumentationHelper.MESSAGING_TYPE;
import static co.elastic.apm.agent.jms.JmsInstrumentationHelper.RECEIVE_NAME_PREFIX;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
diff --git a/apm-agent-plugins/apm-jsf-plugin/src/main/java/co/elastic/apm/agent/jsf/AbstractJsfLifecycleInstrumentation.java b/apm-agent-plugins/apm-jsf-plugin/src/main/java/co/elastic/apm/agent/jsf/AbstractJsfLifecycleInstrumentation.java
index d6fe3470df..f4880d6adb 100644
--- a/apm-agent-plugins/apm-jsf-plugin/src/main/java/co/elastic/apm/agent/jsf/AbstractJsfLifecycleInstrumentation.java
+++ b/apm-agent-plugins/apm-jsf-plugin/src/main/java/co/elastic/apm/agent/jsf/AbstractJsfLifecycleInstrumentation.java
@@ -28,7 +28,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaInstrumentation.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaInstrumentation.java
index 46d78e2bd2..128462d190 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaInstrumentation.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaInstrumentation.java
@@ -26,7 +26,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaConsumerInstrumentation.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaConsumerInstrumentation.java
index 62af505ad4..3eb31ef0c4 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaConsumerInstrumentation.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaConsumerInstrumentation.java
@@ -28,7 +28,7 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaProducerInstrumentation.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaProducerInstrumentation.java
index 93acd70c30..951eb81e49 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaProducerInstrumentation.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-base-plugin/src/main/java/co/elastic/apm/agent/kafka/KafkaProducerInstrumentation.java
@@ -32,7 +32,7 @@
import javax.annotation.Nullable;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isPublic;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaHeadersInstrumentation.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaHeadersInstrumentation.java
index 06fa8763fb..532ae0f946 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaHeadersInstrumentation.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/BaseKafkaHeadersInstrumentation.java
@@ -20,7 +20,7 @@
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
public abstract class BaseKafkaHeadersInstrumentation extends BaseKafkaInstrumentation {
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/NewKafkaPollExitInstrumentation.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/NewKafkaPollExitInstrumentation.java
index 87d73d8b9e..a3c82b37b1 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/NewKafkaPollExitInstrumentation.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/NewKafkaPollExitInstrumentation.java
@@ -27,7 +27,7 @@
import javax.annotation.Nullable;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
/**
* An instrumentation for {@link org.apache.kafka.clients.consumer.KafkaConsumer#poll} exit on new clients
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLogManagerCorrelationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLogManagerCorrelationInstrumentation.java
index d125ac80c6..9d461d7f71 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLogManagerCorrelationInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLogManagerCorrelationInstrumentation.java
@@ -25,7 +25,7 @@
import net.bytebuddy.matcher.ElementMatcher;
import org.jboss.logmanager.ExtLogRecord;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLoggingCorrelationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLoggingCorrelationInstrumentation.java
index 34789487dc..48247074e3 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLoggingCorrelationInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-jboss-logging-plugin/src/main/java/co/elastic/apm/agent/jbosslogging/correlation/JBossLoggingCorrelationInstrumentation.java
@@ -24,7 +24,7 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/reformatting/Log4j1LogReformattingInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/reformatting/Log4j1LogReformattingInstrumentation.java
index 49e6f9e2a0..f9d6ea90da 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/reformatting/Log4j1LogReformattingInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/reformatting/Log4j1LogReformattingInstrumentation.java
@@ -25,7 +25,7 @@
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java
index 54238a9e7c..8be5a19d04 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java
@@ -28,7 +28,7 @@
import java.security.ProtectionDomain;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionGte;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/error/Log4j2LoggerErrorCapturingInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/error/Log4j2LoggerErrorCapturingInstrumentation.java
index b463f414a5..efc96e3748 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/error/Log4j2LoggerErrorCapturingInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/error/Log4j2LoggerErrorCapturingInstrumentation.java
@@ -24,8 +24,6 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import java.util.Collection;
-
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/reformatting/Log4j2EcsReformattingInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/reformatting/Log4j2EcsReformattingInstrumentation.java
index 72ff264074..bfa826113b 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/reformatting/Log4j2EcsReformattingInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/reformatting/Log4j2EcsReformattingInstrumentation.java
@@ -25,7 +25,7 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/reformatting/LogbackLogReformattingInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/reformatting/LogbackLogReformattingInstrumentation.java
index 898878e55c..6afdc60285 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/reformatting/LogbackLogReformattingInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/reformatting/LogbackLogReformattingInstrumentation.java
@@ -23,7 +23,7 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java
index 426d360962..db348a78fa 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.loginstr;
-import co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
import java.util.Arrays;
import java.util.Collection;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java b/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java
index 706fc005c5..885556c87f 100644
--- a/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java
@@ -39,7 +39,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
diff --git a/apm-agent-plugins/apm-quartz/apm-quartz-plugin-1/src/main/java/co/elastic/apm/agent/quartzjob/Quartz1JobTransactionNameInstrumentation.java b/apm-agent-plugins/apm-quartz/apm-quartz-plugin-1/src/main/java/co/elastic/apm/agent/quartzjob/Quartz1JobTransactionNameInstrumentation.java
index 35cc23a87a..6e72639865 100644
--- a/apm-agent-plugins/apm-quartz/apm-quartz-plugin-1/src/main/java/co/elastic/apm/agent/quartzjob/Quartz1JobTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-quartz/apm-quartz-plugin-1/src/main/java/co/elastic/apm/agent/quartzjob/Quartz1JobTransactionNameInstrumentation.java
@@ -18,8 +18,7 @@
*/
package co.elastic.apm.agent.quartzjob;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
-import co.elastic.apm.agent.impl.ElasticApmTracer;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
diff --git a/apm-agent-plugins/apm-quartz/apm-quartz-plugin-2/src/main/java/co/elastic/apm/agent/quartzjob/Quartz2JobTransactionNameInstrumentation.java b/apm-agent-plugins/apm-quartz/apm-quartz-plugin-2/src/main/java/co/elastic/apm/agent/quartzjob/Quartz2JobTransactionNameInstrumentation.java
index 37b3bf20cb..c73078ef92 100644
--- a/apm-agent-plugins/apm-quartz/apm-quartz-plugin-2/src/main/java/co/elastic/apm/agent/quartzjob/Quartz2JobTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-quartz/apm-quartz-plugin-2/src/main/java/co/elastic/apm/agent/quartzjob/Quartz2JobTransactionNameInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.quartzjob;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ChannelInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ChannelInstrumentation.java
index 35b904d28b..ddc551ca21 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ChannelInstrumentation.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ChannelInstrumentation.java
@@ -44,7 +44,7 @@
import java.util.HashMap;
import java.util.Map;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.implementation.bytecode.assign.Assigner.Typing.DYNAMIC;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java
index 3963422f33..914d20051d 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java
@@ -33,7 +33,7 @@
import javax.annotation.Nullable;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.any;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpMessageListenerInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpMessageListenerInstrumentation.java
index eeb51985bc..4de288a6d9 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpMessageListenerInstrumentation.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpMessageListenerInstrumentation.java
@@ -28,7 +28,7 @@
import javax.annotation.Nullable;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringBaseInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringBaseInstrumentation.java
index f49e7e87b8..7511edbb2f 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringBaseInstrumentation.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringBaseInstrumentation.java
@@ -26,7 +26,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.isInterface;
diff --git a/apm-agent-plugins/apm-redis-plugin/apm-jedis-4-plugin/src/main/java/co/elastic/apm/agent/jedis/Jedis4ConnectionInstrumentation.java b/apm-agent-plugins/apm-redis-plugin/apm-jedis-4-plugin/src/main/java/co/elastic/apm/agent/jedis/Jedis4ConnectionInstrumentation.java
index 443d75b9ff..c82e4bdf51 100644
--- a/apm-agent-plugins/apm-redis-plugin/apm-jedis-4-plugin/src/main/java/co/elastic/apm/agent/jedis/Jedis4ConnectionInstrumentation.java
+++ b/apm-agent-plugins/apm-redis-plugin/apm-jedis-4-plugin/src/main/java/co/elastic/apm/agent/jedis/Jedis4ConnectionInstrumentation.java
@@ -21,7 +21,7 @@
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-redis-plugin/apm-jedis-plugin/src/main/java/co/elastic/apm/agent/jedis/JedisConnectionInstrumentation.java b/apm-agent-plugins/apm-redis-plugin/apm-jedis-plugin/src/main/java/co/elastic/apm/agent/jedis/JedisConnectionInstrumentation.java
index 5299166271..0e9c20ef06 100644
--- a/apm-agent-plugins/apm-redis-plugin/apm-jedis-plugin/src/main/java/co/elastic/apm/agent/jedis/JedisConnectionInstrumentation.java
+++ b/apm-agent-plugins/apm-redis-plugin/apm-jedis-plugin/src/main/java/co/elastic/apm/agent/jedis/JedisConnectionInstrumentation.java
@@ -26,7 +26,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.nameEndsWith;
import static net.bytebuddy.matcher.ElementMatchers.named;
diff --git a/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce34Instrumentation.java b/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce34Instrumentation.java
index e9379c4537..14f1d555e7 100644
--- a/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce34Instrumentation.java
+++ b/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce34Instrumentation.java
@@ -29,7 +29,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
public abstract class Lettuce34Instrumentation extends ElasticApmInstrumentation {
diff --git a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java
index f1ad82e3e1..bc4b3c3b55 100644
--- a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.scheduled;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory.SimpleMethodSignature;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory.SimpleMethodSignature;
import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.logging.Logger;
@@ -40,8 +40,8 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
import static net.bytebuddy.matcher.ElementMatchers.declaresMethod;
import static net.bytebuddy.matcher.ElementMatchers.isAnnotatedWith;
import static net.bytebuddy.matcher.ElementMatchers.namedOneOf;
diff --git a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java
index d5c995e2ed..1bc5230964 100644
--- a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java
+++ b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.scheduled;
-import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
+import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.logging.Logger;
@@ -39,8 +39,8 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isInAnyPackage;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.isProxy;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isProxy;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperClass;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/Constants.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/Constants.java
index de00aacdad..addf631b4b 100644
--- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/Constants.java
+++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/Constants.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.servlet;
-import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers;
+import co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java
index 80de774b7b..96cde231c8 100644
--- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java
@@ -35,7 +35,7 @@
import java.util.Collection;
import java.util.Collections;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_HIGH_LEVEL_FRAMEWORK;
import static co.elastic.apm.agent.tracer.AbstractSpan.PRIORITY_LOW_LEVEL_FRAMEWORK;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java
index 419f72034d..8d3a9ec5dc 100644
--- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.springwebmvc;
-import co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
import java.util.Arrays;
import java.util.Collection;
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.bci.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
index 07cda17eee..320e75e1fb 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
@@ -24,7 +24,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
import static net.bytebuddy.matcher.ElementMatchers.not;
public abstract class Vertx3Instrumentation extends ElasticApmInstrumentation {
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
index 79a9b656ea..86e15ed0ec 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
@@ -24,7 +24,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
public abstract class Vertx4Instrumentation extends ElasticApmInstrumentation {
From c80561585af39bdf144a7e559c453c1962d7cf54 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 11:44:16 +0200
Subject: [PATCH 06/33] Refactor to service loader lookup and add test
implementations for SDK.
---
.../apm/agent/bci/ElasticApmAgent.java | 2 -
.../elastic/apm/agent/util/ExecutorUtils.java | 21 +-
.../agent/util/ExecutorUtilsProviderImpl.java | 25 +++
...k.util.ExecutorUtils$ExecutorUtilsProvider | 1 +
.../apm/agent/sdk/util/ExecutorUtils.java | 76 ++-----
.../util/ExecutorUtilsProviderTestImpl.java | 41 ++++
.../apm/agent/sdk/util/ExecutorUtilsTest.java | 17 ++
.../util/WeakConcurrentProviderTestImpl.java | 210 ++++++++++++++++++
...k.util.ExecutorUtils$ExecutorUtilsProvider | 1 +
...rent.WeakConcurrent$WeakConcurrentProvider | 1 +
10 files changed, 311 insertions(+), 84 deletions(-)
create mode 100644 apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
create mode 100644 apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
create mode 100644 apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
create mode 100644 apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
create mode 100644 apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java
create mode 100644 apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
create mode 100644 apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
index 9bb0b10bc5..e3ab17a536 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
@@ -176,7 +176,6 @@ private static void initInstrumentation(ElasticApmTracer tracer, Instrumentation
return;
}
GlobalTracer.init(tracer);
- ExecutorUtils.init();
// ensure classes can be instrumented before LifecycleListeners use them by starting the tracer after initializing instrumentation
initInstrumentation(tracer, instrumentation, loadInstrumentations(tracer), premain);
}
@@ -230,7 +229,6 @@ public boolean accept(File dir, String name) {
public static synchronized void initInstrumentation(final ElasticApmTracer tracer, Instrumentation instrumentation,
Iterable instrumentations) {
GlobalTracer.init(tracer);
- ExecutorUtils.init();
initInstrumentation(tracer, instrumentation, instrumentations, false);
}
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java
index c46beec022..db6aa6d58f 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java
@@ -39,7 +39,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
-public final class ExecutorUtils extends co.elastic.apm.agent.sdk.util.ExecutorUtils {
+public final class ExecutorUtils {
private static final Logger logger = LoggerFactory.getLogger(ExecutorUtils.class);
@@ -51,25 +51,6 @@ public final class ExecutorUtils extends co.elastic.apm.agent.sdk.util.ExecutorU
private ExecutorUtils() {
}
- public static void init() {
- co.elastic.apm.agent.sdk.util.ExecutorUtils.init(new ExecutorUtils());
- }
-
- @Override
- protected ScheduledExecutorService doCreateSingleThreadSchedulingDaemonPool(String threadPurpose) {
- return createSingleThreadSchedulingDaemonPool(threadPurpose);
- }
-
- @Override
- protected boolean doIsAgentExecutor(Executor executor) {
- return isAgentExecutor(executor);
- }
-
- @Override
- protected void doShutdownAndWaitTermination(ExecutorService executor) {
- shutdownAndWaitTermination(executor);
- }
-
public static ScheduledThreadPoolExecutor createSingleThreadSchedulingDaemonPool(final String threadPurpose) {
final SingleNamedThreadFactory daemonThreadFactory = new SingleNamedThreadFactory(threadPurpose);
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1, daemonThreadFactory) {
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
new file mode 100644
index 0000000000..764bb4c9ff
--- /dev/null
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
@@ -0,0 +1,25 @@
+package co.elastic.apm.agent.util;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
+
+import static co.elastic.apm.agent.sdk.util.ExecutorUtils.*;
+
+public class ExecutorUtilsProviderImpl implements ExecutorUtilsProvider {
+
+ @Override
+ public boolean isAgentExecutor(Executor executor) {
+ return ExecutorUtils.isAgentExecutor(executor);
+ }
+
+ @Override
+ public ScheduledExecutorService createSingleThreadSchedulingDaemonPool(String threadPurpose) {
+ return ExecutorUtils.createSingleThreadSchedulingDaemonPool(threadPurpose);
+ }
+
+ @Override
+ public void shutdownAndWaitTermination(ExecutorService executor) {
+ ExecutorUtils.shutdownAndWaitTermination(executor);
+ }
+}
diff --git a/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider b/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
new file mode 100644
index 0000000000..8be7d4b366
--- /dev/null
+++ b/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
@@ -0,0 +1 @@
+co.elastic.apm.agent.util.ExecutorUtilsProviderImpl
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
index a8e5d39fbb..572ec87642 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
@@ -18,87 +18,39 @@
*/
package co.elastic.apm.agent.sdk.util;
-import javax.annotation.Nullable;
+import co.elastic.apm.agent.sdk.internal.InternalUtil;
+
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-public abstract class ExecutorUtils {
+public final class ExecutorUtils {
+
+ private static final ExecutorUtilsProvider supplier;
- @Nullable
- private static ExecutorUtils instance;
- public static void init(ExecutorUtils instance) {
- ExecutorUtils.instance = instance;
+ static {
+ supplier = InternalUtil.getServiceProvider(ExecutorUtilsProvider.class);
}
public static ScheduledExecutorService createSingleThreadSchedulingDaemonPool(final String threadPurpose) {
- ExecutorUtils instance = ExecutorUtils.instance;
- if (instance == null) {
- return new NamedScheduledThreadPoolExecutor(threadPurpose);
- } else {
- return instance.doCreateSingleThreadSchedulingDaemonPool(threadPurpose);
- }
+ return supplier.createSingleThreadSchedulingDaemonPool(threadPurpose);
}
-
- protected abstract ScheduledExecutorService doCreateSingleThreadSchedulingDaemonPool(final String threadPurpose);
-
public static boolean isAgentExecutor(Executor executor) {
- ExecutorUtils instance = ExecutorUtils.instance;
- if (instance == null) {
- return executor instanceof NamedScheduledThreadPoolExecutor;
- } else {
- return instance.doIsAgentExecutor(executor);
- }
+ return supplier.isAgentExecutor(executor);
}
- protected abstract boolean doIsAgentExecutor(Executor executor);
-
public static void shutdownAndWaitTermination(ExecutorService executor) {
- ExecutorUtils instance = ExecutorUtils.instance;
- if (instance == null) {
- executor.shutdown();
- try {
- if (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
- executor.shutdownNow();
- if (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
- throw new IllegalStateException();
- }
- }
- } catch (InterruptedException e) {
- throw new IllegalStateException(e);
- }
- } else {
- instance.doShutdownAndWaitTermination(executor);
- }
+ supplier.shutdownAndWaitTermination(executor);
}
- protected abstract void doShutdownAndWaitTermination(ExecutorService executor);
-
- private static class NamedScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor {
+ public interface ExecutorUtilsProvider {
- private final String threadPurpose;
+ boolean isAgentExecutor(Executor executor);
- public NamedScheduledThreadPoolExecutor(final String threadPurpose) {
- super(1, new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- Thread thread = new Thread(r);
- thread.setName("executor-util-" + threadPurpose);
- thread.setDaemon(true);
- return thread;
- }
- });
- this.threadPurpose = threadPurpose;
- }
+ ScheduledExecutorService createSingleThreadSchedulingDaemonPool(String threadPurpose);
- @Override
- public String toString() {
- return super.toString() + "(thread name = " + threadPurpose + ")";
- }
+ void shutdownAndWaitTermination(ExecutorService executor);
}
}
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
new file mode 100644
index 0000000000..738ddbe3ef
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
@@ -0,0 +1,41 @@
+package co.elastic.apm.agent.sdk.util;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import static co.elastic.apm.agent.sdk.util.ExecutorUtils.ExecutorUtilsProvider;
+
+public class ExecutorUtilsProviderTestImpl implements ExecutorUtilsProvider {
+
+ @Override
+ public boolean isAgentExecutor(Executor executor) {
+ return executor instanceof SimpleScheduledThreadPoolExecutor;
+ }
+
+ @Override
+ public ScheduledExecutorService createSingleThreadSchedulingDaemonPool(String threadPurpose) {
+ return new SimpleScheduledThreadPoolExecutor();
+ }
+
+ @Override
+ public void shutdownAndWaitTermination(ExecutorService executor) {
+ executor.shutdown();
+ try {
+ if (!executor.awaitTermination(1, TimeUnit.SECONDS)) {
+ throw new IllegalStateException();
+ }
+ } catch (InterruptedException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ private static class SimpleScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor {
+
+ private SimpleScheduledThreadPoolExecutor() {
+ super(1);
+ }
+ }
+}
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
new file mode 100644
index 0000000000..4b166371ca
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
@@ -0,0 +1,17 @@
+package co.elastic.apm.agent.sdk.util;
+
+import org.junit.jupiter.api.Test;
+
+import java.util.concurrent.ScheduledExecutorService;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ExecutorUtilsTest {
+
+ @Test
+ void createsAndShutsDownExecutor() {
+ ScheduledExecutorService service = ExecutorUtils.createSingleThreadSchedulingDaemonPool("purpose");
+ assertThat(ExecutorUtils.isAgentExecutor(service)).isTrue();
+ ExecutorUtils.shutdownAndWaitTermination(service);
+ }
+}
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java
new file mode 100644
index 0000000000..23ca2f1875
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java
@@ -0,0 +1,210 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package co.elastic.apm.agent.sdk.util;
+
+import co.elastic.apm.agent.sdk.weakconcurrent.DetachedThreadLocal;
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakSet;
+
+import javax.annotation.Nullable;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+public class WeakConcurrentProviderTestImpl implements WeakConcurrent.WeakConcurrentProvider {
+ @Override
+ public WeakConcurrent.WeakMapBuilder weakMapBuilder() {
+
+ return new WeakConcurrent.WeakMapBuilder() {
+
+ @Nullable
+ private WeakMap.DefaultValueSupplier defaultValueSupplier;
+
+ @Override
+ public WeakConcurrent.WeakMapBuilder withInitialCapacity(int initialCapacity) {
+ return this;
+ }
+
+ @Override
+ public WeakConcurrent.WeakMapBuilder withDefaultValueSupplier(@Nullable WeakMap.DefaultValueSupplier defaultValueSupplier) {
+ this.defaultValueSupplier = defaultValueSupplier;
+ return this;
+ }
+
+ @Override
+ public WeakMap build() {
+ return new NonWeakMap<>(defaultValueSupplier);
+ }
+ };
+ }
+
+ @Override
+ public WeakConcurrent.ThreadLocalBuilder threadLocalBuilder() {
+ return new WeakConcurrent.ThreadLocalBuilder() {
+
+ @Nullable
+ private WeakMap.DefaultValueSupplier defaultValueSupplier;
+
+ @Override
+ public WeakConcurrent.ThreadLocalBuilder withDefaultValueSupplier(@Nullable WeakMap.DefaultValueSupplier defaultValueSupplier) {
+ this.defaultValueSupplier = defaultValueSupplier;
+ return this;
+ }
+
+ @Override
+ public DetachedThreadLocal build() {
+ return new NonDetachedThreadLocal<>(defaultValueSupplier);
+ }
+ };
+ }
+
+ @Override
+ public WeakSet buildSet() {
+ return new NonWeakSet<>();
+ }
+
+ static class NonWeakMap implements WeakMap {
+
+ private final ConcurrentMap delegate = new ConcurrentHashMap<>();
+
+ @Nullable
+ private final DefaultValueSupplier defaultValueSupplier;
+
+ public NonWeakMap(@Nullable DefaultValueSupplier defaultValueSupplier) {
+ this.defaultValueSupplier = defaultValueSupplier;
+ }
+
+ @Nullable
+ @Override
+ public V get(K key) {
+ V value = delegate.get(key);
+ if (value == null && defaultValueSupplier != null) {
+ value = defaultValueSupplier.getDefaultValue(key);
+ delegate.put(key, value);
+ }
+ return value;
+ }
+
+ @Nullable
+ @Override
+ public V put(K key, V value) {
+ return delegate.put(key, value);
+ }
+
+ @Nullable
+ @Override
+ public V remove(K key) {
+ return delegate.remove(key);
+ }
+
+ @Override
+ public boolean containsKey(K process) {
+ return delegate.containsKey(process);
+ }
+
+ @Override
+ public void clear() {
+ delegate.clear();
+ }
+
+ @Nullable
+ @Override
+ public V putIfAbsent(K key, V value) {
+ return delegate.putIfAbsent(key, value);
+ }
+
+ @Override
+ public int approximateSize() {
+ return delegate.size();
+ }
+
+ @Override
+ public Iterator> iterator() {
+ return delegate.entrySet().iterator();
+ }
+ }
+
+ static class NonDetachedThreadLocal implements DetachedThreadLocal {
+
+ private final ThreadLocal delegate;
+
+ public NonDetachedThreadLocal(@Nullable WeakMap.DefaultValueSupplier defaultValueSupplier) {
+ this.delegate = new ThreadLocal<>() {
+ @Override
+ @Nullable
+ protected T initialValue() {
+ return defaultValueSupplier == null ? null : defaultValueSupplier.getDefaultValue(Thread.currentThread());
+ }
+ };
+ }
+
+ @Nullable
+ @Override
+ public T get() {
+ return delegate.get();
+ }
+
+ @Nullable
+ @Override
+ public T getAndRemove() {
+ T value = delegate.get();
+ delegate.remove();
+ return value;
+ }
+
+ @Override
+ public void set(T value) {
+ delegate.set(value);
+ }
+
+ @Override
+ public void remove() {
+ delegate.remove();
+ }
+ }
+
+ static class NonWeakSet implements WeakSet {
+
+ private final Set delegate = new HashSet<>();
+
+ @Override
+ public boolean add(K element) {
+ return delegate.add(element);
+ }
+
+ @Override
+ public boolean contains(K element) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(K element) {
+ return delegate.remove(element);
+ }
+
+ @Override
+ public Iterator iterator() {
+ return delegate.iterator();
+ }
+ }
+}
diff --git a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
new file mode 100644
index 0000000000..6b72c0e31e
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
@@ -0,0 +1 @@
+co.elastic.apm.agent.sdk.util.ExecutorUtilsProviderTestImpl
diff --git a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider
new file mode 100644
index 0000000000..b39c187d86
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider
@@ -0,0 +1 @@
+co.elastic.apm.agent.sdk.util.WeakConcurrentProviderTestImpl
From 88ed3f04d1028caf317b8b3398e5d64e38410cdc Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 11:47:29 +0200
Subject: [PATCH 07/33] Fix import.
---
.../opentelemetry/AbstractOpenTelemetryInstrumentation.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java
index 0824216642..332eda3ecf 100644
--- a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java
+++ b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java
@@ -18,18 +18,19 @@
*/
package co.elastic.apm.agent.opentelemetry;
-import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import net.bytebuddy.matcher.ElementMatcher;
import java.util.Arrays;
import java.util.Collection;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
+
public abstract class AbstractOpenTelemetryInstrumentation extends ElasticApmInstrumentation {
@Override
public final ElementMatcher.Junction getClassLoaderMatcher() {
- return CustomElementMatchers.classLoaderCanLoadClass("io.opentelemetry.context.propagation.TextMapSetter");
+ return classLoaderCanLoadClass("io.opentelemetry.context.propagation.TextMapSetter");
}
@Override
From 5f507a7970933867b7b0779d2b84b5ad5df85749 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 13:56:33 +0200
Subject: [PATCH 08/33] Add tracer.
---
.../apm/agent/pluginapi/CaptureSpanInstrumentation.java | 2 +-
.../agent/pluginapi/CaptureTransactionInstrumentation.java | 2 +-
.../co/elastic/apm/agent/pluginapi/TracedInstrumentation.java | 2 +-
.../esrestclient/ElasticsearchRestClientInstrumentation.java | 2 +-
.../agent/loginstr/AbstractLogIntegrationInstrumentation.java | 2 +-
.../apm/agent/servlet/AbstractServletInstrumentation.java | 2 +-
.../co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java | 4 ++++
7 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java
index a92af013ed..43e4595aa9 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureSpanInstrumentation.java
@@ -55,7 +55,7 @@ public class CaptureSpanInstrumentation extends ElasticApmInstrumentation {
public static final Logger logger = LoggerFactory.getLogger(CaptureSpanInstrumentation.class);
- public static final Tracer tracer = GlobalTracer.get();
+ protected static final Tracer tracer = GlobalTracer.get();
private final CoreConfiguration coreConfig;
private final StacktraceConfiguration stacktraceConfig;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
index bce896d084..19bacf9bcc 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
@@ -57,7 +57,7 @@
public class CaptureTransactionInstrumentation extends ElasticApmInstrumentation {
- public static final Tracer tracer = GlobalTracer.get();
+ protected static final Tracer tracer = GlobalTracer.get();
public static final Logger logger = LoggerFactory.getLogger(CaptureTransactionInstrumentation.class);
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
index 62360ad75f..b9fa294660 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
@@ -59,7 +59,7 @@
public class TracedInstrumentation extends ElasticApmInstrumentation {
- public static final Tracer tracer = GlobalTracer.get();
+ protected static final Tracer tracer = GlobalTracer.get();
public static final Logger logger = LoggerFactory.getLogger(TracedInstrumentation.class);
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java
index 747ccf703e..4c54b64108 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentation.java
@@ -28,7 +28,7 @@
public abstract class ElasticsearchRestClientInstrumentation extends ElasticApmInstrumentation {
- public static final Tracer tracer = GlobalTracer.get();
+ protected static final Tracer tracer = GlobalTracer.get();
@Override
public Collection getInstrumentationGroupNames() {
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/AbstractLogIntegrationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/AbstractLogIntegrationInstrumentation.java
index bcebcb983b..cf8d1ea50a 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/AbstractLogIntegrationInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/AbstractLogIntegrationInstrumentation.java
@@ -32,7 +32,7 @@ public abstract class AbstractLogIntegrationInstrumentation extends ElasticApmIn
protected static String LOG_REFORMATTING = "log-reformatting";
protected static String LOG_ERROR = "log-error";
- public static final Tracer tracer = GlobalTracer.get();
+ protected static final Tracer tracer = GlobalTracer.get();
@Override
public Collection getInstrumentationGroupNames() {
diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java
index d9a7f6c278..745f6bc6e9 100644
--- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java
+++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/AbstractServletInstrumentation.java
@@ -29,7 +29,7 @@
public abstract class AbstractServletInstrumentation extends ElasticApmInstrumentation {
- public static final Tracer tracer = GlobalTracer.get();
+ protected static final Tracer tracer = GlobalTracer.get();
@Override
public Collection getInstrumentationGroupNames() {
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
index 320e75e1fb..7a5f86cb53 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/src/main/java/co/elastic/apm/agent/vertx/v3/Vertx3Instrumentation.java
@@ -19,6 +19,8 @@
package co.elastic.apm.agent.vertx.v3;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
+import co.elastic.apm.agent.tracer.GlobalTracer;
+import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.matcher.ElementMatcher;
import java.util.Arrays;
@@ -29,6 +31,8 @@
public abstract class Vertx3Instrumentation extends ElasticApmInstrumentation {
+ protected static final Tracer tracer = GlobalTracer.get();
+
@Override
public Collection getInstrumentationGroupNames() {
return Arrays.asList("vertx", "experimental");
From 190ff785980a69cb21f6c7be5c549e0db5ff36ec Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 14:00:34 +0200
Subject: [PATCH 09/33] Add tracer.
---
.../co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
index 86e15ed0ec..d91a6092dd 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/src/main/java/co/elastic/apm/agent/vertx/v4/Vertx4Instrumentation.java
@@ -19,6 +19,8 @@
package co.elastic.apm.agent.vertx.v4;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
+import co.elastic.apm.agent.tracer.GlobalTracer;
+import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.matcher.ElementMatcher;
import java.util.Arrays;
@@ -28,6 +30,8 @@
public abstract class Vertx4Instrumentation extends ElasticApmInstrumentation {
+ protected static final Tracer tracer = GlobalTracer.get();
+
@Override
public Collection getInstrumentationGroupNames() {
return Arrays.asList("vertx", "experimental");
From f38009c4da58a22fb13105ddc40fd4884e7101b8 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 14:13:03 +0200
Subject: [PATCH 10/33] Move soft value loading cache.
---
.../elastic/apm/agent/cache/package-info.java | 22 -------------------
.../WeakKeySoftValueLoadingCache.java | 4 +---
.../WeakKeySoftValueLoadingCacheTest.java | 3 ++-
.../AbstractEcsReformattingHelper.java | 3 +--
.../springwebflux/WebfluxServletHelper.java | 2 +-
5 files changed, 5 insertions(+), 29 deletions(-)
delete mode 100644 apm-agent-core/src/main/java/co/elastic/apm/agent/cache/package-info.java
rename {apm-agent-core/src/main/java/co/elastic/apm/agent/cache => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/weakconcurrent}/WeakKeySoftValueLoadingCache.java (97%)
rename {apm-agent-core/src/test/java/co/elastic/apm/agent/cache => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/weakconcurrent}/WeakKeySoftValueLoadingCacheTest.java (91%)
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/cache/package-info.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/cache/package-info.java
deleted file mode 100644
index 887e6675be..0000000000
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/cache/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to Elasticsearch B.V. under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch B.V. licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-@NonnullApi
-package co.elastic.apm.agent.cache;
-
-import co.elastic.apm.agent.sdk.NonnullApi;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/cache/WeakKeySoftValueLoadingCache.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/weakconcurrent/WeakKeySoftValueLoadingCache.java
similarity index 97%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/cache/WeakKeySoftValueLoadingCache.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/weakconcurrent/WeakKeySoftValueLoadingCache.java
index fac4621b00..3f38fa4409 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/cache/WeakKeySoftValueLoadingCache.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/weakconcurrent/WeakKeySoftValueLoadingCache.java
@@ -16,10 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.cache;
+package co.elastic.apm.agent.sdk.weakconcurrent;
-import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
-import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/cache/WeakKeySoftValueLoadingCacheTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/weakconcurrent/WeakKeySoftValueLoadingCacheTest.java
similarity index 91%
rename from apm-agent-core/src/test/java/co/elastic/apm/agent/cache/WeakKeySoftValueLoadingCacheTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/weakconcurrent/WeakKeySoftValueLoadingCacheTest.java
index 3582f1c474..80ad50320b 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/cache/WeakKeySoftValueLoadingCacheTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/weakconcurrent/WeakKeySoftValueLoadingCacheTest.java
@@ -16,8 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.cache;
+package co.elastic.apm.agent.sdk.weakconcurrent;
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakKeySoftValueLoadingCache;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/reformatting/AbstractEcsReformattingHelper.java b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/reformatting/AbstractEcsReformattingHelper.java
index e506dbb263..75af126a95 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/reformatting/AbstractEcsReformattingHelper.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/reformatting/AbstractEcsReformattingHelper.java
@@ -18,7 +18,6 @@
*/
package co.elastic.apm.agent.loginstr.reformatting;
-import co.elastic.apm.agent.collections.DetachedThreadLocalImpl;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.impl.metadata.Service;
@@ -148,7 +147,7 @@ public abstract class AbstractEcsReformattingHelper {
* This state is set at the beginning of {@link #onAppendEnter(Object)} and cleared at the end of {@link #onAppendExit(Object, Object)}.
* This ensures consistency during the entire handling of each log events and guarantees that each log event is being
* logged exactly once.
- * No need to use {@link DetachedThreadLocalImpl} because we already annotate the class
+ * No need to use {@link co.elastic.apm.agent.sdk.weakconcurrent.DetachedThreadLocal} because we already annotate the class
* with {@link GlobalState}.
*/
private static final ThreadLocal configForCurrentLogEvent = new ThreadLocal<>();
diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxServletHelper.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxServletHelper.java
index 9326b0b7be..cc525a7f3a 100644
--- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxServletHelper.java
+++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxServletHelper.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.springwebflux;
-import co.elastic.apm.agent.cache.WeakKeySoftValueLoadingCache;
+import co.elastic.apm.agent.sdk.weakconcurrent.WeakKeySoftValueLoadingCache;
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
From 5218e6869864c498c66022e0dab6dcc2e91562e1 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 14:17:28 +0200
Subject: [PATCH 11/33] Move long list.
---
.../co/elastic/apm/agent/impl/transaction/AbstractSpan.java | 2 +-
.../elastic/apm/agent/report/serialize/DslJsonSerializer.java | 2 +-
.../apm/agent/report/serialize/DslJsonSerializerTest.java | 2 +-
.../java/co/elastic/apm/agent/sdk}/collections/LongList.java | 2 +-
.../co/elastic/apm/agent/sdk}/collections/LongListTest.java | 2 +-
.../src/main/java/co/elastic/apm/agent/profiler/CallTree.java | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/collections/LongList.java (98%)
rename {apm-agent-core/src/test/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk}/collections/LongListTest.java (99%)
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java
index 251c34b06f..933a549c9f 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.impl.transaction;
-import co.elastic.apm.agent.collections.LongList;
+import co.elastic.apm.agent.sdk.collections.LongList;
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.context.AbstractContext;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java
index 3554320613..18123db1f2 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.report.serialize;
-import co.elastic.apm.agent.collections.LongList;
+import co.elastic.apm.agent.sdk.collections.LongList;
import co.elastic.apm.agent.impl.context.AbstractContext;
import co.elastic.apm.agent.impl.context.CloudOrigin;
import co.elastic.apm.agent.impl.context.Db;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java
index f62b49b73a..f0fdf9bae5 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java
+++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.MockReporter;
import co.elastic.apm.agent.MockTracer;
-import co.elastic.apm.agent.collections.LongList;
+import co.elastic.apm.agent.sdk.collections.LongList;
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.configuration.ServerlessConfiguration;
import co.elastic.apm.agent.configuration.SpyConfiguration;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/collections/LongList.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/LongList.java
similarity index 98%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/collections/LongList.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/LongList.java
index 59bdb110e8..97085333d9 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/collections/LongList.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/LongList.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.collections;
+package co.elastic.apm.agent.sdk.collections;
import java.util.Arrays;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/collections/LongListTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/collections/LongListTest.java
similarity index 99%
rename from apm-agent-core/src/test/java/co/elastic/apm/agent/collections/LongListTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/collections/LongListTest.java
index ad0961f852..6adf679da6 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/collections/LongListTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/collections/LongListTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.collections;
+package co.elastic.apm.agent.sdk.collections;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java b/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java
index 95fe7f414a..65938fd8f8 100644
--- a/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java
+++ b/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.profiler;
-import co.elastic.apm.agent.collections.LongList;
+import co.elastic.apm.agent.sdk.collections.LongList;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.transaction.Span;
import co.elastic.apm.agent.impl.transaction.StackFrame;
From 95e341427a656a46319d1c4f37c9701ae32797e3 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 14:56:36 +0200
Subject: [PATCH 12/33] Add minimal Version implemention to implement matchers.
---
.../bci/bytebuddy/CustomElementMatchers.java | 141 +-----------------
.../bytebuddy/CustomElementMatchersTest.java | 76 ----------
apm-agent-plugin-sdk/pom.xml | 6 +
.../sdk/bytebuddy/CustomElementMatchers.java | 124 +++++++++++++++
.../apm/agent/sdk/bytebuddy/Version.java | 69 +++++++++
.../bytebuddy/CustomElementMatchersTest.java | 49 ++++++
...ttpAsyncClientRedirectInstrumentation.java | 2 +-
.../Log4j2LogCorrelationInstrumentation.java | 2 +-
.../mongodb/v3/Mongo3Instrumentation.java | 2 +-
.../mongodb/v4/Mongo4Instrumentation.java | 2 +-
10 files changed, 253 insertions(+), 220 deletions(-)
delete mode 100644 apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java
create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/Version.java
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
index a0be929cdc..eb8f3dede2 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
@@ -18,43 +18,18 @@
*/
package co.elastic.apm.agent.bci.bytebuddy;
-import co.elastic.apm.agent.matcher.AnnotationMatcher;
import co.elastic.apm.agent.common.util.WildcardMatcher;
-import co.elastic.apm.agent.sdk.bytebuddy.MethodHierarchyMatcher;
-import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
-import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
+import co.elastic.apm.agent.matcher.AnnotationMatcher;
import co.elastic.apm.agent.util.ClassLoaderUtils;
-import co.elastic.apm.agent.common.util.Version;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.annotation.AnnotationSource;
-import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import co.elastic.apm.agent.sdk.logging.Logger;
-import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import javax.annotation.Nullable;
-import java.io.File;
-import java.io.IOException;
-import java.net.JarURLConnection;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.CodeSource;
-import java.security.ProtectionDomain;
-import java.util.Collection;
import java.util.List;
-import java.util.jar.Attributes;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-
-import static net.bytebuddy.matcher.ElementMatchers.nameContains;
-import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
-import static net.bytebuddy.matcher.ElementMatchers.none;
public class CustomElementMatchers {
- private static final Logger logger = LoggerFactory.getLogger(CustomElementMatchers.class);
-
private static final ElementMatcher.Junction.AbstractBase AGENT_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() {
@Override
public boolean matches(@Nullable ClassLoader classLoader) {
@@ -86,55 +61,6 @@ public boolean matches(@Nullable ClassLoader target) {
};
}
- /**
- * A matcher that checks whether the implementation version read from the MANIFEST.MF related for a given {@link ProtectionDomain} is
- * lower than or equals to the limit version. Assumes a SemVer version format.
- *
- * @param version the version to check against
- * @return an LTE SemVer matcher
- */
- public static ElementMatcher.Junction implementationVersionLte(final String version) {
- return implementationVersion(version, Matcher.LTE);
- }
-
- public static ElementMatcher.Junction implementationVersionGte(final String version) {
- return implementationVersion(version, Matcher.GTE);
- }
-
- private static ElementMatcher.Junction implementationVersion(final String version, final Matcher matcher) {
- return new ElementMatcher.Junction.AbstractBase() {
- /**
- * Returns true if the implementation version read from the manifest file referenced by the given
- * {@link ProtectionDomain} is lower than or equal to the version set to this matcher
- *
- * @param protectionDomain a {@link ProtectionDomain} from which to look for the manifest file
- * @return true if version parsed from the manifest file is lower than or equals to the matcher's version
- *
- * NOTE: MAY RETURN FALSE POSITIVES - returns true if matching fails, logging a warning message
- */
- @Override
- public boolean matches(@Nullable ProtectionDomain protectionDomain) {
- try {
- Version pdVersion = readImplementationVersionFromManifest(protectionDomain);
- Version limitVersion = Version.of(version).withoutSuffix();
- if (pdVersion != null) {
- pdVersion = pdVersion
- // ignore suffixes to ensure that 4.5.13.redhat = 4.5.13
- // however, this implies that we'll match 4.5.13-SNAPSHOT = 4.5.13
- // which is not entirely correct as the snapshot may not have all the changes that are in the final version
- .withoutSuffix();
- return matcher.match(pdVersion, limitVersion);
- }
- } catch (Exception e) {
- logger.info("Cannot read implementation version based on ProtectionDomain. This should not affect " +
- "your agent's functionality. Failed with message: " + e.getMessage());
- logger.debug("Implementation version parsing error: " + protectionDomain, e);
- }
- return true;
- }
- };
- }
-
public static ElementMatcher.Junction isAgentClassLoader() {
return AGENT_CLASS_LOADER_MATCHER;
}
@@ -143,71 +69,6 @@ public static ElementMatcher.Junction isInternalPluginClassLoader()
return INTERNAL_PLUGIN_CLASS_LOADER_MATCHER;
}
- private enum Matcher {
- LTE {
- @Override
- > boolean match(T c1, T c2) {
- return c1.compareTo(c2) <= 0;
- }
- },
- GTE {
- @Override
- > boolean match(T c1, T c2) {
- return c1.compareTo(c2) >= 0;
-
- }
- };
-
- abstract > boolean match(T c1, T c2);
- }
-
- @Nullable
- private static Version readImplementationVersionFromManifest(@Nullable ProtectionDomain protectionDomain) throws IOException, URISyntaxException {
- Version version = null;
- JarFile jarFile = null;
- try {
- if (protectionDomain != null) {
- CodeSource codeSource = protectionDomain.getCodeSource();
- if (codeSource != null) {
- URL jarUrl = codeSource.getLocation();
- if (jarUrl != null) {
- // does not yet establish an actual connection
- URLConnection urlConnection = jarUrl.openConnection();
- if (urlConnection instanceof JarURLConnection) {
- jarFile = ((JarURLConnection) urlConnection).getJarFile();
- } else {
- jarFile = new JarFile(new File(jarUrl.toURI()));
- }
- Manifest manifest = jarFile.getManifest();
- if (manifest != null) {
- Attributes attributes = manifest.getMainAttributes();
- String manifestVersion = attributes.getValue("Implementation-Version");
- if (manifestVersion == null) {
- // fallback on OSGI bundle version when impl. version not available
- manifestVersion = attributes.getValue("Bundle-Version");
- }
- if (manifestVersion != null) {
- version = Version.of(manifestVersion);
- }
-
- }
- }
- }
- } else {
- logger.info("Cannot read implementation version - got null ProtectionDomain");
- }
- } finally {
- if (jarFile != null) {
- try {
- jarFile.close();
- } catch (IOException e) {
- logger.error("Error closing JarFile", e);
- }
- }
- }
- return version;
- }
-
public static ElementMatcher.Junction matches(final WildcardMatcher matcher) {
return new ElementMatcher.Junction.AbstractBase() {
@Override
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java
deleted file mode 100644
index ea200bb949..0000000000
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchersTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to Elasticsearch B.V. under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch B.V. licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package co.elastic.apm.agent.bci.bytebuddy;
-
-import org.apache.http.client.HttpClient;
-import org.junit.jupiter.api.Test;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.security.CodeSigner;
-import java.security.CodeSource;
-import java.security.ProtectionDomain;
-
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionLte;
-import static org.assertj.core.api.Assertions.assertThat;
-
-class CustomElementMatchersTest {
-
- @Test
- void testSemVerLteWithFileUrl() {
- // Relying on Apache httpclient-4.5.6.jar
- testSemVerLteMatcher(HttpClient.class.getProtectionDomain());
- }
-
- @Test
- void testSemVerLteWithJarFileUrl() throws MalformedURLException {
- URL originalUrl = HttpClient.class.getProtectionDomain().getCodeSource().getLocation();
- URL jarFileUrl = new URL("jar:" + originalUrl.toString() + "!/");
- testSemVerLteMatcher(new ProtectionDomain(new CodeSource(jarFileUrl, new CodeSigner[0]), null));
- }
-
- @Test
- void testSemVerLteWithEncodedFileUrl() throws MalformedURLException, URISyntaxException {
- String jarFileUrl = new File("src/test/resources/lib/version##2/test-module.jar").toURI().toASCIIString();
- System.out.println("Encoded Jar file URL = " + jarFileUrl);
- ProtectionDomain protectionDomain = new ProtectionDomain(new CodeSource(new URL(jarFileUrl), new CodeSigner[0]), null);
- assertThat(implementationVersionLte("2").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("3").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("2.1.8").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("2.1.9").matches(protectionDomain)).isTrue();
- }
-
- private void testSemVerLteMatcher(ProtectionDomain protectionDomain) {
- assertThat(implementationVersionLte("3").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("3.2").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("3.15.10").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("4.2.19").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("4.5.5").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("4.5.6").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("4.5.5-SNAPSHOT").matches(protectionDomain)).isFalse();
- assertThat(implementationVersionLte("4.5.6-SNAPSHOT").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("4.5.7").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("4.7.3").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("5.7.3").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("5.0").matches(protectionDomain)).isTrue();
- assertThat(implementationVersionLte("5").matches(protectionDomain)).isTrue();
- }
-}
diff --git a/apm-agent-plugin-sdk/pom.xml b/apm-agent-plugin-sdk/pom.xml
index 893bff8ce2..f4d3f1ef58 100644
--- a/apm-agent-plugin-sdk/pom.xml
+++ b/apm-agent-plugin-sdk/pom.xml
@@ -25,6 +25,12 @@
net.bytebuddybyte-buddy-dep
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.6
+ test
+
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
index 0965e4fb25..cc2b55ece3 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
@@ -18,6 +18,8 @@
*/
package co.elastic.apm.agent.sdk.bytebuddy;
+import co.elastic.apm.agent.sdk.logging.Logger;
+import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
import net.bytebuddy.description.NamedElement;
@@ -25,8 +27,19 @@
import net.bytebuddy.matcher.ElementMatcher;
import javax.annotation.Nullable;
+import java.io.File;
+import java.io.IOException;
+import java.net.JarURLConnection;
+import java.net.URISyntaxException;
import java.net.URL;
+import java.net.URLConnection;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
import java.util.Collection;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.regex.Matcher;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
@@ -34,6 +47,8 @@
public class CustomElementMatchers {
+ private static final Logger logger = LoggerFactory.getLogger(CustomElementMatchers.class);
+
public static ElementMatcher.Junction isInAnyPackage(Collection includedPackages,
ElementMatcher.Junction defaultIfEmpty) {
if (includedPackages.isEmpty()) {
@@ -128,4 +143,113 @@ public static ElementMatcher.Junction isProxy() {
.or(nameContains("CGLIB"))
.or(nameContains("EnhancerBy"));
}
+
+ /**
+ * A matcher that checks whether the implementation version read from the MANIFEST.MF related for a given {@link ProtectionDomain} is
+ * lower than or equals to the limit version. Assumes a SemVer version format.
+ *
+ * @param version the version to check against
+ * @return an LTE SemVer matcher
+ */
+ public static ElementMatcher.Junction implementationVersionLte(final String version) {
+ return implementationVersion(version, Matcher.LTE);
+ }
+
+ public static ElementMatcher.Junction implementationVersionGte(final String version) {
+ return implementationVersion(version, Matcher.GTE);
+ }
+
+ private static ElementMatcher.Junction implementationVersion(final String version, final Matcher matcher) {
+ return new ElementMatcher.Junction.AbstractBase() {
+ /**
+ * Returns true if the implementation version read from the manifest file referenced by the given
+ * {@link ProtectionDomain} is lower than or equal to the version set to this matcher
+ *
+ * @param protectionDomain a {@link ProtectionDomain} from which to look for the manifest file
+ * @return true if version parsed from the manifest file is lower than or equals to the matcher's version
+ *
+ * NOTE: MAY RETURN FALSE POSITIVES - returns true if matching fails, logging a warning message
+ */
+ @Override
+ public boolean matches(@Nullable ProtectionDomain protectionDomain) {
+ try {
+ Version pdVersion = readImplementationVersionFromManifest(protectionDomain);
+ if (pdVersion != null) {
+ Version limitVersion = Version.of(version);
+ return matcher.match(pdVersion, limitVersion);
+ }
+ } catch (Exception e) {
+ logger.info("Cannot read implementation version based on ProtectionDomain. This should not affect " +
+ "your agent's functionality. Failed with message: " + e.getMessage());
+ logger.debug("Implementation version parsing error: " + protectionDomain, e);
+ }
+ return true;
+ }
+ };
+ }
+
+ @Nullable
+ private static Version readImplementationVersionFromManifest(@Nullable ProtectionDomain protectionDomain) throws IOException, URISyntaxException {
+ Version version = null;
+ JarFile jarFile = null;
+ try {
+ if (protectionDomain != null) {
+ CodeSource codeSource = protectionDomain.getCodeSource();
+ if (codeSource != null) {
+ URL jarUrl = codeSource.getLocation();
+ if (jarUrl != null) {
+ // does not yet establish an actual connection
+ URLConnection urlConnection = jarUrl.openConnection();
+ if (urlConnection instanceof JarURLConnection) {
+ jarFile = ((JarURLConnection) urlConnection).getJarFile();
+ } else {
+ jarFile = new JarFile(new File(jarUrl.toURI()));
+ }
+ Manifest manifest = jarFile.getManifest();
+ if (manifest != null) {
+ Attributes attributes = manifest.getMainAttributes();
+ String manifestVersion = attributes.getValue("Implementation-Version");
+ if (manifestVersion == null) {
+ // fallback on OSGI bundle version when impl. version not available
+ manifestVersion = attributes.getValue("Bundle-Version");
+ }
+ if (manifestVersion != null) {
+ version = Version.of(manifestVersion);
+ }
+
+ }
+ }
+ }
+ } else {
+ logger.info("Cannot read implementation version - got null ProtectionDomain");
+ }
+ } finally {
+ if (jarFile != null) {
+ try {
+ jarFile.close();
+ } catch (IOException e) {
+ logger.error("Error closing JarFile", e);
+ }
+ }
+ }
+ return version;
+ }
+
+ private enum Matcher {
+ LTE {
+ @Override
+ > boolean match(T c1, T c2) {
+ return c1.compareTo(c2) <= 0;
+ }
+ },
+ GTE {
+ @Override
+ > boolean match(T c1, T c2) {
+ return c1.compareTo(c2) >= 0;
+
+ }
+ };
+
+ abstract > boolean match(T c1, T c2);
+ }
}
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/Version.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/Version.java
new file mode 100644
index 0000000000..b8e698f4c1
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/Version.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package co.elastic.apm.agent.sdk.bytebuddy;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Based on https://gist.github.com/brianguertin.
+ * This code was released into the public domain by Brian Guertin on July 8, 2016 citing, verbatim the unlicense.
+ */
+class Version implements Comparable {
+
+ private static final Version INVALID = new Version(new int[0]);
+
+ private static final Pattern VERSION_REGEX = Pattern.compile("^" +
+ "(?.*?)" +
+ "(?(\\d+)(\\.\\d+)*)" +
+ "(?.*?)" +
+ "$");
+
+ private final int[] numbers;
+
+ static Version of(String version) {
+ Matcher matcher = VERSION_REGEX.matcher(version);
+ if (!matcher.find()) {
+ return INVALID;
+ }
+ final String[] parts = matcher.group("version").split("\\.");
+ int[] numbers = new int[parts.length];
+ for (int i = 0; i < parts.length; i++) {
+ numbers[i] = Integer.parseInt(parts[i]);
+ }
+ return new Version(numbers);
+ }
+
+ private Version(int[] numbers) {
+ this.numbers = numbers;
+ }
+
+ @Override
+ public int compareTo(Version another) {
+ final int maxLength = Math.max(numbers.length, another.numbers.length);
+ for (int i = 0; i < maxLength; i++) {
+ final int left = i < numbers.length ? numbers[i] : 0;
+ final int right = i < another.numbers.length ? another.numbers[i] : 0;
+ if (left != right) {
+ return left < right ? -1 : 1;
+ }
+ }
+ return 0;
+ }
+}
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java
index cd8693047b..a15d6c4409 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTest.java
@@ -18,9 +18,18 @@
*/
package co.elastic.apm.agent.sdk.bytebuddy;
+import org.apache.http.client.HttpClient;
+
import net.bytebuddy.description.type.TypeDescription;
import org.junit.jupiter.api.Test;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.security.CodeSigner;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
import java.util.List;
import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
@@ -30,6 +39,46 @@
class CustomElementMatchersTest {
+ @Test
+ void testSemVerLteWithFileUrl() {
+ // Relying on Apache httpclient-4.5.6.jar
+ testSemVerLteMatcher(HttpClient.class.getProtectionDomain());
+ }
+
+ @Test
+ void testSemVerLteWithJarFileUrl() throws MalformedURLException {
+ URL originalUrl = HttpClient.class.getProtectionDomain().getCodeSource().getLocation();
+ URL jarFileUrl = new URL("jar:" + originalUrl.toString() + "!/");
+ testSemVerLteMatcher(new ProtectionDomain(new CodeSource(jarFileUrl, new CodeSigner[0]), null));
+ }
+
+ @Test
+ void testSemVerLteWithEncodedFileUrl() throws MalformedURLException, URISyntaxException {
+ String jarFileUrl = new File("src/test/resources/lib/version##2/test-module.jar").toURI().toASCIIString();
+ System.out.println("Encoded Jar file URL = " + jarFileUrl);
+ ProtectionDomain protectionDomain = new ProtectionDomain(new CodeSource(new URL(jarFileUrl), new CodeSigner[0]), null);
+ assertThat(implementationVersionLte("2").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("3").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("2.1.8").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("2.1.9").matches(protectionDomain)).isTrue();
+ }
+
+ private void testSemVerLteMatcher(ProtectionDomain protectionDomain) {
+ assertThat(implementationVersionLte("3").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("3.2").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("3.15.10").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("4.2.19").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("4.5.5").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("4.5.6").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("4.5.5-SNAPSHOT").matches(protectionDomain)).isFalse();
+ assertThat(implementationVersionLte("4.5.6-SNAPSHOT").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("4.5.7").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("4.7.3").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("5.7.3").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("5.0").matches(protectionDomain)).isTrue();
+ assertThat(implementationVersionLte("5").matches(protectionDomain)).isTrue();
+ }
+
@Test
void testIncludedPackages() {
final TypeDescription thisClass = TypeDescription.ForLoadedType.of(getClass());
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientRedirectInstrumentation.java b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientRedirectInstrumentation.java
index 6e9afb0e07..3e8b5d82f5 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientRedirectInstrumentation.java
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/ApacheHttpAsyncClientRedirectInstrumentation.java
@@ -31,7 +31,7 @@
import javax.annotation.Nullable;
import java.security.ProtectionDomain;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionLte;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionLte;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
import static net.bytebuddy.matcher.ElementMatchers.named;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java
index 8be5a19d04..7ea0f94b78 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/java/co/elastic/apm/agent/log4j2/correlation/Log4j2LogCorrelationInstrumentation.java
@@ -29,7 +29,7 @@
import java.security.ProtectionDomain;
import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionGte;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionGte;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.nameEndsWith;
diff --git a/apm-agent-plugins/apm-mongodb/apm-mongodb3-plugin/src/main/java/co/elastic/apm/agent/mongodb/v3/Mongo3Instrumentation.java b/apm-agent-plugins/apm-mongodb/apm-mongodb3-plugin/src/main/java/co/elastic/apm/agent/mongodb/v3/Mongo3Instrumentation.java
index 83e193d5a1..05d89bf959 100644
--- a/apm-agent-plugins/apm-mongodb/apm-mongodb3-plugin/src/main/java/co/elastic/apm/agent/mongodb/v3/Mongo3Instrumentation.java
+++ b/apm-agent-plugins/apm-mongodb/apm-mongodb3-plugin/src/main/java/co/elastic/apm/agent/mongodb/v3/Mongo3Instrumentation.java
@@ -26,7 +26,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionGte;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionGte;
import static net.bytebuddy.matcher.ElementMatchers.hasSuperType;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
import static net.bytebuddy.matcher.ElementMatchers.named;
diff --git a/apm-agent-plugins/apm-mongodb/apm-mongodb4-plugin/src/main/java/co/elastic/apm/agent/mongodb/v4/Mongo4Instrumentation.java b/apm-agent-plugins/apm-mongodb/apm-mongodb4-plugin/src/main/java/co/elastic/apm/agent/mongodb/v4/Mongo4Instrumentation.java
index faded5a721..d7862cf5a6 100644
--- a/apm-agent-plugins/apm-mongodb/apm-mongodb4-plugin/src/main/java/co/elastic/apm/agent/mongodb/v4/Mongo4Instrumentation.java
+++ b/apm-agent-plugins/apm-mongodb/apm-mongodb4-plugin/src/main/java/co/elastic/apm/agent/mongodb/v4/Mongo4Instrumentation.java
@@ -25,7 +25,7 @@
import java.util.Arrays;
import java.util.Collection;
-import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionGte;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionGte;
import static net.bytebuddy.matcher.ElementMatchers.not;
public abstract class Mongo4Instrumentation extends ElasticApmInstrumentation {
From 8be1da0f3229d9f67f8b0a77f06ac689f2c41b48 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 15:21:52 +0200
Subject: [PATCH 13/33] Add class loader matching to SDK.
---
.../agent/bbwarmup/WarmupInstrumentation.java | 4 +-
.../bci/bytebuddy/CustomElementMatchers.java | 41 --------------
.../DiscriminatingMultiParentClassLoader.java | 8 ++-
.../ExternalPluginClassLoader.java | 8 ++-
.../classloading/IndyPluginClassLoader.java | 8 ++-
.../apm/agent/util/ClassLoaderUtils.java | 44 ---------------
.../agent/bci/modules/ModuleOpenerTest.java | 8 ++-
.../test/ChildFirstURLClassLoader.java | 11 +++-
.../sdk/bytebuddy/CustomElementMatchers.java | 55 +++++++++++++++----
.../sdk/internal/InternalAgentClass.java | 9 +++
.../bytebuddy/CustomElementMatchersTest.java | 1 +
.../EcsLoggingInstrumentation.java | 4 +-
.../Log4j2LogCorrelationInstrumentation.java | 6 +-
...j2LoggerErrorCapturingInstrumentation.java | 4 +-
.../Log4j2EcsReformattingInstrumentation.java | 4 +-
15 files changed, 101 insertions(+), 114 deletions(-)
delete mode 100644 apm-agent-core/src/main/java/co/elastic/apm/agent/util/ClassLoaderUtils.java
create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
index b9edd40402..b1c6d7d265 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
@@ -18,7 +18,6 @@
*/
package co.elastic.apm.agent.bbwarmup;
-import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers;
import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
@@ -33,6 +32,7 @@
import java.util.Collection;
import java.util.Collections;
+import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isSameClassLoader;
import static net.bytebuddy.matcher.ElementMatchers.isStatic;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.not;
@@ -51,7 +51,7 @@ public ElementMatcher.Junction getClassLoaderMatcher() {
// (caused by java.lang.ClassFormatError) on OpenJDK 7.
// By allowing instrumentation only when the test class is loaded by the same class loader that loads this
// instrumentation class, we avoid this problem and still allow it to work both on production and unit tests
- return CustomElementMatchers.isSameClassLoader(PrivilegedActionUtils.getClassLoader(getClass()));
+ return isSameClassLoader(PrivilegedActionUtils.getClassLoader(getClass()));
}
@Override
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
index eb8f3dede2..c5b4acb347 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/bytebuddy/CustomElementMatchers.java
@@ -20,55 +20,14 @@
import co.elastic.apm.agent.common.util.WildcardMatcher;
import co.elastic.apm.agent.matcher.AnnotationMatcher;
-import co.elastic.apm.agent.util.ClassLoaderUtils;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.annotation.AnnotationSource;
import net.bytebuddy.matcher.ElementMatcher;
-import javax.annotation.Nullable;
import java.util.List;
public class CustomElementMatchers {
- private static final ElementMatcher.Junction.AbstractBase AGENT_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() {
- @Override
- public boolean matches(@Nullable ClassLoader classLoader) {
- return ClassLoaderUtils.isAgentClassLoader(classLoader);
- }
- };
-
- private static final ElementMatcher.Junction.AbstractBase INTERNAL_PLUGIN_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() {
- @Override
- public boolean matches(@Nullable ClassLoader classLoader) {
-
- boolean result = ClassLoaderUtils.isInternalPluginClassLoader(classLoader);
- return result;
- }
- };
-
- /**
- * Matches the target class loader to a given class loader by instance comparison
- *
- * @param other the class loader to match to
- * @return {@code true} if {@code other} is the same class loader instance as the target class loader
- */
- public static ElementMatcher.Junction isSameClassLoader(final ClassLoader other) {
- return new ElementMatcher.Junction.AbstractBase() {
- @Override
- public boolean matches(@Nullable ClassLoader target) {
- return target == other;
- }
- };
- }
-
- public static ElementMatcher.Junction isAgentClassLoader() {
- return AGENT_CLASS_LOADER_MATCHER;
- }
-
- public static ElementMatcher.Junction isInternalPluginClassLoader() {
- return INTERNAL_PLUGIN_CLASS_LOADER_MATCHER;
- }
-
public static ElementMatcher.Junction matches(final WildcardMatcher matcher) {
return new ElementMatcher.Junction.AbstractBase() {
@Override
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/DiscriminatingMultiParentClassLoader.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/DiscriminatingMultiParentClassLoader.java
index 4dde244483..b3e346a6ac 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/DiscriminatingMultiParentClassLoader.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/DiscriminatingMultiParentClassLoader.java
@@ -18,6 +18,7 @@
*/
package co.elastic.apm.agent.bci.classloading;
+import co.elastic.apm.agent.sdk.internal.InternalAgentClass;
import net.bytebuddy.matcher.ElementMatcher;
import java.io.IOException;
@@ -32,7 +33,7 @@
* The difference is that an {@link ElementMatcher} can be supplied that determines (based on the class name) which class lookups are delegated to each parent.
* This is used, for example, to avoid looking up log4j2 classes from the agent class loader in the context of an advice.
*/
-class DiscriminatingMultiParentClassLoader extends ClassLoader {
+class DiscriminatingMultiParentClassLoader extends ClassLoader implements InternalAgentClass {
private static final String CLASS_EXTENSION = ".class";
private final List parents;
@@ -67,6 +68,11 @@ class DiscriminatingMultiParentClassLoader extends ClassLoader {
this.discriminators = Arrays.asList(classesToLoadFromAgentClassLoader, classesToLoadFromTargetClassLoader);
}
+ @Override
+ public String getMarker() {
+ return CLASS_LOADER;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/ExternalPluginClassLoader.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/ExternalPluginClassLoader.java
index 6fa9107f7d..4565442249 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/ExternalPluginClassLoader.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/ExternalPluginClassLoader.java
@@ -21,6 +21,7 @@
import co.elastic.apm.agent.common.util.AgentInfo;
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
+import co.elastic.apm.agent.sdk.internal.InternalAgentClass;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import java.io.File;
@@ -42,7 +43,7 @@
*
* @see co.elastic.apm.agent.bci.IndyBootstrap
*/
-public class ExternalPluginClassLoader extends URLClassLoader {
+public class ExternalPluginClassLoader extends URLClassLoader implements InternalAgentClass {
private final List classNames;
private final File pluginJar;
@@ -100,6 +101,11 @@ public List getClassNames() {
return classNames;
}
+ @Override
+ public String getMarker() {
+ return CLASS_LOADER;
+ }
+
@Override
public String toString() {
return "ExternalPluginClassLoader{" +
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java
index d4918e8fa1..19eac6d071 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java
@@ -18,6 +18,7 @@
*/
package co.elastic.apm.agent.bci.classloading;
+import co.elastic.apm.agent.sdk.internal.InternalAgentClass;
import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
import net.bytebuddy.dynamic.loading.ByteArrayClassLoader;
import net.bytebuddy.dynamic.loading.PackageDefinitionStrategy;
@@ -37,7 +38,7 @@
*
* @see co.elastic.apm.agent.bci.IndyBootstrap
*/
-public class IndyPluginClassLoader extends ByteArrayClassLoader.ChildFirst {
+public class IndyPluginClassLoader extends ByteArrayClassLoader.ChildFirst implements InternalAgentClass {
private static final ClassLoader SYSTEM_CLASS_LOADER = ClassLoader.getSystemClassLoader();
@@ -89,6 +90,11 @@ agentClassLoader, startsWith("co.elastic.apm.agent").or(startsWith("net.bytebudd
}
}
+ @Override
+ public String getMarker() {
+ return INTERNAL_PLUGIN_CLASS_LOADER;
+ }
+
/**
* This class loader uses {@link PersistenceHandler#LATENT} (see {@link #IndyPluginClassLoader})
* as it reduces the memory footprint of the class loader compared to {@link PersistenceHandler#MANIFEST}.
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ClassLoaderUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ClassLoaderUtils.java
deleted file mode 100644
index d21d7b43c8..0000000000
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ClassLoaderUtils.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to Elasticsearch B.V. under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch B.V. licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package co.elastic.apm.agent.util;
-
-import co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
-
-import javax.annotation.Nullable;
-
-public class ClassLoaderUtils {
-
- public static boolean isAgentClassLoader(@Nullable ClassLoader classLoader) {
- return (classLoader != null && classLoader.getClass().getName().startsWith("co.elastic.apm")) ||
- // This one also covers unit tests, where the app class loader loads the agent
- PrivilegedActionUtils.getClassLoader(ClassLoaderUtils.class).equals(classLoader);
- }
-
- public static boolean isBootstrapClassLoader(@Nullable ClassLoader classLoader) {
- return classLoader == null;
- }
-
- public static boolean isInternalPluginClassLoader(@Nullable ClassLoader classLoader) {
- if (classLoader == null) {
- return false;
- }
- return IndyPluginClassLoader.class.getName().equals(classLoader.getClass().getName());
- }
-}
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/modules/ModuleOpenerTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/modules/ModuleOpenerTest.java
index ddf71c2ce8..a411e14636 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/modules/ModuleOpenerTest.java
+++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/modules/ModuleOpenerTest.java
@@ -18,6 +18,7 @@
*/
package co.elastic.apm.agent.bci.modules;
+import co.elastic.apm.agent.sdk.internal.InternalAgentClass;
import net.bytebuddy.agent.ByteBuddyAgent;
import org.apache.commons.compress.utils.IOUtils;
import org.junit.jupiter.api.Test;
@@ -64,7 +65,7 @@ public static void doAccess() throws Exception {
}
- private static class ChildFirstCopyClassloader extends ClassLoader {
+ private static class ChildFirstCopyClassloader extends ClassLoader implements InternalAgentClass {
String childFirstClassName;
@@ -73,6 +74,11 @@ public ChildFirstCopyClassloader(ClassLoader parent, String childFirstClassName)
this.childFirstClassName = childFirstClassName;
}
+ @Override
+ public String getMarker() {
+ return CLASS_LOADER;
+ }
+
@Override
protected Class> loadClass(String name, boolean resolve) throws ClassNotFoundException {
synchronized (getClassLoadingLock(name)) {
diff --git a/apm-agent-core/src/test/java/co/elastic/test/ChildFirstURLClassLoader.java b/apm-agent-core/src/test/java/co/elastic/test/ChildFirstURLClassLoader.java
index 978a015b16..06f92610e6 100644
--- a/apm-agent-core/src/test/java/co/elastic/test/ChildFirstURLClassLoader.java
+++ b/apm-agent-core/src/test/java/co/elastic/test/ChildFirstURLClassLoader.java
@@ -18,7 +18,7 @@
*/
package co.elastic.test;
-import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers;
+import co.elastic.apm.agent.sdk.internal.InternalAgentClass;
import co.elastic.apm.agent.testutils.JUnit4TestClassWithDependencyRunner;
import java.io.IOException;
@@ -34,9 +34,9 @@
* Specifically, used within {@link JUnit4TestClassWithDependencyRunner} for tests that require encapsulated
* test classpath, for example - for testing specific library versions.
* In order for classes that are loaded by this class loader to be instrumented, it must be outside of the {@code co.elastic.apm}
- * package, otherwise it may be excluded if tested through {@link CustomElementMatchers#isAgentClassLoader()}.
+ * package, otherwise it may be excluded if tested through {@link co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers#isAgentClassLoader()}.
*/
-public class ChildFirstURLClassLoader extends URLClassLoader {
+public class ChildFirstURLClassLoader extends URLClassLoader implements InternalAgentClass {
private final List urls;
@@ -45,6 +45,11 @@ public ChildFirstURLClassLoader(List urls) {
this.urls = urls;
}
+ @Override
+ public String getMarker() {
+ return INTERNAL_PLUGIN_CLASS_LOADER;
+ }
+
@Override
public String getName() {
return "Test class class loader: " + urls;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
index cc2b55ece3..378dbe8e78 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
@@ -18,8 +18,10 @@
*/
package co.elastic.apm.agent.sdk.bytebuddy;
+import co.elastic.apm.agent.sdk.internal.InternalAgentClass;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
+import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
import net.bytebuddy.description.NamedElement;
@@ -39,7 +41,6 @@
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
-import java.util.regex.Matcher;
import static net.bytebuddy.matcher.ElementMatchers.nameContains;
import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith;
@@ -49,17 +50,31 @@ public class CustomElementMatchers {
private static final Logger logger = LoggerFactory.getLogger(CustomElementMatchers.class);
- public static ElementMatcher.Junction isInAnyPackage(Collection includedPackages,
- ElementMatcher.Junction defaultIfEmpty) {
- if (includedPackages.isEmpty()) {
- return defaultIfEmpty;
+ private static final ClassLoader SELF_CLASS_LOADER = PrivilegedActionUtils.getClassLoader(CustomElementMatchers.class);
+
+ private static final ElementMatcher.Junction.AbstractBase AGENT_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() {
+ @Override
+ public boolean matches(@Nullable ClassLoader classLoader) {
+ if (classLoader instanceof InternalAgentClass) {
+ String marker = ((InternalAgentClass) classLoader).getMarker();
+ return InternalAgentClass.CLASS_LOADER.equals(marker) || InternalAgentClass.INTERNAL_PLUGIN_CLASS_LOADER.equals(marker);
+ } else if (classLoader == SELF_CLASS_LOADER) {
+ // This one also covers unit tests, where the app class loader loads the agent
+ return true;
+ }
+ return false;
}
- ElementMatcher.Junction matcher = none();
- for (String applicationPackage : includedPackages) {
- matcher = matcher.or(nameStartsWith(applicationPackage));
+ };
+
+ private static final ElementMatcher.Junction.AbstractBase INTERNAL_PLUGIN_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() {
+ @Override
+ public boolean matches(@Nullable ClassLoader classLoader) {
+ if (classLoader instanceof InternalAgentClass) {
+ return InternalAgentClass.INTERNAL_PLUGIN_CLASS_LOADER.equals(((InternalAgentClass) classLoader).getMarker());
+ }
+ return false;
}
- return matcher;
- }
+ };
/**
* Matches the target class loader to a given class loader by instance comparison
@@ -76,6 +91,26 @@ public boolean matches(@Nullable ClassLoader target) {
};
}
+ public static ElementMatcher.Junction isAgentClassLoader() {
+ return AGENT_CLASS_LOADER_MATCHER;
+ }
+
+ public static ElementMatcher.Junction isInternalPluginClassLoader() {
+ return INTERNAL_PLUGIN_CLASS_LOADER_MATCHER;
+ }
+
+ public static ElementMatcher.Junction isInAnyPackage(Collection includedPackages,
+ ElementMatcher.Junction defaultIfEmpty) {
+ if (includedPackages.isEmpty()) {
+ return defaultIfEmpty;
+ }
+ ElementMatcher.Junction matcher = none();
+ for (String applicationPackage : includedPackages) {
+ matcher = matcher.or(nameStartsWith(applicationPackage));
+ }
+ return matcher;
+ }
+
/**
* Matches only class loaders which can load a certain class.
*
- * When there is only one value associated with a key, this map just the key as-is when calling {@link #get(String)}.
- * But when {@link #add(String, String)} has been called multiple times for a given key,
- * {@link #get(String)} will return a collection of values.
- *
- */
-public class PotentiallyMultiValuedMap implements Recyclable, co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap {
-
- private final List keys;
- private final List
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/Scanner.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/Scanner.java
similarity index 99%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/Scanner.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/Scanner.java
index 339ffa4a2c..7b2d8c231b 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/Scanner.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/Scanner.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.db.signature;
+package co.elastic.apm.agent.sdk.db.signature;
public class Scanner {
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/ScannerFilter.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/ScannerFilter.java
similarity index 95%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/ScannerFilter.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/ScannerFilter.java
index 6c4547ce9f..21682f03d5 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/ScannerFilter.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/ScannerFilter.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.db.signature;
+package co.elastic.apm.agent.sdk.db.signature;
public interface ScannerFilter {
boolean skip(Scanner s, char c);
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/SignatureParser.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/SignatureParser.java
similarity index 95%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/SignatureParser.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/SignatureParser.java
index 9b687c780c..a3a0abee36 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/SignatureParser.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/SignatureParser.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.db.signature;
+package co.elastic.apm.agent.sdk.db.signature;
import co.elastic.apm.agent.sdk.weakconcurrent.DetachedThreadLocal;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
@@ -27,12 +27,12 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import static co.elastic.apm.agent.db.signature.Scanner.Token.EOF;
-import static co.elastic.apm.agent.db.signature.Scanner.Token.FROM;
-import static co.elastic.apm.agent.db.signature.Scanner.Token.IDENT;
-import static co.elastic.apm.agent.db.signature.Scanner.Token.INTO;
-import static co.elastic.apm.agent.db.signature.Scanner.Token.LPAREN;
-import static co.elastic.apm.agent.db.signature.Scanner.Token.RPAREN;
+import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.EOF;
+import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.FROM;
+import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.IDENT;
+import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.INTO;
+import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.LPAREN;
+import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.RPAREN;
public class SignatureParser {
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/package-info.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/package-info.java
similarity index 94%
rename from apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/package-info.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/package-info.java
index 025d338e05..f547a5d737 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/db/signature/package-info.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/package-info.java
@@ -17,6 +17,6 @@
* under the License.
*/
@NonnullApi
-package co.elastic.apm.agent.db.signature;
+package co.elastic.apm.agent.sdk.db.signature;
import co.elastic.apm.agent.sdk.NonnullApi;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/db/signature/ScannerTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/ScannerTest.java
similarity index 98%
rename from apm-agent-core/src/test/java/co/elastic/apm/agent/db/signature/ScannerTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/ScannerTest.java
index e2713e4aba..8a01f3664f 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/db/signature/ScannerTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/ScannerTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.db.signature;
+package co.elastic.apm.agent.sdk.db.signature;
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.jupiter.api.BeforeEach;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/db/signature/SignatureParserTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/SignatureParserTest.java
similarity index 99%
rename from apm-agent-core/src/test/java/co/elastic/apm/agent/db/signature/SignatureParserTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/SignatureParserTest.java
index 0557ff4860..99a2688455 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/db/signature/SignatureParserTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/SignatureParserTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.db.signature;
+package co.elastic.apm.agent.sdk.db.signature;
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugin-sdk/src/test/java/specs/TestJsonSpec.java b/apm-agent-plugin-sdk/src/test/java/specs/TestJsonSpec.java
new file mode 100644
index 0000000000..7228330100
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/java/specs/TestJsonSpec.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package specs;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.net.URL;
+
+public class TestJsonSpec {
+
+ public static JsonNode getJson(String jsonFile) {
+ return getJson(TestJsonSpec.class, "json-specs/" + jsonFile);
+ }
+
+ public static JsonNode getJson(Class> type, String path) {
+ URL jsonSpec = type.getClassLoader().getResource(path);
+ try {
+ return new ObjectMapper()
+ .enable(JsonParser.Feature.ALLOW_COMMENTS)
+ .readTree(jsonSpec);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+}
diff --git a/apm-agent-core/src/test/resources/json-specs/sql_signature_examples.json b/apm-agent-plugin-sdk/src/test/resources/json-specs/sql_signature_examples.json
similarity index 100%
rename from apm-agent-core/src/test/resources/json-specs/sql_signature_examples.json
rename to apm-agent-plugin-sdk/src/test/resources/json-specs/sql_signature_examples.json
diff --git a/apm-agent-core/src/test/resources/json-specs/sql_token_examples.json b/apm-agent-plugin-sdk/src/test/resources/json-specs/sql_token_examples.json
similarity index 100%
rename from apm-agent-core/src/test/resources/json-specs/sql_token_examples.json
rename to apm-agent-plugin-sdk/src/test/resources/json-specs/sql_token_examples.json
diff --git a/apm-agent-core/src/test/resources/signature_tests.json b/apm-agent-plugin-sdk/src/test/resources/signature_tests.json
similarity index 100%
rename from apm-agent-core/src/test/resources/signature_tests.json
rename to apm-agent-plugin-sdk/src/test/resources/signature_tests.json
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java b/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java
index 9fdbb9f319..c7f660be47 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.cassandra;
-import co.elastic.apm.agent.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Tracer;
diff --git a/apm-agent-plugins/apm-jdbc-plugin/pom.xml b/apm-agent-plugins/apm-jdbc-plugin/pom.xml
index 4e692a72df..ecac2ea250 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/pom.xml
+++ b/apm-agent-plugins/apm-jdbc-plugin/pom.xml
@@ -17,6 +17,14 @@
+
+ ${project.groupId}
+ apm-agent-plugin-sdk
+ ${project.version}
+ test-jar
+ test
+
+
com.h2database
@@ -98,6 +106,12 @@
19.3.0.0test
+
+ ${project.groupId}
+ apm-agent-core
+ ${project.version}
+ test-jar
+ test
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java
index e925877b71..ecacb56ab6 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.jdbc;
-import co.elastic.apm.agent.db.signature.Scanner;
-import co.elastic.apm.agent.db.signature.ScannerFilter;
+import co.elastic.apm.agent.sdk.db.signature.Scanner;
+import co.elastic.apm.agent.sdk.db.signature.ScannerFilter;
public class JdbcFilter implements ScannerFilter {
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java
index 424485f68c..ecfbb5f5e4 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.jdbc.helper;
-import co.elastic.apm.agent.db.signature.Scanner;
-import co.elastic.apm.agent.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.db.signature.Scanner;
+import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.jdbc.JdbcFilter;
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
index 9900485e4c..e3b80e06fb 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.AbstractInstrumentationTest;
import co.elastic.apm.agent.configuration.SpanConfiguration;
-import co.elastic.apm.agent.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
import co.elastic.apm.agent.impl.context.Db;
import co.elastic.apm.agent.impl.context.Destination;
import co.elastic.apm.agent.tracer.Outcome;
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
index ac179bc4a2..df5ac98e4c 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
@@ -18,9 +18,8 @@
*/
package co.elastic.apm.agent.jdbc;
-import co.elastic.apm.agent.db.signature.Scanner;
-import co.elastic.apm.agent.db.signature.SignatureParser;
-import co.elastic.apm.agent.db.signature.SignatureParserTest;
+import co.elastic.apm.agent.sdk.db.signature.Scanner;
+import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
From 1e0b230cb505dbbf9e9b5a42e29bb07189acd1ce Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 22:38:04 +0200
Subject: [PATCH 24/33] Fix dependency declaration.
---
apm-agent-plugins/apm-jdbc-plugin/pom.xml | 6 ------
1 file changed, 6 deletions(-)
diff --git a/apm-agent-plugins/apm-jdbc-plugin/pom.xml b/apm-agent-plugins/apm-jdbc-plugin/pom.xml
index ecac2ea250..2241073840 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/pom.xml
+++ b/apm-agent-plugins/apm-jdbc-plugin/pom.xml
@@ -106,12 +106,6 @@
19.3.0.0test
-
- ${project.groupId}
- apm-agent-core
- ${project.version}
- test-jar
- test
From a972313bf0d516631d15ed74d75c717abf97798f Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Tue, 6 Jun 2023 22:41:00 +0200
Subject: [PATCH 25/33] Fix import.
---
.../java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
index df5ac98e4c..6fab1e7ab8 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
@@ -20,6 +20,7 @@
import co.elastic.apm.agent.sdk.db.signature.Scanner;
import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.db.signature.SignatureParserTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
From 15c3a4d765cc82211490f3164a5151b3c1aabfce Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Fri, 30 Jun 2023 08:55:31 +0200
Subject: [PATCH 26/33] Fixing imports.
---
.../CustomElementMatchersProviderImpl.java | 18 ++++++++++++++++++
.../agent/util/ExecutorUtilsProviderImpl.java | 18 ++++++++++++++++++
.../CustomElementMatchersTestProvider.java | 18 ++++++++++++++++++
.../util/ExecutorUtilsProviderTestImpl.java | 18 ++++++++++++++++++
.../apm/agent/sdk/util/ExecutorUtilsTest.java | 18 ++++++++++++++++++
.../cassandra3/Cassandra3Instrumentation.java | 2 +-
.../cassandra4/Cassandra4Instrumentation.java | 2 +-
.../advice/ApacheMonitorFilterAdvice.java | 4 ++++
8 files changed, 96 insertions(+), 2 deletions(-)
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java
index 0d6be6d697..662a7d3294 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package co.elastic.apm.agent.bytebuddy;
import co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
index 764bb4c9ff..42a17bb7be 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package co.elastic.apm.agent.util;
import java.util.concurrent.Executor;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTestProvider.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTestProvider.java
index a9016518d5..78762aa9ef 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTestProvider.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTestProvider.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package co.elastic.apm.agent.sdk.bytebuddy;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
index 738ddbe3ef..80393f5dfd 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package co.elastic.apm.agent.sdk.util;
import java.util.concurrent.Executor;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
index 4b166371ca..16dbcc1896 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
@@ -1,3 +1,21 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package co.elastic.apm.agent.sdk.util;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java b/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java
index ac90e0c41b..1cf1f041eb 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/src/main/java/co/elastic/apm/agent/cassandra3/Cassandra3Instrumentation.java
@@ -44,7 +44,7 @@
import static net.bytebuddy.matcher.ElementMatchers.*;
-public abstract class Cassandra3Instrumentation extends TracerAwareInstrumentation {
+public abstract class Cassandra3Instrumentation extends ElasticApmInstrumentation {
@Override
public ElementMatcher.Junction getClassLoaderMatcher() {
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/src/main/java/co/elastic/apm/agent/cassandra4/Cassandra4Instrumentation.java b/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/src/main/java/co/elastic/apm/agent/cassandra4/Cassandra4Instrumentation.java
index ddaba3a829..059c7d6990 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/src/main/java/co/elastic/apm/agent/cassandra4/Cassandra4Instrumentation.java
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/src/main/java/co/elastic/apm/agent/cassandra4/Cassandra4Instrumentation.java
@@ -54,7 +54,7 @@
/**
* Instruments {@link Session#execute(Request, GenericType)}
*/
-public class Cassandra4Instrumentation extends TracerAwareInstrumentation {
+public class Cassandra4Instrumentation extends ElasticApmInstrumentation {
@Override
public ElementMatcher super NamedElement> getTypeMatcherPreFilter() {
diff --git a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java
index 4601dd012d..28bcbc330d 100644
--- a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java
+++ b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java
@@ -28,10 +28,14 @@
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
+import org.apache.dubbo.rpc.AppResponse;
import org.apache.dubbo.rpc.AsyncRpcResult;
import org.apache.dubbo.rpc.Invocation;
+import org.apache.dubbo.rpc.InvokeMode;
+import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcContext;
+import org.apache.dubbo.rpc.RpcInvocation;
import javax.annotation.Nullable;
import java.util.function.BiConsumer;
From e60096d31025ae18c340c3eeefe1b1db9e87eb40 Mon Sep 17 00:00:00 2001
From: Sylvain Juge <763082+SylvainJuge@users.noreply.github.com>
Date: Wed, 5 Jul 2023 18:09:04 +0200
Subject: [PATCH 27/33] ensure json files are kept up-to-date with updatecli
---
.ci/updatecli.d/update-json-specs.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.ci/updatecli.d/update-json-specs.yml b/.ci/updatecli.d/update-json-specs.yml
index c706d5e64f..e31e7f3206 100644
--- a/.ci/updatecli.d/update-json-specs.yml
+++ b/.ci/updatecli.d/update-json-specs.yml
@@ -97,14 +97,14 @@ targets:
sourceid: sql_signature_examples.json
kind: file
spec:
- file: apm-agent-core/src/test/resources/json-specs/sql_signature_examples.json
+ file: apm-agent-plugin-sdk/src/test/resources/json-specs/sql_signature_examples.json
sql_token_examples.json:
name: sql_token_examples.json
scmid: default
sourceid: sql_token_examples.json
kind: file
spec:
- file: apm-agent-core/src/test/resources/json-specs/sql_token_examples.json
+ file: apm-agent-plugin-sdk/src/test/resources/json-specs/sql_token_examples.json
w3c_distributed_tracing.json:
name: w3c_distributed_tracing.json
scmid: default
From ef0842624acf1b2813a22d5ff8510c08399898d8 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Thu, 6 Jul 2023 11:04:59 +0200
Subject: [PATCH 28/33] Mark "self class loader" nullable.
---
.../elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
index 71b82f4cb7..a31e788a48 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
@@ -50,6 +50,7 @@ public class CustomElementMatchers {
private static final Logger logger = LoggerFactory.getLogger(CustomElementMatchers.class);
+ Nullable
private static final ClassLoader SELF_CLASS_LOADER = PrivilegedActionUtils.getClassLoader(CustomElementMatchers.class);
private static final CustomElementMatchersProvider supplier = InternalUtil.getServiceProvider(CustomElementMatchersProvider.class);
From d15a033078c97c15791c09fe0456d751aac2c027 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Thu, 6 Jul 2023 11:07:26 +0200
Subject: [PATCH 29/33] Avoid static field when only initialization is
required.
---
.../elastic/apm/agent/bbwarmup/WarmupInstrumentation.java | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
index b1c6d7d265..6d1f863e55 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
@@ -41,8 +41,11 @@
public class WarmupInstrumentation extends ElasticApmInstrumentation {
- @SuppressWarnings("unused")
- private static final Tracer tracer = GlobalTracer.get();
+ static {
+ // assure initialization of tracer
+ @SuppressWarnings("unused")
+ Tracer tracer = GlobalTracer.get();
+ }
@Override
public ElementMatcher.Junction getClassLoaderMatcher() {
From 16e65bfa6226549e342d6673f4c968481d12286f Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Thu, 6 Jul 2023 11:08:12 +0200
Subject: [PATCH 30/33] Reintroduce static import.
---
.../sdk/util/PrivilegedActionUtilsTest.java | 25 ++++++++++---------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
index 8d75d37f7d..e63cb40a87 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
@@ -36,6 +36,7 @@
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@EnabledForJreRange(max = JRE.JAVA_17, disabledReason = "SecurityManager is not supported anymore")
@@ -61,8 +62,8 @@ void getEnv() {
String envValue = envMap.get(envKey);
testWithAndWithoutSecurityManager(() -> {
- Assertions.assertThat(PrivilegedActionUtils.getEnv(envKey)).isEqualTo(envValue);
- Assertions.assertThat(PrivilegedActionUtils.getEnv()).containsAllEntriesOf(envMap);
+ assertThat(PrivilegedActionUtils.getEnv(envKey)).isEqualTo(envValue);
+ assertThat(PrivilegedActionUtils.getEnv()).containsAllEntriesOf(envMap);
});
}
@@ -70,29 +71,29 @@ void getEnv() {
@Test
void getClassLoader() {
ClassLoader cl = PrivilegedActionUtilsTest.class.getClassLoader();
- testWithAndWithoutSecurityManager(() -> Assertions.assertThat(PrivilegedActionUtils.getClassLoader(PrivilegedActionUtilsTest.class)).isSameAs(cl));
+ testWithAndWithoutSecurityManager(() -> assertThat(PrivilegedActionUtils.getClassLoader(PrivilegedActionUtilsTest.class)).isSameAs(cl));
}
@Test
void getProtectionDomain() {
ProtectionDomain pd = PrivilegedActionUtilsTest.class.getProtectionDomain();
- testWithAndWithoutSecurityManager(() -> Assertions.assertThat(PrivilegedActionUtils.getProtectionDomain(PrivilegedActionUtilsTest.class)).isSameAs(pd));
+ testWithAndWithoutSecurityManager(() -> assertThat(PrivilegedActionUtils.getProtectionDomain(PrivilegedActionUtilsTest.class)).isSameAs(pd));
}
@Test
void getAndSetContextClassLoader() {
ClassLoader originalCL = Thread.currentThread().getContextClassLoader();
- Assertions.assertThat(originalCL).isNotNull();
+ assertThat(originalCL).isNotNull();
try {
testWithAndWithoutSecurityManager(() -> {
// when enabling the security manager, the current context CL might be overriden
// thus we test our ability to change it by setting it to null
PrivilegedActionUtils.setContextClassLoader(Thread.currentThread(), null);
- Assertions.assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isNull();
+ assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isNull();
PrivilegedActionUtils.setContextClassLoader(Thread.currentThread(), originalCL);
- Assertions.assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isSameAs(originalCL);
+ assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isSameAs(originalCL);
});
} finally {
Thread.currentThread().setContextClassLoader(originalCL);
@@ -115,7 +116,7 @@ void newFileInputStream(@TempDir Path tempDir) throws IOException {
try {
testWithAndWithoutSecurityManager(() -> {
try (FileInputStream fis = PrivilegedActionUtils.newFileInputStream(existingFile.toFile())) {
- Assertions.assertThat(fis).isNotNull();
+ assertThat(fis).isNotNull();
// file not found and other runtime errors should be perserved
assertThatThrownBy(() -> PrivilegedActionUtils.newFileInputStream(missingFile.toFile())).isInstanceOf(FileNotFoundException.class);
@@ -137,8 +138,8 @@ void createDirectories(@TempDir Path tempDir) throws IOException {
Files.createDirectories(existingDir);
testWithAndWithoutSecurityManager(() -> {
testPrivileged(() -> {
- Assertions.assertThat(existingDir).isDirectory();
- Assertions.assertThat(toCreate).doesNotExist();
+ assertThat(existingDir).isDirectory();
+ assertThat(toCreate).doesNotExist();
});
try {
@@ -149,8 +150,8 @@ void createDirectories(@TempDir Path tempDir) throws IOException {
}
testPrivileged(() -> {
- Assertions.assertThat(existingDir).isDirectory();
- Assertions.assertThat(toCreate).isDirectory();
+ assertThat(existingDir).isDirectory();
+ assertThat(toCreate).isDirectory();
try {
Files.delete(toCreate);
Files.delete(toCreate.getParent());
From 629883bc23ed81ef4d487116dc3224dc21970b15 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Thu, 6 Jul 2023 11:08:23 +0200
Subject: [PATCH 31/33] Remove import.
---
.../co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
index e63cb40a87..ab23679c7e 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
@@ -18,7 +18,6 @@
*/
package co.elastic.apm.agent.sdk.util;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledForJreRange;
import org.junit.jupiter.api.condition.JRE;
From e40cc6fdd86ba39ed76a56406c337a2e6abdc3c8 Mon Sep 17 00:00:00 2001
From: Rafael Winterhalter
Date: Thu, 6 Jul 2023 11:11:30 +0200
Subject: [PATCH 32/33] Fix annotation.
---
.../elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
index a31e788a48..1e2f67c286 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
@@ -50,7 +50,7 @@ public class CustomElementMatchers {
private static final Logger logger = LoggerFactory.getLogger(CustomElementMatchers.class);
- Nullable
+ @Nullable
private static final ClassLoader SELF_CLASS_LOADER = PrivilegedActionUtils.getClassLoader(CustomElementMatchers.class);
private static final CustomElementMatchersProvider supplier = InternalUtil.getServiceProvider(CustomElementMatchersProvider.class);
From 4beb26d8068d4e952bf180c631feaf3183f6ae96 Mon Sep 17 00:00:00 2001
From: Jonas Kunz
Date: Mon, 10 Jul 2023 12:09:39 +0200
Subject: [PATCH 33/33] Moved classes not intended for public use to internal
package
---
.../sql/SignatureParserBenchmark.java | 2 +-
.../co/elastic/apm/agent/PackagingTest.java | 2 +-
.../agent/bbwarmup/WarmupInstrumentation.java | 2 +-
.../apm/agent/bci/ElasticApmAgent.java | 4 +--
.../elastic/apm/agent/bci/IndyBootstrap.java | 2 +-
.../classloading/IndyPluginClassLoader.java | 2 +-
.../ServerlessConfiguration.java | 2 +-
.../apm/agent/configuration/ServiceInfo.java | 2 +-
.../configuration/source/ConfigSources.java | 2 +-
.../apm/agent/impl/ElasticApmTracer.java | 4 +--
.../apm/agent/impl/metadata/Agent.java | 2 +-
.../impl/metadata/CloudMetadataProvider.java | 2 +-
.../agent/impl/metadata/ServiceFactory.java | 2 +-
.../agent/impl/transaction/AbstractSpan.java | 4 +--
.../report/IntakeV2ReportingEventHandler.java | 2 +-
.../report/serialize/DslJsonSerializer.java | 2 +-
.../apm/agent/report/ssl/SslUtils.java | 2 +-
.../TraceMethodInstrumentation.java | 2 +-
.../apm/agent/util/BinaryHeaderMap.java | 2 +-
.../DependencyInjectingServiceLoader.java | 2 +-
.../elastic/apm/agent/util/ExecutorUtils.java | 3 +--
.../agent/util/ExecutorUtilsProviderImpl.java | 2 +-
.../apm/agent/util/UrlConnectionUtils.java | 2 +-
.../elastic/apm/agent/util/VersionUtils.java | 2 +-
....util.ExecutorUtils$ExecutorUtilsProvider} | 0
.../impl/QueueBasedObjectPoolTest.java | 2 +-
.../serialize/DslJsonSerializerTest.java | 4 +--
.../sdk/bytebuddy/CustomElementMatchers.java | 2 +-
...luginClassLoaderRootPackageCustomizer.java | 2 +-
.../{ => internal}/collections/LongList.java | 2 +-
.../collections}/package-info.java | 2 +-
.../{ => internal}/db/signature/Scanner.java | 2 +-
.../db/signature/ScannerFilter.java | 2 +-
.../db/signature/SignatureParser.java | 27 +++++++------------
.../db/signature}/package-info.java | 2 +-
.../{ => internal}/util/ExecutorUtils.java | 2 +-
.../sdk/{ => internal}/util/IOUtils.java | 2 +-
.../sdk/{ => internal}/util/LoggerUtils.java | 2 +-
.../util/PrivilegedActionUtils.java | 2 +-
.../sdk/{ => internal}/util/VersionUtils.java | 3 +--
.../util}/package-info.java | 2 +-
.../apm/agent/sdk/state/GlobalVariables.java | 2 +-
.../collections/LongListTest.java | 2 +-
.../db/signature/ScannerTest.java | 2 +-
.../db/signature/SignatureParserTest.java | 2 +-
.../util/ExecutorUtilsProviderTestImpl.java | 4 +--
.../util/ExecutorUtilsTest.java | 2 +-
.../sdk/{ => internal}/util/IOUtilsTest.java | 2 +-
.../{ => internal}/util/LoggerUtilsTest.java | 5 ++--
.../util/PrivilegedActionUtilsTest.java | 2 +-
.../{ => internal}/util/VersionUtilsTest.java | 3 +--
.../util/WeakConcurrentProviderTestImpl.java | 2 +-
...l.util.ExecutorUtils$ExecutorUtilsProvider | 1 +
...k.util.ExecutorUtils$ExecutorUtilsProvider | 1 -
...rent.WeakConcurrent$WeakConcurrentProvider | 2 +-
.../v3/HttpClient3Instrumentation.java | 2 +-
.../CaptureExceptionInstrumentation.java | 2 +-
.../CaptureTransactionInstrumentation.java | 2 +-
.../ElasticApmApiInstrumentation.java | 2 +-
.../pluginapi/TracedInstrumentation.java | 2 +-
.../AbstractSQSInstrumentationHelper.java | 2 +-
.../APIGatewayProxyV1TransactionHelper.java | 2 +-
.../APIGatewayProxyV2TransactionHelper.java | 2 +-
.../AbstractLambdaTransactionHelper.java | 4 +--
...AbstractMessageBasedTransactionHelper.java | 2 +-
.../helper/PlainTransactionHelper.java | 2 +-
.../awslambda/helper/S3TransactionHelper.java | 2 +-
.../awslambda/AbstractPlainLambdaTest.java | 2 +-
.../AbstractStreamHandlerLambdaTest.java | 2 +-
.../apm/agent/cassandra/CassandraHelper.java | 2 +-
.../advice/AlibabaMonitorFilterAdvice.java | 2 +-
.../advice/ApacheMonitorFilterAdvice.java | 2 +-
...searchRestClientInstrumentationHelper.java | 4 +--
.../ServerCallHandlerInstrumentation.java | 2 +-
.../JakartaServerEndpointInstrumentation.java | 2 +-
.../JavaxServerEndpointInstrumentation.java | 2 +-
...artaServerEndpointInstrumentationTest.java | 2 +-
...avaxServerEndpointInstrumentationTest.java | 2 +-
.../concurrent/ExecutorInstrumentation.java | 2 +-
...luginClassLoaderRootPackageCustomizer.java | 2 +-
...al.PluginClassLoaderRootPackageCustomizer} | 0
.../java_ldap/LdapPluginModuleOpens.java | 2 +-
...al.PluginClassLoaderRootPackageCustomizer} | 0
.../agent/javalin/JavalinInstrumentation.java | 2 +-
...eeJaxRsTransactionNameInstrumentation.java | 2 +-
...axJaxRsTransactionNameInstrumentation.java | 2 +-
.../co/elastic/apm/agent/jdbc/JdbcFilter.java | 4 +--
.../apm/agent/jdbc/helper/JdbcHelper.java | 4 +--
.../jdbc/AbstractJdbcInstrumentationTest.java | 2 +-
.../agent/jdbc/JdbcSignatureParserTest.java | 6 ++---
.../agent/jms/JmsInstrumentationHelper.java | 2 +-
.../JmsMessageConsumerInstrumentation.java | 2 +-
.../apm/agent/jmx/JmxMetricTracker.java | 2 +-
.../ConsumerRecordsIteratorWrapper.java | 2 +-
...ringKafkaBatchListenerInstrumentation.java | 4 +--
.../AbstractJulEcsReformattingHelper.java | 2 +-
.../JulEcsReformattingHelper.java | 2 +-
...al.PluginClassLoaderRootPackageCustomizer} | 0
...al.PluginClassLoaderRootPackageCustomizer} | 0
...al.PluginClassLoaderRootPackageCustomizer} | 0
...al.PluginClassLoaderRootPackageCustomizer} | 0
...luginClassLoaderRootPackageCustomizer.java | 2 +-
.../loginstr/error/LoggerErrorHelper.java | 2 +-
.../TomcatReformattingHelper.java | 2 +-
...al.PluginClassLoaderRootPackageCustomizer} | 0
.../MicrometerMeterRegistrySerializer.java | 2 +-
...OkHttp3ClientAsyncInstrumentationTest.java | 2 +-
.../OkHttp3ClientInstrumentationTest.java | 2 +-
.../ElasticOtelMetricsExporter.java | 2 +-
...dkMeterProviderBuilderInstrumentation.java | 2 +-
.../agent/opentelemetry/tracing/OTelSpan.java | 4 +--
.../tracing/OTelSpanBuilder.java | 6 ++---
.../ApmSpanBuilderInstrumentation.java | 2 +-
.../elastic/apm/agent/profiler/CallTree.java | 2 +-
.../apm/agent/profiler/SamplingProfiler.java | 2 +-
...ractJobTransactionNameInstrumentation.java | 4 +--
.../rabbitmq/ConsumerInstrumentation.java | 2 +-
...qpBatchMessageListenerInstrumentation.java | 4 +--
.../rabbitmq/SpringAmqpTransactionHelper.java | 2 +-
...heduledTransactionNameInstrumentation.java | 2 +-
.../scheduled/TimerTaskInstrumentation.java | 2 +-
.../ServletVersionInstrumentation.java | 2 +-
...rtaRecordingServletInputStreamWrapper.java | 2 +-
...vaxRecordingServletInputStreamWrapper.java | 2 +-
.../apm/agent/sparkjava/RoutesAdvice.java | 2 +-
.../agent/springwebflux/WebfluxHelper.java | 4 +--
...tSpringTransactionNameInstrumentation.java | 2 +-
...luginClassLoaderRootPackageCustomizer.java | 2 +-
...al.PluginClassLoaderRootPackageCustomizer} | 0
.../agent/struts/StrutsFrameworkUtils.java | 2 +-
.../agent/vertx/AbstractVertxWebHelper.java | 4 +--
.../apm/agent/vertx/NettyByteTransfer.java | 2 +-
.../vertx/helper/CommonVertxWebTest.java | 2 +-
133 files changed, 152 insertions(+), 163 deletions(-)
rename apm-agent-core/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider => co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider} (100%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/PluginClassLoaderRootPackageCustomizer.java (99%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/collections/LongList.java (98%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{db/signature => internal/collections}/package-info.java (93%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/db/signature/Scanner.java (99%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/db/signature/ScannerFilter.java (95%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/db/signature/SignatureParser.java (90%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{util => internal/db/signature}/package-info.java (93%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/util/ExecutorUtils.java (97%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/util/IOUtils.java (99%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/util/LoggerUtils.java (99%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/util/PrivilegedActionUtils.java (99%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{ => internal}/util/VersionUtils.java (97%)
rename apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/{collections => internal/util}/package-info.java (94%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/collections/LongListTest.java (98%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/db/signature/ScannerTest.java (97%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/db/signature/SignatureParserTest.java (98%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/ExecutorUtilsProviderTestImpl.java (93%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/ExecutorUtilsTest.java (96%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/IOUtilsTest.java (99%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/LoggerUtilsTest.java (96%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/PrivilegedActionUtilsTest.java (99%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/VersionUtilsTest.java (96%)
rename apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/{ => internal}/util/WeakConcurrentProviderTestImpl.java (99%)
create mode 100644 apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider
delete mode 100644 apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
rename apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
rename apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/{co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer => co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer} (100%)
diff --git a/apm-agent-benchmarks/src/main/java/co/elastic/apm/agent/benchmark/sql/SignatureParserBenchmark.java b/apm-agent-benchmarks/src/main/java/co/elastic/apm/agent/benchmark/sql/SignatureParserBenchmark.java
index abd0722acb..c6f4172d5e 100644
--- a/apm-agent-benchmarks/src/main/java/co/elastic/apm/agent/benchmark/sql/SignatureParserBenchmark.java
+++ b/apm-agent-benchmarks/src/main/java/co/elastic/apm/agent/benchmark/sql/SignatureParserBenchmark.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.benchmark.sql;
import co.elastic.apm.agent.benchmark.AbstractBenchmark;
-import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.BenchmarkMode;
import org.openjdk.jmh.annotations.Mode;
diff --git a/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java b/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java
index 766b940af6..5d409359ea 100644
--- a/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java
+++ b/apm-agent-builds/apm-agent/src/test/java/co/elastic/apm/agent/PackagingTest.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
index 6d1f863e55..341d186d22 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bbwarmup/WarmupInstrumentation.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
index e3ab17a536..05e092c94e 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.bci;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import co.elastic.apm.agent.sdk.bytebuddy.AnnotationValueOffsetMappingFactory;
import co.elastic.apm.agent.bci.bytebuddy.ErrorLoggingListener;
import co.elastic.apm.agent.bci.bytebuddy.FailSafeDeclaredMethodsCompiler;
@@ -49,7 +49,7 @@
import co.elastic.apm.agent.tracemethods.TraceMethodInstrumentation;
import co.elastic.apm.agent.util.DependencyInjectingServiceLoader;
import co.elastic.apm.agent.util.ExecutorUtils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.agent.builder.AgentBuilder.RedefinitionStrategy;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
index 73fbd90e20..659a5b8c23 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader;
import co.elastic.apm.agent.bci.classloading.LookupExposer;
import co.elastic.apm.agent.common.JvmRuntimeInfo;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.sdk.state.CallDepth;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java
index d4918e8fa1..7d402a17da 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.bci.classloading;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.dynamic.loading.ByteArrayClassLoader;
import net.bytebuddy.dynamic.loading.PackageDefinitionStrategy;
import net.bytebuddy.matcher.ElementMatcher;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServerlessConfiguration.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServerlessConfiguration.java
index cf93975d96..36875fbf04 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServerlessConfiguration.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServerlessConfiguration.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.configuration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.stagemonitor.configuration.ConfigurationOption;
import org.stagemonitor.configuration.ConfigurationOptionProvider;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServiceInfo.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServiceInfo.java
index 3e1375980e..b003a2256f 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServiceInfo.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/ServiceInfo.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.configuration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.util.Map;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/source/ConfigSources.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/source/ConfigSources.java
index f0adae9e9c..cf56cfb2de 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/source/ConfigSources.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/source/ConfigSources.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.configuration.source;
import co.elastic.apm.agent.common.util.SystemStandardOutputLogger;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.stagemonitor.configuration.source.SimpleSource;
import javax.annotation.Nullable;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/ElasticApmTracer.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/ElasticApmTracer.java
index 364c11edf6..0a4f09b84c 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/ElasticApmTracer.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/ElasticApmTracer.java
@@ -58,8 +58,8 @@
import co.elastic.apm.agent.tracer.Scope;
import co.elastic.apm.agent.tracer.dispatch.BinaryHeaderGetter;
import co.elastic.apm.agent.tracer.dispatch.TextHeaderGetter;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import org.stagemonitor.configuration.ConfigurationOption;
import org.stagemonitor.configuration.ConfigurationOptionProvider;
import org.stagemonitor.configuration.ConfigurationRegistry;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/Agent.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/Agent.java
index db00f96a04..4c66219266 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/Agent.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/Agent.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.configuration.ActivationMethod;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.configuration.CoreConfiguration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.lang.management.ManagementFactory;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/CloudMetadataProvider.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/CloudMetadataProvider.java
index 621422056c..cf2f39cab8 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/CloudMetadataProvider.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/CloudMetadataProvider.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.configuration.ServerlessConfiguration;
import co.elastic.apm.agent.util.ExecutorUtils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.util.UrlConnectionUtils;
import com.dslplatform.json.DslJson;
import com.dslplatform.json.JsonReader;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/ServiceFactory.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/ServiceFactory.java
index 0d564afef0..2a75c6b188 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/ServiceFactory.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/metadata/ServiceFactory.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.impl.metadata;
import co.elastic.apm.agent.tracer.configuration.CoreConfiguration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.util.VersionUtils;
public class ServiceFactory {
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java
index b8dc17fe1f..d80a3dba88 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/AbstractSpan.java
@@ -23,10 +23,10 @@
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.context.AbstractContext;
import co.elastic.apm.agent.report.ReporterConfiguration;
-import co.elastic.apm.agent.sdk.collections.LongList;
+import co.elastic.apm.agent.sdk.internal.collections.LongList;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import co.elastic.apm.agent.tracer.Outcome;
import co.elastic.apm.agent.tracer.Scope;
import co.elastic.apm.agent.tracer.dispatch.BinaryHeaderGetter;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/IntakeV2ReportingEventHandler.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/IntakeV2ReportingEventHandler.java
index 798b2e6440..72ea93cb44 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/IntakeV2ReportingEventHandler.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/IntakeV2ReportingEventHandler.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.util.ExecutorUtils;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import com.dslplatform.json.DslJson;
import javax.annotation.Nullable;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java
index 46d7eebbc7..14f339f9bf 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/serialize/DslJsonSerializer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.report.serialize;
-import co.elastic.apm.agent.sdk.collections.LongList;
+import co.elastic.apm.agent.sdk.internal.collections.LongList;
import co.elastic.apm.agent.impl.context.AbstractContext;
import co.elastic.apm.agent.impl.context.CloudOrigin;
import co.elastic.apm.agent.impl.context.Db;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ssl/SslUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ssl/SslUtils.java
index de94aeabb1..18d62c95d8 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ssl/SslUtils.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ssl/SslUtils.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import javax.net.ssl.HostnameVerifier;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java
index 73b6e7065f..82178d708d 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/tracemethods/TraceMethodInstrumentation.java
@@ -28,7 +28,7 @@
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/BinaryHeaderMap.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/BinaryHeaderMap.java
index 58fc905bf4..854287b7ca 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/BinaryHeaderMap.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/BinaryHeaderMap.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.tracer.pooling.Recyclable;
-import co.elastic.apm.agent.sdk.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
import javax.annotation.Nullable;
import java.nio.Buffer;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/DependencyInjectingServiceLoader.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/DependencyInjectingServiceLoader.java
index 1dbdb62ec6..9b70afb1a3 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/DependencyInjectingServiceLoader.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/DependencyInjectingServiceLoader.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.io.BufferedReader;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java
index db6aa6d58f..cf138980d8 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtils.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.util.concurrent.CancellationException;
@@ -32,7 +32,6 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
index 42a17bb7be..8c736468e8 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/ExecutorUtilsProviderImpl.java
@@ -22,7 +22,7 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
-import static co.elastic.apm.agent.sdk.util.ExecutorUtils.*;
+import static co.elastic.apm.agent.sdk.internal.util.ExecutorUtils.*;
public class ExecutorUtilsProviderImpl implements ExecutorUtilsProvider {
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java
index 8d5d66bea3..631e1f18d1 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.util;
import co.elastic.apm.agent.tracer.GlobalLocks;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/VersionUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/VersionUtils.java
index a301021488..64424028d0 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/VersionUtils.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/VersionUtils.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.bci.ElasticApmAgent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.io.File;
diff --git a/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider b/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider
similarity index 100%
rename from apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
rename to apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/objectpool/impl/QueueBasedObjectPoolTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/objectpool/impl/QueueBasedObjectPoolTest.java
index 3ee6be010f..4edae48c03 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/objectpool/impl/QueueBasedObjectPoolTest.java
+++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/objectpool/impl/QueueBasedObjectPoolTest.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.objectpool.ObjectPool;
import co.elastic.apm.agent.objectpool.ObjectPoolTest;
import co.elastic.apm.agent.objectpool.TestRecyclable;
-import co.elastic.apm.agent.sdk.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
import org.jctools.queues.atomic.MpmcAtomicArrayQueue;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java
index f0fdf9bae5..ccfd0882db 100644
--- a/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java
+++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/report/serialize/DslJsonSerializerTest.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.MockReporter;
import co.elastic.apm.agent.MockTracer;
-import co.elastic.apm.agent.sdk.collections.LongList;
+import co.elastic.apm.agent.sdk.internal.collections.LongList;
import co.elastic.apm.agent.configuration.CoreConfiguration;
import co.elastic.apm.agent.configuration.ServerlessConfiguration;
import co.elastic.apm.agent.configuration.SpyConfiguration;
@@ -56,7 +56,7 @@
import co.elastic.apm.agent.impl.transaction.TraceContext;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.report.ApmServerClient;
-import co.elastic.apm.agent.sdk.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
import com.dslplatform.json.JsonWriter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
index 1e2f67c286..f7af74d8a0 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchers.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.sdk.internal.InternalUtil;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
import net.bytebuddy.description.NamedElement;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/PluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/PluginClassLoaderRootPackageCustomizer.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/PluginClassLoaderRootPackageCustomizer.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/PluginClassLoaderRootPackageCustomizer.java
index 07ba6653b9..c364ea60d7 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/PluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/PluginClassLoaderRootPackageCustomizer.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk;
+package co.elastic.apm.agent.sdk.internal;
import java.lang.instrument.Instrumentation;
import java.util.Collection;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/LongList.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/collections/LongList.java
similarity index 98%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/LongList.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/collections/LongList.java
index 97085333d9..032b886c39 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/LongList.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/collections/LongList.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.collections;
+package co.elastic.apm.agent.sdk.internal.collections;
import java.util.Arrays;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/package-info.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/collections/package-info.java
similarity index 93%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/package-info.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/collections/package-info.java
index f547a5d737..b6ee660d0c 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/package-info.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/collections/package-info.java
@@ -17,6 +17,6 @@
* under the License.
*/
@NonnullApi
-package co.elastic.apm.agent.sdk.db.signature;
+package co.elastic.apm.agent.sdk.internal.collections;
import co.elastic.apm.agent.sdk.NonnullApi;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/Scanner.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/Scanner.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/Scanner.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/Scanner.java
index 7b2d8c231b..abd2f4da2e 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/Scanner.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/Scanner.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.db.signature;
+package co.elastic.apm.agent.sdk.internal.db.signature;
public class Scanner {
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/ScannerFilter.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/ScannerFilter.java
similarity index 95%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/ScannerFilter.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/ScannerFilter.java
index 21682f03d5..1fe2e771d0 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/ScannerFilter.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/ScannerFilter.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.db.signature;
+package co.elastic.apm.agent.sdk.internal.db.signature;
public interface ScannerFilter {
boolean skip(Scanner s, char c);
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/SignatureParser.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/SignatureParser.java
similarity index 90%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/SignatureParser.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/SignatureParser.java
index a3a0abee36..64722bbd59 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/db/signature/SignatureParser.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/SignatureParser.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.db.signature;
+package co.elastic.apm.agent.sdk.internal.db.signature;
import co.elastic.apm.agent.sdk.weakconcurrent.DetachedThreadLocal;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
@@ -27,13 +27,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.EOF;
-import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.FROM;
-import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.IDENT;
-import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.INTO;
-import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.LPAREN;
-import static co.elastic.apm.agent.sdk.db.signature.Scanner.Token.RPAREN;
-
public class SignatureParser {
/**
@@ -126,7 +119,7 @@ private void parse(Scanner scanner, String query, StringBuilder signature, @Null
return;
case DELETE:
signature.append("DELETE");
- if (scanner.scanUntil(FROM) && scanner.scanUntil(Scanner.Token.IDENT)) {
+ if (scanner.scanUntil(Scanner.Token.FROM) && scanner.scanUntil(Scanner.Token.IDENT)) {
signature.append(" FROM");
appendIdentifiers(scanner, signature, dbLink);
}
@@ -142,12 +135,12 @@ private void parse(Scanner scanner, String query, StringBuilder signature, @Null
case SELECT:
signature.append("SELECT");
int level = 0;
- for (Scanner.Token t = scanner.scan(); t != EOF; t = scanner.scan()) {
- if (t == LPAREN) {
+ for (Scanner.Token t = scanner.scan(); t != Scanner.Token.EOF; t = scanner.scan()) {
+ if (t == Scanner.Token.LPAREN) {
level++;
- } else if (t == RPAREN) {
+ } else if (t == Scanner.Token.RPAREN) {
level--;
- } else if (t == FROM) {
+ } else if (t == Scanner.Token.FROM) {
if (level == 0) {
if (scanner.scanToken(Scanner.Token.IDENT)) {
signature.append(" FROM");
@@ -163,10 +156,10 @@ private void parse(Scanner scanner, String query, StringBuilder signature, @Null
signature.append("UPDATE");
// Scan for the table name
boolean hasPeriod = false, hasFirstPeriod = false, isDbLink = false;
- if (scanner.scanToken(IDENT)) {
+ if (scanner.scanToken(Scanner.Token.IDENT)) {
signature.append(' ');
scanner.appendCurrentTokenText(signature);
- for (Scanner.Token t = scanner.scan(); t != EOF; t = scanner.scan()) {
+ for (Scanner.Token t = scanner.scan(); t != Scanner.Token.EOF; t = scanner.scan()) {
switch (t) {
case IDENT:
if (hasPeriod) {
@@ -206,7 +199,7 @@ private void parse(Scanner scanner, String query, StringBuilder signature, @Null
return;
case MERGE:
signature.append("MERGE");
- if (scanner.scanToken(INTO) && scanner.scanUntil(Scanner.Token.IDENT)) {
+ if (scanner.scanToken(Scanner.Token.INTO) && scanner.scanUntil(Scanner.Token.IDENT)) {
signature.append(" INTO");
appendIdentifiers(scanner, signature, dbLink);
}
@@ -222,7 +215,7 @@ private void appendIdentifiers(Scanner scanner, StringBuilder signature, @Nullab
signature.append(' ');
scanner.appendCurrentTokenText(signature);
boolean connectedIdents = false, isDbLink = false;
- for (Scanner.Token t = scanner.scan(); t != EOF; t = scanner.scan()) {
+ for (Scanner.Token t = scanner.scan(); t != Scanner.Token.EOF; t = scanner.scan()) {
switch (t) {
case IDENT:
// do not add tokens which are separated by a space
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/package-info.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/package-info.java
similarity index 93%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/package-info.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/package-info.java
index 335c812824..1bd1e63ac0 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/package-info.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/db/signature/package-info.java
@@ -17,6 +17,6 @@
* under the License.
*/
@NonnullApi
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.db.signature;
import co.elastic.apm.agent.sdk.NonnullApi;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtils.java
similarity index 97%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtils.java
index 572ec87642..ee71d26188 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtils.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import co.elastic.apm.agent.sdk.internal.InternalUtil;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/IOUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/IOUtils.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/IOUtils.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/IOUtils.java
index 7df1b7ecd2..3a953d96b2 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/IOUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/IOUtils.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import java.io.IOException;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/LoggerUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/LoggerUtils.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/LoggerUtils.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/LoggerUtils.java
index b6b09a875f..3f726790bb 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/LoggerUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/LoggerUtils.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import co.elastic.apm.agent.sdk.logging.Logger;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/PrivilegedActionUtils.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtils.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/PrivilegedActionUtils.java
index 00e893062b..5dd7229eec 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/PrivilegedActionUtils.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import javax.annotation.Nullable;
import java.io.File;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/VersionUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/VersionUtils.java
similarity index 97%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/VersionUtils.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/VersionUtils.java
index cca4f2f4f0..c8599c25bf 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/VersionUtils.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/VersionUtils.java
@@ -16,11 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.io.File;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/package-info.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/package-info.java
similarity index 94%
rename from apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/package-info.java
rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/package-info.java
index 3ddf4bacce..a2528aa460 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/package-info.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/util/package-info.java
@@ -17,6 +17,6 @@
* under the License.
*/
@NonnullApi
-package co.elastic.apm.agent.sdk.collections;
+package co.elastic.apm.agent.sdk.internal.util;
import co.elastic.apm.agent.sdk.NonnullApi;
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/GlobalVariables.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/GlobalVariables.java
index fad0c520d2..760dc3dadc 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/GlobalVariables.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/GlobalVariables.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.sdk.state;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/collections/LongListTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/collections/LongListTest.java
similarity index 98%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/collections/LongListTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/collections/LongListTest.java
index 6adf679da6..12b7b01eef 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/collections/LongListTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/collections/LongListTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.collections;
+package co.elastic.apm.agent.sdk.internal.collections;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/ScannerTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/db/signature/ScannerTest.java
similarity index 97%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/ScannerTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/db/signature/ScannerTest.java
index 8a01f3664f..b1a8dcd645 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/ScannerTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/db/signature/ScannerTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.db.signature;
+package co.elastic.apm.agent.sdk.internal.db.signature;
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.jupiter.api.BeforeEach;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/SignatureParserTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/db/signature/SignatureParserTest.java
similarity index 98%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/SignatureParserTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/db/signature/SignatureParserTest.java
index 99a2688455..53ebbfe2b0 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/db/signature/SignatureParserTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/db/signature/SignatureParserTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.db.signature;
+package co.elastic.apm.agent.sdk.internal.db.signature;
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtilsProviderTestImpl.java
similarity index 93%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtilsProviderTestImpl.java
index 80393f5dfd..ff3bd6df98 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsProviderTestImpl.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtilsProviderTestImpl.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
@@ -24,7 +24,7 @@
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
-import static co.elastic.apm.agent.sdk.util.ExecutorUtils.ExecutorUtilsProvider;
+import static co.elastic.apm.agent.sdk.internal.util.ExecutorUtils.ExecutorUtilsProvider;
public class ExecutorUtilsProviderTestImpl implements ExecutorUtilsProvider {
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtilsTest.java
similarity index 96%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtilsTest.java
index 16dbcc1896..23acbdf862 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/ExecutorUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/ExecutorUtilsTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/IOUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/IOUtilsTest.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/IOUtilsTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/IOUtilsTest.java
index cdfdfd4c8f..a4b5807b01 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/IOUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/IOUtilsTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import org.apache.commons.lang3.RandomStringUtils;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/LoggerUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/LoggerUtilsTest.java
similarity index 96%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/LoggerUtilsTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/LoggerUtilsTest.java
index e25265c3d7..35484291d1 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/LoggerUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/LoggerUtilsTest.java
@@ -16,11 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import org.junit.jupiter.api.Test;
import co.elastic.apm.agent.sdk.logging.Logger;
+import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.doReturn;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/PrivilegedActionUtilsTest.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/PrivilegedActionUtilsTest.java
index ab23679c7e..054c99d712 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/PrivilegedActionUtilsTest.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledForJreRange;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/VersionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/VersionUtilsTest.java
similarity index 96%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/VersionUtilsTest.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/VersionUtilsTest.java
index 617072d919..bd4eaea2f4 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/VersionUtilsTest.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/VersionUtilsTest.java
@@ -16,9 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
diff --git a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/WeakConcurrentProviderTestImpl.java
similarity index 99%
rename from apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java
rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/WeakConcurrentProviderTestImpl.java
index 23ca2f1875..91685eed56 100644
--- a/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/WeakConcurrentProviderTestImpl.java
+++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/internal/util/WeakConcurrentProviderTestImpl.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package co.elastic.apm.agent.sdk.util;
+package co.elastic.apm.agent.sdk.internal.util;
import co.elastic.apm.agent.sdk.weakconcurrent.DetachedThreadLocal;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
diff --git a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider
new file mode 100644
index 0000000000..535889c6f7
--- /dev/null
+++ b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.util.ExecutorUtils$ExecutorUtilsProvider
@@ -0,0 +1 @@
+co.elastic.apm.agent.sdk.internal.util.ExecutorUtilsProviderTestImpl
diff --git a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
deleted file mode 100644
index 6b72c0e31e..0000000000
--- a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.util.ExecutorUtils$ExecutorUtilsProvider
+++ /dev/null
@@ -1 +0,0 @@
-co.elastic.apm.agent.sdk.util.ExecutorUtilsProviderTestImpl
diff --git a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider
index b39c187d86..b71dc6a0f9 100644
--- a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider
+++ b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent$WeakConcurrentProvider
@@ -1 +1 @@
-co.elastic.apm.agent.sdk.util.WeakConcurrentProviderTestImpl
+co.elastic.apm.agent.sdk.internal.util.WeakConcurrentProviderTestImpl
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/src/main/java/co/elastic/apm/agent/httpclient/v3/HttpClient3Instrumentation.java b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/src/main/java/co/elastic/apm/agent/httpclient/v3/HttpClient3Instrumentation.java
index 70030c080b..7253f4488f 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/src/main/java/co/elastic/apm/agent/httpclient/v3/HttpClient3Instrumentation.java
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/src/main/java/co/elastic/apm/agent/httpclient/v3/HttpClient3Instrumentation.java
@@ -28,7 +28,7 @@
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.dispatch.HeaderUtils;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureExceptionInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureExceptionInstrumentation.java
index d5363317ea..7d7f1f179d 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureExceptionInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureExceptionInstrumentation.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.pluginapi;
import co.elastic.apm.agent.impl.Tracer;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
index 19bacf9bcc..4c1edd87f0 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/CaptureTransactionInstrumentation.java
@@ -28,7 +28,7 @@
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.tracer.configuration.CoreConfiguration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.method.MethodDescription;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ElasticApmApiInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ElasticApmApiInstrumentation.java
index 2d698d9e91..105d55a0c7 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ElasticApmApiInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ElasticApmApiInstrumentation.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.impl.Tracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
index b9fa294660..4bb507aa5e 100644
--- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
+++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/TracedInstrumentation.java
@@ -32,7 +32,7 @@
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.tracer.configuration.CoreConfiguration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.method.MethodDescription;
diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractSQSInstrumentationHelper.java b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractSQSInstrumentationHelper.java
index ed9645af83..27cc9baf96 100644
--- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractSQSInstrumentationHelper.java
+++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractSQSInstrumentationHelper.java
@@ -28,7 +28,7 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.tracer.metadata.Message;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.dispatch.TextHeaderGetter;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV1TransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV1TransactionHelper.java
index a50b343691..d2d4589d9c 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV1TransactionHelper.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV1TransactionHelper.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.impl.transaction.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV2TransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV2TransactionHelper.java
index 237de61930..ec7ed0db69 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV2TransactionHelper.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/APIGatewayProxyV2TransactionHelper.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.impl.transaction.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractLambdaTransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractLambdaTransactionHelper.java
index 7da6065a30..8c61317ce1 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractLambdaTransactionHelper.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractLambdaTransactionHelper.java
@@ -31,8 +31,8 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.tracer.AbstractSpan;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractMessageBasedTransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractMessageBasedTransactionHelper.java
index 4e171e3d51..328d88febf 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractMessageBasedTransactionHelper.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractMessageBasedTransactionHelper.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.impl.context.ServiceOrigin;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.tracer.AbstractSpan;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/PlainTransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/PlainTransactionHelper.java
index 28734e0b5e..d86880d0f4 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/PlainTransactionHelper.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/PlainTransactionHelper.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.impl.transaction.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/S3TransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/S3TransactionHelper.java
index 5eafa9a1be..fbfda924cd 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/S3TransactionHelper.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/S3TransactionHelper.java
@@ -25,7 +25,7 @@
import co.elastic.apm.agent.impl.context.ServiceOrigin;
import co.elastic.apm.agent.impl.transaction.FaasTrigger;
import co.elastic.apm.agent.impl.transaction.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.lambda.runtime.events.models.s3.S3EventNotification;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractPlainLambdaTest.java b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractPlainLambdaTest.java
index fed163cb61..8eae63d31a 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractPlainLambdaTest.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractPlainLambdaTest.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.impl.transaction.Faas;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.tracer.Outcome;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.util.concurrent.TimeUnit;
diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractStreamHandlerLambdaTest.java b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractStreamHandlerLambdaTest.java
index 1ccfc1a7f5..ab1f533b4e 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractStreamHandlerLambdaTest.java
+++ b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/AbstractStreamHandlerLambdaTest.java
@@ -24,7 +24,7 @@
import co.elastic.apm.agent.impl.transaction.Faas;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.tracer.Outcome;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import org.assertj.core.api.ThrowableAssert;
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java b/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java
index 1c15393363..6918214672 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/src/main/java/co/elastic/apm/agent/cassandra/CassandraHelper.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.cassandra;
-import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Tracer;
diff --git a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/AlibabaMonitorFilterAdvice.java b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/AlibabaMonitorFilterAdvice.java
index ac024eff78..4cef7a6aae 100644
--- a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/AlibabaMonitorFilterAdvice.java
+++ b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/AlibabaMonitorFilterAdvice.java
@@ -26,7 +26,7 @@
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Result;
diff --git a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java
index 28bcbc330d..09d3235b34 100644
--- a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java
+++ b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/advice/ApacheMonitorFilterAdvice.java
@@ -26,7 +26,7 @@
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import org.apache.dubbo.rpc.AppResponse;
import org.apache.dubbo.rpc.AsyncRpcResult;
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentationHelper.java b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentationHelper.java
index 847add1d3c..be61271c86 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentationHelper.java
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/src/main/java/co/elastic/apm/agent/esrestclient/ElasticsearchRestClientInstrumentationHelper.java
@@ -27,8 +27,8 @@
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.pooling.ObjectPool;
-import co.elastic.apm.agent.sdk.util.IOUtils;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import co.elastic.apm.agent.tracer.pooling.Allocator;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
diff --git a/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/ServerCallHandlerInstrumentation.java b/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/ServerCallHandlerInstrumentation.java
index b7cb984a0a..8a3cac1181 100644
--- a/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/ServerCallHandlerInstrumentation.java
+++ b/apm-agent-plugins/apm-grpc/apm-grpc-plugin/src/main/java/co/elastic/apm/agent/grpc/ServerCallHandlerInstrumentation.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.sdk.DynamicTransformer;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import io.grpc.Metadata;
import io.grpc.ServerCall;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java
index 79091e7de8..5c8f906be6 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentation.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import jakarta.websocket.server.ServerEndpoint;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java
index 8e4c084338..965b58c4d4 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/main/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentation.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import net.bytebuddy.asm.Advice;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentationTest.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentationTest.java
index 54385a879b..8bff75c9c4 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentationTest.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JakartaServerEndpointInstrumentationTest.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.websocket;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import co.elastic.apm.agent.websocket.endpoint.JakartaServerEndpoint;
class JakartaServerEndpointInstrumentationTest extends BaseServerEndpointInstrumentationTest {
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentationTest.java b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentationTest.java
index 33dd3fa221..d9bd783f0c 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentationTest.java
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/src/test/java/co/elastic/apm/agent/websocket/JavaxServerEndpointInstrumentationTest.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.websocket;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import co.elastic.apm.agent.websocket.endpoint.JavaxServerEndpoint;
class JavaxServerEndpointInstrumentationTest extends BaseServerEndpointInstrumentationTest {
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java
index 5f7c1b759b..3e4f9b3f3e 100644
--- a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java
+++ b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ExecutorInstrumentation.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.state.GlobalVariables;
-import co.elastic.apm.agent.sdk.util.ExecutorUtils;
+import co.elastic.apm.agent.sdk.internal.util.ExecutorUtils;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Tracer;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java
index 7ee26c7c31..a8ee684623 100644
--- a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/JavaConcurrentPluginClassLoaderRootPackageCustomizer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.concurrent;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import java.util.Collection;
import java.util.Collections;
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-java-concurrent-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java b/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java
index b3b62377d4..1cfa4b849e 100644
--- a/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java
+++ b/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapPluginModuleOpens.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.java_ldap;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import java.util.Collection;
import java.util.Collections;
diff --git a/apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-java-ldap-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java
index f7590cd378..3cbf219743 100644
--- a/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java
+++ b/apm-agent-plugins/apm-javalin-plugin/src/main/java/co/elastic/apm/agent/javalin/JavalinInstrumentation.java
@@ -26,7 +26,7 @@
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.tracer.util.TransactionNameUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import io.javalin.http.Context;
import io.javalin.http.Handler;
import io.javalin.http.HandlerType;
diff --git a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java
index 4b341b4c17..5eaf948c77 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JakartaeeJaxRsTransactionNameInstrumentation.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import net.bytebuddy.asm.Advice;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java
index fba48ad089..0240e9d84b 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-jaxrs-plugin/src/main/java/co/elastic/apm/agent/jaxrs/JavaxJaxRsTransactionNameInstrumentation.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.sdk.bytebuddy.SimpleMethodSignatureOffsetMappingFactory;
import co.elastic.apm.agent.tracer.Tracer;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import net.bytebuddy.asm.Advice;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java
index ecacb56ab6..e74d3e10cc 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcFilter.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.jdbc;
-import co.elastic.apm.agent.sdk.db.signature.Scanner;
-import co.elastic.apm.agent.sdk.db.signature.ScannerFilter;
+import co.elastic.apm.agent.sdk.internal.db.signature.Scanner;
+import co.elastic.apm.agent.sdk.internal.db.signature.ScannerFilter;
public class JdbcFilter implements ScannerFilter {
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java
index ecfbb5f5e4..912a567398 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/helper/JdbcHelper.java
@@ -18,8 +18,8 @@
*/
package co.elastic.apm.agent.jdbc.helper;
-import co.elastic.apm.agent.sdk.db.signature.Scanner;
-import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.internal.db.signature.Scanner;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.jdbc.JdbcFilter;
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
index 11e08c1559..71dbd2e4f8 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.AbstractInstrumentationTest;
import co.elastic.apm.agent.configuration.SpanConfiguration;
-import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
import co.elastic.apm.agent.impl.context.Db;
import co.elastic.apm.agent.impl.context.Destination;
import co.elastic.apm.agent.tracer.Outcome;
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
index 6fab1e7ab8..f725d19466 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcSignatureParserTest.java
@@ -18,9 +18,9 @@
*/
package co.elastic.apm.agent.jdbc;
-import co.elastic.apm.agent.sdk.db.signature.Scanner;
-import co.elastic.apm.agent.sdk.db.signature.SignatureParser;
-import co.elastic.apm.agent.sdk.db.signature.SignatureParserTest;
+import co.elastic.apm.agent.sdk.internal.db.signature.Scanner;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParserTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
diff --git a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsInstrumentationHelper.java b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsInstrumentationHelper.java
index a7c9f6a308..fc2a0ba44a 100644
--- a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsInstrumentationHelper.java
+++ b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsInstrumentationHelper.java
@@ -28,7 +28,7 @@
import co.elastic.apm.agent.common.util.WildcardMatcher;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import javax.jms.Destination;
diff --git a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageConsumerInstrumentation.java b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageConsumerInstrumentation.java
index 9dfb07f5f0..f429e47dfa 100644
--- a/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageConsumerInstrumentation.java
+++ b/apm-agent-plugins/apm-jms-plugin/apm-jms-plugin-base/src/main/java/co/elastic/apm/agent/jms/JmsMessageConsumerInstrumentation.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.Span;
import co.elastic.apm.agent.tracer.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
import net.bytebuddy.description.NamedElement;
diff --git a/apm-agent-plugins/apm-jmx-plugin/src/main/java/co/elastic/apm/agent/jmx/JmxMetricTracker.java b/apm-agent-plugins/apm-jmx-plugin/src/main/java/co/elastic/apm/agent/jmx/JmxMetricTracker.java
index dbc2473b39..300cbb22de 100644
--- a/apm-agent-plugins/apm-jmx-plugin/src/main/java/co/elastic/apm/agent/jmx/JmxMetricTracker.java
+++ b/apm-agent-plugins/apm-jmx-plugin/src/main/java/co/elastic/apm/agent/jmx/JmxMetricTracker.java
@@ -26,7 +26,7 @@
import co.elastic.apm.agent.tracer.GlobalLocks;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.stagemonitor.configuration.ConfigurationOption;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/helper/ConsumerRecordsIteratorWrapper.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/helper/ConsumerRecordsIteratorWrapper.java
index 3e949dc647..7ecf0452e4 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/helper/ConsumerRecordsIteratorWrapper.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-headers-plugin/src/main/java/co/elastic/apm/agent/kafka/helper/ConsumerRecordsIteratorWrapper.java
@@ -24,7 +24,7 @@
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.common.util.WildcardMatcher;
import co.elastic.apm.agent.tracer.metadata.Message;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.common.header.Header;
import org.apache.kafka.common.record.TimestampType;
diff --git a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-spring-plugin/src/main/java/co/elastic/apm/agent/kafka/SpringKafkaBatchListenerInstrumentation.java b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-spring-plugin/src/main/java/co/elastic/apm/agent/kafka/SpringKafkaBatchListenerInstrumentation.java
index 33d3e18841..127026e546 100644
--- a/apm-agent-plugins/apm-kafka-plugin/apm-kafka-spring-plugin/src/main/java/co/elastic/apm/agent/kafka/SpringKafkaBatchListenerInstrumentation.java
+++ b/apm-agent-plugins/apm-kafka-plugin/apm-kafka-spring-plugin/src/main/java/co/elastic/apm/agent/kafka/SpringKafkaBatchListenerInstrumentation.java
@@ -21,8 +21,8 @@
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/AbstractJulEcsReformattingHelper.java b/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/AbstractJulEcsReformattingHelper.java
index f4505a911a..7e0eb6fd25 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/AbstractJulEcsReformattingHelper.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/AbstractJulEcsReformattingHelper.java
@@ -24,7 +24,7 @@
import co.elastic.apm.agent.report.Reporter;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import co.elastic.logging.AdditionalField;
import co.elastic.logging.jul.EcsFormatter;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/JulEcsReformattingHelper.java b/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/JulEcsReformattingHelper.java
index bf3f40a521..1dacd82aa8 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/JulEcsReformattingHelper.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/java/co/elastic/apm/agent/jul/reformatting/JulEcsReformattingHelper.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.jul.reformatting;
import co.elastic.apm.agent.loginstr.reformatting.Utils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
import java.io.File;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-jul-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-log4j2-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java
index db348a78fa..da048684d6 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/LoggingPluginClassLoaderRootPackageCustomizer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.loginstr;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import java.util.Arrays;
import java.util.Collection;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/error/LoggerErrorHelper.java b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/error/LoggerErrorHelper.java
index bd81c92c46..521e241ccc 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/error/LoggerErrorHelper.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-logging-plugin-common/src/main/java/co/elastic/apm/agent/loginstr/error/LoggerErrorHelper.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.impl.error.ErrorCapture;
import co.elastic.apm.agent.sdk.state.CallDepth;
import co.elastic.apm.agent.tracer.Tracer;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/java/co/elastic/apm/agent/tomcatlogging/reformatting/TomcatReformattingHelper.java b/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/java/co/elastic/apm/agent/tomcatlogging/reformatting/TomcatReformattingHelper.java
index 9222e1f337..e120bbdb57 100644
--- a/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/java/co/elastic/apm/agent/tomcatlogging/reformatting/TomcatReformattingHelper.java
+++ b/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/java/co/elastic/apm/agent/tomcatlogging/reformatting/TomcatReformattingHelper.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.jul.reformatting.AbstractJulEcsReformattingHelper;
import co.elastic.apm.agent.loginstr.reformatting.Utils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.apache.juli.FileHandler;
import javax.annotation.Nullable;
diff --git a/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-logging-plugin/apm-tomcat-logging-plugin/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/MicrometerMeterRegistrySerializer.java b/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/MicrometerMeterRegistrySerializer.java
index 1b83dc6dd7..dbcdbfb8d9 100644
--- a/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/MicrometerMeterRegistrySerializer.java
+++ b/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/MicrometerMeterRegistrySerializer.java
@@ -24,7 +24,7 @@
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakSet;
import co.elastic.apm.agent.tracer.configuration.MetricsConfiguration;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.dslplatform.json.DslJson;
import com.dslplatform.json.JsonWriter;
import com.dslplatform.json.NumberConverter;
diff --git a/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientAsyncInstrumentationTest.java b/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientAsyncInstrumentationTest.java
index d7a23e1bc7..c2c81debf7 100644
--- a/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientAsyncInstrumentationTest.java
+++ b/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientAsyncInstrumentationTest.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.httpclient.AbstractHttpClientInstrumentationTest;
import co.elastic.apm.agent.common.util.Version;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
diff --git a/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientInstrumentationTest.java b/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientInstrumentationTest.java
index 262c7a8d39..d014f6c56c 100644
--- a/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientInstrumentationTest.java
+++ b/apm-agent-plugins/apm-okhttp-plugin/src/test/java/co/elastic/apm/agent/okhttp/OkHttp3ClientInstrumentationTest.java
@@ -20,7 +20,7 @@
import co.elastic.apm.agent.httpclient.AbstractHttpClientInstrumentationTest;
import co.elastic.apm.agent.common.util.Version;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import org.junit.Before;
diff --git a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/ElasticOtelMetricsExporter.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/ElasticOtelMetricsExporter.java
index 7af75cca8e..941cf14f05 100644
--- a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/ElasticOtelMetricsExporter.java
+++ b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/ElasticOtelMetricsExporter.java
@@ -22,7 +22,7 @@
import co.elastic.apm.agent.report.Reporter;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.ExecutorUtils;
+import co.elastic.apm.agent.sdk.internal.util.ExecutorUtils;
import co.elastic.apm.agent.tracer.configuration.MetricsConfiguration;
import co.elastic.apm.agent.tracer.configuration.ReporterConfiguration;
import io.opentelemetry.sdk.common.CompletableResultCode;
diff --git a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/SdkMeterProviderBuilderInstrumentation.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/SdkMeterProviderBuilderInstrumentation.java
index c50d0f5a25..91b982a349 100644
--- a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/SdkMeterProviderBuilderInstrumentation.java
+++ b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/SdkMeterProviderBuilderInstrumentation.java
@@ -25,7 +25,7 @@
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent;
import co.elastic.apm.agent.sdk.weakconcurrent.WeakSet;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import net.bytebuddy.asm.Advice;
diff --git a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpan.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpan.java
index 35b3b8faac..2fba44e39d 100644
--- a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpan.java
+++ b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpan.java
@@ -25,8 +25,8 @@
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
diff --git a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpanBuilder.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpanBuilder.java
index 8b8c6477ae..e52149dc5f 100644
--- a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpanBuilder.java
+++ b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/tracing/OTelSpanBuilder.java
@@ -27,9 +27,9 @@
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
diff --git a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanBuilderInstrumentation.java b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanBuilderInstrumentation.java
index 212894de6a..9ff48901f6 100644
--- a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanBuilderInstrumentation.java
+++ b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanBuilderInstrumentation.java
@@ -24,7 +24,7 @@
import co.elastic.apm.agent.impl.transaction.AbstractSpan;
import co.elastic.apm.agent.impl.transaction.TraceContext;
import co.elastic.apm.agent.impl.transaction.Transaction;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java b/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java
index cb79481e62..551a74b8be 100644
--- a/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java
+++ b/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/CallTree.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.profiler;
-import co.elastic.apm.agent.sdk.collections.LongList;
+import co.elastic.apm.agent.sdk.internal.collections.LongList;
import co.elastic.apm.agent.impl.ElasticApmTracer;
import co.elastic.apm.agent.impl.transaction.Span;
import co.elastic.apm.agent.impl.transaction.StackFrame;
diff --git a/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/SamplingProfiler.java b/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/SamplingProfiler.java
index 93d48706b7..8b1f8daafb 100644
--- a/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/SamplingProfiler.java
+++ b/apm-agent-plugins/apm-profiling-plugin/src/main/java/co/elastic/apm/agent/profiler/SamplingProfiler.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.profiler;
-import co.elastic.apm.agent.sdk.util.ExecutorUtils;
+import co.elastic.apm.agent.sdk.internal.util.ExecutorUtils;
import co.elastic.apm.agent.tracer.configuration.CoreConfiguration;
import co.elastic.apm.agent.tracer.configuration.TimeDuration;
import co.elastic.apm.agent.context.AbstractLifecycleListener;
diff --git a/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java b/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java
index 885556c87f..cda510117e 100644
--- a/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-quartz/apm-quartz-common/src/main/java/co/elastic/apm/agent/quartzjob/AbstractJobTransactionNameInstrumentation.java
@@ -22,8 +22,8 @@
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Outcome;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java
index 914d20051d..2ac2847c0c 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/ConsumerInstrumentation.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.rabbitmq.header.RabbitMQTextHeaderGetter;
import co.elastic.apm.agent.tracer.metadata.Message;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.Envelope;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpBatchMessageListenerInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpBatchMessageListenerInstrumentation.java
index 5f333ac8e7..07ed99ce33 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpBatchMessageListenerInstrumentation.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpBatchMessageListenerInstrumentation.java
@@ -27,8 +27,8 @@
import co.elastic.apm.agent.rabbitmq.header.SpringRabbitMQTextHeaderGetter;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument;
import net.bytebuddy.description.method.MethodDescription;
diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpTransactionHelper.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpTransactionHelper.java
index 8ea4b583e4..6aa8d6627e 100644
--- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpTransactionHelper.java
+++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-spring/src/main/java/co/elastic/apm/agent/rabbitmq/SpringAmqpTransactionHelper.java
@@ -21,7 +21,7 @@
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.rabbitmq.header.SpringRabbitMQTextHeaderGetter;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageProperties;
diff --git a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java
index bc4b3c3b55..bc439465cc 100644
--- a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/ScheduledTransactionNameInstrumentation.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Outcome;
diff --git a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java
index 1bc5230964..d2a42b92db 100644
--- a/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java
+++ b/apm-agent-plugins/apm-scheduled-annotation-plugin/src/main/java/co/elastic/apm/agent/scheduled/TimerTaskInstrumentation.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.AbstractSpan;
import co.elastic.apm.agent.tracer.GlobalTracer;
import co.elastic.apm.agent.tracer.Tracer;
diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletVersionInstrumentation.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletVersionInstrumentation.java
index d4247305ea..6ce4ef9a13 100644
--- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletVersionInstrumentation.java
+++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletVersionInstrumentation.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.servlet;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
import net.bytebuddy.description.NamedElement;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JakartaRecordingServletInputStreamWrapper.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JakartaRecordingServletInputStreamWrapper.java
index 3ea86db1f2..ee7f54b1b9 100644
--- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JakartaRecordingServletInputStreamWrapper.java
+++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JakartaRecordingServletInputStreamWrapper.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.servlet.helper;
import co.elastic.apm.agent.tracer.metadata.Request;
-import co.elastic.apm.agent.sdk.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
import jakarta.servlet.ReadListener;
import jakarta.servlet.ServletInputStream;
diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JavaxRecordingServletInputStreamWrapper.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JavaxRecordingServletInputStreamWrapper.java
index 67ce70b536..e4e0f4bd93 100644
--- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JavaxRecordingServletInputStreamWrapper.java
+++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/helper/JavaxRecordingServletInputStreamWrapper.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.servlet.helper;
import co.elastic.apm.agent.tracer.metadata.Request;
-import co.elastic.apm.agent.sdk.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
diff --git a/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesAdvice.java b/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesAdvice.java
index 03a96dcd2f..ddef727dd0 100644
--- a/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesAdvice.java
+++ b/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesAdvice.java
@@ -23,7 +23,7 @@
import co.elastic.apm.agent.tracer.Tracer;
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.tracer.util.TransactionNameUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import net.bytebuddy.asm.Advice;
import spark.Route;
import spark.routematch.RouteMatch;
diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxHelper.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxHelper.java
index f2b6bcf3d2..39fa391b35 100644
--- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxHelper.java
+++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebfluxHelper.java
@@ -32,8 +32,8 @@
import co.elastic.apm.agent.sdk.weakconcurrent.WeakMap;
import co.elastic.apm.agent.tracer.metadata.Request;
import co.elastic.apm.agent.tracer.metadata.Response;
-import co.elastic.apm.agent.sdk.util.LoggerUtils;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.LoggerUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
import co.elastic.apm.agent.tracer.util.TransactionNameUtils;
import org.reactivestreams.Publisher;
import org.springframework.http.HttpCookie;
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java
index 96cde231c8..f55f37f5c2 100644
--- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java
+++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringTransactionNameInstrumentation.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.springwebmvc;
import co.elastic.apm.agent.sdk.ElasticApmInstrumentation;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import co.elastic.apm.agent.servlet.Constants;
import co.elastic.apm.agent.servlet.adapter.ServletRequestAdapter;
import co.elastic.apm.agent.tracer.GlobalTracer;
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java
index 8d3a9ec5dc..deba804aa0 100644
--- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java
+++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/SpringMvcPluginClassLoaderRootPackageCustomizer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.springwebmvc;
-import co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer;
+import co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer;
import java.util.Arrays;
import java.util.Collection;
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
similarity index 100%
rename from apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.PluginClassLoaderRootPackageCustomizer
rename to apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.internal.PluginClassLoaderRootPackageCustomizer
diff --git a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsFrameworkUtils.java b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsFrameworkUtils.java
index 0b353f523c..09fa0b6ef3 100644
--- a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsFrameworkUtils.java
+++ b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsFrameworkUtils.java
@@ -19,7 +19,7 @@
package co.elastic.apm.agent.struts;
import co.elastic.apm.agent.tracer.Transaction;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import com.opensymphony.xwork2.ActionProxy;
public class StrutsFrameworkUtils {
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractVertxWebHelper.java b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractVertxWebHelper.java
index 9702a65860..362726c51b 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractVertxWebHelper.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractVertxWebHelper.java
@@ -24,8 +24,8 @@
import co.elastic.apm.agent.tracer.Transaction;
import co.elastic.apm.agent.tracer.metadata.Request;
import co.elastic.apm.agent.tracer.metadata.Response;
-import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.PrivilegedActionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import io.netty.buffer.ByteBuf;
import io.netty.handler.codec.http.cookie.Cookie;
import io.netty.handler.codec.http.cookie.ServerCookieDecoder;
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/NettyByteTransfer.java b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/NettyByteTransfer.java
index f388739014..a49127f794 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/NettyByteTransfer.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/NettyByteTransfer.java
@@ -18,7 +18,7 @@
*/
package co.elastic.apm.agent.vertx;
-import co.elastic.apm.agent.sdk.util.IOUtils;
+import co.elastic.apm.agent.sdk.internal.util.IOUtils;
import io.netty.buffer.ByteBuf;
import java.nio.Buffer;
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/test/java/co/elastic/apm/agent/vertx/helper/CommonVertxWebTest.java b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/test/java/co/elastic/apm/agent/vertx/helper/CommonVertxWebTest.java
index 284c277fb6..3dab442a7e 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/test/java/co/elastic/apm/agent/vertx/helper/CommonVertxWebTest.java
+++ b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/test/java/co/elastic/apm/agent/vertx/helper/CommonVertxWebTest.java
@@ -26,7 +26,7 @@
import co.elastic.apm.agent.impl.transaction.Span;
import co.elastic.apm.agent.impl.transaction.Transaction;
import co.elastic.apm.agent.common.util.WildcardMatcher;
-import co.elastic.apm.agent.sdk.util.VersionUtils;
+import co.elastic.apm.agent.sdk.internal.util.VersionUtils;
import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap;
import co.elastic.apm.agent.vertx.AbstractVertxWebHelper;
import io.vertx.core.Handler;