Skip to content

Commit 4b5770c

Browse files
authored
Generate class exposing version for libraries (#240)
1 parent 37c0710 commit 4b5770c

File tree

3 files changed

+42
-25
lines changed

3 files changed

+42
-25
lines changed

buildSrc/src/main/kotlin/elastic-otel.library-packaging-conventions.gradle.kts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import java.util.stream.Collectors
2+
13
plugins {
24
`java-library`
35
id("elastic-otel.java-conventions")
@@ -15,4 +17,42 @@ tasks {
1517
}
1618
}
1719

20+
// Generates a Java class exposing the project version
21+
val generateVersionProviderSource by registering() {
22+
val packageName = "co.elastic.otel";
23+
val className = kebapToCamelCase(project.name)+"Version";
24+
25+
val outputDir = layout.buildDirectory.dir("generated/version-provider-source")
26+
outputs.dir(outputDir)
27+
doLast {
28+
val packageDir = outputDir.get().asFile.resolve(packageName.replace('.', '/'))
29+
packageDir.mkdirs()
30+
val source = """
31+
package $packageName;
32+
33+
/**
34+
* This class is generated.
35+
*/
36+
public class $className {
37+
public static final String VERSION = "${project.version}";
38+
}
39+
""".trimIndent()
40+
packageDir.resolve("$className.java").writeText(source)
41+
}
42+
}
43+
}
44+
45+
sourceSets {
46+
main {
47+
java {
48+
srcDir(tasks.getByName("generateVersionProviderSource"));
49+
}
50+
}
51+
}
52+
53+
fun kebapToCamelCase(name : String) : String {
54+
val words = name.split("-");
55+
return words.stream()
56+
.map { w -> Character.toUpperCase(w[0]) + w.substring(1) }
57+
.collect(Collectors.joining())
1858
}

inferred-spans/build.gradle.kts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,6 @@ tasks.javadoc {
3737
options.encoding = "UTF-8"
3838
}
3939

40-
tasks.processResources {
41-
doLast {
42-
val resourcesDir = sourceSets.main.get().output.resourcesDir
43-
val packageDir = resourcesDir!!.resolve("co/elastic/otel/profiler");
44-
packageDir.mkdirs();
45-
packageDir.resolve("inferred-spans-version.txt").writeText(project.version.toString())
46-
}
47-
}
48-
4940
tasks.withType<Test>().all {
5041
jvmArgs("-Djava.util.logging.config.file="+sourceSets.test.get().output.resourcesDir+"/logging.properties")
5142
}

inferred-spans/src/main/java/co/elastic/otel/profiler/InferredSpansProcessor.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package co.elastic.otel.profiler;
2020

21+
import co.elastic.otel.InferredSpansVersion;
2122
import co.elastic.otel.common.util.ExecutorUtils;
2223
import io.opentelemetry.api.GlobalOpenTelemetry;
2324
import io.opentelemetry.api.trace.Tracer;
@@ -27,11 +28,7 @@
2728
import io.opentelemetry.sdk.trace.ReadWriteSpan;
2829
import io.opentelemetry.sdk.trace.ReadableSpan;
2930
import io.opentelemetry.sdk.trace.SpanProcessor;
30-
import java.io.BufferedReader;
3131
import java.io.File;
32-
import java.io.IOException;
33-
import java.io.InputStream;
34-
import java.io.InputStreamReader;
3532
import java.util.concurrent.Executors;
3633
import java.util.concurrent.ThreadFactory;
3734
import java.util.logging.Level;
@@ -44,8 +41,6 @@ public class InferredSpansProcessor implements SpanProcessor {
4441

4542
public static final String TRACER_NAME = "elastic-inferred-spans";
4643

47-
private static final String TRACER_VERSION = readInferredSpansVersion();
48-
4944
// Visible for testing
5045
final SamplingProfiler profiler;
5146

@@ -72,7 +67,7 @@ public static InferredSpansProcessorBuilder builder() {
7267
* lazily.
7368
*/
7469
public synchronized void setTracerProvider(TracerProvider provider) {
75-
tracer = provider.get(TRACER_NAME, TRACER_VERSION);
70+
tracer = provider.get(TRACER_NAME, InferredSpansVersion.VERSION);
7671
}
7772

7873
@Override
@@ -122,13 +117,4 @@ private Tracer getTracer() {
122117
}
123118
return tracer;
124119
}
125-
126-
private static String readInferredSpansVersion() {
127-
try (InputStream is =
128-
InferredSpansProcessor.class.getResourceAsStream("inferred-spans-version.txt")) {
129-
return new BufferedReader(new InputStreamReader(is)).readLine();
130-
} catch (IOException e) {
131-
throw new IllegalStateException("Failed to read version", e);
132-
}
133-
}
134120
}

0 commit comments

Comments
 (0)