diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java index 123cfa8d1f..963a722249 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelFutureListenerInstrumentation.java @@ -64,7 +64,7 @@ public class ChannelFutureListenerInstrumentation implements TypeInstrumentation InstrumentationContext.get(Channel.class, ChannelTraceContext.class); ChannelTraceContext channelTraceContext = - contextStore.putIfAbsent(future.getChannel(), ChannelTraceContext.Factory.INSTANCE); + contextStore.putIfAbsent(future.getChannel(), ChannelTraceContext.FACTORY); Context parentContext = channelTraceContext.getConnectionContext(); if (parentContext == null) { return null; diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelTraceContext.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelTraceContext.java index 994a749d3c..2916038981 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelTraceContext.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/ChannelTraceContext.java @@ -6,19 +6,12 @@ package io.opentelemetry.javaagent.instrumentation.netty.v3_8; import io.opentelemetry.context.Context; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import java.util.Objects; +import java.util.function.Supplier; public class ChannelTraceContext { - public static class Factory implements ContextStore.Factory { - public static final Factory INSTANCE = new Factory(); - - @Override - public ChannelTraceContext create() { - return new ChannelTraceContext(); - } - } + public static final Supplier FACTORY = ChannelTraceContext::new; private Context connectionContext; private Context clientParentContext; diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java index 7da54e79a8..16241d301c 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/NettyChannelInstrumentation.java @@ -55,9 +55,7 @@ public class NettyChannelInstrumentation implements TypeInstrumentation { ContextStore contextStore = InstrumentationContext.get(Channel.class, ChannelTraceContext.class); - if (contextStore - .putIfAbsent(channel, ChannelTraceContext.Factory.INSTANCE) - .getConnectionContext() + if (contextStore.putIfAbsent(channel, ChannelTraceContext.FACTORY).getConnectionContext() == null) { contextStore.get(channel).setConnectionContext(context); } diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java index db4d5d0425..23f1f7be79 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientRequestTracingHandler.java @@ -34,7 +34,7 @@ public class HttpClientRequestTracingHandler extends SimpleChannelDownstreamHand } ChannelTraceContext channelTraceContext = - contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.Factory.INSTANCE); + contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.FACTORY); Context parentContext = channelTraceContext.getConnectionContext(); if (parentContext != null) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java index 89161bfa7a..79d6162b2d 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/client/HttpClientResponseTracingHandler.java @@ -28,7 +28,7 @@ public class HttpClientResponseTracingHandler extends SimpleChannelUpstreamHandl @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent msg) { ChannelTraceContext channelTraceContext = - contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.Factory.INSTANCE); + contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.FACTORY); Context context = channelTraceContext.getContext(); if (context == null) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java index d0f400662c..4e4ccf1919 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerRequestTracingHandler.java @@ -28,7 +28,7 @@ public class HttpServerRequestTracingHandler extends SimpleChannelUpstreamHandle @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) { ChannelTraceContext channelTraceContext = - contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.Factory.INSTANCE); + contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.FACTORY); Object message = event.getMessage(); if (!(message instanceof HttpRequest)) { diff --git a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java index 59cea4e524..356d1db2a2 100644 --- a/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java +++ b/instrumentation/netty/netty-3.8/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/netty/v3_8/server/HttpServerResponseTracingHandler.java @@ -28,7 +28,7 @@ public class HttpServerResponseTracingHandler extends SimpleChannelDownstreamHan @Override public void writeRequested(ChannelHandlerContext ctx, MessageEvent msg) { ChannelTraceContext channelTraceContext = - contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.Factory.INSTANCE); + contextStore.putIfAbsent(ctx.getChannel(), ChannelTraceContext.FACTORY); Context context = tracer().getServerContext(channelTraceContext); if (context == null || !(msg.getMessage() instanceof HttpResponse)) { diff --git a/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3FilterMappingResolverFactory.java b/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3FilterMappingResolverFactory.java index 6443f5bb59..2477e925fe 100644 --- a/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3FilterMappingResolverFactory.java +++ b/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3FilterMappingResolverFactory.java @@ -5,9 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.servlet.v3_0; -import io.opentelemetry.instrumentation.api.servlet.MappingResolver; import io.opentelemetry.instrumentation.servlet.naming.ServletFilterMappingResolverFactory; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import java.util.Collection; import javax.servlet.FilterConfig; import javax.servlet.FilterRegistration; @@ -15,8 +13,7 @@ import javax.servlet.ServletContext; import javax.servlet.ServletRegistration; public class Servlet3FilterMappingResolverFactory - extends ServletFilterMappingResolverFactory - implements ContextStore.Factory { + extends ServletFilterMappingResolverFactory { private final FilterConfig filterConfig; public Servlet3FilterMappingResolverFactory(FilterConfig filterConfig) { diff --git a/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3MappingResolverFactory.java b/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3MappingResolverFactory.java index 5c69a32de6..70e2f2eded 100644 --- a/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3MappingResolverFactory.java +++ b/instrumentation/servlet/servlet-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v3_0/Servlet3MappingResolverFactory.java @@ -5,16 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.servlet.v3_0; -import io.opentelemetry.instrumentation.api.servlet.MappingResolver; import io.opentelemetry.instrumentation.servlet.naming.ServletMappingResolverFactory; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import java.util.Collection; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletRegistration; -public class Servlet3MappingResolverFactory extends ServletMappingResolverFactory - implements ContextStore.Factory { +public class Servlet3MappingResolverFactory extends ServletMappingResolverFactory { private final ServletConfig servletConfig; public Servlet3MappingResolverFactory(ServletConfig servletConfig) { diff --git a/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletFilterMappingResolverFactory.java b/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletFilterMappingResolverFactory.java index f9d8b777fb..567e5a8cc0 100644 --- a/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletFilterMappingResolverFactory.java +++ b/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletFilterMappingResolverFactory.java @@ -5,9 +5,7 @@ package io.opentelemetry.javaagent.instrumentation.servlet.v5_0.service; -import io.opentelemetry.instrumentation.api.servlet.MappingResolver; import io.opentelemetry.instrumentation.servlet.naming.ServletFilterMappingResolverFactory; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import jakarta.servlet.FilterConfig; import jakarta.servlet.FilterRegistration; import jakarta.servlet.ServletContext; @@ -15,8 +13,7 @@ import jakarta.servlet.ServletRegistration; import java.util.Collection; public class JakartaServletFilterMappingResolverFactory - extends ServletFilterMappingResolverFactory - implements ContextStore.Factory { + extends ServletFilterMappingResolverFactory { private final FilterConfig filterConfig; public JakartaServletFilterMappingResolverFactory(FilterConfig filterConfig) { diff --git a/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletMappingResolverFactory.java b/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletMappingResolverFactory.java index 3b1a922ae1..c4990a3536 100644 --- a/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletMappingResolverFactory.java +++ b/instrumentation/servlet/servlet-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/v5_0/service/JakartaServletMappingResolverFactory.java @@ -5,16 +5,13 @@ package io.opentelemetry.javaagent.instrumentation.servlet.v5_0.service; -import io.opentelemetry.instrumentation.api.servlet.MappingResolver; import io.opentelemetry.instrumentation.servlet.naming.ServletMappingResolverFactory; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletRegistration; import java.util.Collection; -public class JakartaServletMappingResolverFactory extends ServletMappingResolverFactory - implements ContextStore.Factory { +public class JakartaServletMappingResolverFactory extends ServletMappingResolverFactory { private final ServletConfig servletConfig; public JakartaServletMappingResolverFactory(ServletConfig servletConfig) { diff --git a/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletFilterMappingResolverFactory.java b/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletFilterMappingResolverFactory.java index 018439d421..210122c0f5 100644 --- a/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletFilterMappingResolverFactory.java +++ b/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletFilterMappingResolverFactory.java @@ -11,8 +11,10 @@ import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.function.Supplier; -public abstract class ServletFilterMappingResolverFactory { +public abstract class ServletFilterMappingResolverFactory + implements Supplier { protected abstract FILTERREGISTRATION getFilterRegistration(); @@ -58,7 +60,8 @@ public abstract class ServletFilterMappingResolverFactory { return mappingsList; } - public final MappingResolver create() { + @Override + public final MappingResolver get() { Collection mappings = getMappings(); if (mappings == null) { return null; diff --git a/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletMappingResolverFactory.java b/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletMappingResolverFactory.java index ea051b876f..a94e2d41ce 100644 --- a/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletMappingResolverFactory.java +++ b/instrumentation/servlet/servlet-common/library/src/main/java/io/opentelemetry/instrumentation/servlet/naming/ServletMappingResolverFactory.java @@ -7,12 +7,14 @@ package io.opentelemetry.instrumentation.servlet.naming; import io.opentelemetry.instrumentation.api.servlet.MappingResolver; import java.util.Collection; +import java.util.function.Supplier; -public abstract class ServletMappingResolverFactory { +public abstract class ServletMappingResolverFactory implements Supplier { protected abstract Collection getMappings(); - public final MappingResolver create() { + @Override + public final MappingResolver get() { Collection mappings = getMappings(); if (mappings == null) { return null; diff --git a/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ContextStore.java b/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ContextStore.java index 3bca708192..0da4df7f28 100644 --- a/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ContextStore.java +++ b/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/ContextStore.java @@ -7,6 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.api; import io.opentelemetry.instrumentation.api.caching.Cache; import java.util.function.Function; +import java.util.function.Supplier; /** * Interface to represent context storage for instrumentations. @@ -19,18 +20,6 @@ import java.util.function.Function; */ public interface ContextStore { - /** - * Factory interface to create context instances. - * - * @param context type - */ - @FunctionalInterface - interface Factory { - - /** Returns a new context instance. */ - C create(); - } - /** * Get context given the key. * @@ -64,7 +53,7 @@ public interface ContextStore { * @param contextFactory factory instance to produce new context object * @return old instance if it was present, or new instance */ - C putIfAbsent(K key, Factory contextFactory); + C putIfAbsent(K key, Supplier contextFactory); /** * Adapt this context store instance to {@link Cache} interface. diff --git a/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/PropagatedContext.java b/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/PropagatedContext.java index b97e9eb5ee..b041299171 100644 --- a/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/PropagatedContext.java +++ b/javaagent-instrumentation-api/src/main/java/io/opentelemetry/javaagent/instrumentation/api/concurrent/PropagatedContext.java @@ -6,8 +6,8 @@ package io.opentelemetry.javaagent.instrumentation.api.concurrent; import io.opentelemetry.context.Context; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; +import java.util.function.Supplier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,7 +19,7 @@ public final class PropagatedContext { private static final AtomicReferenceFieldUpdater contextUpdater = AtomicReferenceFieldUpdater.newUpdater(PropagatedContext.class, Context.class, "context"); - static final ContextStore.Factory FACTORY = PropagatedContext::new; + static final Supplier FACTORY = PropagatedContext::new; // Used by AtomicReferenceFieldUpdater @SuppressWarnings("UnusedVariable") diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java index c1f7da4834..b43797d58b 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/context/FieldBackedProvider.java @@ -33,6 +33,7 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; +import java.util.function.Supplier; import net.bytebuddy.ByteBuddy; import net.bytebuddy.ClassFileVersion; import net.bytebuddy.agent.builder.AgentBuilder; @@ -898,7 +899,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { } @Override - public Object putIfAbsent(Object key, Factory contextFactory) { + public Object putIfAbsent(Object key, Supplier contextFactory) { Object existingContext = realGet(key); if (null != existingContext) { return existingContext; @@ -908,7 +909,7 @@ public class FieldBackedProvider implements InstrumentationContextProvider { if (null != existingContext) { return existingContext; } - Object context = contextFactory.create(); + Object context = contextFactory.get(); realPut(key, context); return context; } diff --git a/testing-common/integration-tests/src/main/java/context/Context.java b/testing-common/integration-tests/src/main/java/context/Context.java index 23d190df6f..d292afc56b 100644 --- a/testing-common/integration-tests/src/main/java/context/Context.java +++ b/testing-common/integration-tests/src/main/java/context/Context.java @@ -5,10 +5,10 @@ package context; -import io.opentelemetry.javaagent.instrumentation.api.ContextStore; +import java.util.function.Supplier; public class Context { - public static final ContextStore.Factory FACTORY = Context::new; + public static final Supplier FACTORY = Context::new; public int count = 0; }