Skip to content

WIP:Add OSGi support to OpenTelemetry project #4627

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 10 commits into from
2 changes: 2 additions & 0 deletions api/all/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ dependencies {

annotationProcessor("com.google.auto.value:auto-value")

compileOnly("org.osgi:osgi.annotation")

testImplementation("edu.berkeley.cs.jqf:jqf-fuzz")
testImplementation("com.google.guava:guava-testlib")
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
// TODO: Add code examples.
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.baggage;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Default OpenTelemetry remote baggage propagators. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.baggage.propagation;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
* io.opentelemetry.api.common.Attributes} and classes/utilities for interacting with them.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.common;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
* API, and must not be used by users of the OpenTelemetry library.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.internal;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
* scenarios where instrumentation authors are unable to obtain one by other means.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.metrics;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
* methods on {@link io.opentelemetry.api.OpenTelemetry}.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
*/
// TODO: Add code examples.
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.trace;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
* API, and must not be used by users of the OpenTelemetry library.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.trace.propagation.internal;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Default OpenTelemetry remote trace propagators. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.api.trace.propagation;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
1 change: 1 addition & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ repositories {

dependencies {
// When updating, update above in plugins too
implementation("biz.aQute.bnd:biz.aQute.bnd.gradle:6.3.1")
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.4.2")
Comment on lines 15 to 17
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment applies to the spotless plugin. Should change the order to restore it.

Suggested change
// When updating, update above in plugins too
implementation("biz.aQute.bnd:biz.aQute.bnd.gradle:6.3.1")
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.4.2")
// When updating, update above in plugins too
implementation("com.diffplug.spotless:spotless-plugin-gradle:6.4.2")
implementation("biz.aQute.bnd:biz.aQute.bnd.gradle:6.3.1")

// Needed for japicmp but not automatically brought in for some reason.
implementation("com.google.guava:guava:31.1-jre")
Expand Down
13 changes: 10 additions & 3 deletions buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ plugins {
eclipse
idea

id("biz.aQute.bnd.builder")
id("otel.errorprone-conventions")
id("otel.jacoco-conventions")
id("otel.spotless-conventions")
Expand Down Expand Up @@ -113,11 +114,8 @@ tasks {
}

withType<Jar>().configureEach {
inputs.property("moduleName", otelJava.moduleName)

manifest {
attributes(
"Automatic-Module-Name" to otelJava.moduleName,
"Built-By" to System.getProperty("user.name"),
"Built-JDK" to System.getProperty("java.version"),
"Implementation-Title" to project.name,
Expand All @@ -126,6 +124,15 @@ tasks {
}
}

named("jar", Jar::class.java) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a comment indicating that this adds required OSGi metadata to the jar manifest?

inputs.property("moduleName", otelJava.moduleName)

bundle {
bnd("-fixupmessages \"Classes found in the wrong directory\"; restrict:=error; is:=ignore")
bnd(otelJava.moduleName.map { moduleName -> "Automatic-Module-Name: $moduleName" })
}
}

afterEvaluate {
withType<Javadoc>().configureEach {
with(options as StandardJavadocDocletOptions) {
Expand Down
1 change: 1 addition & 0 deletions context/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ description = "OpenTelemetry Context (Incubator)"
otelJava.moduleName.set("io.opentelemetry.context")

dependencies {
compileOnly("org.osgi:osgi.annotation")
// MustBeClosed
compileOnly("com.google.errorprone:error_prone_annotations")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,7 @@
* <p>All the content under this package and its subpackages are considered not part of the public
* API, and must not be used by users of the OpenTelemetry library.
*/
@Export
package io.opentelemetry.context.internal.shaded;

import org.osgi.annotation.bundle.Export;
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
* @see io.opentelemetry.context.Context
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.context;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
* remote server.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.context.propagation;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
1 change: 1 addition & 0 deletions dependencyManagement/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ val DEPENDENCIES = listOf(
"org.codehaus.mojo:animal-sniffer-annotations:1.21",
"org.jctools:jctools-core:3.3.0",
"org.junit-pioneer:junit-pioneer:1.7.1",
"org.osgi:osgi.annotation:8.1.0",
"org.skyscreamer:jsonassert:1.5.0",
)

Expand Down
2 changes: 2 additions & 0 deletions exporters/jaeger-thrift/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ otelJava.moduleName.set("io.opentelemetry.exporter.jaeger.thrift")
dependencies {
api(project(":sdk:all"))

compileOnly("org.osgi:osgi.annotation")

implementation(project(":sdk:all"))
implementation(project(":semconv"))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/

@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.jaeger.thrift;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
1 change: 1 addition & 0 deletions exporters/jaeger/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ dependencies {
implementation(project(":exporters:otlp:common"))
implementation(project(":semconv"))

compileOnly("org.osgi:osgi.annotation")
compileOnly("io.grpc:grpc-stub")

implementation("com.fasterxml.jackson.jr:jackson-jr-objects")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/

@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.jaeger;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
2 changes: 2 additions & 0 deletions exporters/logging-otlp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ description = "OpenTelemetry Protocol JSON Logging Exporters"
otelJava.moduleName.set("io.opentelemetry.exporter.logging.otlp")

dependencies {
compileOnly("org.osgi:osgi.annotation")

compileOnly(project(":sdk:trace"))
compileOnly(project(":sdk:metrics"))
compileOnly(project(":sdk:logs"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** OpenTelemetry exporters which writes spans or metrics to log using OTLP JSON format. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.logging.otlp;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
2 changes: 2 additions & 0 deletions exporters/logging/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,7 @@ dependencies {
api(project(":sdk:metrics"))
api(project(":sdk:logs"))

compileOnly("org.osgi:osgi.annotation")

testImplementation(project(":sdk:testing"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/

@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.logging;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
1 change: 1 addition & 0 deletions exporters/otlp/all/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ dependencies {

implementation(project(":exporters:otlp:common"))

compileOnly("org.osgi:osgi.annotation")
compileOnly("io.grpc:grpc-stub")

testImplementation(project(":exporters:otlp:testing-internal"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** OpenTelemetry exporter which sends metric data to OpenTelemetry collector via OTLP HTTP. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.otlp.http.metrics;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** OpenTelemetry exporter which sends span data to OpenTelemetry collector via OTLP HTTP. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.otlp.http.trace;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** OpenTelemetry exporter which sends metric data to OpenTelemetry collector via OTLP gRPC. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.otlp.metrics;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** OpenTelemetry exporter which sends span data to OpenTelemetry collector via OTLP gRPC. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.otlp.trace;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
1 change: 1 addition & 0 deletions exporters/otlp/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ dependencies {

api(project(":api:all"))

compileOnly("org.osgi:osgi.annotation")
compileOnly(project(":sdk:metrics"))
compileOnly(project(":sdk:trace"))
compileOnly(project(":sdk:logs"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Utilities for gRPC exporters. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.grpc;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Marshaling framework for serializing data to protobuf format. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.marshal;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Utilities for HTTP exporters. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.okhttp;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Marshaling of OTLP logs. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.otlp.logs;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Marshaling of OTLP metrics. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.otlp.metrics;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
* at any time.
*/
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.otlp;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Marshaling of OTLP traces. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.otlp.traces;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Internal utilities for exporters. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** Logic for retrying of export requests. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.internal.retry;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
1 change: 1 addition & 0 deletions exporters/otlp/logs/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ dependencies {

implementation(project(":exporters:otlp:common"))

compileOnly("org.osgi:osgi.annotation")
compileOnly("io.grpc:grpc-stub")

testImplementation(project(":exporters:otlp:testing-internal"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

/** OpenTelemetry exporter which sends log data to OpenTelemetry collector via OTLP HTTP. */
@ParametersAreNonnullByDefault
@Export
package io.opentelemetry.exporter.otlp.http.logs;

import org.osgi.annotation.bundle.Export;
import javax.annotation.ParametersAreNonnullByDefault;
Loading