From e374c99b78b5e66292b1fafdcf44eadb348a178c Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 09:19:31 +0200 Subject: [PATCH 01/33] Move utilities that are used by plugins to SDK (if technical) or to tracer module (if functional). --- .../agent/bbwarmup/WarmupInstrumentation.java | 2 +- .../apm/agent/bci/ElasticApmAgent.java | 2 +- .../classloading/IndyPluginClassLoader.java | 2 +- .../ServerlessConfiguration.java | 4 +- .../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 | 2 +- .../report/IntakeV2ReportingEventHandler.java | 2 +- .../apm/agent/report/ssl/SslUtils.java | 2 +- .../TraceMethodInstrumentation.java | 2 +- .../apm/agent/util/BinaryHeaderMap.java | 1 + .../apm/agent/util/ClassLoaderUtils.java | 1 + .../DependencyInjectingServiceLoader.java | 1 + .../elastic/apm/agent/util/ExecutorUtils.java | 1 + .../apm/agent/util/UrlConnectionUtils.java | 2 + .../elastic/apm/agent/util/VersionUtils.java | 1 + .../serialize/DslJsonSerializerTest.java | 2 +- .../elastic/apm/agent/util/IOUtilsTest.java | 1 + .../apm/agent/util/LoggerUtilsTest.java | 1 + .../agent/util/PrivilegedActionUtilsTest.java | 1 + .../agent/util/TransactionNameUtilsTest.java | 1 + .../apm/agent/util/VersionUtilsTest.java | 1 + .../elastic/apm/agent/sdk}/util/IOUtils.java | 2 +- .../apm/agent/sdk}/util/LoggerUtils.java | 2 +- .../sdk}/util/PrivilegedActionUtils.java | 2 +- .../apm/agent/sdk/util/VersionUtils.java | 98 +++++++++++++++++++ .../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 +- .../advice/AlibabaMonitorFilterAdvice.java | 2 +- .../advice/ApacheMonitorFilterAdvice.java | 2 +- ...searchRestClientInstrumentationHelper.java | 6 +- .../GrailsTransactionNameInstrumentation.java | 2 +- .../ServerCallHandlerInstrumentation.java | 2 +- .../JakartaServerEndpointInstrumentation.java | 2 +- .../JavaxServerEndpointInstrumentation.java | 2 +- ...artaServerEndpointInstrumentationTest.java | 2 +- ...avaxServerEndpointInstrumentationTest.java | 2 +- .../agent/javalin/JavalinInstrumentation.java | 4 +- ...eeJaxRsTransactionNameInstrumentation.java | 2 +- ...axJaxRsTransactionNameInstrumentation.java | 2 +- .../agent/httpserver/HttpHandlerAdvice.java | 2 +- .../agent/jms/JmsInstrumentationHelper.java | 2 +- .../JmsMessageConsumerInstrumentation.java | 2 +- .../apm/agent/jmx/JmxMetricTracker.java | 5 +- .../ConsumerRecordsIteratorWrapper.java | 2 +- ...ringKafkaBatchListenerInstrumentation.java | 4 +- .../AbstractJulEcsReformattingHelper.java | 2 +- .../JulEcsReformattingHelper.java | 2 +- .../loginstr/error/LoggerErrorHelper.java | 2 +- .../TomcatReformattingHelper.java | 2 +- .../MicrometerMeterRegistrySerializer.java | 2 +- ...OkHttp3ClientAsyncInstrumentationTest.java | 2 +- .../OkHttp3ClientInstrumentationTest.java | 2 +- ...dkMeterProviderBuilderInstrumentation.java | 2 +- .../agent/opentelemetry/tracing/OTelSpan.java | 4 +- .../tracing/OTelSpanBuilder.java | 6 +- .../ApmSpanBuilderInstrumentation.java | 3 +- ...ractJobTransactionNameInstrumentation.java | 4 +- .../rabbitmq/ConsumerInstrumentation.java | 2 +- ...qpBatchMessageListenerInstrumentation.java | 4 +- .../rabbitmq/SpringAmqpTransactionHelper.java | 2 +- ...heduledTransactionNameInstrumentation.java | 2 +- .../scheduled/TimerTaskInstrumentation.java | 2 +- .../apm/agent/servlet/ServletApiAdvice.java | 2 +- .../servlet/ServletTransactionHelper.java | 2 +- .../ServletVersionInstrumentation.java | 2 +- ...rtaRecordingServletInputStreamWrapper.java | 2 +- ...vaxRecordingServletInputStreamWrapper.java | 2 +- .../servlet/ServletTransactionHelperTest.java | 2 +- .../apm/agent/sparkjava/RoutesAdvice.java | 4 +- .../HandlerAdapterInstrumentation.java | 2 +- .../agent/springwebflux/WebfluxHelper.java | 6 +- ...trollerTransactionNameInstrumentation.java | 2 +- ...tSpringTransactionNameInstrumentation.java | 4 +- .../apm/agent/struts/ActionProxyAdvice.java | 2 +- .../agent/struts/ExecuteOperationsAdvice.java | 2 +- .../agent/struts/StrutsFrameworkUtils.java | 2 +- .../vertx/AbstractHttpTransactionHelper.java | 2 +- .../agent/vertx/AbstractVertxWebHelper.java | 4 +- .../apm/agent/vertx/NettyByteTransfer.java | 2 +- .../vertx/helper/CommonVertxWebTest.java | 2 +- .../apm/agent/tracer}/GlobalLocks.java | 2 +- .../tracer}/util/TransactionNameUtils.java | 2 +- 99 files changed, 214 insertions(+), 108 deletions(-) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/util/IOUtils.java (99%) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/util/LoggerUtils.java (99%) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/util/PrivilegedActionUtils.java (99%) create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/VersionUtils.java rename {apm-agent-core/src/main/java/co/elastic/apm/agent/util => apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer}/GlobalLocks.java (96%) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer}/util/TransactionNameUtils.java (98%) 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 39c76e0d49..9228810293 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 @@ -21,7 +21,7 @@ import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; -import co.elastic.apm.agent.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import net.bytebuddy.asm.Advice; 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/ElasticApmAgent.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/ElasticApmAgent.java index a6f2d9e98c..069485da65 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 @@ -48,7 +48,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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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/classloading/IndyPluginClassLoader.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/classloading/IndyPluginClassLoader.java index 3fdbc018b7..d4918e8fa1 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 ee7ee259a4..cf93975d96 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import org.stagemonitor.configuration.ConfigurationOption; import org.stagemonitor.configuration.ConfigurationOptionProvider; @@ -31,7 +31,7 @@ public ServerlessConfiguration() { String lambdaName = PrivilegedActionUtils.getEnv("AWS_LAMBDA_FUNCTION_NAME"); this.runsOnAwsLambda = null != lambdaName && !lambdaName.isEmpty(); } - + private final ConfigurationOption awsLambdaHandler = ConfigurationOption.stringOption() .key("aws_lambda_handler") .tags("added[1.28.0]") 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 7d6e36b769..3e1375980e 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 1c3af4e040..f0adae9e9c 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 d669efa840..316d56585d 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 @@ -57,8 +57,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.util.PrivilegedActionUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 ced67db9bb..db00f96a04 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 b1a13e551a..621422056c 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 11c5c81023..0d564afef0 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 4e9ef956f1..251c34b06f 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 @@ -32,7 +32,7 @@ import co.elastic.apm.agent.tracer.dispatch.HeaderGetter; import co.elastic.apm.agent.tracer.dispatch.TextHeaderGetter; import co.elastic.apm.agent.tracer.dispatch.TextHeaderSetter; -import co.elastic.apm.agent.util.LoggerUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; import co.elastic.apm.agent.tracer.Scope; import co.elastic.apm.agent.tracer.pooling.Recyclable; 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 123a6c5c99..798b2e6440 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.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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/ssl/SslUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ssl/SslUtils.java index f29131a83b..de94aeabb1 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 d644377097..a2812173dd 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 @@ -30,7 +30,7 @@ import co.elastic.apm.agent.matcher.MethodMatcher; import co.elastic.apm.agent.common.util.WildcardMatcher; import co.elastic.apm.agent.tracer.Tracer; -import co.elastic.apm.agent.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import net.bytebuddy.asm.Advice; 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/util/BinaryHeaderMap.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/BinaryHeaderMap.java index 70596a7303..58fc905bf4 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,6 +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 javax.annotation.Nullable; import java.nio.Buffer; 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 index 37df1d8b8d..d21d7b43c8 100644 --- 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 @@ -19,6 +19,7 @@ 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; 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 1362a79213..1dbdb62ec6 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,6 +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 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 c2b038b040..7c139ff88b 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,6 +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 javax.annotation.Nullable; import java.util.concurrent.CancellationException; 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 d66abe7473..8d5d66bea3 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 @@ -18,6 +18,8 @@ */ package co.elastic.apm.agent.util; +import co.elastic.apm.agent.tracer.GlobalLocks; +import co.elastic.apm.agent.sdk.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 f357ab7b26..a301021488 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,6 +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 javax.annotation.Nullable; import java.io.File; 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 3b6260afa0..f62b49b73a 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 @@ -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.util.IOUtils; +import co.elastic.apm.agent.sdk.util.IOUtils; import com.dslplatform.json.JsonWriter; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java index c90d8395c4..86c46f3730 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java @@ -19,6 +19,7 @@ package co.elastic.apm.agent.util; import co.elastic.apm.agent.objectpool.impl.QueueBasedObjectPool; +import co.elastic.apm.agent.sdk.util.IOUtils; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Test; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java index 66a3e3054b..37d8c8c089 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java @@ -18,6 +18,7 @@ */ package co.elastic.apm.agent.util; +import co.elastic.apm.agent.sdk.util.LoggerUtils; import org.junit.jupiter.api.Test; import co.elastic.apm.agent.sdk.logging.Logger; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java index 5a27740e5c..16c189ac50 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java @@ -18,6 +18,7 @@ */ package co.elastic.apm.agent.util; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledForJreRange; import org.junit.jupiter.api.condition.JRE; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java index eb189a5d6e..2a4564c351 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/TransactionNameUtilsTest.java @@ -21,6 +21,7 @@ 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 org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java index 4ef071920e..61398297ac 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java @@ -18,6 +18,7 @@ */ package co.elastic.apm.agent.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-core/src/main/java/co/elastic/apm/agent/util/IOUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/IOUtils.java similarity index 99% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/util/IOUtils.java rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/IOUtils.java index c23f2f0964..7df1b7ecd2 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/IOUtils.java +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/IOUtils.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.util; import java.io.IOException; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/LoggerUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/LoggerUtils.java similarity index 99% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/util/LoggerUtils.java rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/LoggerUtils.java index 8aed0f0e96..b6b09a875f 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/LoggerUtils.java +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/LoggerUtils.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.util; import co.elastic.apm.agent.sdk.logging.Logger; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/PrivilegedActionUtils.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtils.java similarity index 99% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/util/PrivilegedActionUtils.java rename to apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtils.java index 9274a4dd97..00e893062b 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/PrivilegedActionUtils.java +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtils.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.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/util/VersionUtils.java new file mode 100644 index 0000000000..cca4f2f4f0 --- /dev/null +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/VersionUtils.java @@ -0,0 +1,98 @@ +/* + * 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.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; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; +import java.util.jar.JarInputStream; + +public final class VersionUtils { + + private static final WeakMap, String> versionsCache = WeakConcurrent.buildMap(); + private static final String UNKNOWN_VERSION = "UNKNOWN_VERSION"; + + private VersionUtils() { + } + + @Nullable + public static String getVersion(Class clazz, String groupId, String artifactId) { + String version = versionsCache.get(clazz); + if (version != null) { + return version != UNKNOWN_VERSION ? version : null; + } + version = getVersionFromPomProperties(clazz, groupId, artifactId); + if (version == null) { + version = getVersionFromPackage(clazz); + } + versionsCache.put(clazz, version != null ? version : UNKNOWN_VERSION); + return version; + } + + @Nullable + static String getVersionFromPackage(Class clazz) { + Package pkg = clazz.getPackage(); + if (pkg != null) { + return pkg.getImplementationVersion(); + } + return null; + } + + @Nullable + static String getVersionFromPomProperties(Class clazz, String groupId, String artifactId) { + final String classpathLocation = "/META-INF/maven/" + groupId + "/" + artifactId + "/pom.properties"; + final Properties pomProperties = getFromClasspath(classpathLocation, clazz); + if (pomProperties != null) { + return pomProperties.getProperty("version"); + } + return null; + } + + @Nullable + private static Properties getFromClasspath(String classpathLocation, Class clazz) { + final Properties props = new Properties(); + try (InputStream resourceStream = clazz.getResourceAsStream(classpathLocation)) { + if (resourceStream != null) { + props.load(resourceStream); + return props; + } + } catch (IOException ignore) { + } + return null; + } + + @Nullable + public static String getManifestEntry(@Nullable File jarFile, String manifestAttribute) { + if (jarFile == null) { + return null; + } + try (JarInputStream jarInputStream = new JarInputStream(PrivilegedActionUtils.newFileInputStream(jarFile))) { + return jarInputStream.getManifest().getMainAttributes().getValue(manifestAttribute); + } catch (IOException e) { + return null; + } + } + +} 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 280d2673d1..9500e9c99a 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 @@ -26,7 +26,7 @@ import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.tracer.dispatch.HeaderUtils; -import co.elastic.apm.agent.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 426727d4fa..d5363317ea 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 3e36193430..69f8a8d8d2 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 c30d9cf067..2d698d9e91 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 499d00eeb6..7a82c9bf6f 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 e5de7b3ea8..ed9645af83 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 25c57bfd8e..a50b343691 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 61a969c67d..237de61930 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 f0b45fcd65..7da6065a30 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.util.LoggerUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 1adae8585c..4e171e3d51 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 1963a04e5d..28734e0b5e 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 cec3bbdf45..5eafa9a1be 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 996dfc690b..fed163cb61 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.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 1f382fdb2f..1ccfc1a7f5 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.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-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 04892ddaa2..2bc4af675d 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import com.alibaba.dubbo.rpc.Invocation; import com.alibaba.dubbo.rpc.Result; import com.alibaba.dubbo.rpc.RpcContext; 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 5ca0a88e19..c6efb4e7a3 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import net.bytebuddy.asm.Advice; import org.apache.dubbo.rpc.AsyncRpcResult; import org.apache.dubbo.rpc.Invocation; 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 8fc920163c..847add1d3c 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.util.IOUtils; -import co.elastic.apm.agent.util.LoggerUtils; +import co.elastic.apm.agent.sdk.util.IOUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; import co.elastic.apm.agent.tracer.pooling.Allocator; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; @@ -37,8 +37,6 @@ import org.elasticsearch.client.ResponseListener; import javax.annotation.Nullable; -import java.util.Arrays; -import java.util.List; import java.util.concurrent.CancellationException; public class ElasticsearchRestClientInstrumentationHelper { 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 872f86d6ea..46f861116e 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 @@ -20,7 +20,7 @@ import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import grails.core.GrailsControllerClass; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; 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 6e1e243ea4..b7cb984a0a 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 56b444a371..dfaf678dca 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.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; import co.elastic.apm.agent.tracer.Tracer; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.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 b387fa28ae..43fd96b8b3 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.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; import co.elastic.apm.agent.tracer.Tracer; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.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 d6e3586a5d..54385a879b 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.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 701eb63fd4..33dd3fa221 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.VersionUtils; import co.elastic.apm.agent.websocket.endpoint.JavaxServerEndpoint; class JavaxServerEndpointInstrumentationTest extends BaseServerEndpointInstrumentationTest { 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 2275c9dc26..fe90e6fb51 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 @@ -24,8 +24,8 @@ 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.util.TransactionNameUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; +import co.elastic.apm.agent.sdk.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 d8ebc409d1..bb20680558 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.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; import co.elastic.apm.agent.tracer.Tracer; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.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 4387ad7b3a..e64c512d5d 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.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; import co.elastic.apm.agent.tracer.Tracer; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.VersionUtils; import net.bytebuddy.asm.Advice; import javax.annotation.Nullable; diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java index 11b94b63b0..c693d82e0c 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java @@ -27,7 +27,7 @@ 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.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import com.sun.net.httpserver.Headers; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpsExchange; 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 4042232fad..a7c9f6a308 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 e9c2a06be7..9dfb07f5f0 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 94041e8397..dbc2473b39 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 @@ -23,11 +23,10 @@ import co.elastic.apm.agent.metrics.DoubleSupplier; import co.elastic.apm.agent.metrics.Labels; import co.elastic.apm.agent.metrics.MetricRegistry; -import co.elastic.apm.agent.util.ExecutorUtils; -import co.elastic.apm.agent.util.GlobalLocks; +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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 dfa2b29392..3e949dc647 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 2be570fc35..33d3e18841 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.util.LoggerUtils; -import co.elastic.apm.agent.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 c53dc5fbd3..f4505a911a 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.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 b09aef692d..bf3f40a521 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import javax.annotation.Nullable; import java.io.File; 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 22e159d840..bd81c92c46 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 29892514e7..9222e1f337 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import org.apache.juli.FileHandler; import javax.annotation.Nullable; 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 4ceb0fb020..1b83dc6dd7 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 45a3463e70..349a8bd885 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.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 3608f1f142..262c7a8d39 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.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/SdkMeterProviderBuilderInstrumentation.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-metricsdk-plugin/src/main/java/co/elastic/apm/agent/otelmetricsdk/SdkMeterProviderBuilderInstrumentation.java index e9d7f8c589..c50d0f5a25 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.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 d2897d77c5..35b3b8faac 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.util.LoggerUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 653fe169bc..0b0088e8e4 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,10 +27,10 @@ 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.util.LoggerUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; -import co.elastic.apm.agent.util.PrivilegedActionUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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-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 0648df5021..21437e14b1 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 @@ -20,13 +20,12 @@ import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.impl.ElasticApmTracer; -import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.impl.sampling.ConstantSampler; import co.elastic.apm.agent.impl.sampling.Sampler; 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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-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 4acc7e2bbd..9d974d9cef 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 @@ -25,8 +25,8 @@ import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.PrivilegedActionUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.VersionUtils; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; 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 a75b6f8332..3963422f33 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 50e04c3aad..5f333ac8e7 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.util.LoggerUtils; -import co.elastic.apm.agent.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 cabe65c554..8ea4b583e4 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.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 bfecd7640e..6d0151d5fa 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 @@ -25,7 +25,7 @@ import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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-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 2d98ea146a..6f1daecc49 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 @@ -24,7 +24,7 @@ import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletApiAdvice.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletApiAdvice.java index 069228bb27..d554686612 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletApiAdvice.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletApiAdvice.java @@ -31,7 +31,7 @@ import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; import co.elastic.apm.agent.tracer.metadata.Request; import co.elastic.apm.agent.tracer.metadata.Response; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import co.elastic.apm.agent.tracer.Scope; import javax.annotation.Nullable; diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java index a641b55519..50c3b15b97 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java @@ -32,7 +32,7 @@ import co.elastic.apm.agent.tracer.TransactionContext; import co.elastic.apm.agent.tracer.metadata.Request; import co.elastic.apm.agent.tracer.metadata.Response; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import javax.annotation.Nullable; import java.security.Principal; 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 56a8473d9c..d4247305ea 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.util.LoggerUtils; +import co.elastic.apm.agent.sdk.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 d5c452d3c0..3ea86db1f2 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.util.IOUtils; +import co.elastic.apm.agent.sdk.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 721019e497..67ce70b536 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.util.IOUtils; +import co.elastic.apm.agent.sdk.util.IOUtils; import javax.servlet.ReadListener; import javax.servlet.ServletInputStream; diff --git a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletTransactionHelperTest.java b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletTransactionHelperTest.java index e1d882937f..d1d1fdc558 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletTransactionHelperTest.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletTransactionHelperTest.java @@ -23,7 +23,7 @@ import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.common.util.WildcardMatcher; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; 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 f3d9b1a965..03a96dcd2f 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 @@ -22,8 +22,8 @@ import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; +import co.elastic.apm.agent.sdk.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/HandlerAdapterInstrumentation.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/HandlerAdapterInstrumentation.java index b662d2c5d8..82e642304b 100644 --- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/HandlerAdapterInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/HandlerAdapterInstrumentation.java @@ -20,7 +20,7 @@ import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; 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 f471542f3d..f1081c2a1d 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,9 +32,9 @@ import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.metadata.Request; import co.elastic.apm.agent.tracer.metadata.Response; -import co.elastic.apm.agent.util.LoggerUtils; -import co.elastic.apm.agent.util.PrivilegedActionUtils; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.sdk.util.LoggerUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import org.reactivestreams.Publisher; import org.springframework.http.HttpCookie; import org.springframework.http.HttpHeaders; diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java index 70f7d197cd..618057c648 100644 --- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java @@ -22,7 +22,7 @@ import co.elastic.apm.agent.servlet.Constants; import co.elastic.apm.agent.servlet.adapter.ServletRequestAdapter; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import net.bytebuddy.description.method.MethodDescription; 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 1e8f49c7e6..072550f52b 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 @@ -24,8 +24,8 @@ import co.elastic.apm.agent.servlet.adapter.ServletRequestAdapter; import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; +import co.elastic.apm.agent.sdk.util.VersionUtils; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; diff --git a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ActionProxyAdvice.java b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ActionProxyAdvice.java index f5780ccacf..9299991b6f 100644 --- a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ActionProxyAdvice.java +++ b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ActionProxyAdvice.java @@ -22,7 +22,7 @@ import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionProxy; import net.bytebuddy.asm.Advice; diff --git a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ExecuteOperationsAdvice.java b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ExecuteOperationsAdvice.java index 24456c19e1..f062f5a4e1 100644 --- a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ExecuteOperationsAdvice.java +++ b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/ExecuteOperationsAdvice.java @@ -21,7 +21,7 @@ import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import net.bytebuddy.asm.Advice; import javax.servlet.http.HttpServletRequest; 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 59c00300a5..0b353f523c 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.util.VersionUtils; +import co.elastic.apm.agent.sdk.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/AbstractHttpTransactionHelper.java b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractHttpTransactionHelper.java index 73227fca8c..27e849f977 100644 --- a/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractHttpTransactionHelper.java +++ b/apm-agent-plugins/apm-vertx/apm-vertx-common/src/main/java/co/elastic/apm/agent/vertx/AbstractHttpTransactionHelper.java @@ -26,7 +26,7 @@ import co.elastic.apm.agent.common.util.WildcardMatcher; import co.elastic.apm.agent.tracer.metadata.Request; import co.elastic.apm.agent.tracer.metadata.Response; -import co.elastic.apm.agent.util.TransactionNameUtils; +import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import co.elastic.apm.agent.sdk.logging.Logger; import co.elastic.apm.agent.sdk.logging.LoggerFactory; 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 91b1642261..fff30f9287 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.util.PrivilegedActionUtils; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +import co.elastic.apm.agent.sdk.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 f13f4d5d5b..f388739014 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.util.IOUtils; +import co.elastic.apm.agent.sdk.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 6c3106dcbb..b30f98f35a 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 @@ -27,7 +27,7 @@ import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.common.util.WildcardMatcher; import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; -import co.elastic.apm.agent.util.VersionUtils; +import co.elastic.apm.agent.sdk.util.VersionUtils; import co.elastic.apm.agent.vertx.AbstractVertxWebHelper; import io.vertx.core.Handler; import io.vertx.ext.web.Router; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/GlobalLocks.java b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/GlobalLocks.java similarity index 96% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/util/GlobalLocks.java rename to apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/GlobalLocks.java index 5c87632b25..ea964c5529 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/GlobalLocks.java +++ b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/GlobalLocks.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.tracer; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/TransactionNameUtils.java b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util/TransactionNameUtils.java similarity index 98% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/util/TransactionNameUtils.java rename to apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util/TransactionNameUtils.java index 6005f0507c..b4e5bcdcb3 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/TransactionNameUtils.java +++ b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util/TransactionNameUtils.java @@ -16,7 +16,7 @@ * 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.common.util.WildcardMatcher; From 82812ea82f63a1ba1c4e2fe7fe64aa1b10792c26 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 09:54:10 +0200 Subject: [PATCH 02/33] Move selection of executor utils to SDK. --- .../apm/agent/bci/ElasticApmAgent.java | 2 + .../elastic/apm/agent/util/ExecutorUtils.java | 23 ++++- .../apm/agent/sdk/util/ExecutorUtils.java | 86 +++++++++++++++++++ .../concurrent/ExecutorInstrumentation.java | 2 +- .../ElasticOtelMetricsExporter.java | 2 +- .../apm/agent/profiler/SamplingProfiler.java | 2 +- 6 files changed, 112 insertions(+), 5 deletions(-) create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java 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 069485da65..462d98710d 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 @@ -175,6 +175,7 @@ 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); } @@ -228,6 +229,7 @@ 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 7c139ff88b..c46beec022 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 @@ -32,13 +32,14 @@ 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; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -public final class ExecutorUtils { +public final class ExecutorUtils extends co.elastic.apm.agent.sdk.util.ExecutorUtils { private static final Logger logger = LoggerFactory.getLogger(ExecutorUtils.class); @@ -48,7 +49,25 @@ public final class ExecutorUtils { private static volatile ElasticThreadStateListener threadStateListener = null; private ExecutorUtils() { - // don't instantiate + } + + 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) { 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 new file mode 100644 index 0000000000..c104e423a8 --- /dev/null +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/ExecutorUtils.java @@ -0,0 +1,86 @@ +package co.elastic.apm.agent.sdk.util; + +import javax.annotation.Nullable; +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 { + + @Nullable + private static ExecutorUtils instance; + + public static void init(ExecutorUtils instance) { + ExecutorUtils.instance = instance; + } + + public static ScheduledExecutorService createSingleThreadSchedulingDaemonPool(final String threadPurpose) { + ExecutorUtils instance = ExecutorUtils.instance; + if (instance == null) { + return new NamedScheduledThreadPoolExecutor(threadPurpose); + } else { + return instance.doCreateSingleThreadSchedulingDaemonPool(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); + } + } + + 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); + } + } + + protected abstract void doShutdownAndWaitTermination(ExecutorService executor); + + private static class NamedScheduledThreadPoolExecutor extends ScheduledThreadPoolExecutor { + + private final String threadPurpose; + + public NamedScheduledThreadPoolExecutor(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; + } + + @Override + public String toString() { + return super.toString() + "(thread name = " + threadPurpose + ")"; + } + } +} 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 f47877ba6e..6f86212f05 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.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.sdk.state.GlobalVariables; -import co.elastic.apm.agent.util.ExecutorUtils; +import co.elastic.apm.agent.sdk.util.ExecutorUtils; 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-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 481df9277e..7af75cca8e 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,9 +22,9 @@ 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.tracer.configuration.MetricsConfiguration; import co.elastic.apm.agent.tracer.configuration.ReporterConfiguration; -import co.elastic.apm.agent.util.ExecutorUtils; import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.metrics.Aggregation; import io.opentelemetry.sdk.metrics.InstrumentType; 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 ab86f4792d..a467593651 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,6 +18,7 @@ */ package co.elastic.apm.agent.profiler; +import co.elastic.apm.agent.sdk.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; @@ -31,7 +32,6 @@ import co.elastic.apm.agent.profiler.asyncprofiler.AsyncProfiler; import co.elastic.apm.agent.profiler.asyncprofiler.JfrParser; import co.elastic.apm.agent.profiler.collections.Long2ObjectHashMap; -import co.elastic.apm.agent.util.ExecutorUtils; import co.elastic.apm.agent.tracer.pooling.Allocator; import com.lmax.disruptor.EventFactory; import com.lmax.disruptor.EventPoller; From 1492a2c87bfa9e34f2bb43eeaaf48bc8ecc9fb8c Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 10:33:42 +0200 Subject: [PATCH 03/33] Remove SDK/tracer combination utility class and declare tracers with limited scope in plugins directly. --- .../agent/bbwarmup/WarmupInstrumentation.java | 9 ++++- .../apm/agent/bci/ElasticApmAgent.java | 2 +- .../agent/bci/TracerAwareInstrumentation.java | 32 ---------------- .../TraceMethodInstrumentation.java | 14 +++---- .../apm/agent/bci/InstrumentationTest.java | 38 +++++++++---------- .../instr/LoggerTestInstrumentation.java | 4 +- .../impl/QueueBasedObjectPoolTest.java | 31 +++++++++++++++ .../SystemEnvVariableInstrumentation.java | 4 +- .../apm/agent/sdk}/util/IOUtilsTest.java | 25 +----------- .../apm/agent/sdk}/util/LoggerUtilsTest.java | 2 +- .../sdk}/util/PrivilegedActionUtilsTest.java | 28 +++++++------- .../apm/agent/sdk}/util/VersionUtilsTest.java | 2 +- .../v3/HttpClient3Instrumentation.java | 10 +++-- .../BaseApacheHttpClientInstrumentation.java | 8 +++- .../agent/pluginapi/ApiInstrumentation.java | 8 +++- .../pluginapi/ConfigInstrumentationTest.java | 3 +- ...bstractAsyncHttpClientInstrumentation.java | 7 +++- ...MessagingClientWrapperInstrumentation.java | 4 +- ...BaseAsyncClientHandlerInstrumentation.java | 4 +- .../BaseSyncClientHandlerInstrumentation.java | 4 +- .../awssdk/v2/GetMessagesInstrumentation.java | 4 +- .../common/AbstractAwsSdkInstrumentation.java | 4 +- ...stractAwsLambdaHandlerInstrumentation.java | 4 +- .../cassandra3/Cassandra3Instrumentation.java | 6 +-- .../cassandra4/Cassandra4Instrumentation.java | 4 +- .../dubbo/AbstractDubboInstrumentation.java | 9 +++-- ...lasticsearchRestClientInstrumentation.java | 4 +- ...eExceptionSourceFilterInstrumentation.java | 4 +- ...naglePayloadSizeFilterInstrumentation.java | 8 +++- .../FinagleTlsFilterInstrumentation.java | 4 +- .../GrailsTransactionNameInstrumentation.java | 8 +++- .../apm/agent/grpc/BaseInstrumentation.java | 4 +- .../v5/HibernateSearch5Instrumentation.java | 8 +++- .../HibernateSearch6Instrumentation.java | 8 +++- .../BaseServerEndpointInstrumentation.java | 7 +++- .../concurrent/ExecutorInstrumentation.java | 8 +++- .../ForkJoinTaskInstrumentation.java | 8 +++- ...leCallableForkJoinTaskInstrumentation.java | 10 +++-- .../java_ldap/LdapClientInstrumentation.java | 4 +- .../JavalinHandlerLambdaInstrumentation.java | 4 +- .../agent/javalin/JavalinInstrumentation.java | 7 +++- .../javalin/JavalinRenderInstrumentation.java | 8 +++- .../JaxRsTransactionNameInstrumentation.java | 10 ++--- .../JaxWsTransactionNameInstrumentation.java | 7 +++- .../apm/agent/jdbc/JdbcInstrumentation.java | 8 +++- .../AbstractHttpClientInstrumentation.java | 4 +- .../JdkHttpServerInstrumentation.java | 4 +- .../apm/agent/jms/BaseJmsInstrumentation.java | 10 +++-- .../AbstractJsfLifecycleInstrumentation.java | 7 +++- .../agent/kafka/BaseKafkaInstrumentation.java | 8 +++- .../Log4j1LogCorrelationInstrumentation.java | 4 -- .../Log4j2LogCorrelationInstrumentation.java | 3 -- .../LogbackLogCorrelationInstrumentation.java | 4 -- ...AbstractLogIntegrationInstrumentation.java | 8 +++- .../AbstractMicrometerInstrumentation.java | 8 +++- .../mongodb/v3/Mongo3Instrumentation.java | 5 +-- .../mongodb/v4/Mongo4Instrumentation.java | 5 +-- .../AbstractOkHttp3ClientInstrumentation.java | 8 +++- .../AbstractOkHttpClientInstrumentation.java | 8 +++- .../AbstractOpenTelemetryInstrumentation.java | 4 +- .../ApmSpanBuilderInstrumentation.java | 3 +- .../ExternalSpanContextInstrumentation.java | 3 +- .../OpenTracingBridgeInstrumentation.java | 9 ++++- .../process/BaseProcessInstrumentation.java | 8 +++- .../CommonsExecAsyncInstrumentation.java | 8 +++- ...ractJobTransactionNameInstrumentation.java | 16 ++++---- .../rabbitmq/AbstractBaseInstrumentation.java | 17 +++++---- .../agent/reactor/ReactorInstrumentation.java | 8 +++- .../jedis/JedisConnectionInstrumentation.java | 4 +- .../lettuce/Lettuce34Instrumentation.java | 8 +++- .../Lettuce5StartSpanInstrumentation.java | 10 +++-- .../Lettuce5StopSpanInstrumentation.java | 8 ++-- .../RedisConnectionInstrumentation.java | 6 +-- .../FutureInstrumentation.java | 9 ++++- ...heduledTransactionNameInstrumentation.java | 13 ++++--- .../scheduled/TimerTaskInstrumentation.java | 13 ++++--- .../AbstractServletInstrumentation.java | 8 +++- .../sparkjava/RoutesInstrumentation.java | 4 +- .../SpringRestTemplateAdvice.java | 11 ++++-- .../SpringRestTemplateInstrumentation.java | 4 +- ...ClientExchangeFunctionInstrumentation.java | 8 +++- .../springwebflux/WebFluxInstrumentation.java | 8 +++- ...trollerTransactionNameInstrumentation.java | 8 +++- ...SpringExceptionHandlerInstrumentation.java | 4 +- ...tractSpringServiceNameInstrumentation.java | 8 +++- ...tSpringTransactionNameInstrumentation.java | 11 ++++-- .../ViewRenderInstrumentation.java | 8 +++- .../agent/struts/StrutsInstrumentation.java | 4 +- .../HttpUrlConnectionInstrumentation.java | 12 ++++-- .../SSLContextInstrumentation.java | 4 +- .../agent/vertx/v3/Vertx3Instrumentation.java | 4 +- .../agent/vertx/v4/Vertx4Instrumentation.java | 4 +- .../util/TransactionNameUtilsTest.java | 14 +++---- 93 files changed, 441 insertions(+), 315 deletions(-) delete mode 100644 apm-agent-core/src/main/java/co/elastic/apm/agent/bci/TracerAwareInstrumentation.java rename {apm-agent-core/src/test/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk}/util/IOUtilsTest.java (83%) rename {apm-agent-core/src/test/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk}/util/LoggerUtilsTest.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}/util/PrivilegedActionUtilsTest.java (85%) rename {apm-agent-core/src/test/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk}/util/VersionUtilsTest.java (98%) rename {apm-agent-core/src/test/java/co/elastic/apm/agent => apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer}/util/TransactionNameUtilsTest.java (91%) 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 9228810293..27da25c3d5 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,10 +18,12 @@ */ package co.elastic.apm.agent.bbwarmup; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -37,7 +39,10 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments; -public class WarmupInstrumentation extends TracerAwareInstrumentation { +public class WarmupInstrumentation extends ElasticApmInstrumentation { + + @SuppressWarnings("unused") + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher.Junction getClassLoaderMatcher() { 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 462d98710d..c5357011e1 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 @@ -311,7 +311,7 @@ public void onChange(ConfigurationOption configurationOption, Object oldValue, O } public static synchronized Future reInitInstrumentation() { - final Tracer tracer = TracerAwareInstrumentation.tracer.require(Tracer.class); + final Tracer tracer = GlobalTracer.get().require(Tracer.class); if (instrumentation == null) { throw new IllegalStateException("Can't re-init agent before it has been initialized"); } diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/TracerAwareInstrumentation.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/TracerAwareInstrumentation.java deleted file mode 100644 index 12eba10d21..0000000000 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/TracerAwareInstrumentation.java +++ /dev/null @@ -1,32 +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; - -import co.elastic.apm.agent.tracer.GlobalTracer; -import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; -import co.elastic.apm.agent.tracer.Tracer; - -/** - * The constructor can optionally have a {@link Tracer} parameter. - */ -public abstract class TracerAwareInstrumentation extends ElasticApmInstrumentation { - - public static final Tracer tracer = GlobalTracer.get(); - -} 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 a2812173dd..b2c0be030f 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,19 +18,19 @@ */ package co.elastic.apm.agent.tracemethods; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.bytebuddy.SimpleMethodSignatureOffsetMappingFactory; +import co.elastic.apm.agent.common.util.WildcardMatcher; import co.elastic.apm.agent.configuration.CoreConfiguration; import co.elastic.apm.agent.impl.ElasticApmTracer; -import co.elastic.apm.agent.sdk.logging.Logger; -import co.elastic.apm.agent.sdk.logging.LoggerFactory; -import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.impl.transaction.AbstractSpan; import co.elastic.apm.agent.impl.transaction.Span; import co.elastic.apm.agent.matcher.MethodMatcher; -import co.elastic.apm.agent.common.util.WildcardMatcher; -import co.elastic.apm.agent.tracer.Tracer; +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.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -55,7 +55,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -public class TraceMethodInstrumentation extends TracerAwareInstrumentation { +public class TraceMethodInstrumentation extends ElasticApmInstrumentation { private final MethodMatcher methodMatcher; private final CoreConfiguration config; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/InstrumentationTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/InstrumentationTest.java index 6001ffe984..f564dc6d22 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/InstrumentationTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/bci/InstrumentationTest.java @@ -491,7 +491,7 @@ private String interceptMe() { return ""; } - public static class TestInstrumentation extends TracerAwareInstrumentation { + public static class TestInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToReturned @Advice.OnMethodExit(inline = false) @@ -541,7 +541,7 @@ public static int getCounter() { } } - public static class MathInstrumentation extends TracerAwareInstrumentation { + public static class MathInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToReturned @Advice.OnMethodExit(inline = false) @@ -567,7 +567,7 @@ public Collection getInstrumentationGroupNames() { } - public static class ExceptionInstrumentation extends TracerAwareInstrumentation { + public static class ExceptionInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.OnMethodExit(inline = false) public static void onMethodExit() { @@ -592,7 +592,7 @@ public Collection getInstrumentationGroupNames() { } - public static class SuppressExceptionInstrumentation extends TracerAwareInstrumentation { + public static class SuppressExceptionInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static String onMethodEnter() { @@ -623,7 +623,7 @@ public Collection getInstrumentationGroupNames() { } - public static class FieldAccessInstrumentation extends TracerAwareInstrumentation { + public static class FieldAccessInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToFields(@ToField(value = "privateString", typing = DYNAMIC)) @@ -650,7 +650,7 @@ public Collection getInstrumentationGroupNames() { } - public static class FieldAccessArrayInstrumentation extends TracerAwareInstrumentation { + public static class FieldAccessArrayInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToFields(@ToField(index = 0, value = "privateString", typing = DYNAMIC)) @@ -677,7 +677,7 @@ public Collection getInstrumentationGroupNames() { } - public static class AssignToArgumentInstrumentation extends TracerAwareInstrumentation { + public static class AssignToArgumentInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToArguments(@ToArgument(0)) @@ -704,7 +704,7 @@ public Collection getInstrumentationGroupNames() { } - public static class AssignToArgumentsInstrumentation extends TracerAwareInstrumentation { + public static class AssignToArgumentsInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToArguments({ @@ -734,7 +734,7 @@ public Collection getInstrumentationGroupNames() { } - public static class AssignToReturnArrayInstrumentation extends TracerAwareInstrumentation { + public static class AssignToReturnArrayInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToReturned(index = 0, typing = DYNAMIC) @@ -761,7 +761,7 @@ public Collection getInstrumentationGroupNames() { } - public static class CommonsLangInstrumentation extends TracerAwareInstrumentation { + public static class CommonsLangInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { public static AtomicInteger enterCount = GlobalVariables.get(CommonsLangInstrumentation.class, "enterCount", new AtomicInteger()); @@ -795,7 +795,7 @@ public Collection getInstrumentationGroupNames() { } - public static class LoggerFactoryInstrumentation extends TracerAwareInstrumentation { + public static class LoggerFactoryInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { public static AtomicInteger enterCount = GlobalVariables.get(LoggerFactoryInstrumentation.class, "enterCount", new AtomicInteger()); @@ -829,7 +829,7 @@ public Collection getInstrumentationGroupNames() { } - public static class StatUtilsInstrumentation extends TracerAwareInstrumentation { + public static class StatUtilsInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { public static AtomicInteger enterCount = GlobalVariables.get(StatUtilsInstrumentation.class, "enterCount", new AtomicInteger()); @@ -863,7 +863,7 @@ public Collection getInstrumentationGroupNames() { } - public static class LogManagerInstrumentation extends TracerAwareInstrumentation { + public static class LogManagerInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { public static AtomicInteger enterCount = GlobalVariables.get(LogManagerInstrumentation.class, "enterCount", new AtomicInteger()); @@ -897,7 +897,7 @@ public Collection getInstrumentationGroupNames() { } - public static class CallStackUtilsInstrumentation extends TracerAwareInstrumentation { + public static class CallStackUtilsInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { public static AtomicInteger enterCount = GlobalVariables.get(CallStackUtilsInstrumentation.class, "enterCount", new AtomicInteger()); @@ -931,7 +931,7 @@ public Collection getInstrumentationGroupNames() { } - public static class ClassLoadingTestInstrumentation extends TracerAwareInstrumentation { + public static class ClassLoadingTestInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToReturned @@ -958,7 +958,7 @@ public Collection getInstrumentationGroupNames() { } - public static class InlinedIndyAdviceInstrumentation extends TracerAwareInstrumentation { + public static class InlinedIndyAdviceInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.OnMethodEnter @@ -983,7 +983,7 @@ public Collection getInstrumentationGroupNames() { } - public static class AgentTypeReturnInstrumentation extends TracerAwareInstrumentation { + public static class AgentTypeReturnInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.OnMethodEnter(inline = false) @@ -1009,7 +1009,7 @@ public Collection getInstrumentationGroupNames() { } - public static class AgentTypeParameterInstrumentation extends TracerAwareInstrumentation { + public static class AgentTypeParameterInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.OnMethodEnter(inline = false) @@ -1039,7 +1039,7 @@ public Collection getInstrumentationGroupNames() { } - public static class GetClassLoaderInstrumentation extends TracerAwareInstrumentation { + public static class GetClassLoaderInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToReturned diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/logging/instr/LoggerTestInstrumentation.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/logging/instr/LoggerTestInstrumentation.java index 1ddb5c9a3d..d40c1498cf 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/logging/instr/LoggerTestInstrumentation.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/logging/instr/LoggerTestInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.logging.instr; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.sdk.logging.Logger; import co.elastic.apm.agent.sdk.logging.LoggerFactory; import net.bytebuddy.asm.Advice; @@ -36,7 +36,7 @@ * Instruments {@link LoggingConfigurationTest.LoggerTest#getLogger()} */ @SuppressWarnings("JavadocReference") -public class LoggerTestInstrumentation extends TracerAwareInstrumentation { +public class LoggerTestInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { 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 49cdba10cf..3ee6be010f 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,9 +21,18 @@ 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 org.jctools.queues.atomic.MpmcAtomicArrayQueue; import org.junit.jupiter.api.Test; +import javax.annotation.Nonnull; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.util.concurrent.ArrayBlockingQueue; + +import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; class QueueBasedObjectPoolTest extends ObjectPoolTest> { @@ -43,4 +52,26 @@ void preAllocationShouldCreateObjectsInPool() { assertThat(pool.getGarbageCreated()).isEqualTo(0); assertThat(pool.getObjectsInPool()).isEqualTo(capacity); } + + @Test + void testReusedBuffer() throws IOException { + final QueueBasedObjectPool charBuffers = QueueBasedObjectPool.of(new ArrayBlockingQueue<>(1), true, + () -> CharBuffer.allocate(8), CharBuffer::clear); + + final CharBuffer charBuffer1 = charBuffers.createInstance(); + assertThat(IOUtils.readUtf8Stream(toInputStream("foo", UTF_8), charBuffer1)).isTrue(); + assertThat(charBuffer1.toString()).isEqualTo("foo"); + + charBuffers.recycle(charBuffer1); + + final CharBuffer charBuffer2 = charBuffers.createInstance(); + assertThat(IOUtils.readUtf8Stream(toInputStream("barbaz", UTF_8), charBuffer2)).isTrue(); + assertThat(charBuffer2.toString()).isEqualTo("barbaz"); + assertThat((Object) charBuffer1).isSameAs(charBuffer2); + } + + @Nonnull + private ByteArrayInputStream toInputStream(String s, Charset charset) { + return new ByteArrayInputStream(s.getBytes(charset)); + } } diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/testinstr/SystemEnvVariableInstrumentation.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/testinstr/SystemEnvVariableInstrumentation.java index 5d263dc6d3..0bf2a26e10 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/testinstr/SystemEnvVariableInstrumentation.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/testinstr/SystemEnvVariableInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.testinstr; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.sdk.state.GlobalVariables; import co.elastic.apm.agent.sdk.weakconcurrent.DetachedThreadLocal; import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent; @@ -34,7 +34,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; -public abstract class SystemEnvVariableInstrumentation extends TracerAwareInstrumentation { +public abstract class SystemEnvVariableInstrumentation extends ElasticApmInstrumentation { private static final DetachedThreadLocal> customEnvVariablesTL = GlobalVariables .get(SystemEnvVariableInstrumentation.class, "customEnvVariables", WeakConcurrent.>buildThreadLocal()); diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/IOUtilsTest.java similarity index 83% rename from apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/IOUtilsTest.java index 86c46f3730..cdfdfd4c8f 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/IOUtilsTest.java +++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/IOUtilsTest.java @@ -16,10 +16,8 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.util; -import co.elastic.apm.agent.objectpool.impl.QueueBasedObjectPool; -import co.elastic.apm.agent.sdk.util.IOUtils; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Test; @@ -28,13 +26,12 @@ import java.io.IOException; import java.nio.CharBuffer; import java.nio.charset.Charset; -import java.util.concurrent.ArrayBlockingQueue; import static java.nio.charset.StandardCharsets.UTF_16; import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; -class IOUtilsTest { +class IOUtilsTest { @Test void readUtf8Stream() throws IOException { @@ -90,24 +87,6 @@ void testStreamLargerThanByteBuffer() throws IOException { assertThat(charBuffer.toString()).isEqualTo(longString); } - @Test - void testReusedBuffer() throws IOException { - final QueueBasedObjectPool charBuffers = QueueBasedObjectPool.of(new ArrayBlockingQueue<>(1), true, - () -> CharBuffer.allocate(8), CharBuffer::clear); - - final CharBuffer charBuffer1 = charBuffers.createInstance(); - assertThat(IOUtils.readUtf8Stream(toInputStream("foo", UTF_8), charBuffer1)).isTrue(); - assertThat(charBuffer1.toString()).isEqualTo("foo"); - - charBuffers.recycle(charBuffer1); - - final CharBuffer charBuffer2 = charBuffers.createInstance(); - assertThat(IOUtils.readUtf8Stream(toInputStream("barbaz", UTF_8), charBuffer2)).isTrue(); - assertThat(charBuffer2.toString()).isEqualTo("barbaz"); - assertThat((Object) charBuffer1).isSameAs(charBuffer2); - - } - @Test void testOverflowStream() throws IOException { final CharBuffer charBuffer = CharBuffer.allocate(8); diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/LoggerUtilsTest.java similarity index 98% rename from apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/LoggerUtilsTest.java index 37d8c8c089..e25265c3d7 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/LoggerUtilsTest.java +++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/LoggerUtilsTest.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.util; import co.elastic.apm.agent.sdk.util.LoggerUtils; import org.junit.jupiter.api.Test; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java similarity index 85% rename from apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java index 16c189ac50..09fefd96e4 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PrivilegedActionUtilsTest.java +++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/PrivilegedActionUtilsTest.java @@ -16,9 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.util; -import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; +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; @@ -62,8 +62,8 @@ void getEnv() { String envValue = envMap.get(envKey); testWithAndWithoutSecurityManager(() -> { - assertThat(PrivilegedActionUtils.getEnv(envKey)).isEqualTo(envValue); - assertThat(PrivilegedActionUtils.getEnv()).containsAllEntriesOf(envMap); + Assertions.assertThat(PrivilegedActionUtils.getEnv(envKey)).isEqualTo(envValue); + Assertions.assertThat(PrivilegedActionUtils.getEnv()).containsAllEntriesOf(envMap); }); } @@ -71,29 +71,29 @@ void getEnv() { @Test void getClassLoader() { ClassLoader cl = PrivilegedActionUtilsTest.class.getClassLoader(); - testWithAndWithoutSecurityManager(() -> assertThat(PrivilegedActionUtils.getClassLoader(PrivilegedActionUtilsTest.class)).isSameAs(cl)); + testWithAndWithoutSecurityManager(() -> Assertions.assertThat(PrivilegedActionUtils.getClassLoader(PrivilegedActionUtilsTest.class)).isSameAs(cl)); } @Test void getProtectionDomain() { ProtectionDomain pd = PrivilegedActionUtilsTest.class.getProtectionDomain(); - testWithAndWithoutSecurityManager(() -> assertThat(PrivilegedActionUtils.getProtectionDomain(PrivilegedActionUtilsTest.class)).isSameAs(pd)); + testWithAndWithoutSecurityManager(() -> Assertions.assertThat(PrivilegedActionUtils.getProtectionDomain(PrivilegedActionUtilsTest.class)).isSameAs(pd)); } @Test void getAndSetContextClassLoader() { ClassLoader originalCL = Thread.currentThread().getContextClassLoader(); - assertThat(originalCL).isNotNull(); + Assertions.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); - assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isNull(); + Assertions.assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isNull(); PrivilegedActionUtils.setContextClassLoader(Thread.currentThread(), originalCL); - assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isSameAs(originalCL); + Assertions.assertThat(PrivilegedActionUtils.getContextClassLoader(Thread.currentThread())).isSameAs(originalCL); }); } finally { Thread.currentThread().setContextClassLoader(originalCL); @@ -116,7 +116,7 @@ void newFileInputStream(@TempDir Path tempDir) throws IOException { try { testWithAndWithoutSecurityManager(() -> { try (FileInputStream fis = PrivilegedActionUtils.newFileInputStream(existingFile.toFile())) { - assertThat(fis).isNotNull(); + Assertions.assertThat(fis).isNotNull(); // file not found and other runtime errors should be perserved assertThatThrownBy(() -> PrivilegedActionUtils.newFileInputStream(missingFile.toFile())).isInstanceOf(FileNotFoundException.class); @@ -138,8 +138,8 @@ void createDirectories(@TempDir Path tempDir) throws IOException { Files.createDirectories(existingDir); testWithAndWithoutSecurityManager(() -> { testPrivileged(() -> { - assertThat(existingDir).isDirectory(); - assertThat(toCreate).doesNotExist(); + Assertions.assertThat(existingDir).isDirectory(); + Assertions.assertThat(toCreate).doesNotExist(); }); try { @@ -150,8 +150,8 @@ void createDirectories(@TempDir Path tempDir) throws IOException { } testPrivileged(() -> { - assertThat(existingDir).isDirectory(); - assertThat(toCreate).isDirectory(); + Assertions.assertThat(existingDir).isDirectory(); + Assertions.assertThat(toCreate).isDirectory(); try { Files.delete(toCreate); Files.delete(toCreate.getParent()); diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/VersionUtilsTest.java similarity index 98% rename from apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java rename to apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/VersionUtilsTest.java index 61398297ac..617072d919 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/VersionUtilsTest.java +++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/util/VersionUtilsTest.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.sdk.util; import co.elastic.apm.agent.sdk.util.VersionUtils; import org.assertj.core.api.Assertions; 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 9500e9c99a..70030c080b 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 @@ -18,13 +18,15 @@ */ package co.elastic.apm.agent.httpclient.v3; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.httpclient.HttpClientHelper; +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.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; 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 net.bytebuddy.asm.Advice; @@ -48,7 +50,9 @@ * Instruments {@link org.apache.commons.httpclient.HttpMethodDirector#executeMethod(HttpMethod)} */ @SuppressWarnings("JavadocReference") // instrumented class is package-private -public class HttpClient3Instrumentation extends TracerAwareInstrumentation { +public class HttpClient3Instrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { @@ -82,7 +86,7 @@ public static class HttpClient3Advice { @Advice.OnMethodEnter(suppress = Throwable.class, inline = false) public static Object onEnter(@Advice.Argument(0) HttpMethod httpMethod, @Advice.FieldValue(value = "hostConfiguration") HostConfiguration hostConfiguration) { - final AbstractSpan parent = TracerAwareInstrumentation.tracer.getActive(); + final AbstractSpan parent = tracer.getActive(); if (parent == null) { return null; } diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/BaseApacheHttpClientInstrumentation.java b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/BaseApacheHttpClientInstrumentation.java index d68d2c82c6..6e76459c14 100644 --- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/BaseApacheHttpClientInstrumentation.java +++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/src/main/java/co/elastic/apm/agent/httpclient/v4/BaseApacheHttpClientInstrumentation.java @@ -18,12 +18,16 @@ */ package co.elastic.apm.agent.httpclient.v4; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import java.util.Arrays; import java.util.Collection; -public abstract class BaseApacheHttpClientInstrumentation extends TracerAwareInstrumentation { +public abstract class BaseApacheHttpClientInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ApiInstrumentation.java b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ApiInstrumentation.java index 0461924aca..6fee9a44bf 100644 --- a/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ApiInstrumentation.java +++ b/apm-agent-plugins/apm-api-plugin/src/main/java/co/elastic/apm/agent/pluginapi/ApiInstrumentation.java @@ -18,12 +18,16 @@ */ package co.elastic.apm.agent.pluginapi; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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 ApiInstrumentation extends TracerAwareInstrumentation { +public abstract class ApiInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public boolean includeWhenInstrumentationIsDisabled() { diff --git a/apm-agent-plugins/apm-api-plugin/src/test/java/co/elastic/apm/agent/pluginapi/ConfigInstrumentationTest.java b/apm-agent-plugins/apm-api-plugin/src/test/java/co/elastic/apm/agent/pluginapi/ConfigInstrumentationTest.java index 12690a19b3..8af213b978 100644 --- a/apm-agent-plugins/apm-api-plugin/src/test/java/co/elastic/apm/agent/pluginapi/ConfigInstrumentationTest.java +++ b/apm-agent-plugins/apm-api-plugin/src/test/java/co/elastic/apm/agent/pluginapi/ConfigInstrumentationTest.java @@ -20,7 +20,6 @@ import co.elastic.apm.agent.MockTracer; import co.elastic.apm.agent.bci.ElasticApmAgent; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.configuration.CoreConfiguration; import co.elastic.apm.agent.impl.ElasticApmTracer; import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; @@ -100,7 +99,7 @@ Integer configValue(Boolean valid) { return INVALID_TRANSACTION_MAX_SPANS; } - public static class MaxTransInstrumentation extends TracerAwareInstrumentation { + public static class MaxTransInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Advice.AssignReturned.ToReturned @Advice.OnMethodExit(inline = false) 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 125713ba69..928763ecfe 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 @@ -18,13 +18,14 @@ */ package co.elastic.apm.agent.asynchttpclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.httpclient.HttpClientHelper; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.sdk.DynamicTransformer; import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.reference.ReferenceCountedMap; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -49,7 +50,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -public abstract class AbstractAsyncHttpClientInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractAsyncHttpClientInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); public static class Helper { diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/AmazonSQSMessagingClientWrapperInstrumentation.java b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/AmazonSQSMessagingClientWrapperInstrumentation.java index f7a2fa5a85..44fce62d27 100644 --- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/AmazonSQSMessagingClientWrapperInstrumentation.java +++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/AmazonSQSMessagingClientWrapperInstrumentation.java @@ -19,7 +19,7 @@ package co.elastic.apm.agent.awssdk.v2; import co.elastic.apm.agent.awssdk.v2.helper.sqs.wrapper.MessageListWrapper; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -31,7 +31,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class AmazonSQSMessagingClientWrapperInstrumentation extends TracerAwareInstrumentation { +public class AmazonSQSMessagingClientWrapperInstrumentation extends ElasticApmInstrumentation { @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseAsyncClientHandlerInstrumentation.java b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseAsyncClientHandlerInstrumentation.java index ecadaf77fc..32bfda8ce4 100644 --- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseAsyncClientHandlerInstrumentation.java +++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseAsyncClientHandlerInstrumentation.java @@ -21,7 +21,7 @@ import co.elastic.apm.agent.awssdk.v2.helper.DynamoDbHelper; import co.elastic.apm.agent.awssdk.v2.helper.S3Helper; import co.elastic.apm.agent.awssdk.v2.helper.SQSHelper; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.Span; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -43,7 +43,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class BaseAsyncClientHandlerInstrumentation extends TracerAwareInstrumentation { +public class BaseAsyncClientHandlerInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseSyncClientHandlerInstrumentation.java b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseSyncClientHandlerInstrumentation.java index f582d72811..0bf6b2cc9e 100644 --- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseSyncClientHandlerInstrumentation.java +++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/BaseSyncClientHandlerInstrumentation.java @@ -22,8 +22,8 @@ import co.elastic.apm.agent.awssdk.v2.helper.S3Helper; import co.elastic.apm.agent.awssdk.v2.helper.SQSHelper; import co.elastic.apm.agent.awssdk.v2.helper.sqs.wrapper.MessageListWrapper; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.common.JvmRuntimeInfo; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Span; import net.bytebuddy.asm.Advice; @@ -49,7 +49,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class BaseSyncClientHandlerInstrumentation extends TracerAwareInstrumentation { +public class BaseSyncClientHandlerInstrumentation extends ElasticApmInstrumentation { //Coretto causes sigsegv crashes when you try to access a throwable if it thinks //it went out of scope, which it seems to for the instrumented throwable access //package access and non-final so that tests can replace this diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/GetMessagesInstrumentation.java b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/GetMessagesInstrumentation.java index 5ce699a5e0..f5e6054639 100644 --- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/GetMessagesInstrumentation.java +++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/src/main/java/co/elastic/apm/agent/awssdk/v2/GetMessagesInstrumentation.java @@ -19,7 +19,7 @@ package co.elastic.apm.agent.awssdk.v2; import co.elastic.apm.agent.awssdk.v2.helper.sqs.wrapper.MessageListWrapper; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.sdk.state.CallDepth; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -37,7 +37,7 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments; -public class GetMessagesInstrumentation extends TracerAwareInstrumentation { +public class GetMessagesInstrumentation extends ElasticApmInstrumentation { @Override diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractAwsSdkInstrumentation.java b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractAwsSdkInstrumentation.java index 13f02b0704..653ba387eb 100644 --- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractAwsSdkInstrumentation.java +++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/src/main/java/co/elastic/apm/agent/awssdk/common/AbstractAwsSdkInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.awssdk.common; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.description.NamedElement; import net.bytebuddy.matcher.ElementMatcher; @@ -27,7 +27,7 @@ import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; -public abstract class AbstractAwsSdkInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractAwsSdkInstrumentation extends ElasticApmInstrumentation { @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/AbstractAwsLambdaHandlerInstrumentation.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/AbstractAwsLambdaHandlerInstrumentation.java index 9c1bef5c3c..d447a53d40 100644 --- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/AbstractAwsLambdaHandlerInstrumentation.java +++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/AbstractAwsLambdaHandlerInstrumentation.java @@ -18,8 +18,8 @@ */ package co.elastic.apm.agent.awslambda; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.impl.ElasticApmTracer; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.configuration.ServerlessConfiguration; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,7 +31,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.none; -public abstract class AbstractAwsLambdaHandlerInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractAwsLambdaHandlerInstrumentation extends ElasticApmInstrumentation { protected final ServerlessConfiguration serverlessConfiguration; 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 de24319b95..ec7dea8f8b 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,11 +18,11 @@ */ package co.elastic.apm.agent.cassandra3; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.cassandra.CassandraHelper; -import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.impl.context.Destination; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; import com.datastax.driver.core.BoundStatement; import com.datastax.driver.core.Host; @@ -46,7 +46,7 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class Cassandra3Instrumentation extends TracerAwareInstrumentation { +public class Cassandra3Instrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { 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 60bdfd5377..342cdc68f8 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 @@ -18,8 +18,8 @@ */ package co.elastic.apm.agent.cassandra4; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.cassandra.CassandraHelper; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; import com.datastax.oss.driver.api.core.CqlIdentifier; @@ -50,7 +50,7 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class Cassandra4Instrumentation extends TracerAwareInstrumentation { +public class Cassandra4Instrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcherPreFilter() { diff --git a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java index 416c998584..20297e2868 100644 --- a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java +++ b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java @@ -18,13 +18,16 @@ */ package co.elastic.apm.agent.dubbo; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; -public abstract class AbstractDubboInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractDubboInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { 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 583535e436..e1605426bc 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 @@ -18,13 +18,13 @@ */ package co.elastic.apm.agent.esrestclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import java.util.Collection; import java.util.Collections; -public abstract class ElasticsearchRestClientInstrumentation extends TracerAwareInstrumentation { +public abstract class ElasticsearchRestClientInstrumentation extends ElasticApmInstrumentation { @Override public Collection getInstrumentationGroupNames() { 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 516c3162db..539c1d1949 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 @@ -19,8 +19,8 @@ package co.elastic.apm.agent.finaglehttpclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.httpclient.HttpClientHelper; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.sdk.logging.Logger; import co.elastic.apm.agent.sdk.logging.LoggerFactory; @@ -50,7 +50,7 @@ * If the {@link FinaglePayloadSizeFilterInstrumentation} was not able to determine the service name, we add it here. */ @SuppressWarnings("JavadocReference") -public class FinagleExceptionSourceFilterInstrumentation extends TracerAwareInstrumentation { +public class FinagleExceptionSourceFilterInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { 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 13634c5633..632ce13e73 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 @@ -19,15 +19,17 @@ package co.elastic.apm.agent.finaglehttpclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.finaglehttpclient.helper.RequestHeaderAccessor; import co.elastic.apm.agent.httpclient.HttpClientHelper; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; 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 co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.dispatch.HeaderUtils; import com.twitter.finagle.http.Request; import com.twitter.finagle.http.Response; @@ -59,7 +61,9 @@ * In this case we try to enrich the span via the {@link FinagleExceptionSourceFilterInstrumentation}. */ @SuppressWarnings("JavadocReference") -public class FinaglePayloadSizeFilterInstrumentation extends TracerAwareInstrumentation { +public class FinaglePayloadSizeFilterInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcher() { diff --git a/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleTlsFilterInstrumentation.java b/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleTlsFilterInstrumentation.java index 92142d14fc..2304f1958e 100644 --- a/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleTlsFilterInstrumentation.java +++ b/apm-agent-plugins/apm-finagle-httpclient-plugin/src/main/java/co/elastic/apm/agent/finaglehttpclient/FinagleTlsFilterInstrumentation.java @@ -19,7 +19,7 @@ package co.elastic.apm.agent.finaglehttpclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.sdk.weakconcurrent.WeakConcurrent; import co.elastic.apm.agent.sdk.weakconcurrent.WeakSet; import com.twitter.finagle.http.Request; @@ -42,7 +42,7 @@ * If this filter is executed for a request, we assume that it is a TLS request. */ @SuppressWarnings("JavadocReference") -public class FinagleTlsFilterInstrumentation extends TracerAwareInstrumentation { +public class FinagleTlsFilterInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { 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 46f861116e..21db5d1c50 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 @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.grails; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import grails.core.GrailsControllerClass; @@ -42,7 +44,9 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class GrailsTransactionNameInstrumentation extends TracerAwareInstrumentation { +public class GrailsTransactionNameInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcher() { 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 f63ca09913..72952f6279 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 @@ -18,12 +18,12 @@ */ package co.elastic.apm.agent.grpc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import java.util.Collection; import java.util.Collections; -public abstract class BaseInstrumentation extends TracerAwareInstrumentation { +public abstract class BaseInstrumentation extends ElasticApmInstrumentation { @Override public final Collection getInstrumentationGroupNames() { 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 970d15a847..23314977f3 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 @@ -18,10 +18,12 @@ */ package co.elastic.apm.agent.hibernatesearch.v5; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.hibernatesearch.HibernateSearchConstants; import co.elastic.apm.agent.hibernatesearch.HibernateSearchHelper; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; @@ -41,7 +43,9 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; -public class HibernateSearch5Instrumentation extends TracerAwareInstrumentation { +public class HibernateSearch5Instrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public String getAdviceClassName() { 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 9c4dd7cefc..3de5415f28 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 @@ -18,8 +18,10 @@ */ package co.elastic.apm.agent.hibernatesearch; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; @@ -40,7 +42,9 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; -public class HibernateSearch6Instrumentation extends TracerAwareInstrumentation { +public class HibernateSearch6Instrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public String getAdviceClassName() { 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 bea7ca3c0c..ee64404258 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 @@ -18,8 +18,9 @@ */ package co.elastic.apm.agent.websocket; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; @@ -44,7 +45,9 @@ import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import static net.bytebuddy.matcher.ElementMatchers.not; -public abstract class BaseServerEndpointInstrumentation extends TracerAwareInstrumentation { +public abstract class BaseServerEndpointInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); private final Collection applicationPackages; 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 6f86212f05..1ef0db4b00 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 @@ -18,9 +18,11 @@ */ package co.elastic.apm.agent.concurrent; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.NamedElement; @@ -57,7 +59,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -public abstract class ExecutorInstrumentation extends TracerAwareInstrumentation { +public abstract class ExecutorInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); static final Set excludedClasses = GlobalVariables.get(ExecutorInstrumentation.class, "excludedClasses", new HashSet()); diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ForkJoinTaskInstrumentation.java b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ForkJoinTaskInstrumentation.java index 205066d1ea..a2648cece9 100644 --- a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ForkJoinTaskInstrumentation.java +++ b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/ForkJoinTaskInstrumentation.java @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.concurrent; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -36,7 +38,9 @@ /** * Instruments {@link ForkJoinTask#fork()} to support parallel streams. */ -public class ForkJoinTaskInstrumentation extends TracerAwareInstrumentation { +public class ForkJoinTaskInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); static { if (Boolean.parseBoolean(System.getProperty("intellij.debug.agent"))) { diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/RunnableCallableForkJoinTaskInstrumentation.java b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/RunnableCallableForkJoinTaskInstrumentation.java index 606b8f8546..3210789442 100644 --- a/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/RunnableCallableForkJoinTaskInstrumentation.java +++ b/apm-agent-plugins/apm-java-concurrent-plugin/src/main/java/co/elastic/apm/agent/concurrent/RunnableCallableForkJoinTaskInstrumentation.java @@ -18,9 +18,11 @@ */ package co.elastic.apm.agent.concurrent; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.sdk.DynamicTransformer; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -43,7 +45,9 @@ * {@linkplain DynamicTransformer#ensureInstrumented(Class, Collection) ensure} * that particular {@link Callable}, {@link Runnable} and {@link ForkJoinTask} classes are instrumented. */ -public class RunnableCallableForkJoinTaskInstrumentation extends TracerAwareInstrumentation { +public class RunnableCallableForkJoinTaskInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcher() { diff --git a/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapClientInstrumentation.java b/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapClientInstrumentation.java index edf5bec64d..bb622cc687 100644 --- a/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapClientInstrumentation.java +++ b/apm-agent-plugins/apm-java-ldap-plugin/src/main/java/co/elastic/apm/agent/java_ldap/LdapClientInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.java_ldap; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -28,7 +28,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; -public class LdapClientInstrumentation extends TracerAwareInstrumentation { +public class LdapClientInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { 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 086ba0c52e..b03e7788fc 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 @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.javalin; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import io.javalin.http.Context; import io.javalin.http.Handler; import net.bytebuddy.asm.Advice; @@ -37,7 +37,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -public class JavalinHandlerLambdaInstrumentation extends TracerAwareInstrumentation { +public class JavalinHandlerLambdaInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { 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 fe90e6fb51..b8285791d5 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 @@ -18,8 +18,9 @@ */ package co.elastic.apm.agent.javalin; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.tracer.Span; @@ -52,10 +53,12 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class JavalinInstrumentation extends TracerAwareInstrumentation { +public class JavalinInstrumentation extends ElasticApmInstrumentation { private static final Logger logger = LoggerFactory.getLogger(JavalinInstrumentation.class); + private static final Tracer tracer = GlobalTracer.get(); + private static final String FRAMEWORK_NAME = "Javalin"; @Override 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 c5c2d706f4..d9a373f914 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 @@ -18,9 +18,11 @@ */ package co.elastic.apm.agent.javalin; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -37,7 +39,9 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class JavalinRenderInstrumentation extends TracerAwareInstrumentation { +public class JavalinRenderInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcher() { 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 4f32f46ec0..a0bf823b57 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 @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.jaxrs; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration; import co.elastic.apm.agent.tracer.Tracer; @@ -47,14 +47,14 @@ import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import static net.bytebuddy.matcher.ElementMatchers.not; -public abstract class JaxRsTransactionNameInstrumentation extends TracerAwareInstrumentation { +public abstract class JaxRsTransactionNameInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); private final Collection applicationPackages; private final JaxRsConfiguration configuration; - private final Tracer tracer; public JaxRsTransactionNameInstrumentation(Tracer tracer) { - this.tracer = tracer; applicationPackages = tracer.getConfig(StacktraceConfiguration.class).getApplicationPackages(); configuration = tracer.getConfig(JaxRsConfiguration.class); } @@ -125,7 +125,7 @@ static class BaseAdvice { .isUseJaxRsPathForTransactionName(); protected static void setTransactionName(String signature, @Nullable String pathAnnotationValue, @Nullable String frameworkVersion) { - final Transaction transaction = TracerAwareInstrumentation.tracer.currentTransaction(); + final Transaction transaction = tracer.currentTransaction(); if (transaction != null) { String transactionName = signature; if (useAnnotationValueForTransactionName) { 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 45a81d54e7..2da860bc78 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,9 +18,10 @@ */ package co.elastic.apm.agent.jaxws; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.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; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; import net.bytebuddy.asm.Advice; @@ -46,7 +47,9 @@ import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import static net.bytebuddy.matcher.ElementMatchers.not; -public class JaxWsTransactionNameInstrumentation extends TracerAwareInstrumentation { +public class JaxWsTransactionNameInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); private static final String FRAMEWORK_NAME = "JAX-WS"; diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcInstrumentation.java b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcInstrumentation.java index 98a1eb7c76..69fb9b7708 100644 --- a/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcInstrumentation.java +++ b/apm-agent-plugins/apm-jdbc-plugin/src/main/java/co/elastic/apm/agent/jdbc/JdbcInstrumentation.java @@ -18,12 +18,16 @@ */ package co.elastic.apm.agent.jdbc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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 JdbcInstrumentation extends TracerAwareInstrumentation { +public abstract class JdbcInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); private static final Collection JDBC_GROUPS = Collections.singleton("jdbc"); diff --git a/apm-agent-plugins/apm-jdk-httpclient-plugin/src/main/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentation.java b/apm-agent-plugins/apm-jdk-httpclient-plugin/src/main/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentation.java index 83466de502..889e317f1f 100644 --- a/apm-agent-plugins/apm-jdk-httpclient-plugin/src/main/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentation.java +++ b/apm-agent-plugins/apm-jdk-httpclient-plugin/src/main/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentation.java @@ -18,12 +18,12 @@ */ package co.elastic.apm.agent.httpclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import java.util.Arrays; import java.util.Collection; -public abstract class AbstractHttpClientInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractHttpClientInstrumentation extends ElasticApmInstrumentation { @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java index c2465bc914..b9f16174e6 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java @@ -18,12 +18,12 @@ */ package co.elastic.apm.agent.httpserver; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import java.util.Collection; import java.util.Collections; -public abstract class JdkHttpServerInstrumentation extends TracerAwareInstrumentation { +public abstract class JdkHttpServerInstrumentation extends ElasticApmInstrumentation { @Override public Collection getInstrumentationGroupNames() { 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 908880a349..c00dd98774 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 @@ -18,11 +18,11 @@ */ package co.elastic.apm.agent.jms; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; -import co.elastic.apm.agent.tracer.configuration.MessagingConfiguration; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Tracer; +import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; +import co.elastic.apm.agent.tracer.configuration.MessagingConfiguration; import net.bytebuddy.matcher.ElementMatcher; import java.util.Collection; @@ -32,7 +32,9 @@ import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader; import static net.bytebuddy.matcher.ElementMatchers.not; -public abstract class BaseJmsInstrumentation extends TracerAwareInstrumentation { +public abstract class BaseJmsInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { 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 732a37af03..d6fe3470df 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 @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.jsf; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -37,10 +39,11 @@ * Instruments javax.faces.lifecycle.Lifecycle#execute and javax.faces.lifecycle.Lifecycle#render. * Code is duplicated because it is injected inline */ -public abstract class AbstractJsfLifecycleInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractJsfLifecycleInstrumentation extends ElasticApmInstrumentation { protected static final String SPAN_TYPE = "template"; protected static final String SPAN_SUBTYPE = "jsf"; protected static final String FRAMEWORK_NAME = "JavaServer Faces"; + static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcherPreFilter() { 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 37de780cd0..46d78e2bd2 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 @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.kafka; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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.Collection; @@ -28,7 +30,9 @@ import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader; import static net.bytebuddy.matcher.ElementMatchers.not; -public abstract class BaseKafkaInstrumentation extends TracerAwareInstrumentation { +public abstract class BaseKafkaInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/correlation/Log4j1LogCorrelationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/correlation/Log4j1LogCorrelationInstrumentation.java index 2c7ea336ac..8d9e339acf 100644 --- a/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/correlation/Log4j1LogCorrelationInstrumentation.java +++ b/apm-agent-plugins/apm-logging-plugin/apm-log4j1-plugin/src/main/java/co/elastic/apm/agent/log4j1/correlation/Log4j1LogCorrelationInstrumentation.java @@ -18,7 +18,6 @@ */ package co.elastic.apm.agent.log4j1.correlation; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.loginstr.AbstractLogIntegrationInstrumentation; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -26,9 +25,6 @@ import net.bytebuddy.matcher.ElementMatcher; import org.apache.log4j.spi.LoggingEvent; -import java.util.Collection; -import java.util.Collections; - 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-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 6bebe06e20..54238a9e7c 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 @@ -18,7 +18,6 @@ */ package co.elastic.apm.agent.log4j2.correlation; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.loginstr.AbstractLogIntegrationInstrumentation; import net.bytebuddy.asm.Advice; @@ -28,8 +27,6 @@ import net.bytebuddy.matcher.ElementMatcher; import java.security.ProtectionDomain; -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.implementationVersionGte; diff --git a/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/correlation/LogbackLogCorrelationInstrumentation.java b/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/correlation/LogbackLogCorrelationInstrumentation.java index 912aaadb51..9c0ee73e63 100644 --- a/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/correlation/LogbackLogCorrelationInstrumentation.java +++ b/apm-agent-plugins/apm-logging-plugin/apm-logback-plugin/apm-logback-plugin-impl/src/main/java/co/elastic/apm/agent/logback/correlation/LogbackLogCorrelationInstrumentation.java @@ -19,16 +19,12 @@ package co.elastic.apm.agent.logback.correlation; import ch.qos.logback.classic.spi.ILoggingEvent; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.loginstr.AbstractLogIntegrationInstrumentation; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -import java.util.Collection; -import java.util.Collections; - import static net.bytebuddy.matcher.ElementMatchers.named; /** 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 a064c06aff..bcebcb983b 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 @@ -19,17 +19,21 @@ package co.elastic.apm.agent.loginstr; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import java.util.Arrays; import java.util.Collection; -public abstract class AbstractLogIntegrationInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractLogIntegrationInstrumentation extends ElasticApmInstrumentation { protected static String LOG_CORRELATION = "log-correlation"; protected static String LOG_REFORMATTING = "log-reformatting"; protected static String LOG_ERROR = "log-error"; + public static final Tracer tracer = GlobalTracer.get(); + @Override public Collection getInstrumentationGroupNames() { return Arrays.asList("logging", getLoggingInstrumentationGroupName()); diff --git a/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/AbstractMicrometerInstrumentation.java b/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/AbstractMicrometerInstrumentation.java index 442e4da187..f9ac5ef254 100644 --- a/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/AbstractMicrometerInstrumentation.java +++ b/apm-agent-plugins/apm-micrometer-plugin/src/main/java/co/elastic/apm/agent/micrometer/AbstractMicrometerInstrumentation.java @@ -18,13 +18,17 @@ */ package co.elastic.apm.agent.micrometer; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.impl.ElasticApmTracer; +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 AbstractMicrometerInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractMicrometerInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); static final MicrometerMetricsReporter reporter = new MicrometerMetricsReporter(tracer.require(ElasticApmTracer.class)); 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 18d2f4fc7a..83e193d5a1 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 @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.mongodb.v3; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -32,8 +32,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; - -public abstract class Mongo3Instrumentation extends TracerAwareInstrumentation { +public abstract class Mongo3Instrumentation extends ElasticApmInstrumentation { public ElementMatcher.Junction getProtectionDomainPostFilter() { // only use this instrumentation for 3.x 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 9cf36bd5cd..faded5a721 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 @@ -18,18 +18,17 @@ */ package co.elastic.apm.agent.mongodb.v4; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.matcher.ElementMatcher; import java.security.ProtectionDomain; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.implementationVersionGte; import static net.bytebuddy.matcher.ElementMatchers.not; -public abstract class Mongo4Instrumentation extends TracerAwareInstrumentation { +public abstract class Mongo4Instrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher.Junction getProtectionDomainPostFilter() { diff --git a/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttp3ClientInstrumentation.java b/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttp3ClientInstrumentation.java index 5ab5491940..7a98f92520 100644 --- a/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttp3ClientInstrumentation.java +++ b/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttp3ClientInstrumentation.java @@ -18,12 +18,16 @@ */ package co.elastic.apm.agent.okhttp; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import java.util.Arrays; import java.util.Collection; -public abstract class AbstractOkHttp3ClientInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractOkHttp3ClientInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttpClientInstrumentation.java b/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttpClientInstrumentation.java index d49b3b4cf6..161e03eb6a 100644 --- a/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttpClientInstrumentation.java +++ b/apm-agent-plugins/apm-okhttp-plugin/src/main/java/co/elastic/apm/agent/okhttp/AbstractOkHttpClientInstrumentation.java @@ -18,12 +18,16 @@ */ package co.elastic.apm.agent.okhttp; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import java.util.Arrays; import java.util.Collection; -public abstract class AbstractOkHttpClientInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractOkHttpClientInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { 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 33ec237f9f..0824216642 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,14 +18,14 @@ */ package co.elastic.apm.agent.opentelemetry; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; 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; -public abstract class AbstractOpenTelemetryInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractOpenTelemetryInstrumentation extends ElasticApmInstrumentation { @Override public final ElementMatcher.Junction getClassLoaderMatcher() { 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 21437e14b1..212894de6a 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 @@ -18,7 +18,6 @@ */ package co.elastic.apm.agent.opentracingimpl; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.impl.ElasticApmTracer; import co.elastic.apm.agent.impl.sampling.ConstantSampler; import co.elastic.apm.agent.impl.sampling.Sampler; @@ -90,7 +89,7 @@ public static AbstractSpan doCreateTransactionOrSpan(@Nullable AbstractSpan> baggage, ClassLoader applicationClassLoader) { AbstractSpan result = null; - ElasticApmTracer tracer = TracerAwareInstrumentation.tracer.require(ElasticApmTracer.class); + ElasticApmTracer tracer = OpenTracingBridgeInstrumentation.tracer.require(ElasticApmTracer.class); if (tracer != null) { if (parentContext == null) { result = createTransaction(tags, operationName, microseconds, baggage, tracer, applicationClassLoader); diff --git a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ExternalSpanContextInstrumentation.java b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ExternalSpanContextInstrumentation.java index 75260e7e82..9e08b58e94 100644 --- a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ExternalSpanContextInstrumentation.java +++ b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ExternalSpanContextInstrumentation.java @@ -18,7 +18,6 @@ */ package co.elastic.apm.agent.opentracingimpl; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.impl.ElasticApmTracer; import co.elastic.apm.agent.impl.transaction.TraceContext; import net.bytebuddy.asm.Advice; @@ -117,7 +116,7 @@ public static String onExit(@Advice.FieldValue(value = "childTraceContext", typi @Nullable public static TraceContext parseTextMap(Iterable> textMap) { - ElasticApmTracer tracer = TracerAwareInstrumentation.tracer.require(ElasticApmTracer.class); + ElasticApmTracer tracer = OpenTracingBridgeInstrumentation.tracer.require(ElasticApmTracer.class); if (tracer != null) { TraceContext childTraceContext = TraceContext.with64BitId(tracer); if (TraceContext.>>getFromTraceContextTextHeaders().asChildOf(childTraceContext, textMap, OpenTracingTextMapBridge.instance())) { diff --git a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/OpenTracingBridgeInstrumentation.java b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/OpenTracingBridgeInstrumentation.java index 8d2d88b9a8..383234a543 100644 --- a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/OpenTracingBridgeInstrumentation.java +++ b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/OpenTracingBridgeInstrumentation.java @@ -18,12 +18,17 @@ */ package co.elastic.apm.agent.opentracingimpl; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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 OpenTracingBridgeInstrumentation extends TracerAwareInstrumentation { +public abstract class OpenTracingBridgeInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); + @Override public boolean includeWhenInstrumentationIsDisabled() { return true; diff --git a/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/BaseProcessInstrumentation.java b/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/BaseProcessInstrumentation.java index e7786333c4..d5c60ac25f 100644 --- a/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/BaseProcessInstrumentation.java +++ b/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/BaseProcessInstrumentation.java @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.process; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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.Collection; @@ -26,7 +28,9 @@ import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader; -public abstract class BaseProcessInstrumentation extends TracerAwareInstrumentation { +public abstract class BaseProcessInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public final ElementMatcher.Junction getClassLoaderMatcher() { diff --git a/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/CommonsExecAsyncInstrumentation.java b/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/CommonsExecAsyncInstrumentation.java index c5cd2a12cb..2803221a9e 100644 --- a/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/CommonsExecAsyncInstrumentation.java +++ b/apm-agent-plugins/apm-process-plugin/src/main/java/co/elastic/apm/agent/process/CommonsExecAsyncInstrumentation.java @@ -18,8 +18,10 @@ */ package co.elastic.apm.agent.process; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.concurrent.JavaConcurrent; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.NamedElement; @@ -43,12 +45,14 @@ * Instruments {@code org.apache.commons.exec.DefaultExecutor#createThread(Runnable, String)} and any direct subclass * that overrides it. */ -public class CommonsExecAsyncInstrumentation extends TracerAwareInstrumentation { +public class CommonsExecAsyncInstrumentation extends ElasticApmInstrumentation { private static final String DEFAULT_EXECUTOR_CLASS = "org.apache.commons.exec.DefaultExecutor"; // only known subclass of default implementation private static final String DAEMON_EXECUTOR_CLASS = "org.apache.commons.exec.DaemonExecutor"; + private static final Tracer tracer = GlobalTracer.get(); + @Override public ElementMatcher getTypeMatcherPreFilter() { // Most implementations are likely to have 'Executor' in their name, which will work most of the time 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 9d974d9cef..706fc005c5 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 @@ -18,22 +18,22 @@ */ package co.elastic.apm.agent.quartzjob; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.impl.stacktrace.StacktraceConfiguration; +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.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; 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.util.VersionUtils; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; import org.quartz.JobExecutionContext; -import co.elastic.apm.agent.sdk.logging.Logger; -import co.elastic.apm.agent.sdk.logging.LoggerFactory; import javax.annotation.Nullable; import java.util.Collection; @@ -45,10 +45,12 @@ import static net.bytebuddy.matcher.ElementMatchers.nameStartsWith; import static net.bytebuddy.matcher.ElementMatchers.named; -public abstract class AbstractJobTransactionNameInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractJobTransactionNameInstrumentation extends ElasticApmInstrumentation { public static final String TRANSACTION_TYPE = "scheduled"; public static final String INSTRUMENTATION_TYPE = "quartz"; + private static final Tracer tracer = GlobalTracer.get(); + private final Collection applicationPackages; protected AbstractJobTransactionNameInstrumentation(Tracer tracer) { diff --git a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/AbstractBaseInstrumentation.java b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/AbstractBaseInstrumentation.java index a0100335db..17e887f362 100644 --- a/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/AbstractBaseInstrumentation.java +++ b/apm-agent-plugins/apm-rabbitmq/apm-rabbitmq-plugin/src/main/java/co/elastic/apm/agent/rabbitmq/AbstractBaseInstrumentation.java @@ -18,22 +18,23 @@ */ package co.elastic.apm.agent.rabbitmq; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; -import co.elastic.apm.agent.tracer.configuration.MessagingConfiguration; +import co.elastic.apm.agent.common.util.WildcardMatcher; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.tracer.GlobalTracer; -import co.elastic.apm.agent.common.util.WildcardMatcher; +import co.elastic.apm.agent.tracer.Tracer; +import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; +import co.elastic.apm.agent.tracer.configuration.MessagingConfiguration; import co.elastic.apm.agent.tracer.metadata.Message; import javax.annotation.Nullable; import java.util.Date; import java.util.Map; -public abstract class AbstractBaseInstrumentation extends TracerAwareInstrumentation { - - private static final CoreConfiguration coreConfiguration = GlobalTracer.get().getConfig(CoreConfiguration.class); - private static final MessagingConfiguration messagingConfiguration = GlobalTracer.get().getConfig(MessagingConfiguration.class); +public abstract class AbstractBaseInstrumentation extends ElasticApmInstrumentation { + static final Tracer tracer = GlobalTracer.get(); + private static final CoreConfiguration coreConfiguration = tracer.getConfig(CoreConfiguration.class); + private static final MessagingConfiguration messagingConfiguration = tracer.getConfig(MessagingConfiguration.class); /** * @param name name of the exchange or queue diff --git a/apm-agent-plugins/apm-reactor-plugin/src/main/java/co/elastic/apm/agent/reactor/ReactorInstrumentation.java b/apm-agent-plugins/apm-reactor-plugin/src/main/java/co/elastic/apm/agent/reactor/ReactorInstrumentation.java index c824eda6f7..5d09aa1f4a 100644 --- a/apm-agent-plugins/apm-reactor-plugin/src/main/java/co/elastic/apm/agent/reactor/ReactorInstrumentation.java +++ b/apm-agent-plugins/apm-reactor-plugin/src/main/java/co/elastic/apm/agent/reactor/ReactorInstrumentation.java @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.reactor; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -38,7 +40,9 @@ * */ @SuppressWarnings("JavadocReference") -public class ReactorInstrumentation extends TracerAwareInstrumentation { +public class ReactorInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcher() { 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 087da15afd..5299166271 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 @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.jedis; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -33,7 +33,7 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class JedisConnectionInstrumentation extends TracerAwareInstrumentation { +public class JedisConnectionInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher.Junction getClassLoaderMatcher() { 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 a96832a580..e9379c4537 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 @@ -18,8 +18,10 @@ */ package co.elastic.apm.agent.lettuce; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.reference.ReferenceCountedMap; import com.lambdaworks.redis.protocol.RedisCommand; import net.bytebuddy.matcher.ElementMatcher; @@ -29,7 +31,9 @@ import static co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass; -public abstract class Lettuce34Instrumentation extends TracerAwareInstrumentation { +public abstract class Lettuce34Instrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); static final ReferenceCountedMap, Span> commandToSpan = tracer.newReferenceCountedMap(); diff --git a/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StartSpanInstrumentation.java b/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StartSpanInstrumentation.java index 7cbcf9c314..beda687cf8 100644 --- a/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StartSpanInstrumentation.java +++ b/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StartSpanInstrumentation.java @@ -18,9 +18,11 @@ */ package co.elastic.apm.agent.lettuce; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.redis.RedisSpanUtils; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.reference.ReferenceCountedMap; import io.lettuce.core.protocol.RedisCommand; import net.bytebuddy.asm.Advice; @@ -43,7 +45,9 @@ * * The context will be propagated via the Netty instrumentation */ -public class Lettuce5StartSpanInstrumentation extends TracerAwareInstrumentation { +public class Lettuce5StartSpanInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); static final ReferenceCountedMap, Span> commandToSpan = tracer.newReferenceCountedMap(); diff --git a/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StopSpanInstrumentation.java b/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StopSpanInstrumentation.java index 8d21f39a25..5532a4b21b 100644 --- a/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StopSpanInstrumentation.java +++ b/apm-agent-plugins/apm-redis-plugin/apm-lettuce-plugin/src/main/java/co/elastic/apm/agent/lettuce/Lettuce5StopSpanInstrumentation.java @@ -18,7 +18,9 @@ */ package co.elastic.apm.agent.lettuce; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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.tracer.Span; import io.lettuce.core.protocol.RedisCommand; import net.bytebuddy.asm.Advice; @@ -26,8 +28,6 @@ import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -import co.elastic.apm.agent.sdk.logging.Logger; -import co.elastic.apm.agent.sdk.logging.LoggerFactory; import java.util.Arrays; import java.util.Collection; @@ -47,7 +47,7 @@ *
  • {@link RedisCommand#cancel()}
  • * */ -public abstract class Lettuce5StopSpanInstrumentation extends TracerAwareInstrumentation { +public abstract class Lettuce5StopSpanInstrumentation extends ElasticApmInstrumentation { private static final Logger logger = LoggerFactory.getLogger(Lettuce5StopSpanInstrumentation.class); diff --git a/apm-agent-plugins/apm-redis-plugin/apm-redisson-plugin/src/main/java/co/elastic/apm/agent/redisson/RedisConnectionInstrumentation.java b/apm-agent-plugins/apm-redis-plugin/apm-redisson-plugin/src/main/java/co/elastic/apm/agent/redisson/RedisConnectionInstrumentation.java index f5d8a9eb67..675182d054 100644 --- a/apm-agent-plugins/apm-redis-plugin/apm-redisson-plugin/src/main/java/co/elastic/apm/agent/redisson/RedisConnectionInstrumentation.java +++ b/apm-agent-plugins/apm-redis-plugin/apm-redisson-plugin/src/main/java/co/elastic/apm/agent/redisson/RedisConnectionInstrumentation.java @@ -18,9 +18,9 @@ */ package co.elastic.apm.agent.redisson; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.redis.RedisSpanUtils; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.tracer.Span; import io.netty.channel.Channel; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -40,7 +40,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; -public class RedisConnectionInstrumentation extends TracerAwareInstrumentation { +public class RedisConnectionInstrumentation extends ElasticApmInstrumentation { public static class AdviceClass { @Nullable diff --git a/apm-agent-plugins/apm-scala-concurrent-plugin/src/main/java/co/elastic/apm/agent/scalaconcurrent/FutureInstrumentation.java b/apm-agent-plugins/apm-scala-concurrent-plugin/src/main/java/co/elastic/apm/agent/scalaconcurrent/FutureInstrumentation.java index 8302093ddf..1b5df42526 100644 --- a/apm-agent-plugins/apm-scala-concurrent-plugin/src/main/java/co/elastic/apm/agent/scalaconcurrent/FutureInstrumentation.java +++ b/apm-agent-plugins/apm-scala-concurrent-plugin/src/main/java/co/elastic/apm/agent/scalaconcurrent/FutureInstrumentation.java @@ -18,8 +18,10 @@ */ package co.elastic.apm.agent.scalaconcurrent; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.reference.ReferenceCountedMap; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; @@ -35,11 +37,14 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.returns; -public abstract class FutureInstrumentation extends TracerAwareInstrumentation { +public abstract class FutureInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @SuppressWarnings("WeakerAccess") public static final ReferenceCountedMap> promisesToContext = tracer.newReferenceCountedMap(); + @Nonnull @Override public Collection getInstrumentationGroupNames() { 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 6d0151d5fa..f1ad82e3e1 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,22 +18,23 @@ */ package co.elastic.apm.agent.scheduled; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.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; +import co.elastic.apm.agent.sdk.logging.LoggerFactory; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; -import co.elastic.apm.agent.sdk.logging.Logger; -import co.elastic.apm.agent.sdk.logging.LoggerFactory; import javax.annotation.Nullable; import java.util.Arrays; @@ -46,7 +47,9 @@ import static net.bytebuddy.matcher.ElementMatchers.namedOneOf; import static net.bytebuddy.matcher.ElementMatchers.not; -public class ScheduledTransactionNameInstrumentation extends TracerAwareInstrumentation { +public class ScheduledTransactionNameInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); public static final Logger logger = LoggerFactory.getLogger(ScheduledTransactionNameInstrumentation.class); 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 6f1daecc49..d5c995e2ed 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,21 +18,22 @@ */ package co.elastic.apm.agent.scheduled; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.bci.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; +import co.elastic.apm.agent.sdk.logging.LoggerFactory; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; -import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; -import co.elastic.apm.agent.sdk.logging.Logger; -import co.elastic.apm.agent.sdk.logging.LoggerFactory; import javax.annotation.Nullable; import java.util.Arrays; @@ -44,11 +45,13 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; -public class TimerTaskInstrumentation extends TracerAwareInstrumentation { +public class TimerTaskInstrumentation extends ElasticApmInstrumentation { private static final String FRAMEWORK_NAME = "TimerTask"; public static final Logger logger = LoggerFactory.getLogger(TimerTaskInstrumentation.class); + private static final Tracer tracer = GlobalTracer.get(); + private final Collection applicationPackages; public TimerTaskInstrumentation(Tracer tracer) { 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 1fafd00b28..4e8ec81b91 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 @@ -18,14 +18,18 @@ */ package co.elastic.apm.agent.servlet; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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.Collection; import java.util.Collections; -public abstract class AbstractServletInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractServletInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesInstrumentation.java b/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesInstrumentation.java index c3debe8ff1..d26e1a210f 100644 --- a/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesInstrumentation.java +++ b/apm-agent-plugins/apm-sparkjava-plugin/src/main/java/co/elastic/apm/agent/sparkjava/RoutesInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.sparkjava; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -31,7 +31,7 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -public class RoutesInstrumentation extends TracerAwareInstrumentation { +public class RoutesInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { diff --git a/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateAdvice.java b/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateAdvice.java index f3a5687ecc..e790b6c3ef 100644 --- a/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateAdvice.java +++ b/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateAdvice.java @@ -18,14 +18,15 @@ */ package co.elastic.apm.agent.resttemplate; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.httpclient.HttpClientHelper; +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.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; -import co.elastic.apm.agent.sdk.logging.Logger; -import co.elastic.apm.agent.sdk.logging.LoggerFactory; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpResponse; @@ -36,6 +37,8 @@ public class SpringRestTemplateAdvice { + private static final Tracer tracer = GlobalTracer.get(); + private static final Logger logger = LoggerFactory.getLogger(SpringRestTemplateAdvice.class); @Nullable @@ -43,7 +46,7 @@ public class SpringRestTemplateAdvice { public static Object beforeExecute(@Advice.This ClientHttpRequest request) { logger.trace("Enter advice for method {}#execute()", request.getClass().getName()); - final AbstractSpan parent = TracerAwareInstrumentation.tracer.getActive(); + final AbstractSpan parent = tracer.getActive(); if (parent == null) { return null; } diff --git a/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateInstrumentation.java b/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateInstrumentation.java index 52821ab6ac..81ddbdf4e5 100644 --- a/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateInstrumentation.java +++ b/apm-agent-plugins/apm-spring-resttemplate/apm-spring-resttemplate-plugin/src/main/java/co/elastic/apm/agent/resttemplate/SpringRestTemplateInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.resttemplate; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -38,7 +38,7 @@ /** * Instruments {@link org.springframework.http.client.ClientHttpRequest#execute()} */ -public class SpringRestTemplateInstrumentation extends TracerAwareInstrumentation { +public class SpringRestTemplateInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher getTypeMatcher() { diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientExchangeFunctionInstrumentation.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientExchangeFunctionInstrumentation.java index 9759b04547..17e15a3e3a 100644 --- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientExchangeFunctionInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientExchangeFunctionInstrumentation.java @@ -18,10 +18,12 @@ */ package co.elastic.apm.agent.springwebclient; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.httpclient.HttpClientHelper; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.asm.Advice.AssignReturned.ToArguments.ToArgument; import net.bytebuddy.description.NamedElement; @@ -44,7 +46,9 @@ import static net.bytebuddy.matcher.ElementMatchers.not; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class WebClientExchangeFunctionInstrumentation extends TracerAwareInstrumentation { +public class WebClientExchangeFunctionInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcherPreFilter() { diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebFluxInstrumentation.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebFluxInstrumentation.java index 2008f1d305..87a4796d46 100644 --- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebFluxInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/main/java/co/elastic/apm/agent/springwebflux/WebFluxInstrumentation.java @@ -18,12 +18,16 @@ */ package co.elastic.apm.agent.springwebflux; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +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 WebFluxInstrumentation extends TracerAwareInstrumentation { +public abstract class WebFluxInstrumentation extends ElasticApmInstrumentation { + + static final Tracer tracer = GlobalTracer.get(); @Override public final Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java index 618057c648..9dae921eca 100644 --- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractServletWrappingControllerTransactionNameInstrumentation.java @@ -18,9 +18,11 @@ */ package co.elastic.apm.agent.springwebmvc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.servlet.Constants; import co.elastic.apm.agent.servlet.adapter.ServletRequestAdapter; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; import co.elastic.apm.agent.tracer.util.TransactionNameUtils; import net.bytebuddy.description.method.MethodDescription; @@ -39,7 +41,9 @@ * to the name of the servlet, * overriding the transaction name set by {@link AbstractSpringTransactionNameInstrumentation} that would be {@code ServletWrappingController}. */ -public abstract class AbstractServletWrappingControllerTransactionNameInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractServletWrappingControllerTransactionNameInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); public abstract Constants.ServletImpl servletImpl(); diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringExceptionHandlerInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringExceptionHandlerInstrumentation.java index 1272615900..331f8131a4 100644 --- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringExceptionHandlerInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringExceptionHandlerInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.springwebmvc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.servlet.Constants; import co.elastic.apm.agent.servlet.adapter.ServletRequestAdapter; import net.bytebuddy.description.method.MethodDescription; @@ -33,7 +33,7 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public abstract class AbstractSpringExceptionHandlerInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractSpringExceptionHandlerInstrumentation extends ElasticApmInstrumentation { public abstract Constants.ServletImpl servletImpl(); diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringServiceNameInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringServiceNameInstrumentation.java index 1167c5b490..68a4d8f199 100644 --- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringServiceNameInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/AbstractSpringServiceNameInstrumentation.java @@ -18,12 +18,14 @@ */ package co.elastic.apm.agent.springwebmvc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.configuration.ServiceInfo; import co.elastic.apm.agent.impl.ElasticApmTracer; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.servlet.Constants; import co.elastic.apm.agent.servlet.ServletServiceNameHelper; import co.elastic.apm.agent.servlet.adapter.ServletContextAdapter; +import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -41,7 +43,9 @@ import static net.bytebuddy.matcher.ElementMatchers.returns; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; -public abstract class AbstractSpringServiceNameInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractSpringServiceNameInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); @Override public ElementMatcher getTypeMatcherPreFilter() { 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 072550f52b..80de774b7b 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 @@ -18,14 +18,15 @@ */ package co.elastic.apm.agent.springwebmvc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import co.elastic.apm.agent.tracer.configuration.WebConfiguration; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.sdk.util.VersionUtils; import co.elastic.apm.agent.servlet.Constants; import co.elastic.apm.agent.servlet.adapter.ServletRequestAdapter; import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; +import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.util.TransactionNameUtils; -import co.elastic.apm.agent.sdk.util.VersionUtils; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; @@ -58,10 +59,12 @@ * Supports Spring MVC 3.x-6.x through the javax.servlet / jakarta.servlet dependent implementations of this class. *

    */ -public abstract class AbstractSpringTransactionNameInstrumentation extends TracerAwareInstrumentation { +public abstract class AbstractSpringTransactionNameInstrumentation extends ElasticApmInstrumentation { private static final String FRAMEWORK_NAME = "Spring Web MVC"; + private static final Tracer tracer = GlobalTracer.get(); + public abstract Constants.ServletImpl servletImpl(); /** diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/ViewRenderInstrumentation.java b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/ViewRenderInstrumentation.java index 08d6173cdb..c85d2b62ef 100644 --- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/ViewRenderInstrumentation.java +++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/src/main/java/co/elastic/apm/agent/springwebmvc/ViewRenderInstrumentation.java @@ -18,10 +18,12 @@ */ package co.elastic.apm.agent.springwebmvc; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import co.elastic.apm.agent.servlet.Constants; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; +import co.elastic.apm.agent.tracer.Tracer; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; @@ -40,13 +42,15 @@ import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; -public class ViewRenderInstrumentation extends TracerAwareInstrumentation { +public class ViewRenderInstrumentation extends ElasticApmInstrumentation { private static final String SPAN_TYPE = "template"; private static final String SPAN_ACTION = "render"; private static final String DISPATCHER_SERVLET_RENDER_METHOD = "View#render"; private static final Map subTypeCache = new ConcurrentHashMap<>(); + private static final Tracer tracer = GlobalTracer.get(); + @Override public String getAdviceClassName() { return "co.elastic.apm.agent.springwebmvc.ViewRenderInstrumentation$ViewRenderAdviceService"; diff --git a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsInstrumentation.java b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsInstrumentation.java index a86c9b86e7..7cbb8b91c1 100644 --- a/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsInstrumentation.java +++ b/apm-agent-plugins/apm-struts-plugin/src/main/java/co/elastic/apm/agent/struts/StrutsInstrumentation.java @@ -18,13 +18,13 @@ */ package co.elastic.apm.agent.struts; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import java.util.Collection; import static java.util.Collections.singletonList; -abstract class StrutsInstrumentation extends TracerAwareInstrumentation { +abstract class StrutsInstrumentation extends ElasticApmInstrumentation { @Override public Collection getInstrumentationGroupNames() { diff --git a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java index 6ccb56b3a9..95c93aff37 100644 --- a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java +++ b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java @@ -18,13 +18,15 @@ */ package co.elastic.apm.agent.urlconnection; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.httpclient.HttpClientHelper; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; +import co.elastic.apm.agent.sdk.state.CallDepth; +import co.elastic.apm.agent.sdk.state.GlobalState; import co.elastic.apm.agent.tracer.AbstractSpan; +import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.tracer.Span; -import co.elastic.apm.agent.sdk.state.CallDepth; -import co.elastic.apm.agent.sdk.state.GlobalState; +import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.dispatch.HeaderUtils; import co.elastic.apm.agent.tracer.reference.ReferenceCountedMap; import net.bytebuddy.asm.Advice; @@ -47,7 +49,9 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @GlobalState -public abstract class HttpUrlConnectionInstrumentation extends TracerAwareInstrumentation { +public abstract class HttpUrlConnectionInstrumentation extends ElasticApmInstrumentation { + + private static final Tracer tracer = GlobalTracer.get(); public static final ReferenceCountedMap> inFlightSpans = tracer.newReferenceCountedMap(); public static final CallDepth callDepth = CallDepth.get(HttpUrlConnectionInstrumentation.class); diff --git a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/SSLContextInstrumentation.java b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/SSLContextInstrumentation.java index 45178a7a67..314ec79a1d 100644 --- a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/SSLContextInstrumentation.java +++ b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/SSLContextInstrumentation.java @@ -18,8 +18,8 @@ */ package co.elastic.apm.agent.urlconnection; -import co.elastic.apm.agent.bci.TracerAwareInstrumentation; import co.elastic.apm.agent.common.ThreadUtils; +import co.elastic.apm.agent.sdk.ElasticApmInstrumentation; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; @@ -49,7 +49,7 @@ *
  • {@link SSLSocketFactory#getDefault()}
  • * */ -public class SSLContextInstrumentation extends TracerAwareInstrumentation { +public class SSLContextInstrumentation extends ElasticApmInstrumentation { @Override public ElementMatcher 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 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 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.bytebuddy byte-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. *

    diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java new file mode 100644 index 0000000000..eb0da0b86e --- /dev/null +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java @@ -0,0 +1,9 @@ +package co.elastic.apm.agent.sdk.internal; + +public interface InternalAgentClass { + + String INTERNAL_PLUGIN_CLASS_LOADER = "INTERNAL_PLUGIN_CLASS_LOADER"; + String CLASS_LOADER = "CLASS_LOADER"; + + String getMarker(); +} 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 a15d6c4409..24468bd70c 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 @@ -33,6 +33,7 @@ import java.util.List; import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass; +import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionLte; 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; diff --git a/apm-agent-plugins/apm-ecs-logging-plugin/src/main/java/co/elastic/apm/agent/ecs_logging/EcsLoggingInstrumentation.java b/apm-agent-plugins/apm-ecs-logging-plugin/src/main/java/co/elastic/apm/agent/ecs_logging/EcsLoggingInstrumentation.java index a34d33f6ad..d454acbe74 100644 --- a/apm-agent-plugins/apm-ecs-logging-plugin/src/main/java/co/elastic/apm/agent/ecs_logging/EcsLoggingInstrumentation.java +++ b/apm-agent-plugins/apm-ecs-logging-plugin/src/main/java/co/elastic/apm/agent/ecs_logging/EcsLoggingInstrumentation.java @@ -18,10 +18,10 @@ */ package co.elastic.apm.agent.ecs_logging; -import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.loginstr.AbstractLogIntegrationInstrumentation; import net.bytebuddy.matcher.ElementMatcher; +import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInternalPluginClassLoader; import static net.bytebuddy.matcher.ElementMatchers.not; public abstract class EcsLoggingInstrumentation extends AbstractLogIntegrationInstrumentation { @@ -35,6 +35,6 @@ protected String getLoggingInstrumentationGroupName() { @Override public ElementMatcher.Junction getClassLoaderMatcher() { // ECS formatter that is loaded within the agent should not be instrumented - return not(CustomElementMatchers.isInternalPluginClassLoader()); + return not(isInternalPluginClassLoader()); } } 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 7ea0f94b78..4375fec954 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 @@ -18,7 +18,6 @@ */ package co.elastic.apm.agent.log4j2.correlation; -import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.loginstr.AbstractLogIntegrationInstrumentation; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.NamedElement; @@ -28,8 +27,7 @@ import java.security.ProtectionDomain; -import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass; -import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionGte; +import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.*; import static net.bytebuddy.matcher.ElementMatchers.hasSuperType; import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader; import static net.bytebuddy.matcher.ElementMatchers.nameEndsWith; @@ -50,7 +48,7 @@ protected String getLoggingInstrumentationGroupName() { public ElementMatcher.Junction getClassLoaderMatcher() { return not(isBootstrapClassLoader()) // Do not instrument the agent log4j2 lib - .and(not(CustomElementMatchers.isAgentClassLoader())) + .and(not(isAgentClassLoader())) .and(classLoaderCanLoadClass("org.apache.logging.log4j.core.impl.LogEventFactory")); } 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 efc96e3748..ef1f4eb221 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 @@ -18,12 +18,12 @@ */ package co.elastic.apm.agent.log4j2.error; -import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.loginstr.error.AbstractLoggerErrorCapturingInstrumentation; import net.bytebuddy.description.method.MethodDescription; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; +import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isAgentClassLoader; import static net.bytebuddy.matcher.ElementMatchers.hasSuperType; import static net.bytebuddy.matcher.ElementMatchers.named; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -48,6 +48,6 @@ public ElementMatcher getMethodMatcher() { @Override public ElementMatcher.Junction getClassLoaderMatcher() { // Do not instrument the internal agent log4j2 loggers - return not(CustomElementMatchers.isAgentClassLoader()); + return not(isAgentClassLoader()); } } 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 bfa826113b..8d4b171117 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 @@ -18,7 +18,6 @@ */ package co.elastic.apm.agent.log4j2.reformatting; -import co.elastic.apm.agent.bci.bytebuddy.CustomElementMatchers; import co.elastic.apm.agent.loginstr.AbstractLogIntegrationInstrumentation; import net.bytebuddy.description.NamedElement; import net.bytebuddy.description.method.MethodDescription; @@ -26,6 +25,7 @@ import net.bytebuddy.matcher.ElementMatcher; import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.classLoaderCanLoadClass; +import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isAgentClassLoader; import static net.bytebuddy.matcher.ElementMatchers.hasSuperType; import static net.bytebuddy.matcher.ElementMatchers.isBootstrapClassLoader; import static net.bytebuddy.matcher.ElementMatchers.nameContains; @@ -45,7 +45,7 @@ protected String getLoggingInstrumentationGroupName() { public ElementMatcher.Junction getClassLoaderMatcher() { return not(isBootstrapClassLoader()) // Do not instrument the internal agent log4j2 appenders - .and(not(CustomElementMatchers.isAgentClassLoader())) + .and(not(isAgentClassLoader())) .and(classLoaderCanLoadClass("org.apache.logging.log4j.core.Appender")); } From 3fab5ea392e7a2e1515643861f96fa5b313b840c Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 15:35:20 +0200 Subject: [PATCH 14/33] Move result util to tracer module. --- .../java/co/elastic/apm/agent/impl/transaction/Span.java | 2 +- .../elastic/apm/agent/impl/transaction/Transaction.java | 2 +- .../src/test/java/specs/OutcomeStepsDefinitions.java | 2 +- .../helper/AbstractAPIGatewayTransactionHelper.java | 2 +- .../httpclient/AbstractHttpClientInstrumentationTest.java | 2 +- .../elastic/apm/agent/httpserver/HttpHandlerAdvice.java | 2 +- .../co/elastic/apm/agent/httpserver/HttpHandlerTest.java | 2 +- .../apm/agent/opentracingimpl/ApmSpanInstrumentation.java | 2 +- .../agent/servlet/JakartaServletInstrumentationTest.java | 2 +- .../apm/agent/servlet/ServletTransactionHelper.java | 2 +- .../apm/agent/servlet/ServletInstrumentationTest.java | 2 +- .../apm/agent/springwebclient/WebClientSubscriber.java | 2 +- .../co/elastic/apm/agent/springwebflux/WebfluxHelper.java | 2 +- .../elastic/apm/agent/vertx/AbstractVertxWebHelper.java | 2 +- .../co/elastic/apm/agent/tracer/util}/ResultUtil.java | 2 +- .../co/elastic/apm/agent/tracer/util}/ResultUtilTest.java | 8 ++++---- .../co/elastic/apm/opentracing/OpenTracingBridgeTest.java | 2 +- 17 files changed, 20 insertions(+), 20 deletions(-) rename {apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web => apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util}/ResultUtil.java (97%) rename {apm-agent-core/src/test/java/co/elastic/apm/agent/impl/context/web => apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util}/ResultUtilTest.java (86%) diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Span.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Span.java index 4622daac3c..b230253ace 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Span.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Span.java @@ -25,7 +25,7 @@ import co.elastic.apm.agent.impl.context.ServiceTarget; import co.elastic.apm.agent.impl.context.SpanContext; import co.elastic.apm.agent.impl.context.Url; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.sdk.logging.Logger; import co.elastic.apm.agent.sdk.logging.LoggerFactory; import co.elastic.apm.agent.tracer.Outcome; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Transaction.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Transaction.java index 92edcf056d..7a65c13033 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Transaction.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/Transaction.java @@ -24,7 +24,7 @@ import co.elastic.apm.agent.impl.ElasticApmTracer; import co.elastic.apm.agent.impl.context.Response; import co.elastic.apm.agent.impl.context.TransactionContext; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.sampling.Sampler; import co.elastic.apm.agent.metrics.Labels; import co.elastic.apm.agent.metrics.MetricRegistry; diff --git a/apm-agent-core/src/test/java/specs/OutcomeStepsDefinitions.java b/apm-agent-core/src/test/java/specs/OutcomeStepsDefinitions.java index 90069d652f..7ba00b5f35 100644 --- a/apm-agent-core/src/test/java/specs/OutcomeStepsDefinitions.java +++ b/apm-agent-core/src/test/java/specs/OutcomeStepsDefinitions.java @@ -18,7 +18,7 @@ */ package specs; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.transaction.AbstractSpan; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.impl.transaction.Span; diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractAPIGatewayTransactionHelper.java b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractAPIGatewayTransactionHelper.java index 32a12ff786..72c1d0eecb 100644 --- a/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractAPIGatewayTransactionHelper.java +++ b/apm-agent-plugins/apm-awslambda-plugin/src/main/java/co/elastic/apm/agent/awslambda/helper/AbstractAPIGatewayTransactionHelper.java @@ -23,7 +23,7 @@ import co.elastic.apm.agent.impl.context.Request; import co.elastic.apm.agent.impl.context.Response; import co.elastic.apm.agent.impl.context.ServiceOrigin; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.common.util.WildcardMatcher; import co.elastic.apm.agent.sdk.logging.Logger; diff --git a/apm-agent-plugins/apm-httpclient-core/src/test/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentationTest.java b/apm-agent-plugins/apm-httpclient-core/src/test/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentationTest.java index 8e5aae606a..a3190b3433 100644 --- a/apm-agent-plugins/apm-httpclient-core/src/test/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentationTest.java +++ b/apm-agent-plugins/apm-httpclient-core/src/test/java/co/elastic/apm/agent/httpclient/AbstractHttpClientInstrumentationTest.java @@ -23,7 +23,7 @@ import co.elastic.apm.agent.impl.TextHeaderMapAccessor; import co.elastic.apm.agent.impl.context.Destination; import co.elastic.apm.agent.impl.context.Http; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.Outcome; import co.elastic.apm.agent.impl.transaction.Span; import co.elastic.apm.agent.impl.transaction.TraceContext; diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java index c693d82e0c..9fe27a2e74 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/HttpHandlerAdvice.java @@ -20,7 +20,7 @@ import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.tracer.GlobalTracer; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.Tracer; diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java index 25ed94f2c9..695adb6d99 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java @@ -23,7 +23,7 @@ import co.elastic.apm.agent.impl.context.Response; import co.elastic.apm.agent.impl.context.Socket; import co.elastic.apm.agent.impl.context.Url; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.impl.transaction.TraceContext; import co.elastic.apm.agent.impl.transaction.Transaction; diff --git a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanInstrumentation.java b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanInstrumentation.java index 16bd9e34df..09a7e4c5b7 100644 --- a/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanInstrumentation.java +++ b/apm-agent-plugins/apm-opentracing-plugin/src/main/java/co/elastic/apm/agent/opentracingimpl/ApmSpanInstrumentation.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.opentracingimpl; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.transaction.AbstractSpan; import co.elastic.apm.agent.impl.transaction.Span; import co.elastic.apm.agent.impl.transaction.Transaction; diff --git a/apm-agent-plugins/apm-servlet-jakarta-test/src/test/java/co/elastic/apm/agent/servlet/JakartaServletInstrumentationTest.java b/apm-agent-plugins/apm-servlet-jakarta-test/src/test/java/co/elastic/apm/agent/servlet/JakartaServletInstrumentationTest.java index 3e7d83f5a5..74cc1431e1 100644 --- a/apm-agent-plugins/apm-servlet-jakarta-test/src/test/java/co/elastic/apm/agent/servlet/JakartaServletInstrumentationTest.java +++ b/apm-agent-plugins/apm-servlet-jakarta-test/src/test/java/co/elastic/apm/agent/servlet/JakartaServletInstrumentationTest.java @@ -20,7 +20,7 @@ import co.elastic.apm.agent.configuration.CoreConfiguration; import co.elastic.apm.agent.impl.TracerInternalApiUtils; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.transaction.Span; import jakarta.servlet.DispatcherType; import jakarta.servlet.Filter; diff --git a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java index 50c3b15b97..de522c0bf3 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/main/java/co/elastic/apm/agent/servlet/ServletTransactionHelper.java @@ -19,7 +19,7 @@ package co.elastic.apm.agent.servlet; import co.elastic.apm.agent.httpserver.HttpServerHelper; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.Tracer; diff --git a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletInstrumentationTest.java b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletInstrumentationTest.java index dd3eaaa8ef..f1064787ca 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletInstrumentationTest.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/ServletInstrumentationTest.java @@ -20,7 +20,7 @@ import co.elastic.apm.agent.configuration.CoreConfiguration; import co.elastic.apm.agent.impl.TracerInternalApiUtils; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.transaction.Span; import okhttp3.Response; import org.eclipse.jetty.servlet.ErrorPageErrorHandler; diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientSubscriber.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientSubscriber.java index fbbd4467ce..e86d0c750e 100755 --- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientSubscriber.java +++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webclient-plugin/src/main/java/co/elastic/apm/agent/springwebclient/WebClientSubscriber.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.springwebclient; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.GlobalTracer; import co.elastic.apm.agent.tracer.Span; import co.elastic.apm.agent.tracer.Tracer; 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 f1081c2a1d..dabbfe6d58 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 @@ -20,7 +20,7 @@ import co.elastic.apm.agent.httpserver.HttpServerHelper; import co.elastic.apm.agent.tracer.GlobalTracer; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.tracer.Tracer; 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 fff30f9287..9702a65860 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 @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.vertx; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.AbstractSpan; import co.elastic.apm.agent.tracer.Tracer; import co.elastic.apm.agent.tracer.Transaction; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/ResultUtil.java b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util/ResultUtil.java similarity index 97% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/ResultUtil.java rename to apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util/ResultUtil.java index 24e42fc33b..e64fe85335 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/ResultUtil.java +++ b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/util/ResultUtil.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.impl.context.web; +package co.elastic.apm.agent.tracer.util; import co.elastic.apm.agent.tracer.Outcome; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/context/web/ResultUtilTest.java b/apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util/ResultUtilTest.java similarity index 86% rename from apm-agent-core/src/test/java/co/elastic/apm/agent/impl/context/web/ResultUtilTest.java rename to apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util/ResultUtilTest.java index 45e4e57516..38f88509da 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/context/web/ResultUtilTest.java +++ b/apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/util/ResultUtilTest.java @@ -16,15 +16,15 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.impl.context.web; +package co.elastic.apm.agent.tracer.util; import co.elastic.apm.agent.tracer.Outcome; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import static co.elastic.apm.agent.impl.context.web.ResultUtil.getOutcomeByHttpClientStatus; -import static co.elastic.apm.agent.impl.context.web.ResultUtil.getOutcomeByHttpServerStatus; -import static co.elastic.apm.agent.impl.context.web.ResultUtil.getResultByHttpStatus; +import static co.elastic.apm.agent.tracer.util.ResultUtil.getOutcomeByHttpClientStatus; +import static co.elastic.apm.agent.tracer.util.ResultUtil.getOutcomeByHttpServerStatus; +import static co.elastic.apm.agent.tracer.util.ResultUtil.getResultByHttpStatus; import static org.assertj.core.api.Assertions.assertThat; class ResultUtilTest { diff --git a/apm-opentracing/src/test/java/co/elastic/apm/opentracing/OpenTracingBridgeTest.java b/apm-opentracing/src/test/java/co/elastic/apm/opentracing/OpenTracingBridgeTest.java index bc0a374bfd..b72cb09194 100644 --- a/apm-opentracing/src/test/java/co/elastic/apm/opentracing/OpenTracingBridgeTest.java +++ b/apm-opentracing/src/test/java/co/elastic/apm/opentracing/OpenTracingBridgeTest.java @@ -22,7 +22,7 @@ import co.elastic.apm.agent.impl.TextHeaderMapAccessor; import co.elastic.apm.agent.impl.TracerInternalApiUtils; import co.elastic.apm.agent.impl.context.Http; -import co.elastic.apm.agent.impl.context.web.ResultUtil; +import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.impl.transaction.Id; import co.elastic.apm.agent.impl.transaction.TraceContext; import co.elastic.apm.agent.impl.transaction.Transaction; From 15583fd91b35188c589565caecb73e6590bab6ce Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 15:44:14 +0200 Subject: [PATCH 15/33] Fully move PotentiallyMultiValuedMap to tracer module without intermediate interface. --- .../apm/agent/impl/context/Request.java | 2 +- .../apm/agent/impl/context/Response.java | 2 +- .../impl/context/SanitizingWebProcessor.java | 2 +- .../transaction/MultiValueMapAccessor.java | 2 +- .../report/serialize/DslJsonSerializer.java | 2 +- .../agent/util/PotentiallyMultiValuedMap.java | 205 ------------------ .../impl/transaction/TraceContextTest.java | 3 +- .../impl/transaction/TraceContextW3CTest.java | 2 +- .../awslambda/ApiGatewayV1LambdaTest.java | 1 - .../awslambda/ApiGatewayV2LambdaTest.java | 1 - .../apm/agent/httpserver/HttpHandlerTest.java | 1 - .../tracing/OTelSpanBuilder.java | 2 +- .../elastic/apm/agent/profiler/CallTree.java | 4 +- .../apm/agent/profiler/SamplingProfiler.java | 7 +- .../servlet/TestRequestBodyCapturing.java | 1 - .../agent/springwebflux/WebfluxHelper.java | 1 - .../AbstractServerInstrumentationTest.java | 1 - .../vertx/helper/CommonVertxWebTest.java | 1 - .../metadata/PotentiallyMultiValuedMap.java | 175 ++++++++++++++- .../PotentiallyMultiValuedMapTest.java | 2 +- 20 files changed, 183 insertions(+), 234 deletions(-) delete mode 100644 apm-agent-core/src/main/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMap.java rename {apm-agent-core/src/test/java/co/elastic/apm/agent/util => apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/metadata}/PotentiallyMultiValuedMapTest.java (98%) diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Request.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Request.java index 1cc79d026c..028882f4e6 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Request.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Request.java @@ -22,7 +22,7 @@ import co.elastic.apm.agent.objectpool.Resetter; import co.elastic.apm.agent.objectpool.impl.QueueBasedObjectPool; import co.elastic.apm.agent.report.serialize.SerializationConstants; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.pooling.Allocator; import co.elastic.apm.agent.tracer.pooling.Recyclable; import org.jctools.queues.atomic.MpmcAtomicArrayQueue; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Response.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Response.java index b5809c6257..811f89293a 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Response.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/Response.java @@ -18,7 +18,7 @@ */ package co.elastic.apm.agent.impl.context; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.pooling.Recyclable; import javax.annotation.Nullable; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/SanitizingWebProcessor.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/SanitizingWebProcessor.java index 85c2793790..45f30d5ab1 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/SanitizingWebProcessor.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/SanitizingWebProcessor.java @@ -23,7 +23,7 @@ import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.common.util.WildcardMatcher; import co.elastic.apm.agent.report.processor.Processor; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import org.stagemonitor.configuration.ConfigurationRegistry; import static co.elastic.apm.agent.impl.context.AbstractContext.REDACTED_CONTEXT_STRING; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/MultiValueMapAccessor.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/MultiValueMapAccessor.java index bbe4743375..cb87b651b0 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/MultiValueMapAccessor.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/transaction/MultiValueMapAccessor.java @@ -18,11 +18,11 @@ */ package co.elastic.apm.agent.impl.transaction; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.dispatch.AbstractHeaderGetter; import co.elastic.apm.agent.tracer.dispatch.HeaderRemover; import co.elastic.apm.agent.tracer.dispatch.TextHeaderGetter; import co.elastic.apm.agent.tracer.dispatch.TextHeaderSetter; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; 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 18123db1f2..c1df1ce8b6 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 @@ -64,9 +64,9 @@ import co.elastic.apm.agent.report.ApmServerClient; import co.elastic.apm.agent.sdk.logging.Logger; import co.elastic.apm.agent.sdk.logging.LoggerFactory; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.pooling.Recyclable; import co.elastic.apm.agent.util.HexUtils; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; import com.dslplatform.json.BoolConverter; import com.dslplatform.json.DslJson; import com.dslplatform.json.JsonWriter; diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMap.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMap.java deleted file mode 100644 index 279a3f7f30..0000000000 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMap.java +++ /dev/null @@ -1,205 +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.tracer.pooling.Recyclable; - -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -/** - * This map is a mixture of a map with a single value and a map with multiple values. - *

    - * 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 values; - - public PotentiallyMultiValuedMap() { - this(10); - } - - public PotentiallyMultiValuedMap(int initialSize) { - keys = new ArrayList<>(initialSize); - values = new ArrayList<>(initialSize); - } - - /** - * Adds a value to this map. - *

    - * If the given key already exists, - * the current value and the given value are added to a collection, - * which is set as the new value. - *

    - * - * @param key The key. - * @param value The value. - */ - @Override - public void add(String key, String value) { - final int index = indexOfIgnoreCase(key); - if (index >= 0) { - Object previousValue = values.get(index); - if (previousValue instanceof List) { - addValueToValueList(value, (List) previousValue); - } else { - convertValueToMultiValue(index, (String) previousValue, value); - } - } else { - keys.add(key); - values.add(value); - } - } - - - public void set(String key, String[] values) { - if (values.length > 0) { - if (values.length == 1) { - keys.add(key); - this.values.add(values[0]); - } else { - keys.add(key); - this.values.add(Arrays.asList(values)); - } - } - } - - private int indexOfIgnoreCase(String key) { - for (int i = 0; i < keys.size(); i++) { - if (keys.get(i).equalsIgnoreCase(key)) { - return i; - } - } - return -1; - } - - /** - * Gets the first value which is associated with a given key. - * - * @param key The key you want to get the associated value for. - * @return The first value which is associated with a given key. - */ - @Override - @Nullable - public String getFirst(String key) { - Object valueOrValueList = get(key); - if (valueOrValueList instanceof List) { - return (String) ((List) valueOrValueList).get(0); - } else { - return (String) valueOrValueList; - } - } - - @Override - @Nullable - public Object get(String key) { - final int index = indexOfIgnoreCase(key); - if (index == -1) { - return null; - } - return values.get(index); - } - - /** - * Gets all the values which age associated with a given key. - *

    - * If there is only one value associated with the given key, - * the value is wrapped inside a collection. - *

    - * - * @param key The key you want to get the associated value for. - * @return All the values which age associated with a given key. - */ - public List getAll(String key) { - final int index = indexOfIgnoreCase(key); - if (index == -1) { - return Collections.emptyList(); - } - Object valueOrValueList = values.get(index); - if (valueOrValueList instanceof List) { - return (List) valueOrValueList; - } else { - return Collections.singletonList((String) valueOrValueList); - } - } - - private void addValueToValueList(String value, List valueList) { - valueList.add(value); - } - - private void convertValueToMultiValue(int index, String previousValue, String value) { - List valueList = new ArrayList<>(4); - valueList.add(previousValue); - valueList.add(value); - values.set(index, valueList); - } - - @Override - public boolean isEmpty() { - return keys.isEmpty(); - } - - @Override - public void resetState() { - keys.clear(); - values.clear(); - } - - public String getKey(int i) { - return keys.get(i); - } - - public Object getValue(int i) { - return values.get(i); - } - - public int size() { - return keys.size(); - } - - public void copyFrom(PotentiallyMultiValuedMap other) { - this.keys.addAll(other.keys); - this.values.addAll(other.values); - } - - public void removeIgnoreCase(String key) { - final int index = indexOfIgnoreCase(key); - if (index != -1) { - keys.remove(index); - values.remove(index); - } - } - - public void set(int index, String value) { - values.set(index, value); - } - - @Override - public boolean containsIgnoreCase(String key) { - return indexOfIgnoreCase(key) != -1; - } -} diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextTest.java index 8de27f8ff2..2c75ccc6bc 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextTest.java @@ -29,8 +29,8 @@ import co.elastic.apm.agent.impl.sampling.ConstantSampler; import co.elastic.apm.agent.impl.sampling.Sampler; import co.elastic.apm.agent.objectpool.TestObjectPoolFactory; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.util.HexUtils; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.dispatch.BinaryHeaderSetter; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -39,7 +39,6 @@ import org.stagemonitor.configuration.ConfigurationRegistry; import javax.annotation.Nullable; -import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import java.util.Random; diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextW3CTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextW3CTest.java index 4e0273f288..914ff65aae 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextW3CTest.java +++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/impl/transaction/TraceContextW3CTest.java @@ -20,7 +20,7 @@ import co.elastic.apm.agent.MockTracer; import co.elastic.apm.agent.impl.ElasticApmTracer; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import com.fasterxml.jackson.databind.JsonNode; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java index 8f88d42575..3ba147a25a 100644 --- a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java +++ b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java @@ -29,7 +29,6 @@ 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.util.PotentiallyMultiValuedMap; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; import org.junit.BeforeClass; diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java index b3970915af..a185d8eee7 100644 --- a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java +++ b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java @@ -30,7 +30,6 @@ 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.util.PotentiallyMultiValuedMap; import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse; import org.junit.BeforeClass; diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java index 695adb6d99..976690efdd 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java @@ -28,7 +28,6 @@ import co.elastic.apm.agent.impl.transaction.TraceContext; import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.common.util.WildcardMatcher; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import com.sun.net.httpserver.HttpServer; 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 0b0088e8e4..8b8c6477ae 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 @@ -28,9 +28,9 @@ 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.util.PotentiallyMultiValuedMap; import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import co.elastic.apm.agent.sdk.util.VersionUtils; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; 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 65938fd8f8..cb79481e62 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 @@ -23,10 +23,10 @@ import co.elastic.apm.agent.impl.transaction.Span; import co.elastic.apm.agent.impl.transaction.StackFrame; import co.elastic.apm.agent.impl.transaction.TraceContext; -import co.elastic.apm.agent.objectpool.ObjectPool; import co.elastic.apm.agent.profiler.collections.LongHashSet; import co.elastic.apm.agent.sdk.logging.Logger; import co.elastic.apm.agent.sdk.logging.LoggerFactory; +import co.elastic.apm.agent.tracer.pooling.ObjectPool; import co.elastic.apm.agent.tracer.pooling.Recyclable; import javax.annotation.Nullable; @@ -148,7 +148,7 @@ private boolean happenedAfter(long timestamp) { return lastSeen < timestamp; } - public static CallTree.Root createRoot(ObjectPool rootPool, byte[] traceContext, @Nullable String serviceName, @Nullable String serviceVersion, long nanoTime) { + public static CallTree.Root createRoot(ObjectPool rootPool, byte[] traceContext, @Nullable String serviceName, @Nullable String serviceVersion, long nanoTime) { CallTree.Root root = rootPool.createInstance(); root.set(traceContext, serviceName, serviceVersion, nanoTime); return root; 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 a467593651..93d48706b7 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 @@ -27,12 +27,11 @@ import co.elastic.apm.agent.impl.transaction.StackFrame; import co.elastic.apm.agent.impl.transaction.TraceContext; import co.elastic.apm.agent.common.util.WildcardMatcher; -import co.elastic.apm.agent.objectpool.ObjectPool; -import co.elastic.apm.agent.objectpool.impl.ListBasedObjectPool; import co.elastic.apm.agent.profiler.asyncprofiler.AsyncProfiler; import co.elastic.apm.agent.profiler.asyncprofiler.JfrParser; import co.elastic.apm.agent.profiler.collections.Long2ObjectHashMap; import co.elastic.apm.agent.tracer.pooling.Allocator; +import co.elastic.apm.agent.tracer.pooling.ObjectPool; import com.lmax.disruptor.EventFactory; import com.lmax.disruptor.EventPoller; import com.lmax.disruptor.EventTranslatorTwoArg; @@ -209,14 +208,14 @@ public SamplingProfiler(final ElasticApmTracer tracer, NanoClock nanoClock, @Nul this.eventBuffer.addGatingSequences(sequence); this.poller = eventBuffer.newPoller(); contextForLogging = TraceContext.with64BitId(tracer); - this.callTreePool = ListBasedObjectPool.ofRecyclable(2 * 1024, new Allocator() { + this.callTreePool = tracer.getObjectPoolFactory().createRecyclableObjectPool(2 * 1024, new Allocator() { @Override public CallTree createInstance() { return new CallTree(); } }); // call tree roots are pooled so that fast activations/deactivations with no associated stack traces don't cause allocations - this.rootPool = ListBasedObjectPool.ofRecyclable(512, new Allocator() { + this.rootPool = tracer.getObjectPoolFactory().createRecyclableObjectPool(512, new Allocator() { @Override public CallTree.Root createInstance() { return new CallTree.Root(tracer); diff --git a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java index 06efcfdc28..564c9a61ea 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java @@ -24,7 +24,6 @@ import co.elastic.apm.agent.impl.error.ErrorCapture; import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.report.serialize.SerializationConstants; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; 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 dabbfe6d58..0808a9743f 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 @@ -29,7 +29,6 @@ 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.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.metadata.Request; import co.elastic.apm.agent.tracer.metadata.Response; import co.elastic.apm.agent.sdk.util.LoggerUtils; diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java index def9c4f9d9..d4c5573732 100644 --- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java +++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java @@ -29,7 +29,6 @@ import co.elastic.apm.agent.springwebflux.testapp.GreetingWebClient; import co.elastic.apm.agent.springwebflux.testapp.WebFluxApplication; import co.elastic.apm.agent.testutils.DisabledOnAppleSilicon; -import co.elastic.apm.agent.util.PotentiallyMultiValuedMap; import org.assertj.core.data.Offset; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; 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 b30f98f35a..711685c33f 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,6 @@ 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.util.PotentiallyMultiValuedMap; import co.elastic.apm.agent.sdk.util.VersionUtils; import co.elastic.apm.agent.vertx.AbstractVertxWebHelper; import io.vertx.core.Handler; diff --git a/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMap.java b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMap.java index ada83ed1e8..09dd097235 100644 --- a/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMap.java +++ b/apm-agent-tracer/src/main/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMap.java @@ -18,20 +18,183 @@ */ package co.elastic.apm.agent.tracer.metadata; +import co.elastic.apm.agent.tracer.pooling.Recyclable; + import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; -public interface PotentiallyMultiValuedMap { +/** + * This map is a mixture of a map with a single value and a map with multiple values. + *

    + * 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 { + + private final List keys; + private final List values; + + public PotentiallyMultiValuedMap() { + this(10); + } + + public PotentiallyMultiValuedMap(int initialSize) { + keys = new ArrayList<>(initialSize); + values = new ArrayList<>(initialSize); + } - void add(String key, String value); + /** + * Adds a value to this map. + *

    + * If the given key already exists, + * the current value and the given value are added to a collection, + * which is set as the new value. + *

    + * + * @param key The key. + * @param value The value. + */ + public void add(String key, String value) { + final int index = indexOfIgnoreCase(key); + if (index >= 0) { + Object previousValue = values.get(index); + if (previousValue instanceof List) { + addValueToValueList(value, (List) previousValue); + } else { + convertValueToMultiValue(index, (String) previousValue, value); + } + } else { + keys.add(key); + values.add(value); + } + } + + public void set(String key, String[] values) { + if (values.length > 0) { + if (values.length == 1) { + keys.add(key); + this.values.add(values[0]); + } else { + keys.add(key); + this.values.add(Arrays.asList(values)); + } + } + } + + private int indexOfIgnoreCase(String key) { + for (int i = 0; i < keys.size(); i++) { + if (keys.get(i).equalsIgnoreCase(key)) { + return i; + } + } + return -1; + } + + /** + * Gets the first value which is associated with a given key. + * + * @param key The key you want to get the associated value for. + * @return The first value which is associated with a given key. + */ @Nullable - String getFirst(String key); + public String getFirst(String key) { + Object valueOrValueList = get(key); + if (valueOrValueList instanceof List) { + return (String) ((List) valueOrValueList).get(0); + } else { + return (String) valueOrValueList; + } + } @Nullable - Object get(String key); + public Object get(String key) { + final int index = indexOfIgnoreCase(key); + if (index == -1) { + return null; + } + return values.get(index); + } + + /** + * Gets all the values which age associated with a given key. + *

    + * If there is only one value associated with the given key, + * the value is wrapped inside a collection. + *

    + * + * @param key The key you want to get the associated value for. + * @return All the values which age associated with a given key. + */ + public List getAll(String key) { + final int index = indexOfIgnoreCase(key); + if (index == -1) { + return Collections.emptyList(); + } + Object valueOrValueList = values.get(index); + if (valueOrValueList instanceof List) { + return (List) valueOrValueList; + } else { + return Collections.singletonList((String) valueOrValueList); + } + } + + private void addValueToValueList(String value, List valueList) { + valueList.add(value); + } + + private void convertValueToMultiValue(int index, String previousValue, String value) { + List valueList = new ArrayList<>(4); + valueList.add(previousValue); + valueList.add(value); + values.set(index, valueList); + } + + public boolean isEmpty() { + return keys.isEmpty(); + } + + @Override + public void resetState() { + keys.clear(); + values.clear(); + } + + public String getKey(int i) { + return keys.get(i); + } + + public Object getValue(int i) { + return values.get(i); + } + + public int size() { + return keys.size(); + } + + public void copyFrom(PotentiallyMultiValuedMap other) { + this.keys.addAll(other.keys); + this.values.addAll(other.values); + } + + public void removeIgnoreCase(String key) { + final int index = indexOfIgnoreCase(key); + if (index != -1) { + keys.remove(index); + values.remove(index); + } + } - boolean isEmpty(); + public void set(int index, String value) { + values.set(index, value); + } - boolean containsIgnoreCase(String key); + public boolean containsIgnoreCase(String key) { + return indexOfIgnoreCase(key) != -1; + } } diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMapTest.java b/apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMapTest.java similarity index 98% rename from apm-agent-core/src/test/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMapTest.java rename to apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMapTest.java index 000666df81..ea024d69f2 100644 --- a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/PotentiallyMultiValuedMapTest.java +++ b/apm-agent-tracer/src/test/java/co/elastic/apm/agent/tracer/metadata/PotentiallyMultiValuedMapTest.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package co.elastic.apm.agent.util; +package co.elastic.apm.agent.tracer.metadata; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; From 00e89e0673b09bf68e8cfea5810688b844df4d01 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 15:49:03 +0200 Subject: [PATCH 16/33] Fix import. --- .../co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java | 1 + 1 file changed, 1 insertion(+) diff --git a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java index 564c9a61ea..c4a8f01257 100644 --- a/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java +++ b/apm-agent-plugins/apm-servlet-plugin/src/test/java/co/elastic/apm/agent/servlet/TestRequestBodyCapturing.java @@ -24,6 +24,7 @@ import co.elastic.apm.agent.impl.error.ErrorCapture; import co.elastic.apm.agent.impl.transaction.Transaction; import co.elastic.apm.agent.report.serialize.SerializationConstants; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; From 51e36ba0b53d26b0aa83a4d81603014804228251 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 15:51:31 +0200 Subject: [PATCH 17/33] Fix imports. --- .../co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java | 1 + .../co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java | 1 + .../java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java | 1 + .../java/co/elastic/apm/agent/springwebflux/WebfluxHelper.java | 1 + .../agent/springwebflux/AbstractServerInstrumentationTest.java | 1 + .../co/elastic/apm/agent/vertx/helper/CommonVertxWebTest.java | 1 + 6 files changed, 6 insertions(+) diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java index 3ba147a25a..c6e0be6e30 100644 --- a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java +++ b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV1LambdaTest.java @@ -29,6 +29,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.tracer.metadata.PotentiallyMultiValuedMap; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent; import org.junit.BeforeClass; diff --git a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java index a185d8eee7..d2a7cd73b4 100644 --- a/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java +++ b/apm-agent-plugins/apm-awslambda-plugin/src/test/java/co/elastic/apm/agent/awslambda/ApiGatewayV2LambdaTest.java @@ -30,6 +30,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.tracer.metadata.PotentiallyMultiValuedMap; import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent; import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPResponse; import org.junit.BeforeClass; diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java index 976690efdd..eae5e67fed 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/test/java/co/elastic/apm/agent/httpserver/HttpHandlerTest.java @@ -23,6 +23,7 @@ import co.elastic.apm.agent.impl.context.Response; import co.elastic.apm.agent.impl.context.Socket; import co.elastic.apm.agent.impl.context.Url; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; import co.elastic.apm.agent.impl.transaction.TraceContext; 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 0808a9743f..f2b6bcf3d2 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 @@ -20,6 +20,7 @@ import co.elastic.apm.agent.httpserver.HttpServerHelper; import co.elastic.apm.agent.tracer.GlobalTracer; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.tracer.util.ResultUtil; import co.elastic.apm.agent.tracer.configuration.CoreConfiguration; import co.elastic.apm.agent.tracer.configuration.WebConfiguration; diff --git a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java index d4c5573732..7b75f987a3 100644 --- a/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java +++ b/apm-agent-plugins/apm-spring-webflux/apm-spring-webflux-spring5/src/test/java/co/elastic/apm/agent/springwebflux/AbstractServerInstrumentationTest.java @@ -29,6 +29,7 @@ import co.elastic.apm.agent.springwebflux.testapp.GreetingWebClient; import co.elastic.apm.agent.springwebflux.testapp.WebFluxApplication; import co.elastic.apm.agent.testutils.DisabledOnAppleSilicon; +import co.elastic.apm.agent.tracer.metadata.PotentiallyMultiValuedMap; import org.assertj.core.data.Offset; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; 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 711685c33f..284c277fb6 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 @@ -27,6 +27,7 @@ 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.tracer.metadata.PotentiallyMultiValuedMap; import co.elastic.apm.agent.vertx.AbstractVertxWebHelper; import io.vertx.core.Handler; import io.vertx.ext.web.Router; From bb79679584a0965cec087c38bcfb30f4be63f794 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 16:08:21 +0200 Subject: [PATCH 18/33] Move test module. --- .../test/resources/lib/version##2/test-module.jar | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename {apm-agent-core => apm-agent-plugin-sdk}/src/test/resources/lib/version##2/test-module.jar (100%) diff --git a/apm-agent-core/src/test/resources/lib/version##2/test-module.jar b/apm-agent-plugin-sdk/src/test/resources/lib/version##2/test-module.jar similarity index 100% rename from apm-agent-core/src/test/resources/lib/version##2/test-module.jar rename to apm-agent-plugin-sdk/src/test/resources/lib/version##2/test-module.jar From 848533058e7e41e8288802cc9f35dce7a8d61301 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 19:58:25 +0200 Subject: [PATCH 19/33] Substitute matchers with "old" approach as the new approach apparently fails. --- .../elastic/test/ChildFirstURLClassLoader.java | 2 +- .../sdk/bytebuddy/CustomElementMatchers.java | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) 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 06f92610e6..c7f676805e 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 @@ -47,7 +47,7 @@ public ChildFirstURLClassLoader(List urls) { @Override public String getMarker() { - return INTERNAL_PLUGIN_CLASS_LOADER; + return CLASS_LOADER; } @Override 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 378dbe8e78..9f5ae6f761 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 @@ -41,6 +41,7 @@ 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; @@ -55,9 +56,12 @@ public class CustomElementMatchers { 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) { + if (classLoader != null && classLoader.getClass().getName().startsWith("co.elastic.apm.")) { + return true; + // TODO: why does this not work? + /*if (classLoader instanceof InternalAgentClass) { String marker = ((InternalAgentClass) classLoader).getMarker(); - return InternalAgentClass.CLASS_LOADER.equals(marker) || InternalAgentClass.INTERNAL_PLUGIN_CLASS_LOADER.equals(marker); + 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; @@ -69,9 +73,13 @@ public boolean matches(@Nullable ClassLoader classLoader) { 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()); + if (classLoader != null && classLoader.getClass().getName().equals("co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader")) { + return true; } + // TODO: why does this not work? + /*if (classLoader instanceof InternalAgentClass) { + return InternalAgentClass.INTERNAL_PLUGIN_CLASS_LOADER.equals(((InternalAgentClass) classLoader).getMarker()); + }*/ return false; } }; From 223d9e1a185c286e58a7e411c5022fdddd3d998a Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 20:16:27 +0200 Subject: [PATCH 20/33] Fix test for sampling profiler that is using mock. --- .../elastic/apm/agent/profiler/SamplingProfilerQueueTest.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apm-agent-plugins/apm-profiling-plugin/src/test/java/co/elastic/apm/agent/profiler/SamplingProfilerQueueTest.java b/apm-agent-plugins/apm-profiling-plugin/src/test/java/co/elastic/apm/agent/profiler/SamplingProfilerQueueTest.java index ecf96619cd..d6c0f9d368 100644 --- a/apm-agent-plugins/apm-profiling-plugin/src/test/java/co/elastic/apm/agent/profiler/SamplingProfilerQueueTest.java +++ b/apm-agent-plugins/apm-profiling-plugin/src/test/java/co/elastic/apm/agent/profiler/SamplingProfilerQueueTest.java @@ -21,12 +21,14 @@ import co.elastic.apm.agent.MockTracer; import co.elastic.apm.agent.impl.ElasticApmTracer; import co.elastic.apm.agent.impl.transaction.TraceContext; +import co.elastic.apm.agent.objectpool.ObjectPoolFactory; import co.elastic.apm.agent.testutils.DisabledOnAppleSilicon; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; public class SamplingProfilerQueueTest { @@ -37,6 +39,7 @@ void testFillQueue() throws Exception { System.out.println(System.getProperty("os.name")); ElasticApmTracer tracer = MockTracer.create(); + when(tracer.getObjectPoolFactory()).thenReturn(new ObjectPoolFactory()); SamplingProfiler profiler = new SamplingProfiler(tracer, new SystemNanoClock()); From 1b21281d3f4e878274b4c826291cdbb59bd8d691 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 20:50:23 +0200 Subject: [PATCH 21/33] Increase visibility of tracer. --- .../agent/urlconnection/HttpUrlConnectionInstrumentation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java index 95c93aff37..f5001a3fa2 100644 --- a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java +++ b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java @@ -51,7 +51,7 @@ @GlobalState public abstract class HttpUrlConnectionInstrumentation extends ElasticApmInstrumentation { - private static final Tracer tracer = GlobalTracer.get(); + public static final Tracer tracer = GlobalTracer.get(); public static final ReferenceCountedMap> inFlightSpans = tracer.newReferenceCountedMap(); public static final CallDepth callDepth = CallDepth.get(HttpUrlConnectionInstrumentation.class); From 687fe537a007c3bad5545a5260c6389fa97e1997 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 21:23:04 +0200 Subject: [PATCH 22/33] Make class loader matching configurable. --- .../DiscriminatingMultiParentClassLoader.java | 8 +---- .../ExternalPluginClassLoader.java | 8 +---- .../classloading/IndyPluginClassLoader.java | 8 +---- .../CustomElementMatchersProviderImpl.java | 19 ++++++++++++ .../package-info.java | 2 +- ...mentMatchers$CustomElementMatchersProvider | 1 + .../agent/bci/modules/ModuleOpenerTest.java | 8 +---- .../test/ChildFirstURLClassLoader.java | 8 +---- .../sdk/bytebuddy/CustomElementMatchers.java | 31 ++++++++----------- .../apm/agent/sdk/bytebuddy/package-info.java | 22 +++++++++++++ .../agent/sdk/collections/package-info.java | 22 +++++++++++++ .../sdk/internal/InternalAgentClass.java | 9 ------ .../apm/agent/sdk/internal/InternalUtil.java | 14 --------- .../apm/agent/sdk/state/GlobalVariables.java | 4 +-- .../apm/agent/sdk/util/package-info.java | 22 +++++++++++++ .../bytebuddy/CustomElementMatchersTest.java | 19 ++++++++++-- .../CustomElementMatchersTestProvider.java | 22 +++++++++++++ ...mentMatchers$CustomElementMatchersProvider | 1 + .../HttpUrlConnectionInstrumentation.java | 2 +- 19 files changed, 147 insertions(+), 83 deletions(-) create mode 100644 apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java rename apm-agent-core/src/main/java/co/elastic/apm/agent/{annotation => bytebuddy}/package-info.java (95%) create mode 100644 apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/package-info.java create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/package-info.java delete mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java create mode 100644 apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/package-info.java create mode 100644 apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTestProvider.java create mode 100644 apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider 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 b3e346a6ac..4dde244483 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,7 +18,6 @@ */ package co.elastic.apm.agent.bci.classloading; -import co.elastic.apm.agent.sdk.internal.InternalAgentClass; import net.bytebuddy.matcher.ElementMatcher; import java.io.IOException; @@ -33,7 +32,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 implements InternalAgentClass { +class DiscriminatingMultiParentClassLoader extends ClassLoader { private static final String CLASS_EXTENSION = ".class"; private final List parents; @@ -68,11 +67,6 @@ class DiscriminatingMultiParentClassLoader extends ClassLoader implements Intern 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 4565442249..6fa9107f7d 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,7 +21,6 @@ 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; @@ -43,7 +42,7 @@ * * @see co.elastic.apm.agent.bci.IndyBootstrap */ -public class ExternalPluginClassLoader extends URLClassLoader implements InternalAgentClass { +public class ExternalPluginClassLoader extends URLClassLoader { private final List classNames; private final File pluginJar; @@ -101,11 +100,6 @@ 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 19eac6d071..d4918e8fa1 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,6 @@ */ 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; @@ -38,7 +37,7 @@ * * @see co.elastic.apm.agent.bci.IndyBootstrap */ -public class IndyPluginClassLoader extends ByteArrayClassLoader.ChildFirst implements InternalAgentClass { +public class IndyPluginClassLoader extends ByteArrayClassLoader.ChildFirst { private static final ClassLoader SYSTEM_CLASS_LOADER = ClassLoader.getSystemClassLoader(); @@ -90,11 +89,6 @@ 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/bytebuddy/CustomElementMatchersProviderImpl.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java new file mode 100644 index 0000000000..0d6be6d697 --- /dev/null +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/CustomElementMatchersProviderImpl.java @@ -0,0 +1,19 @@ +package co.elastic.apm.agent.bytebuddy; + +import co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader; +import co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers; + +import javax.annotation.Nullable; + +public class CustomElementMatchersProviderImpl implements CustomElementMatchers.CustomElementMatchersProvider { + + @Override + public boolean isAgentClassLoader(@Nullable ClassLoader classLoader) { + return classLoader != null && classLoader.getClass().getName().startsWith("co.elastic.apm."); + } + + @Override + public boolean isInternalPluginClassLoader(@Nullable ClassLoader classLoader) { + return classLoader instanceof IndyPluginClassLoader; + } +} diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/annotation/package-info.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/package-info.java similarity index 95% rename from apm-agent-core/src/main/java/co/elastic/apm/agent/annotation/package-info.java rename to apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/package-info.java index c4bd7c26aa..0231dc5d86 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/annotation/package-info.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bytebuddy/package-info.java @@ -17,6 +17,6 @@ * under the License. */ @NonnullApi -package co.elastic.apm.agent.annotation; +package co.elastic.apm.agent.bytebuddy; import co.elastic.apm.agent.sdk.NonnullApi; diff --git a/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider b/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider new file mode 100644 index 0000000000..b35c1aabbc --- /dev/null +++ b/apm-agent-core/src/main/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider @@ -0,0 +1 @@ +co.elastic.apm.agent.bytebuddy.CustomElementMatchersProviderImpl 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 a411e14636..ddf71c2ce8 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,7 +18,6 @@ */ 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; @@ -65,7 +64,7 @@ public static void doAccess() throws Exception { } - private static class ChildFirstCopyClassloader extends ClassLoader implements InternalAgentClass { + private static class ChildFirstCopyClassloader extends ClassLoader { String childFirstClassName; @@ -74,11 +73,6 @@ 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 c7f676805e..9a273d17e5 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,6 @@ */ package co.elastic.test; -import co.elastic.apm.agent.sdk.internal.InternalAgentClass; import co.elastic.apm.agent.testutils.JUnit4TestClassWithDependencyRunner; import java.io.IOException; @@ -36,7 +35,7 @@ * 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 co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers#isAgentClassLoader()}. */ -public class ChildFirstURLClassLoader extends URLClassLoader implements InternalAgentClass { +public class ChildFirstURLClassLoader extends URLClassLoader { private final List urls; @@ -45,11 +44,6 @@ public ChildFirstURLClassLoader(List urls) { this.urls = urls; } - @Override - public String getMarker() { - return 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 9f5ae6f761..71b82f4cb7 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,7 +18,7 @@ */ package co.elastic.apm.agent.sdk.bytebuddy; -import co.elastic.apm.agent.sdk.internal.InternalAgentClass; +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; @@ -41,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; @@ -53,34 +52,23 @@ public class CustomElementMatchers { private static final ClassLoader SELF_CLASS_LOADER = PrivilegedActionUtils.getClassLoader(CustomElementMatchers.class); + private static final CustomElementMatchersProvider supplier = InternalUtil.getServiceProvider(CustomElementMatchersProvider.class); + private static final ElementMatcher.Junction.AbstractBase AGENT_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() { @Override public boolean matches(@Nullable ClassLoader classLoader) { - if (classLoader != null && classLoader.getClass().getName().startsWith("co.elastic.apm.")) { - return true; - // TODO: why does this not work? - /*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) { + if (classLoader == SELF_CLASS_LOADER) { // This one also covers unit tests, where the app class loader loads the agent return true; } - return false; + return supplier.isAgentClassLoader(classLoader); } }; private static final ElementMatcher.Junction.AbstractBase INTERNAL_PLUGIN_CLASS_LOADER_MATCHER = new ElementMatcher.Junction.AbstractBase() { @Override public boolean matches(@Nullable ClassLoader classLoader) { - if (classLoader != null && classLoader.getClass().getName().equals("co.elastic.apm.agent.bci.classloading.IndyPluginClassLoader")) { - return true; - } - // TODO: why does this not work? - /*if (classLoader instanceof InternalAgentClass) { - return InternalAgentClass.INTERNAL_PLUGIN_CLASS_LOADER.equals(((InternalAgentClass) classLoader).getMarker()); - }*/ - return false; + return supplier.isInternalPluginClassLoader(classLoader); } }; @@ -295,4 +283,11 @@ > boolean match(T c1, T c2) { abstract > boolean match(T c1, T c2); } + + public interface CustomElementMatchersProvider { + + boolean isAgentClassLoader(@Nullable ClassLoader classLoader); + + boolean isInternalPluginClassLoader(@Nullable ClassLoader classLoader); + } } diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/package-info.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/package-info.java new file mode 100644 index 0000000000..44fe9c0459 --- /dev/null +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/bytebuddy/package-info.java @@ -0,0 +1,22 @@ +/* + * 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.sdk.bytebuddy; + +import co.elastic.apm.agent.sdk.NonnullApi; 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/collections/package-info.java new file mode 100644 index 0000000000..3ddf4bacce --- /dev/null +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/collections/package-info.java @@ -0,0 +1,22 @@ +/* + * 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.sdk.collections; + +import co.elastic.apm.agent.sdk.NonnullApi; diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java deleted file mode 100644 index eb0da0b86e..0000000000 --- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalAgentClass.java +++ /dev/null @@ -1,9 +0,0 @@ -package co.elastic.apm.agent.sdk.internal; - -public interface InternalAgentClass { - - String INTERNAL_PLUGIN_CLASS_LOADER = "INTERNAL_PLUGIN_CLASS_LOADER"; - String CLASS_LOADER = "CLASS_LOADER"; - - String getMarker(); -} diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalUtil.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalUtil.java index 157e851352..eaf79cdf07 100644 --- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalUtil.java +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/internal/InternalUtil.java @@ -25,20 +25,6 @@ public class InternalUtil { - @Nullable - public static ClassLoader getClassLoader(final Class type) { - if (System.getSecurityManager() == null) { - return type.getClassLoader(); - } - return AccessController.doPrivileged(new PrivilegedAction() { - @Nullable - @Override - public ClassLoader run() { - return type.getClassLoader(); - } - }); - } - /** * Loads a service provider based on the service interface, assuming that a provider (implementation) is available to the class * loader that loads the service (interface). This allows to separate interface and implementation without introducing a 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 75c6ce6a3e..fad0c520d2 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.internal.InternalUtil; +import co.elastic.apm.agent.sdk.util.PrivilegedActionUtils; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -53,7 +53,7 @@ public class GlobalVariables { */ public static T get(Class adviceClass, String key, T defaultValue) { key = adviceClass.getName() + "." + key; - if (InternalUtil.getClassLoader(defaultValue.getClass()) != null && !defaultValue.getClass().getName().startsWith("co.elastic.apm.agent")) { + if (PrivilegedActionUtils.getClassLoader(defaultValue.getClass()) != null && !defaultValue.getClass().getName().startsWith("co.elastic.apm.agent")) { throw new IllegalArgumentException("Registering types specific to an instrumentation plugin would lead to class loader leaks: " + defaultValue); } T value = (T) registry.get(key); 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/util/package-info.java new file mode 100644 index 0000000000..335c812824 --- /dev/null +++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/util/package-info.java @@ -0,0 +1,22 @@ +/* + * 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.sdk.util; + +import co.elastic.apm.agent.sdk.NonnullApi; 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 24468bd70c..8e6bc0ab5b 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 @@ -27,14 +27,13 @@ import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; +import java.net.URLClassLoader; 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; -import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.implementationVersionLte; -import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.isInAnyPackage; +import static co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers.*; import static net.bytebuddy.matcher.ElementMatchers.none; import static org.assertj.core.api.Assertions.assertThat; @@ -94,4 +93,18 @@ void testClassLoaderCanLoadClass() { assertThat(classLoaderCanLoadClass(Object.class.getName()).matches(null)).isTrue(); assertThat(classLoaderCanLoadClass("not.Here").matches(ClassLoader.getSystemClassLoader())).isFalse(); } + + @Test + void testIsAgentClassLoader() { + assertThat(isAgentClassLoader().matches(CustomElementMatchers.class.getClassLoader())).isTrue(); + assertThat(isAgentClassLoader().matches(new CustomElementMatchersTestProvider.SampleAgentClassLoader())).isTrue(); + assertThat(isAgentClassLoader().matches(new URLClassLoader(new URL[0]))).isFalse(); + } + + @Test + void testIsInternalPluginClassLoader() { + assertThat(isInternalPluginClassLoader().matches(CustomElementMatchers.class.getClassLoader())).isFalse(); + assertThat(isInternalPluginClassLoader().matches(new CustomElementMatchersTestProvider.SampleInternalPluginClassLoader())).isTrue(); + assertThat(isInternalPluginClassLoader().matches(new URLClassLoader(new URL[0]))).isFalse(); + } } 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 new file mode 100644 index 0000000000..a9016518d5 --- /dev/null +++ b/apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk/bytebuddy/CustomElementMatchersTestProvider.java @@ -0,0 +1,22 @@ +package co.elastic.apm.agent.sdk.bytebuddy; + +import javax.annotation.Nullable; + +public class CustomElementMatchersTestProvider implements CustomElementMatchers.CustomElementMatchersProvider { + + @Override + public boolean isAgentClassLoader(@Nullable ClassLoader classLoader) { + return classLoader instanceof SampleAgentClassLoader; + } + + @Override + public boolean isInternalPluginClassLoader(@Nullable ClassLoader classLoader) { + return classLoader instanceof SampleInternalPluginClassLoader; + } + + static class SampleAgentClassLoader extends ClassLoader { + } + + static class SampleInternalPluginClassLoader extends ClassLoader { + } +} diff --git a/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider new file mode 100644 index 0000000000..6541cb3c96 --- /dev/null +++ b/apm-agent-plugin-sdk/src/test/resources/META-INF/services/co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchers$CustomElementMatchersProvider @@ -0,0 +1 @@ +co.elastic.apm.agent.sdk.bytebuddy.CustomElementMatchersTestProvider diff --git a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java index f5001a3fa2..5f2acf0a30 100644 --- a/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java +++ b/apm-agent-plugins/apm-urlconnection-plugin/src/main/java/co/elastic/apm/agent/urlconnection/HttpUrlConnectionInstrumentation.java @@ -51,7 +51,7 @@ @GlobalState public abstract class HttpUrlConnectionInstrumentation extends ElasticApmInstrumentation { - public static final Tracer tracer = GlobalTracer.get(); + public static final Tracer tracer = GlobalTracer.get(); // must be public! public static final ReferenceCountedMap> inFlightSpans = tracer.newReferenceCountedMap(); public static final CallDepth callDepth = CallDepth.get(HttpUrlConnectionInstrumentation.class); From 0a0ce09a2892074ae1460d28f16d6c3fa44acd7e Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Tue, 6 Jun 2023 21:51:22 +0200 Subject: [PATCH 23/33] Move DB signature parsers to SDK. --- .../sql/SignatureParserBenchmark.java | 2 +- apm-agent-plugin-sdk/pom.xml | 8 ++++ .../apm/agent/sdk}/db/signature/Scanner.java | 2 +- .../sdk}/db/signature/ScannerFilter.java | 2 +- .../sdk}/db/signature/SignatureParser.java | 14 +++--- .../agent/sdk}/db/signature/package-info.java | 2 +- .../agent/sdk}/db/signature/ScannerTest.java | 2 +- .../db/signature/SignatureParserTest.java | 2 +- .../src/test/java/specs/TestJsonSpec.java | 44 +++++++++++++++++++ .../json-specs/sql_signature_examples.json | 0 .../json-specs/sql_token_examples.json | 0 .../src/test/resources/signature_tests.json | 0 .../apm/agent/cassandra/CassandraHelper.java | 2 +- apm-agent-plugins/apm-jdbc-plugin/pom.xml | 14 ++++++ .../co/elastic/apm/agent/jdbc/JdbcFilter.java | 4 +- .../apm/agent/jdbc/helper/JdbcHelper.java | 4 +- .../jdbc/AbstractJdbcInstrumentationTest.java | 2 +- .../agent/jdbc/JdbcSignatureParserTest.java | 5 +-- 18 files changed, 87 insertions(+), 22 deletions(-) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/db/signature/Scanner.java (99%) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/db/signature/ScannerFilter.java (95%) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/db/signature/SignatureParser.java (95%) rename {apm-agent-core/src/main/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk}/db/signature/package-info.java (94%) rename {apm-agent-core/src/test/java/co/elastic/apm/agent => apm-agent-plugin-sdk/src/test/java/co/elastic/apm/agent/sdk}/db/signature/ScannerTest.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}/db/signature/SignatureParserTest.java (99%) create mode 100644 apm-agent-plugin-sdk/src/test/java/specs/TestJsonSpec.java rename {apm-agent-core => apm-agent-plugin-sdk}/src/test/resources/json-specs/sql_signature_examples.json (100%) rename {apm-agent-core => apm-agent-plugin-sdk}/src/test/resources/json-specs/sql_token_examples.json (100%) rename {apm-agent-core => apm-agent-plugin-sdk}/src/test/resources/signature_tests.json (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 8c775019c0..abd0722acb 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.db.signature.SignatureParser; +import co.elastic.apm.agent.sdk.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-plugin-sdk/pom.xml b/apm-agent-plugin-sdk/pom.xml index f4d3f1ef58..193aadccbf 100644 --- a/apm-agent-plugin-sdk/pom.xml +++ b/apm-agent-plugin-sdk/pom.xml @@ -56,6 +56,14 @@ + + + test-jar + + test-jar + + + 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.0 test + + ${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.0 test - - ${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 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;