Skip to content

Commit 1d81b12

Browse files
authored
Merge pull request #526 from weaviate/feat/header-client-version
Add X-Weaviate-Client header and enhance BuildInfo
2 parents e7f4f2d + a809299 commit 1d81b12

4 files changed

Lines changed: 48 additions & 6 deletions

File tree

src/main/java/io/weaviate/client6/v1/api/Config.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import javax.net.ssl.TrustManagerFactory;
99

10+
import io.weaviate.client6.v1.internal.BuildInfo;
1011
import io.weaviate.client6.v1.internal.ObjectBuilder;
1112
import io.weaviate.client6.v1.internal.Timeout;
1213
import io.weaviate.client6.v1.internal.TokenProvider;
@@ -178,6 +179,7 @@ public SelfT timeout(int initSeconds, int querySeconds, int insertSeconds) {
178179
* Service if an appropriate vectorizer is configured for collection.
179180
*/
180181
private static final String HEADER_X_WEAVIATE_CLUSTER_URL = "X-Weaviate-Cluster-URL";
182+
private static final String HEADER_X_WEAVIATE_CLIENT = "X-Weaviate-Client";
181183

182184
/**
183185
* isWeaviateDomain returns true if the host matches weaviate.io,
@@ -190,13 +192,18 @@ private static boolean isWeaviateDomain(String host) {
190192
lower.contains("weaviate.cloud");
191193
}
192194

195+
private static final String VERSION = "weaviate-client-java/"
196+
+ ((!BuildInfo.TAGS.isBlank() && BuildInfo.TAGS != "unknown") ? BuildInfo.TAGS
197+
: (BuildInfo.BRANCH + "-" + BuildInfo.COMMIT_ID_ABBREV));
198+
193199
@Override
194200
public Config build() {
195201
// For clusters hosted on Weaviate Cloud, Weaviate Embedding Service
196202
// will be available under the same domain.
197203
if (isWeaviateDomain(httpHost) && authentication != null) {
198204
setHeader(HEADER_X_WEAVIATE_CLUSTER_URL, "https://" + httpHost + ":" + httpPort);
199205
}
206+
setHeader(HEADER_X_WEAVIATE_CLIENT, VERSION);
200207
return new Config(this);
201208
}
202209
}

src/main/java/io/weaviate/client6/v1/internal/BuildInfo.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,22 @@ private BuildInfo() {
1111
public static final String BRANCH;
1212
public static final String COMMIT_ID;
1313
public static final String COMMIT_ID_ABBREV;
14+
public static final String TAGS;
1415

1516
static {
1617
var properties = new Properties();
1718

18-
try {
19-
properties.load(BuildInfo.class.getClassLoader().getResourceAsStream("client6-git.properties"));
20-
} catch (IOException | NullPointerException e) {
19+
try (var is = BuildInfo.class.getClassLoader().getResourceAsStream("client6-git.properties")) {
20+
if (is != null) {
21+
properties.load(is);
22+
}
23+
} catch (IOException e) {
2124
System.out.println("failed to load client6-git.properties, no build information will be available");
2225
}
2326

24-
BRANCH = String.valueOf(properties.get("git.branch"));
25-
COMMIT_ID = String.valueOf(properties.get("git.commit.id.full"));
26-
COMMIT_ID_ABBREV = String.valueOf(properties.get("git.commit.id.abbrev"));
27+
BRANCH = String.valueOf(properties.getOrDefault("git.branch", "unknown"));
28+
COMMIT_ID = String.valueOf(properties.getOrDefault("git.commit.id.full", "unknown"));
29+
COMMIT_ID_ABBREV = String.valueOf(properties.getOrDefault("git.commit.id.abbrev", "unknown"));
30+
TAGS = String.valueOf(properties.getOrDefault("git.tags", "unknown"));
2731
}
2832
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.weaviate.client6.v1.api;
2+
3+
import org.assertj.core.api.Assertions;
4+
import org.junit.Test;
5+
6+
public class ConfigTest {
7+
8+
private static final String HEADER_KEY = "X-Weaviate-Client";
9+
10+
@Test
11+
public void testHeaderPresence() {
12+
Config config = new Config.Local().build();
13+
Assertions.assertThat(config.headers()).containsKey(HEADER_KEY);
14+
Assertions.assertThat(config.headers().get(HEADER_KEY)).isNotEmpty();
15+
16+
config = new Config.WeaviateCloud("http://localhost/", Authentication.apiKey("test_key")).build();
17+
Assertions.assertThat(config.headers()).containsKey(HEADER_KEY);
18+
Assertions.assertThat(config.headers().get(HEADER_KEY)).isNotEmpty();
19+
20+
config = new Config.Custom().httpHost("localhost").build();
21+
Assertions.assertThat(config.headers()).containsKey(HEADER_KEY);
22+
Assertions.assertThat(config.headers().get(HEADER_KEY)).isNotEmpty();
23+
}
24+
}

src/test/java/io/weaviate/client6/v1/internal/BuildInfoTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
public class BuildInfoTest {
1212
private static final String BRANCH = gitBranch();
1313
private static final String COMMIT_ID = gitCommit();
14+
private static final String TAGS = gitTags();
1415

1516
@Test
1617
public void testBuildInfo() throws IOException {
@@ -21,6 +22,7 @@ public void testBuildInfo() throws IOException {
2122
Assertions.assertThat(BuildInfo.BRANCH).as("branch").isEqualTo(BRANCH);
2223
Assertions.assertThat(BuildInfo.COMMIT_ID).as("commit.full").isEqualTo(COMMIT_ID);
2324
Assertions.assertThat(COMMIT_ID).as("commit.abbrev").startsWith(BuildInfo.COMMIT_ID_ABBREV);
25+
Assertions.assertThat(BuildInfo.TAGS).as("tags").isEqualTo(TAGS);
2426
}
2527

2628
/** Get current non-abbreviated Git commit hash. */
@@ -33,6 +35,11 @@ private static String gitBranch() {
3335
return runCommand("/usr/bin/git", "branch", "--show-current");
3436
}
3537

38+
/** Get current git tags. */
39+
private static String gitTags() {
40+
return runCommand("/usr/bin/git", "tag", "--points-at", "HEAD");
41+
}
42+
3643
/** Run shell command and return the output as multi-line string. */
3744
private static String runCommand(String... cmdarray) {
3845
try {

0 commit comments

Comments
 (0)