Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .fossa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -928,6 +928,9 @@ targets:
- type: gradle
path: ./
target: ':instrumentation:servlet:servlet-3.0:javaagent'
- type: gradle
path: ./
target: ':instrumentation:servlet:servlet-3.0:library'
- type: gradle
path: ./
target: ':instrumentation:servlet:servlet-5.0:javaagent'
Expand All @@ -939,7 +942,10 @@ targets:
target: ':instrumentation:servlet:servlet-common:javaagent'
- type: gradle
path: ./
target: ':instrumentation:servlet:servlet-javax-common:javaagent'
target: ':instrumentation:servlet:servlet-common:library'
- type: gradle
path: ./
target: ':instrumentation:servlet:servlet-javax-common:library'
- type: gradle
path: ./
target: ':instrumentation:spring:spring-batch-3.0:javaagent'
Expand Down
3 changes: 3 additions & 0 deletions .github/scripts/check-package-names.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ for dir in $(find instrumentation -name "*.java" | grep library/src/main/java |
if [[ "$module_name" == "oshi" ]]; then
continue
fi
if [[ "$module_name" == "servlet-common" ]]; then
continue
fi

# these are possibly problematic
if [[ "$dir" == "instrumentation/grpc-1.6/library/src/main/java/io/grpc/override" ]]; then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ tasks {
// Allow underscore in test-type method names
disable("MemberName")
}
if ((project.path.endsWith(":testing") || name.contains("Test")) && !project.name.equals("custom-checks")) {
if ((project.path.endsWith("testing") || name.contains("Test")) && !project.name.equals("custom-checks")) {
// This check causes too many failures, ignore the ones in tests
disable("OtelCanIgnoreReturnValueSuggester")
disable("OtelInternalJavadoc")
Expand Down
2 changes: 1 addition & 1 deletion docs/supported-libraries.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ These are the supported libraries and frameworks:
| [RMI](https://docs.oracle.com/en/java/javase/11/docs/api/java.rmi/java/rmi/package-summary.html) | Java 8+ | | [RPC Client Spans], [RPC Server Spans] |
| [RxJava](https://github.com/ReactiveX/RxJava) | 1.0+ | [opentelemetry-rxjava-1.0](../instrumentation/rxjava/rxjava-1.0/library),<br>[opentelemetry-rxjava-2.0](../instrumentation/rxjava/rxjava-2.0/library),<br>[opentelemetry-rxjava-3.0](../instrumentation/rxjava/rxjava-3.0/library),<br>[opentelemetry-rxjava-3.1.1](../instrumentation/rxjava/rxjava-3.1.1/library) | Context propagation |
| [Scala ForkJoinPool](https://www.scala-lang.org/api/2.12.0/scala/concurrent/forkjoin/package$$ForkJoinPool$.html) | 2.8+ | N/A | Context propagation |
| [Servlet](https://javaee.github.io/javaee-spec/javadocs/javax/servlet/package-summary.html) | 2.2+ | N/A | [HTTP Server Spans], [HTTP Server Metrics] |
| [Servlet](https://javaee.github.io/javaee-spec/javadocs/javax/servlet/package-summary.html) | 2.2+ | [opentelemetry-servlet-3.0](../instrumentation/servlet/servlet-3.0/library) | [HTTP Server Spans], [HTTP Server Metrics] |
| [Spark Web Framework](https://github.com/perwendel/spark) | 2.3+ | N/A | Provides `http.route` [2] |
| [Spring Batch](https://spring.io/projects/spring-batch) | 3.0+ (not including 5.0+ yet) | N/A | none |
| [Spring Boot](https://spring.io/projects/spring-boot) | | [opentelemetry-spring-boot-resources](https://opentelemetry.io/docs/zero-code/java/spring-boot/) | none |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@
package io.opentelemetry.instrumentation.api.internal;

import com.google.errorprone.annotations.CanIgnoreReturnValue;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.api.trace.SpanKind;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapGetter;
import io.opentelemetry.context.propagation.TextMapSetter;
import io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.api.instrumenter.InstrumenterBuilder;
import io.opentelemetry.instrumentation.api.instrumenter.SpanKindExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.SpanNameExtractor;
import io.opentelemetry.instrumentation.api.instrumenter.SpanStatusExtractor;
import java.time.Instant;
import java.util.function.Function;
import java.util.function.UnaryOperator;
import javax.annotation.Nullable;

/**
Expand Down Expand Up @@ -85,5 +91,72 @@ InstrumenterBuilder<REQUEST, RESPONSE> propagateOperationListenersToOnEnd(
return builder;
}

public static <REQUESTFROM, RESPONSEFROM, REQUESTTO, RESPONSETO>
UnaryOperator<SpanStatusExtractor<REQUESTTO, RESPONSETO>> convertSpanStatusExtractor(
UnaryOperator<SpanStatusExtractor<REQUESTFROM, RESPONSEFROM>> extractor,
Function<REQUESTFROM, REQUESTTO> requestConverter,
Function<RESPONSEFROM, RESPONSETO> responseConverter,
Function<REQUESTTO, REQUESTFROM> requestReverseConverter,
Function<RESPONSETO, RESPONSEFROM> responseReverseConverter) {
return inputExtractor -> {
SpanStatusExtractor<REQUESTFROM, RESPONSEFROM> outputExtractor =
extractor.apply(
(spanStatusBuilder, requestFrom, responseFrom, error) ->
inputExtractor.extract(
spanStatusBuilder,
requestConverter.apply(requestFrom),
responseFrom == null ? null : responseConverter.apply(responseFrom),
error));
return (spanStatusBuilder, requestTo, responseTo, error) ->
outputExtractor.extract(
spanStatusBuilder,
requestReverseConverter.apply(requestTo),
responseTo == null ? null : responseReverseConverter.apply(responseTo),
error);
};
}

public static <REQUESTFROM, REQUESTTO>
UnaryOperator<SpanNameExtractor<REQUESTTO>> convertSpanNameExtractor(
UnaryOperator<SpanNameExtractor<REQUESTFROM>> extractor,
Function<REQUESTFROM, REQUESTTO> requestConverter,
Function<REQUESTTO, REQUESTFROM> requestReverseConverter) {
return inputExtractor -> {
SpanNameExtractor<REQUESTFROM> outputExtractor =
extractor.apply(
requestFrom -> inputExtractor.extract(requestConverter.apply(requestFrom)));
return requestTo -> outputExtractor.extract(requestReverseConverter.apply(requestTo));
};
}

public static <REQUESTFROM, RESPONSEFROM, REQUESTTO, RESPONSETO>
AttributesExtractor<REQUESTTO, RESPONSETO> convertAttributesExtractor(
AttributesExtractor<REQUESTFROM, RESPONSEFROM> extractor,
Function<REQUESTTO, REQUESTFROM> requestConverter,
Function<RESPONSETO, RESPONSEFROM> responseConverter) {
return new AttributesExtractor<REQUESTTO, RESPONSETO>() {
@Override
public void onStart(
AttributesBuilder attributes, Context parentContext, REQUESTTO requestTo) {
extractor.onStart(attributes, parentContext, requestConverter.apply(requestTo));
}

@Override
public void onEnd(
AttributesBuilder attributes,
Context context,
REQUESTTO requestTo,
@Nullable RESPONSETO responseTo,
@Nullable Throwable error) {
extractor.onEnd(
attributes,
context,
requestConverter.apply(requestTo),
responseConverter.apply(responseTo),
error);
}
};
}

private InstrumenterUtil() {}
}
1 change: 0 additions & 1 deletion instrumentation/grails-3.0/javaagent/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ dependencies {
library("org.grails:grails-plugin-url-mappings:$grailsVersion")

testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
testInstrumentation(project(":instrumentation:tomcat:tomcat-7.0:javaagent"))
testInstrumentation(project(":instrumentation:spring:spring-webmvc:spring-webmvc-3.1:javaagent"))

Expand Down
1 change: 0 additions & 1 deletion instrumentation/gwt-2.0/javaagent/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ dependencies {
}

testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
testInstrumentation(project(":instrumentation:jetty:jetty-8.0:javaagent"))

testImplementation("org.testcontainers:testcontainers-selenium")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ dependencies {

testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.0:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-resteasy-3.1:javaagent"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ dependencies {
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent"))

testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
testInstrumentation(project(":instrumentation:undertow-1.4:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ dependencies {
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-annotations:javaagent"))

testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
testInstrumentation(project(":instrumentation:undertow-1.4:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-cxf-3.2:javaagent"))
testInstrumentation(project(":instrumentation:jaxrs:jaxrs-2.0:jaxrs-2.0-jersey-2.0:javaagent"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@

import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.servlet.internal.ServletRequestContext;
import io.opentelemetry.javaagent.bootstrap.http.HttpServerResponseCustomizerHolder;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import javax.annotation.Nullable;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
package io.opentelemetry.javaagent.instrumentation.jetty.v11_0;

import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.servlet.internal.ServletRequestContext;
import io.opentelemetry.instrumentation.servlet.internal.ServletResponseContext;
import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
import io.opentelemetry.javaagent.instrumentation.jetty.common.JettyHelper;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletInstrumenterBuilder;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletResponseContext;
import io.opentelemetry.javaagent.instrumentation.servlet.AgentServletInstrumenterBuilder;
import io.opentelemetry.javaagent.instrumentation.servlet.v5_0.Servlet5Accessor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
Expand All @@ -21,7 +21,7 @@ public final class Jetty11Singletons {
private static final Instrumenter<
ServletRequestContext<HttpServletRequest>, ServletResponseContext<HttpServletResponse>>
INSTRUMENTER =
ServletInstrumenterBuilder.<HttpServletRequest, HttpServletResponse>create()
AgentServletInstrumenterBuilder.<HttpServletRequest, HttpServletResponse>create()
.addContextCustomizer(
(context, request, attributes) -> new AppServerBridge.Builder().init(context))
.propagateOperationListenersToOnEnd()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ dependencies {
implementation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))

testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
testInstrumentation(project(":instrumentation:jetty:jetty-11.0:javaagent"))
testInstrumentation(project(":instrumentation:jetty:jetty-12.0:javaagent"))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@

import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.servlet.internal.ServletRequestContext;
import io.opentelemetry.javaagent.bootstrap.http.HttpServerResponseCustomizerHolder;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
import javax.annotation.Nullable;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@

import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.instrumentation.api.util.VirtualField;
import io.opentelemetry.instrumentation.servlet.internal.ServletRequestContext;
import io.opentelemetry.instrumentation.servlet.internal.ServletResponseContext;
import io.opentelemetry.instrumentation.servlet.v3_0.internal.Servlet3Accessor;
import io.opentelemetry.javaagent.bootstrap.executors.PropagatedContext;
import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
import io.opentelemetry.javaagent.instrumentation.jetty.common.JettyHelper;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletInstrumenterBuilder;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletResponseContext;
import io.opentelemetry.javaagent.instrumentation.servlet.v3_0.Servlet3Accessor;
import io.opentelemetry.javaagent.instrumentation.servlet.AgentServletInstrumenterBuilder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

Expand All @@ -26,7 +26,7 @@ public final class Jetty8Singletons {
private static final Instrumenter<
ServletRequestContext<HttpServletRequest>, ServletResponseContext<HttpServletResponse>>
INSTRUMENTER =
ServletInstrumenterBuilder.<HttpServletRequest, HttpServletResponse>create()
AgentServletInstrumenterBuilder.<HttpServletRequest, HttpServletResponse>create()
.addContextCustomizer(
(context, request, attributes) -> new AppServerBridge.Builder().init(context))
.propagateOperationListenersToOnEnd()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope;
import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletAccessor;
import io.opentelemetry.instrumentation.servlet.internal.ServletAccessor;
import io.opentelemetry.instrumentation.servlet.internal.ServletRequestContext;
import io.opentelemetry.instrumentation.servlet.internal.ServletResponseContext;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletHelper;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletRequestContext;
import io.opentelemetry.javaagent.instrumentation.servlet.ServletResponseContext;

public class JettyHelper<REQUEST, RESPONSE> extends ServletHelper<REQUEST, RESPONSE> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ dependencies {

testImplementation(project(":instrumentation:jsf:jsf-javax-common:testing"))
testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
}

val latestDepTest = findProperty("testLatestDeps") as Boolean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ dependencies {

testImplementation(project(":instrumentation:jsf:jsf-javax-common:testing"))
testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))
testInstrumentation(project(":instrumentation:servlet:servlet-javax-common:javaagent"))
}

val latestDepTest = findProperty("testLatestDeps") as Boolean
Expand Down
Loading
Loading