opentelemetry-java-instrume.../javaagent-spi/src/main/java/io/opentelemetry/javaagent/spi/ByteBuddyAgentCustomizer.java

31 lines
1.1 KiB
Java

/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
package io.opentelemetry.javaagent.spi;
import java.lang.instrument.Instrumentation;
import net.bytebuddy.agent.builder.AgentBuilder;
/**
* {@link ByteBuddyAgentCustomizer} customizes ByteBuddy agent builder right before the agent is
* installed - {@link AgentBuilder#installOn(Instrumentation)}. This SPI can be used to customize
* {@link AgentBuilder} for vendor specific needs. For example install custom listeners or exclude
* classes. Use this SPI carefully because it can change {@link net.bytebuddy.ByteBuddy} behaviour.
*
* <p>This is a service provider interface that requires implementations to be registered in {@code
* META-INF/services} folder.
*/
public interface ByteBuddyAgentCustomizer {
/**
* Customize ByteBuddy agent builder before {@link AgentBuilder#installOn(Instrumentation)} is
* called.
*
* @param agentBuilder ByteBuddy agent from {@code AgentInstaller}.
* @return customized agent builder.
*/
AgentBuilder customize(AgentBuilder agentBuilder);
}