Skip to content

Commit 6d04991

Browse files
committed
additionHeaders
1 parent 5e59f09 commit 6d04991

File tree

4 files changed

+92
-59
lines changed

4 files changed

+92
-59
lines changed

astra-db-java/src/main/java/com/datastax/astra/client/DataAPIOptions.java

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
import java.net.http.HttpClient;
3434
import java.time.Duration;
35+
import java.util.HashMap;
3536
import java.util.Map;
3637
import java.util.TreeMap;
3738

@@ -42,6 +43,9 @@
4243
@Getter
4344
public class DataAPIOptions {
4445

46+
/** Feature Flag Tables. */
47+
public static final String HEADER_FEATURE_FLAG_TABLES = "Feature-Flag-tables";
48+
4549
/** path for json api. */
4650
public static final String DEFAULT_VERSION = "v1";
4751

@@ -75,6 +79,12 @@ public class DataAPIOptions {
7579
/** Embedding auth provider. */
7680
final EmbeddingHeadersProvider embeddingAuthProvider;
7781

82+
/** Add headers to db calls. */
83+
final Map<String, Object> databaseAdditionalHeaders;
84+
85+
/** Add headers to admin calls. */
86+
final Map<String, Object> adminAdditionalHeaders;
87+
7888
/** Observers for the commands. */
7989
final Map<String, CommandObserver> observers;
8090

@@ -103,6 +113,8 @@ private DataAPIOptions(DataAPIClientOptionsBuilder builder) {
103113
this.embeddingAuthProvider = builder.embeddingAuthProvider;
104114
this.httpClientOptions = builder.httpClientOptions;
105115
this.observers = builder.observers;
116+
this.databaseAdditionalHeaders = builder.databaseAdditionalHeaders;
117+
this.adminAdditionalHeaders = builder.adminAdditionalHeaders;
106118
}
107119

108120
/**
@@ -128,6 +140,12 @@ public static class DataAPIClientOptionsBuilder {
128140
/** The embedding service API key can be provided at top level. */
129141
private EmbeddingHeadersProvider embeddingAuthProvider;
130142

143+
/** Add headers to admin calls. */
144+
final Map<String, Object> databaseAdditionalHeaders = new HashMap<>();
145+
146+
/** Add headers to admin calls. */
147+
final Map<String, Object> adminAdditionalHeaders = new HashMap<>();
148+
131149
/** Observers for the commands. */
132150
private final Map<String, CommandObserver> observers = new TreeMap<>();
133151

@@ -295,6 +313,10 @@ public DataAPIClientOptionsBuilder withDestination(DataAPIDestination destinatio
295313
return this;
296314
}
297315

316+
// --------------------------------------------
317+
// ----------------- HEADERS -----------------
318+
// --------------------------------------------
319+
298320
/**
299321
* Builder pattern, update http connection Timeout
300322
*
@@ -346,10 +368,18 @@ public DataAPIClientOptionsBuilder addCaller(String name, String version) {
346368
* self reference
347369
*/
348370
public DataAPIClientOptionsBuilder addDatabaseAdditionalHeader(String key, Object value) {
349-
httpClientOptions.addDbHeader(key, value);
371+
databaseAdditionalHeaders.put(key, value);
350372
return this;
351373
}
352374

375+
public DataAPIClientOptionsBuilder enableFeatureFlagTables() {
376+
return addDatabaseAdditionalHeader(HEADER_FEATURE_FLAG_TABLES, "true");
377+
}
378+
379+
public DataAPIClientOptionsBuilder disableFeatureFlagTables() {
380+
return addDatabaseAdditionalHeader(HEADER_FEATURE_FLAG_TABLES, null);
381+
}
382+
353383
/**
354384
* Add a header to the admin calls.
355385
*
@@ -360,13 +390,8 @@ public DataAPIClientOptionsBuilder addDatabaseAdditionalHeader(String key, Objec
360390
* @return
361391
* self reference
362392
*/
363-
public DataAPIClientOptionsBuilder addAdminAdditionHeader(String key, Object value) {
364-
httpClientOptions.addAdminHeader(key, value);
365-
return this;
366-
}
367-
368-
public DataAPIClientOptionsBuilder enableFeatureFlagTables() {
369-
httpClientOptions.enableFeatureFlagTables();
393+
public DataAPIClientOptionsBuilder addAdminAdditionalHeader(String key, Object value) {
394+
adminAdditionalHeaders.put(key, value);
370395
return this;
371396
}
372397

astra-db-java/src/main/java/com/datastax/astra/client/model/command/CommandOptions.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,13 @@
2626
import com.datastax.astra.internal.command.CommandObserver;
2727
import lombok.Getter;
2828

29+
import java.util.HashMap;
2930
import java.util.LinkedHashMap;
3031
import java.util.Map;
3132
import java.util.Optional;
3233

34+
import static com.datastax.astra.client.DataAPIOptions.HEADER_FEATURE_FLAG_TABLES;
35+
3336
/**
3437
* Options that will be provided to all commands for this collection.
3538
*
@@ -59,6 +62,12 @@ public class CommandOptions<T extends CommandOptions<T>>{
5962
*/
6063
protected EmbeddingHeadersProvider embeddingAuthProvider;
6164

65+
/** Add headers to db calls. */
66+
protected Map<String, Object> databaseAdditionalHeaders = new HashMap<>();
67+
68+
/** Add headers to admin calls. */
69+
protected Map<String, Object> adminAdditionalHeaders = new HashMap<>();
70+
6271
/**
6372
* Provide the token.
6473
*
@@ -200,6 +209,46 @@ public Optional<HttpClientOptions> getHttpClientOptions() {
200209
return Optional.ofNullable(httpClientOptions);
201210
}
202211

212+
/**
213+
* Add a header to the db calls.
214+
*
215+
* @param key
216+
* key
217+
* @param value
218+
* value
219+
* @return
220+
* self reference
221+
*/
222+
@SuppressWarnings("unchecked")
223+
public T addDatabaseAdditionalHeader(String key, Object value) {
224+
databaseAdditionalHeaders.put(key, value);
225+
return (T) this;
226+
}
227+
228+
public T enableFeatureFlagTables() {
229+
return addDatabaseAdditionalHeader(HEADER_FEATURE_FLAG_TABLES, "true");
230+
}
231+
232+
public T disableFeatureFlagTables() {
233+
return addDatabaseAdditionalHeader(HEADER_FEATURE_FLAG_TABLES, null);
234+
}
235+
236+
/**
237+
* Add a header to the admin calls.
238+
*
239+
* @param key
240+
* key
241+
* @param value
242+
* value
243+
* @return
244+
* self reference
245+
*/
246+
@SuppressWarnings("unchecked")
247+
public T addAdminAdditionalHeader(String key, Object value) {
248+
adminAdditionalHeaders.put(key, value);
249+
return (T) this;
250+
}
251+
203252
/**
204253
* Default Constructor.
205254
*/

astra-db-java/src/main/java/com/datastax/astra/client/model/http/HttpClientOptions.java

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,11 @@ public class HttpClientOptions {
4141
// ----------------- HEADERS -----------------
4242
// --------------------------------------------
4343

44-
/** Feature Flag Tables. */
45-
public static final String HEADER_FEATURE_FLAG_TABLES = "Feature-Flag-tables";
46-
4744
/** Default caller name. */
4845
public static final Caller DEFAULT_CALLER = new Caller("astra-db-java",
4946
DataAPIOptions.class.getPackage().getImplementationVersion() != null ?
5047
DataAPIOptions.class.getPackage().getImplementationVersion() : "dev");
5148

52-
/** Add headers to db calls. */
53-
Map<String, Object> dbAdditionalHeaders = new HashMap<>();
54-
55-
/** Add headers to admin calls. */
56-
Map<String, Object> adminAdditionalHeaders = new HashMap<>();
57-
5849
/** Add headers to db calls. */
5950
List<Caller> callers = new ArrayList<>();
6051

@@ -70,44 +61,6 @@ public void addCaller(Caller caller) {
7061
callers.add(caller);
7162
}
7263

73-
/**
74-
* Add a header to the db calls.
75-
*
76-
* @param key
77-
* key
78-
* @param value
79-
* value
80-
* @return
81-
* self reference
82-
*/
83-
public HttpClientOptions addDbHeader(String key, Object value) {
84-
dbAdditionalHeaders.put(key, value);
85-
return this;
86-
}
87-
88-
/**
89-
* Add a header to the admin calls.
90-
*
91-
* @param key
92-
* key
93-
* @param value
94-
* value
95-
* @return
96-
* self reference
97-
*/
98-
public HttpClientOptions addAdminHeader(String key, Object value) {
99-
adminAdditionalHeaders.put(key, value);
100-
return this;
101-
}
102-
103-
/**
104-
* Enable Feature Flag Tables.
105-
*/
106-
public HttpClientOptions enableFeatureFlagTables() {
107-
dbAdditionalHeaders.put(HEADER_FEATURE_FLAG_TABLES, true);
108-
return this;
109-
}
110-
11164
// --------------------------------------------
11265
// ----------------- TIMEOUTS -----------------
11366
// --------------------------------------------

astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.datastax.astra.test.unit;
22

3+
import com.datastax.astra.client.DataAPIDestination;
34
import com.datastax.astra.client.DataAPIOptions;
45
import com.datastax.astra.client.model.CollectionIdTypes;
56
import com.datastax.astra.client.model.CollectionOptions;
67
import com.datastax.astra.client.model.DeleteOneOptions;
78
import com.datastax.astra.client.model.DeleteResult;
9+
import com.datastax.astra.client.model.http.HttpProxy;
810
import com.datastax.astra.client.model.query.Filter;
911
import com.datastax.astra.client.model.query.FilterOperator;
1012
import com.datastax.astra.client.model.FindOneAndDeleteOptions;
@@ -28,9 +30,11 @@
2830
import org.junit.jupiter.api.Test;
2931

3032
import java.net.http.HttpClient;
33+
import java.time.Duration;
3134
import java.util.List;
3235
import java.util.Map;
3336

37+
import static com.datastax.astra.client.DataAPIOptions.HEADER_FEATURE_FLAG_TABLES;
3438
import static org.assertj.core.api.Assertions.assertThat;
3539
import static org.assertj.core.api.Assertions.assertThatThrownBy;
3640

@@ -39,12 +43,14 @@ class DataApiOptionsTest {
3943
@Test
4044
void shouldPopulateOptions() {
4145
DataAPIOptions options = DataAPIOptions.builder()
42-
.withHttpProxy(new DataAPIOptions.HttpProxy("localhost", 8080))
46+
.withHttpProxy(new HttpProxy("localhost", 8080))
4347
.withApiVersion("v1")
4448
.withHttpRedirect(HttpClient.Redirect.NORMAL)
45-
.withHttpRetryCount(5)
46-
.withHttpRetryDelayMillis(1000)
47-
.withDestination(DataAPIOptions.DataAPIDestination.DSE)
49+
.withHttpRetries(5, Duration.ofMillis(1000))
50+
.withDestination(DataAPIDestination.DSE)
51+
.enableFeatureFlagTables()
52+
// equivalent to:
53+
.addDatabaseAdditionalHeader(HEADER_FEATURE_FLAG_TABLES, "true")
4854
.build();
4955
assertThat(options.getHttpClientOptions().getProxy().getHostname()).isEqualTo("localhost");
5056
}

0 commit comments

Comments
 (0)