*/
@BetaPreview
public CollectionFindAndRerankCursor findAndRerank(CollectionFindAndRerankOptions options) {
@@ -1084,26 +1103,83 @@ public CollectionFindAndRerankCursor findAndRerank(CollectionFindAndRerankO
}
/**
- * Finds all documents in the collection.
+ * Finds and reranks documents in the collection that match the given filter using the specified options.
*
* @param filter
- * the query filter
+ * the query filter to apply to the collection
* @param options
- * options of find one
+ * the options used to customize the find and rerank operation
* @return
- * the find iterable interface
+ * a {@link CollectionFindAndRerankCursor} to iterate over the reranked documents
+ *
+ *
*/
@BetaPreview
public CollectionFindAndRerankCursor findAndRerank(Filter filter, CollectionFindAndRerankOptions options) {
return findAndRerank(filter, options, getDocumentClass());
}
+ /**
+ * Finds and reranks documents in the collection that match the given filter using the specified options,
+ * mapping the resulting documents to the specified target type.
+ *
+ * @param filter
+ * the query filter to apply to the collection
+ * @param options
+ * the options used to customize the find and rerank operation
+ * @param newRowType
+ * the target class type to map the results to
+ * @param
+ * the type of the result rows after mapping
+ * @return
+ * a {@link CollectionFindAndRerankCursor} to iterate over the reranked documents mapped to {@code R}
+ *
+ *
+ */
@BetaPreview
public CollectionFindAndRerankCursor findAndRerank(Filter filter, CollectionFindAndRerankOptions options, Class newRowType) {
return new CollectionFindAndRerankCursor<>(this, filter, options, newRowType);
}
+ /**
+ * Finds and reranks documents in the collection using the given filter and options,
+ * and returns a paginated result containing reranked items mapped to the specified result type.
+ *
+ * @param filter
+ * the query filter to apply to the collection
+ * @param options
+ * the options used to customize the find and rerank operation
+ * @param newRowType
+ * the target class type to map the results to
+ * @param
+ * the type of the result items after mapping
+ * @return
+ * a {@link Page} of {@link RerankResult} objects containing the paginated reranked results
+ *
+ *
+ */
@BetaPreview
public Page> findAndRerankPage(Filter filter, CollectionFindAndRerankOptions options, Class newRowType) {
Command findAndRerankCommand = Command
@@ -1181,6 +1257,8 @@ public Page> findAndRerankPage(Filter filter, CollectionFind
* This list, along with the maximum page size and the next page state, is used to construct the {@link Page} object returned by the method.
*
*
+ * @param type of the result rows after mapping
+ * @param newRowType The class type to which the documents should be mapped.
* @param filter The filter criteria used to select documents from the collection.
* @param options The {@link CollectionFindOptions} providing additional query parameters, such as sorting and pagination.
* @return A {@link Page} object containing the documents that match the query, along with pagination information.
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindAndRerankOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindAndRerankOptions.java
index 0344cdf3..2364cb2f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindAndRerankOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindAndRerankOptions.java
@@ -113,6 +113,12 @@ public CollectionFindAndRerankOptions sort(Sort... sorts) {
return this;
}
+ /**
+ * Return the sort clause as an arryr
+ *
+ * @return
+ * Sort clause
+ */
public Sort[] getSortArray() {
return this.sort;
}
@@ -189,9 +195,14 @@ public CollectionFindAndRerankOptions rerankOn(String rerankOn) {
return this;
}
-
- public CollectionFindAndRerankOptions rerankQuery(String $lexical) {
- this.rerankQuery = rerankOn;
+ /**
+ * Add a rerankQuery clause in the find block
+ *
+ * @param rerankQuery value for rerankQuery options
+ * @return current command
+ */
+ public CollectionFindAndRerankOptions rerankQuery(String rerankQuery) {
+ this.rerankQuery = rerankQuery;
return this;
}
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/CollectionDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/CollectionDefinition.java
index c4340cc8..219a1f48 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/CollectionDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/CollectionDefinition.java
@@ -346,6 +346,12 @@ public LexicalOptions getLexical() {
return lexical;
}
+ /**
+ * Builder pattern, disabled lexical
+ *
+ * @return
+ * self reference
+ */
public CollectionDefinition disableLexical() {
if (getLexical() == null) {
lexical(new LexicalOptions().enabled(false));
@@ -443,6 +449,11 @@ public CollectionDefinition rerank(String provider, String model) {
return this;
}
+ /**
+ * Builder pattern, disable reranking
+ *
+ * @return self reference
+ */
public CollectionDefinition disableRerank() {
if (getRerank() == null) {
rerank = new CollectionRerankOptions().enabled(false);
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
index d0d223b8..bc1fc927 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
@@ -42,6 +42,7 @@
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.client.core.vectorize.Vectorize;
import com.datastax.astra.client.exceptions.InvalidFieldExpressionException;
+import com.datastax.astra.client.exceptions.UnexpectedDataAPIResponseException;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
import com.datastax.astra.internal.utils.Assert;
@@ -444,10 +445,31 @@ public Optional getVectorize() {
* vector list
*/
@JsonIgnore
+ @SuppressWarnings("unchecked")
public Optional getVector() {
- return Optional
- .ofNullable((float[]) documentMap.get(DataAPIKeywords.VECTOR.getKeyword()))
- .map(DataAPIVector::new);
+ if (!documentMap.containsKey(DataAPIKeywords.VECTOR.getKeyword())) {
+ return Optional.empty();
+ }
+
+ Object o = documentMap.get(DataAPIKeywords.VECTOR.getKeyword());
+
+ // Get a vector from a list of doubles
+ if (o instanceof DataAPIVector) {
+ return Optional.of((DataAPIVector) o);
+ } else if (o instanceof ArrayList> list && !list.isEmpty() && list.get(0) instanceof Double) {
+ ArrayList a = (ArrayList) list;
+ float[] floatArray = new float[a.size()];
+ for (int i = 0; i < a.size(); i++) {
+ floatArray[i] = a.get(i).floatValue();
+ }
+ return Optional.of(new DataAPIVector(floatArray));
+ } else if (o instanceof float[] array) {
+ // Get a vector from a float array
+ return Optional.of(new DataAPIVector(array));
+ } else {
+ throw new UnexpectedDataAPIResponseException("Could not parse $vector of type " + o.getClass().getName() +
+ " to a DataAPIVector. Expected a list of Double, a float array or binary data");
+ }
}
/**
@@ -712,6 +734,21 @@ public List getList(@NonNull final String key, @NonNull final Class cl
return constructValuesList(key, clazz, null);
}
+ /**
+ * Gets the list value of the given key, casting the list elements to the given {@code Class}. This is useful to avoid having
+ * casts in client code, though the effect is the same.
+ *
+ * @param
+ * type of the key
+ * @param
+ * type of the value
+ * @param key the key
+ * @param keyClass the non-null class to cast the list value to
+ * @param valueClass the type of the value class
+ * @return the list value of the given key, or null if the instance does not contain this key.
+ * @throws ClassCastException if the elements in the list value of the given key is not of type T or the value is not a list
+ * @since 3.10
+ */
public Map getMap(@NonNull final String key, @NonNull final Class keyClass, @NonNull final Class valueClass) {
return constructValuesMap(key, keyClass, valueClass, null);
}
@@ -823,6 +860,9 @@ public String toJson() {
* Check if the given dot-delimited path exists as a key (final segment).
* e.g. containsKey("foo.bar") returns true if "bar" is present in the Map
* located at "foo".
+ *
+ * @param key for key
+ * @return if the key is present
*/
public boolean containsKey(String key) {
Assert.hasLength(key, "Field name should not be null");
@@ -838,6 +878,14 @@ public boolean containsKey(String key) {
return true;
}
+ /**
+ * Check if the given dot-delimited path exists as a key (final segment).
+ * e.g. containsKey("foo.bar") returns true if "bar" is present in the Map
+ * located at "foo".
+ *
+ * @param fieldPathSegment for key
+ * @return if the key is present
+ */
public Object get(final String[] fieldPathSegment) {
return get(EscapeUtils.escapeFieldNames(fieldPathSegment));
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/hybrid/HybridLimits.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/hybrid/HybridLimits.java
index 2a9f6bf9..da96b51d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/hybrid/HybridLimits.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/hybrid/HybridLimits.java
@@ -67,6 +67,8 @@ public HybridLimits(Map mapOfLimits) {
*
* @param limit
* lexical limit.
+ * @return
+ * self reference
*/
public HybridLimits lexical(Integer limit) {
if (mapOfLimits == null) {
@@ -81,6 +83,8 @@ public HybridLimits lexical(Integer limit) {
*
* @param limit
* vector limit.
+ * @return
+ * self reference
*/
public HybridLimits vector(Integer limit) {
if (mapOfLimits == null) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Analyzer.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Analyzer.java
index 3bd379cd..864829db 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Analyzer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Analyzer.java
@@ -81,6 +81,8 @@ public Analyzer(AnalyzerTypes strAnalyzer) {
*
* @param name
* the analyzer name
+ * @return
+ * current reference
*/
public Analyzer tokenizer(String name) {
return tokenizer(name, null);
@@ -93,6 +95,8 @@ public Analyzer tokenizer(String name) {
* the analyzer name
* @param args
* the arguments for the analyzer
+ * @return
+ * current reference
*/
public Analyzer tokenizer(String name, Map args) {
this.tokenizer = new LexicalFilter().name(name).args(args);;
@@ -104,6 +108,8 @@ public Analyzer tokenizer(String name, Map args) {
*
* @param name
* the name of the filter
+ * @return
+ * current reference
*/
public Analyzer addFilter(String name) {
return addFilter(name, null);
@@ -116,6 +122,8 @@ public Analyzer addFilter(String name) {
* the name of the filter
* @param args
* the arguments for the filter
+ * @return
+ * current reference
*/
public Analyzer addFilter(String name, Map args) {
if (filters == null) {
@@ -130,6 +138,8 @@ public Analyzer addFilter(String name, Map args) {
*
* @param name
* the name of the filter
+ * @return
+ * current reference
*/
public Analyzer addChartFilter(String name) {
return addChartFilter(name, null);
@@ -142,6 +152,8 @@ public Analyzer addChartFilter(String name) {
* the name of the filter
* @param args
* the arguments for the filter
+ * @return
+ * current reference
*/
public Analyzer addChartFilter(String name, Map args) {
if (charFilters == null) {
@@ -155,7 +167,6 @@ public Analyzer addChartFilter(String name, Map args) {
* Definition of filters and tokenizers
*/
@Getter
- @NoArgsConstructor
public static class LexicalFilter {
/** Name of the filter */
@@ -164,11 +175,19 @@ public static class LexicalFilter {
/** Arguments for the filter */
Map args;
+ /**
+ * Default constructor.
+ */
+ public LexicalFilter() {
+ }
+
/**
* Sets the name of the filter.
*
* @param name
* the name of the filter
+ * @return
+ * current reference
*/
public LexicalFilter name(String name) {
this.name = name;
@@ -180,6 +199,8 @@ public LexicalFilter name(String name) {
*
* @param args
* the arguments for the filter
+ * @return
+ * current reference
*/
public LexicalFilter args(Map args) {
this.args = args;
@@ -193,6 +214,8 @@ public LexicalFilter args(Map args) {
* the key of the argument
* @param value
* the value of the argument
+ * @return
+ * current reference
*/
public LexicalFilter addArg(String key, String value) {
if (args == null) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/AnalyzerTypes.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/AnalyzerTypes.java
index dcf9f71e..ba842ed2 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/AnalyzerTypes.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/AnalyzerTypes.java
@@ -22,6 +22,10 @@
import lombok.Getter;
+/**
+ * Enum representing different types of analyzers.
+ * Each enum constant corresponds to a specific analyzer type.
+ */
@Getter
public enum AnalyzerTypes {
@@ -31,20 +35,53 @@ public enum AnalyzerTypes {
*/
STANDARD("standard"),
+ /**
+ * Filters StandardTokenizer output that divides text
+ * into terms on word boundaries and then uses the LowerCaseFilter.
+ */
LETTER("letter"),
+ /**
+ * Filters StandardTokenizer output that divides text
+ * into terms on word boundaries and then uses the LowerCaseFilter.
+ */
LOWERCASE("lowercase"),
+ /**
+ * Filters StandardTokenizer output that divides text
+ * into terms on word boundaries and then uses the LowerCaseFilter.
+ */
WHITESPACE("whitespace"),
+ /**
+ * Filters StandardTokenizer output that divides text
+ * into terms on word boundaries and then uses the LowerCaseFilter.
+ */
N_GRAM("n-gram"),
+ /**
+ * Filters StandardTokenizer output that divides text
+ * into terms on word boundaries and then uses the LowerCaseFilter.
+ */
EDGE_N_GRAM("edge_n-gram"),
+ /**
+ * Filters StandardTokenizer output that divides text
+ * into terms on word boundaries and then uses the LowerCaseFilter.
+ */
KEYWORD("keyword");
+ /**
+ * The string value of the analyzer type.
+ */
final String value;
+ /**
+ * Constructor for the enum.
+ *
+ * @param value
+ * string value
+ */
AnalyzerTypes(String value) {
this.value = value;
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Lexical.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Lexical.java
index 73c74aa1..ee3486d8 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Lexical.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/lexical/Lexical.java
@@ -26,12 +26,24 @@
import lombok.Data;
import lombok.NonNull;
+/**
+ * Lexical data.
+ */
@Data
@JsonSerialize(using = LexicalSerializer.class)
public class Lexical {
+ /**
+ * Lexical data.
+ */
private String text;
+ /**
+ * Default constructor.
+ *
+ * @param text
+ * lexical data
+ */
public Lexical(@NonNull String text) {
this.text = text;
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java
index ac826751..7090d28b 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java
@@ -165,6 +165,14 @@ public T embeddingAuthProvider(EmbeddingHeadersProvider embeddingAuthProvider) {
return (T) this;
}
+ /**
+ * Provide the reranking service API key.
+ *
+ * @param rerankingHeadersProvider
+ * authentication provider
+ * @return
+ * service key
+ */
public T rerankingAuthProvider(RerankingHeadersProvider rerankingHeadersProvider) {
Assert.notNull(rerankingHeadersProvider, "rerankHeadersProvider");
getDataAPIClientOptions().rerankingHeadersProvider(rerankingHeadersProvider);
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankProviderTypes.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankProviderTypes.java
index d105df81..6242f789 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankProviderTypes.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankProviderTypes.java
@@ -22,19 +22,33 @@
import lombok.Getter;
+/**
+ * Rerank provider types.
+ */
@Getter
public enum RerankProviderTypes {
/**
- * Filters StandardTokenizer output that divides text
- * into terms on word boundaries and then uses the LowerCaseFilter.
+ * Cohere reranker
*/
COHERE("cohere"),
+ /**
+ * bm25 reranker
+ */
BM25("bm25");
+ /**
+ * Rerank provider type.
+ */
final String value;
+ /**
+ * Constructor.
+ *
+ * @param value
+ * string value
+ */
RerankProviderTypes(String value) {
this.value = value;
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankResult.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankResult.java
index a241d064..4c180e86 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankResult.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankResult.java
@@ -24,13 +24,33 @@
import java.util.Map;
+/**
+ * Wrapper for the rerank result.
+ *
+ * @param
+ * document result type
+ */
@Getter
public class RerankResult {
+ /**
+ * Document result.
+ */
private final DOC document;
+ /**
+ * Score map.
+ */
private final Map scores;
+ /**
+ * Constructor.
+ *
+ * @param document
+ * document result
+ * @param scores
+ * score map
+ */
public RerankResult(DOC document, Map scores) {
this.document = document;
this.scores = scores;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankServiceOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankServiceOptions.java
index de8ae6a8..13c8c276 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankServiceOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/RerankServiceOptions.java
@@ -28,6 +28,9 @@
import java.util.HashMap;
import java.util.Map;
+/**
+ * Options for the Rerank service at collection/table creation.
+ */
@Data
@Getter @Setter
public class RerankServiceOptions {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/DataAPIVector.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/DataAPIVector.java
index 19d8717c..cf8dc536 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/DataAPIVector.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/DataAPIVector.java
@@ -24,6 +24,7 @@
import lombok.Getter;
import java.io.Serializable;
+import java.util.ArrayList;
/**
* DataAPIVector is a vector of embeddings.
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceDefinition.java
index 79bef504..ea992ed4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceDefinition.java
@@ -26,6 +26,9 @@
import java.util.HashMap;
import java.util.Map;
+/**
+ * Keyspace definition.
+ */
@Data
public class KeyspaceDefinition {
@@ -39,6 +42,12 @@ public class KeyspaceDefinition {
*/
private Map replication;
+ /**
+ * Default constructor
+ */
+ public KeyspaceDefinition() {
+ }
+
/**
* Name for the keyspace.
*
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceReplicationStrategy.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceReplicationStrategy.java
index 319d51c2..60cc27b9 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceReplicationStrategy.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceReplicationStrategy.java
@@ -22,6 +22,9 @@
import lombok.Getter;
+/**
+ * Available Keyspace replication strategy.
+ */
@Getter
public enum KeyspaceReplicationStrategy {
@@ -38,7 +41,6 @@ public enum KeyspaceReplicationStrategy {
/**
* Enum value
*/
-
private final String value;
/**
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java
index 66d6ef55..bf2e3c48 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java
@@ -44,6 +44,8 @@ public DataAPIHttpException(String errorMessage) {
*
* @param errorMessage
* error message
+ * @param code
+ * error code
*/
public DataAPIHttpException(String code, String errorMessage) {
super(code, errorMessage);
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ErrorCodesServer.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ErrorCodesServer.java
index 85bfe0b1..0ff5ee37 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ErrorCodesServer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ErrorCodesServer.java
@@ -22,6 +22,9 @@
import lombok.Getter;
+/**
+ * Error codes for server-side errors.
+ */
@Getter
public enum ErrorCodesServer {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidFieldExpressionException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidFieldExpressionException.java
index 88c4dcf2..9ce1da5d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidFieldExpressionException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidFieldExpressionException.java
@@ -43,6 +43,8 @@ public InvalidFieldExpressionException(ErrorCodesClient code, String message) {
*
* @param path
* current field expression
+ * @param cause
+ * cause of the error
*/
public static void throwInvalidField(String path, String cause) {
throw new InvalidFieldExpressionException(INVALID_EXPRESSION,
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java
index 41a90899..dc3eebe5 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java
@@ -75,5 +75,17 @@ public UnexpectedDataAPIResponseException(Command cmd, DataAPIResponse res, Stri
this.command = cmd;
this.response = res;
}
+
+ /**
+ * Constructs a new exception with the specified command that triggered the error,
+ * the API response received, and a custom error message.
+ *
+ * @param msg The detailed error message explaining the nature of the fault.
+ */
+ public UnexpectedDataAPIResponseException(String msg) {
+ super(DEFAULT_ERROR_CODE, msg);
+ this.command = null;
+ this.response = null;
+ }
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
index a60ece8b..c8801114 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
@@ -794,6 +794,16 @@ public TableFindCursor findAll() {
return find(null, new TableFindOptions());
}
+ /**
+ * Search for a Page with no projection.
+ *
+ * @param filter
+ * the query filter
+ * @param options
+ * options of find one
+ * @return
+ * the Page to iterate over the results
+ */
public Page findPage(Filter filter, TableFindOptions options) {
return findPage(filter, options, getRowClass());
}
@@ -816,9 +826,16 @@ public Page findPage(Filter filter, TableFindOptions options) {
* This list, along with the maximum page size and the next page state, is used to construct the {@link Page} object returned by the method.
*
*
- * @param filter The filter criteria used to select rows from the table.
- * @param options The {@link CollectionFindOptions} providing additional query parameters, such as sorting and pagination.
- * @return A {@link Page} object containing the rows that match the query, along with pagination information.
+ * @param
+ * projection for the new type
+ * @param newRowType
+ * the class representing the row type for the result; must not be {@code null}.
+ * @param filter
+ * The filter criteria used to select rows from the table.
+ * @param options
+ * The {@link CollectionFindOptions} providing additional query parameters, such as sorting and pagination.
+ * @return
+ * A {@link Page} object containing the rows that match the query, along with pagination information.
*/
public Page findPage(Filter filter, TableFindOptions options, Class newRowType) {
Command findCommand = Command
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexColumnDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexColumnDefinition.java
index 194c4f3f..6fba8daa 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexColumnDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexColumnDefinition.java
@@ -25,15 +25,32 @@
import lombok.Data;
import lombok.NoArgsConstructor;
+/**
+ * Represents a column definition for a table index, including the column's name and type.
+ * This class is designed for use in scenarios such as serialization/deserialization with libraries
+ * like Jackson and for method chaining in fluent-style APIs.
+ */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableIndexColumnDefinition {
+ /**
+ * The name of the column.
+ */
String name;
+ /**
+ * The type of the column.
+ */
TableIndexMapTypes type;
+ /**
+ * Constructor that accepts a column name.
+ *
+ * @param name
+ * the name of the column.
+ */
public TableIndexColumnDefinition(String name) {
this.name = name;
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java
index 309b8296..ef442dc9 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java
@@ -30,6 +30,12 @@
import java.util.function.Consumer;
import java.util.function.Function;
+/**
+ * Represents a descriptor for a table index, including the table's name and associated index options.
+ *
+ * @param
+ * the type of index definition.
+ */
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
@@ -63,11 +69,11 @@ public abstract class TableIndexDescriptor>
@JsonIgnore
protected final Function> constructor;
- /**
- * Default constructor for serialization/deserialization.
- */
/**
* Constructor that accepts a function for instance creation.
+ *
+ * @param constructor
+ * the function to create a new instance of the subclass.
*/
protected TableIndexDescriptor(Function> constructor) {
this.constructor = constructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexMapTypes.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexMapTypes.java
index 2f4ed8d2..c3d7af4a 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexMapTypes.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexMapTypes.java
@@ -22,6 +22,11 @@
import lombok.Getter;
+/**
+ * Enum representing the types of map indexes in a table.
+ * This enum is designed for use in scenarios such as serialization/deserialization with libraries
+ * like Jackson and for method chaining in fluent-style APIs.
+ */
@Getter
public enum TableIndexMapTypes {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableRegularIndexDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableRegularIndexDescriptor.java
index 8959a513..edc06d33 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableRegularIndexDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableRegularIndexDescriptor.java
@@ -29,6 +29,9 @@
*/
public class TableRegularIndexDescriptor extends TableIndexDescriptor {
+ /**
+ * The default name for the index.
+ */
public TableRegularIndexDescriptor() {
super(TableRegularIndexDescriptor::new);
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinition.java
index a295cef7..2a17abbc 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinition.java
@@ -58,21 +58,48 @@ protected TableTextIndexDefinition(TableTextIndexDefinitionOptions options) {
this.options = options;
}
+ /**
+ * Setter for the column name
+ *
+ * @param column the name of the column to index.
+ * @return self reference
+ */
@Override
public TableTextIndexDefinition column(String column) {
return (TableTextIndexDefinition) super.column(column);
}
+ /**
+ * Setter for the column name
+ *
+ * @param column the name of the column to index.
+ * @param type the type of the index.
+ * @return self reference
+ */
@Override
public TableTextIndexDefinition column(String column, TableIndexMapTypes type) {
return (TableTextIndexDefinition) super.column(column, type);
}
+ /**
+ * Setter for the options
+ *
+ * @param options the options of the index.
+ * @return self reference
+ */
@Override
public TableTextIndexDefinition options(TableTextIndexDefinitionOptions options) {
return (TableTextIndexDefinition) super.options(options);
}
+ /**
+ * Setter for the analyzer
+ *
+ * @param analyzer
+ * Value for analyzer
+ * @return
+ * Self reference
+ */
public TableTextIndexDefinition analyzer(Analyzer analyzer) {
if (options == null) {
this.options = new TableTextIndexDefinitionOptions();
@@ -81,6 +108,14 @@ public TableTextIndexDefinition analyzer(Analyzer analyzer) {
return this;
}
+ /**
+ * Setter for the analyzer with a type
+ *
+ * @param analyzerTypes
+ * Type of the analyzer
+ * @return
+ * Self reference
+ */
public TableTextIndexDefinition analyzer(AnalyzerTypes analyzerTypes) {
if (options == null) {
this.options = new TableTextIndexDefinitionOptions();
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinitionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinitionOptions.java
index 871c14ab..c7427c4f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinitionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDefinitionOptions.java
@@ -24,9 +24,17 @@
import com.datastax.astra.client.core.lexical.AnalyzerTypes;
import lombok.Data;
+/**
+ * Represents the options for a text index definition in a table.
+ * This class is designed for use in scenarios such as serialization/deserialization with libraries
+ * like Jackson and for method chaining in fluent-style APIs.
+ */
@Data
public class TableTextIndexDefinitionOptions {
+ /**
+ * The analyzer to use for the text index.
+ */
Analyzer analyzer;
/**
@@ -35,11 +43,27 @@ public class TableTextIndexDefinitionOptions {
public TableTextIndexDefinitionOptions() {
}
+ /**
+ * Constructor that accepts an analyzer.
+ *
+ * @param analyzer
+ * the analyzer to use.
+ * @return
+ * the current instance of {@link TableTextIndexDefinitionOptions}.
+ */
public TableTextIndexDefinitionOptions analyzer(Analyzer analyzer) {
this.analyzer = analyzer;
return this;
}
+ /**
+ * Constructor that accepts an analyzer type.
+ *
+ * @param analyzerType
+ * the analyzer type to use.
+ * @return
+ * the current instance of {@link TableTextIndexDefinitionOptions}.
+ */
public TableTextIndexDefinitionOptions analyzer(AnalyzerTypes analyzerType) {
this.analyzer = new Analyzer(analyzerType);
return this;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDescriptor.java
index c333a57e..648fc96d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableTextIndexDescriptor.java
@@ -27,6 +27,9 @@
*/
public class TableTextIndexDescriptor extends TableIndexDescriptor {
+ /**
+ * The default name for the index.
+ */
public TableTextIndexDescriptor() {
super(TableTextIndexDescriptor::new);
}
@@ -41,11 +44,27 @@ protected TableTextIndexDescriptor(TableTextIndexDefinition definition) {
this.definition = definition;
}
+ /**
+ * Adds a name to the index.
+ *
+ * @param name
+ * the name of the table.
+ * @return
+ * the current instance of {@link TableTextIndexDescriptor}.
+ */
@Override
public TableTextIndexDescriptor name(String name) {
return (TableTextIndexDescriptor) super.name(name);
}
+ /**
+ * Adds a definitions to the index.
+ *
+ * @param def
+ * the definition of the index.
+ * @return
+ * the current instance of {@link TableTextIndexDescriptor}.
+ */
@Override
public TableTextIndexDescriptor definition(TableTextIndexDefinition def) {
return (TableTextIndexDescriptor) super.definition(def);
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java
index a906b343..512fda42 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java
@@ -30,6 +30,9 @@
@Getter @Setter
public class TableVectorIndexDescriptor extends TableIndexDescriptor {
+ /**
+ * The default name for the index.
+ */
public TableVectorIndexDescriptor() {
super(TableVectorIndexDescriptor::new);
}
@@ -44,6 +47,7 @@ protected TableVectorIndexDescriptor(TableVectorIndexDefinition definition) {
this.definition = definition;
}
+
@Override
public TableVectorIndexDescriptor name(String name) {
return (TableVectorIndexDescriptor) super.name(name);
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
index ce8e61b5..bff26e5d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
@@ -24,6 +24,7 @@
import com.datastax.astra.client.core.DataAPIKeywords;
import com.datastax.astra.client.core.hybrid.Hybrid;
import com.datastax.astra.client.core.vector.DataAPIVector;
+import com.datastax.astra.client.exceptions.UnexpectedDataAPIResponseException;
import com.datastax.astra.client.tables.definition.TableDuration;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
@@ -44,12 +45,14 @@
import java.time.LocalTime;
import java.time.Period;
import java.time.ZoneId;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.regex.Matcher;
@@ -233,6 +236,8 @@ public Row addVectorize(final String key, final String value) {
*
* @param hybrid
* hybrid object to be added
+ * @return
+ * self reference
*/
@BetaPreview
public Row addHybrid(Hybrid hybrid) {
@@ -758,8 +763,25 @@ public Long getBigInt(final String key) {
* @return the value as a DataAPIVector, which may be null
* @throws ClassCastException if the value is not a DataAPIVector
*/
+ @SuppressWarnings("unchecked")
public DataAPIVector getVector(final String key) {
- return get(key, DataAPIVector.class);
+ Object o = get(key);
+ // Get a vector from a list of doubles
+ if (o instanceof DataAPIVector) {
+ return ((DataAPIVector) o);
+ } else if (o instanceof ArrayList> list && !list.isEmpty() && list.get(0) instanceof Double) {
+ ArrayList a = (ArrayList) list;
+ float[] floatArray = new float[a.size()];
+ for (int i = 0; i < a.size(); i++) {
+ floatArray[i] = a.get(i).floatValue();
+ }
+ return new DataAPIVector(floatArray);
+ } else if (o instanceof float[] array) {
+ // Get a vector from a float array
+ return new DataAPIVector(array);
+ }
+ throw new UnexpectedDataAPIResponseException("Could not parse " + key + " of type " + o.getClass().getName() +
+ " to a DataAPIVector. Expected a list of Double, a float array or binary data");
}
/**
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/ColumnVector.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/ColumnVector.java
index 2cdadcce..f1b38d5c 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/ColumnVector.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/ColumnVector.java
@@ -89,6 +89,11 @@
*/
KeyValue[] authentication() default {};
+ /**
+ * Specifies the parameters for authentication
+ *
+ * @return a key value array
+ */
KeyValue[] parameters() default {};
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/KeyValue.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/KeyValue.java
index 8892989c..8ba73397 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/KeyValue.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/KeyValue.java
@@ -23,8 +23,23 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+/**
+ * Key value annotation.
+ */
@Retention(RetentionPolicy.RUNTIME)
public @interface KeyValue {
+
+ /**
+ * Key.
+ *
+ * @return key
+ */
String key();
+
+ /**
+ * Value.
+ *
+ * @return value
+ */
String value();
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java
index ba138cde..d67fc6f2 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java
@@ -240,6 +240,16 @@ public Map getPartitionSort() {
return cc;
}
+ /**
+ * List all vector index definitions for the given table name and class.
+ *
+ * @param tableName
+ * the table name
+ * @param clazz
+ * the class
+ * @return
+ * a list of vector index definitions
+ */
public static List listVectorIndexDefinitions(String tableName, Class> clazz) {
EntityBeanDefinition> bean = new EntityBeanDefinition<>(clazz);
if (Utils.hasLength(bean.getName()) && !bean.getName().equals(tableName)) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/HybridLimitsSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/HybridLimitsSerializer.java
index aafd1b81..80921d94 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/HybridLimitsSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/HybridLimitsSerializer.java
@@ -32,15 +32,16 @@
/**
* Serializer for TableIndexColumnDefinition.
- *
- * {"column": "name"}
- *
*/
public class HybridLimitsSerializer extends JsonSerializer {
+ /**
+ * Default constructor
+ */
public HybridLimitsSerializer() {
}
+ /** {@inheritDoc} */
@Override
public void serialize(HybridLimits def, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (def == null) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/AnalyzerSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/AnalyzerSerializer.java
index 5055c111..6a061269 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/AnalyzerSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/AnalyzerSerializer.java
@@ -37,6 +37,13 @@
*/
public class AnalyzerSerializer extends JsonSerializer {
+ /**
+ * Default constructor
+ */
+ public AnalyzerSerializer() {
+ super();
+ }
+
@Override
public void serialize(Analyzer analyzer, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (analyzer == null) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/HybridSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/HybridSerializer.java
index 2deeca08..7548320f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/HybridSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/HybridSerializer.java
@@ -34,6 +34,13 @@
*/
public class HybridSerializer extends JsonSerializer {
+ /**
+ * Default constructor
+ */
+ public HybridSerializer() {
+ super();
+ }
+
@Override
public void serialize(Hybrid value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
String vectorize = value.getDoc().getVectorize().orElse(null);
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/LexicalSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/LexicalSerializer.java
index 9c801a80..27fd64a4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/LexicalSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/LexicalSerializer.java
@@ -34,6 +34,13 @@
*/
public class LexicalSerializer extends JsonSerializer {
+ /**
+ * Default constructor
+ */
+ public LexicalSerializer() {
+ super();
+ }
+
@Override
public void serialize(Lexical value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value.getText() != null) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/VectorizeSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/VectorizeSerializer.java
index d5ef5a74..e78488b2 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/VectorizeSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/core/VectorizeSerializer.java
@@ -32,6 +32,13 @@
*/
public class VectorizeSerializer extends JsonSerializer {
+ /**
+ * Default constructor
+ */
+ public VectorizeSerializer() {
+ super();
+ }
+
@Override
public void serialize(Vectorize value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value.getSetPassage() == null || value.getSetPassage().isEmpty()) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableIndexColumnDefinitionSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableIndexColumnDefinitionSerializer.java
index d1f55846..27a576c2 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableIndexColumnDefinitionSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableIndexColumnDefinitionSerializer.java
@@ -36,9 +36,13 @@
*/
public class TableIndexColumnDefinitionSerializer extends JsonSerializer {
+ /**
+ * Default constructor
+ */
public TableIndexColumnDefinitionSerializer() {
}
+ /** {@inheritDoc} */
@Override
public void serialize(TableIndexColumnDefinition def, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (def == null) {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/utils/BetaPreview.java b/astra-db-java/src/main/java/com/datastax/astra/internal/utils/BetaPreview.java
index 89c4b7b9..b3340cd4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/utils/BetaPreview.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/utils/BetaPreview.java
@@ -33,5 +33,12 @@
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.FIELD})
@Deprecated
public @interface BetaPreview {
+
+ /**
+ * Message to be displayed when the feature is used.
+ *
+ * @return message
+ * current depracation message
+ */
String value() default "This feature is in beta and might undergo signature or behaviour changes in the future.";
}
diff --git a/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java b/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java
index e5286e3f..0bc890af 100644
--- a/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java
+++ b/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java
@@ -1,6 +1,12 @@
package dev.langchain4j.store.embedding.astradb;
+import com.datastax.astra.client.DataAPIClient;
+import com.datastax.astra.client.collections.Collection;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.core.options.DataAPIClientOptions;
+import com.datastax.astra.client.core.query.Filters;
+import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.langchain4j.Assistant;
@@ -9,6 +15,8 @@
import com.datastax.astra.langchain4j.rag.AstraVectorizeIngestor;
import com.datastax.astra.langchain4j.store.embedding.AstraDbEmbeddingStore;
import com.datastax.astra.langchain4j.store.embedding.EmbeddingSearchRequestAstra;
+import com.dtsx.astra.sdk.utils.JsonUtils;
+import com.dtsx.astra.sdk.utils.TestUtils;
import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
import dev.langchain4j.data.document.parser.TextDocumentParser;
@@ -20,6 +28,7 @@
import dev.langchain4j.service.AiServices;
import dev.langchain4j.store.embedding.EmbeddingMatch;
import dev.langchain4j.store.embedding.filter.comparison.IsEqualTo;
+import dev.langchain4j.store.embedding.filter.comparison.IsIn;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
@@ -30,6 +39,7 @@
import java.io.File;
import java.text.SimpleDateFormat;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -160,4 +170,6 @@ public void should_search_advanced_rag() {
.build();
System.out.println(ai.answer("Give me the name of the HORSE"));
}
+
+
}
From 07333157ce71363dbbd7e89404e48131b351bbcb Mon Sep 17 00:00:00 2001
From: Cedrick Lunven
Date: Wed, 9 Apr 2025 19:57:39 +0200
Subject: [PATCH 11/13] adding samples
---
RELEASE.MD | 7 +
astra-db-java-tools/pom.xml | 2 +-
astra-db-java/pom.xml | 3 +-
.../astra/client/collections/Collection.java | 10 +-
.../cursor/CollectionFindAndRerankCursor.java | 8 +-
.../commands/cursor/CollectionFindCursor.java | 1 +
.../client/core/options/BaseOptions.java | 14 +
...{RerankResult.java => RerankedResult.java} | 4 +-
.../client/tables/cursor/TableFindCursor.java | 2 +
.../astra/DemoAstraDevFindAndRerank.java | 5 +-
...al_12_Collection_FindAndRerank_ITTest.java | 4 +-
astra-sdk-devops/pom.xml | 77 +
.../com/dtsx/astra/sdk/AbstractApiClient.java | 213 ++
.../com/dtsx/astra/sdk/AstraOpsClient.java | 169 ++
.../dtsx/astra/sdk/db/AstraDBOpsClient.java | 280 ++
.../astra/sdk/db/DbAccessListsClient.java | 148 +
.../com/dtsx/astra/sdk/db/DbCdcsClient.java | 185 ++
.../astra/sdk/db/DbDatacentersClient.java | 168 ++
.../dtsx/astra/sdk/db/DbKeyspacesClient.java | 118 +
.../com/dtsx/astra/sdk/db/DbOpsClient.java | 446 +++
.../astra/sdk/db/DbPrivateLinksClient.java | 144 +
.../dtsx/astra/sdk/db/DbRegionsClient.java | 124 +
.../dtsx/astra/sdk/db/DbTelemetryClient.java | 135 +
.../dtsx/astra/sdk/db/domain/AccessList.java | 150 +
.../sdk/db/domain/AccessListAddress.java | 136 +
.../db/domain/AccessListAddressRequest.java | 57 +
.../sdk/db/domain/AccessListRequest.java | 103 +
.../sdk/db/domain/CloudProviderType.java | 64 +
.../dtsx/astra/sdk/db/domain/Database.java | 399 +++
.../astra/sdk/db/domain/DatabaseCost.java | 303 ++
.../db/domain/DatabaseCreationBuilder.java | 155 +
.../db/domain/DatabaseCreationRequest.java | 173 ++
.../sdk/db/domain/DatabaseCreationType.java | 10 +
.../astra/sdk/db/domain/DatabaseFilter.java | 322 ++
.../astra/sdk/db/domain/DatabaseInfo.java | 281 ++
.../astra/sdk/db/domain/DatabaseMetrics.java | 117 +
.../astra/sdk/db/domain/DatabaseRegion.java | 287 ++
.../domain/DatabaseRegionCreationRequest.java | 89 +
.../db/domain/DatabaseRegionServerless.java | 175 ++
.../sdk/db/domain/DatabaseStatusType.java | 66 +
.../astra/sdk/db/domain/DatabaseStorage.java | 119 +
.../dtsx/astra/sdk/db/domain/Datacenter.java | 347 +++
.../dtsx/astra/sdk/db/domain/RegionType.java | 31 +
.../astra/sdk/db/domain/package-info.java | 2 +
.../telemetry/CloudWatchTelemetryRequest.java | 41 +
.../telemetry/DatadogTelemetryRequest.java | 63 +
.../telemetry/KafkaTelemetryRequest.java | 171 ++
.../telemetry/PrometheusTelemetryRequest.java | 119 +
.../telemetry/SpecializedTelemetryClient.java | 90 +
.../telemetry/SplunkTelemetryRequest.java | 135 +
.../sdk/db/domain/telemetry/package-info.java | 2 +
.../ChangeDataCaptureNotFoundException.java | 40 +
.../exception/DatabaseNotFoundException.java | 18 +
.../KeyspaceAlreadyExistException.java | 22 +
.../exception/KeyspaceNotFoundException.java | 18 +
.../RegionAlreadyExistException.java | 22 +
.../db/exception/RegionNotFoundException.java | 18 +
.../astra/sdk/db/exception/package-info.java | 2 +
.../com/dtsx/astra/sdk/db/package-info.java | 2 +
.../exception/AuthenticationException.java | 65 +
.../astra/sdk/exception/package-info.java | 2 +
.../com/dtsx/astra/sdk/org/KeysClient.java | 76 +
.../com/dtsx/astra/sdk/org/RolesClient.java | 228 ++
.../com/dtsx/astra/sdk/org/TokensClient.java | 166 ++
.../com/dtsx/astra/sdk/org/UsersClient.java | 234 ++
.../sdk/org/domain/CreateRoleResponse.java | 159 +
.../sdk/org/domain/CreateTokenResponse.java | 154 +
.../astra/sdk/org/domain/DefaultRoles.java | 128 +
.../dtsx/astra/sdk/org/domain/IamToken.java | 81 +
.../sdk/org/domain/InviteUserRequest.java | 115 +
.../com/dtsx/astra/sdk/org/domain/Key.java | 108 +
.../astra/sdk/org/domain/KeyDefinition.java | 85 +
.../sdk/org/domain/KeyRegionDefinition.java | 63 +
.../astra/sdk/org/domain/Organization.java | 79 +
.../dtsx/astra/sdk/org/domain/Permission.java | 267 ++
.../sdk/org/domain/ResponseAllIamTokens.java | 39 +
.../sdk/org/domain/ResponseAllUsers.java | 92 +
.../com/dtsx/astra/sdk/org/domain/Role.java | 118 +
.../astra/sdk/org/domain/RoleDefinition.java | 293 ++
.../dtsx/astra/sdk/org/domain/RolePolicy.java | 117 +
.../com/dtsx/astra/sdk/org/domain/User.java | 115 +
.../dtsx/astra/sdk/org/domain/UserStatus.java | 17 +
.../astra/sdk/org/domain/package-info.java | 2 +
.../org/exception/RoleNotFoundException.java | 40 +
.../exception/UserAlreadyExistException.java | 38 +
.../org/exception/UserNotFoundException.java | 18 +
.../astra/sdk/org/exception/package-info.java | 2 +
.../com/dtsx/astra/sdk/org/package-info.java | 2 +
.../java/com/dtsx/astra/sdk/package-info.java | 2 +
.../sdk/streaming/AstraStreamingClient.java | 235 ++
.../astra/sdk/streaming/ClustersClient.java | 102 +
.../astra/sdk/streaming/ProvidersClient.java | 68 +
.../astra/sdk/streaming/RegionsClient.java | 88 +
.../astra/sdk/streaming/TenantCdcClient.java | 190 ++
.../astra/sdk/streaming/TenantClient.java | 169 ++
.../sdk/streaming/TenantLimitsClient.java | 81 +
.../sdk/streaming/TenantStatsClient.java | 166 ++
.../sdk/streaming/domain/CdcDefinition.java | 457 +++
.../astra/sdk/streaming/domain/Cluster.java | 174 ++
.../astra/sdk/streaming/domain/CreateCdc.java | 56 +
.../sdk/streaming/domain/CreateTenant.java | 215 ++
.../domain/CreateTenantResponse.java | 25 +
.../astra/sdk/streaming/domain/DeleteCdc.java | 119 +
.../sdk/streaming/domain/Statistics.java | 390 +++
.../sdk/streaming/domain/StreamingRegion.java | 175 ++
.../astra/sdk/streaming/domain/Tenant.java | 45 +
.../sdk/streaming/domain/TenantLimit.java | 146 +
.../sdk/streaming/domain/package-info.java | 2 +
.../TenantAlreadyExistException.java | 38 +
.../exception/TenantNotFoundException.java | 18 +
.../sdk/streaming/exception/package-info.java | 2 +
.../astra/sdk/streaming/package-info.java | 2 +
.../com/dtsx/astra/sdk/utils/ApiError.java | 62 +
.../com/dtsx/astra/sdk/utils/ApiLocator.java | 364 +++
.../com/dtsx/astra/sdk/utils/ApiResponse.java | 93 +
.../astra/sdk/utils/ApiResponseError.java | 28 +
.../dtsx/astra/sdk/utils/ApiResponseHttp.java | 82 +
.../java/com/dtsx/astra/sdk/utils/Assert.java | 72 +
.../astra/sdk/utils/AstraEnvironment.java | 67 +
.../com/dtsx/astra/sdk/utils/AstraRc.java | 341 +++
.../astra/sdk/utils/HttpClientWrapper.java | 573 ++++
.../com/dtsx/astra/sdk/utils/IdUtils.java | 29 +
.../com/dtsx/astra/sdk/utils/JsonUtils.java | 258 ++
.../com/dtsx/astra/sdk/utils/TestUtils.java | 263 ++
.../java/com/dtsx/astra/sdk/utils/Utils.java | 137 +
.../sdk/utils/observability/AnsiUtils.java | 99 +
.../observability/ApiExecutionInfos.java | 219 ++
.../observability/ApiRequestObserver.java | 60 +
.../observability/CompletableFutures.java | 65 +
.../observability/LoggingRequestObserver.java | 135 +
.../dtsx/astra/sdk/utils/package-info.java | 2 +
.../dtsx/astra/sdk/AbstractDevopsApiTest.java | 134 +
.../dtsx/astra/sdk/ApiDevopsClientTest.java | 84 +
.../com/dtsx/astra/sdk/db/CdcClientTest.java | 193 ++
.../dtsx/astra/sdk/db/DatabaseClientTest.java | 276 ++
.../astra/sdk/db/DatabasesClientTest.java | 172 ++
.../sdk/db/NonProductionEnvironmentTest.java | 38 +
.../dtsx/astra/sdk/iam/RolesClientTest.java | 139 +
.../dtsx/astra/sdk/iam/TokensClientTest.java | 46 +
.../dtsx/astra/sdk/iam/UsersClientTest.java | 61 +
.../streaming/AstraStreamingClientTest.java | 37 +
.../sdk/streaming/ClustersClientTest.java | 44 +
.../sdk/streaming/ProvidersClientTest.java | 32 +
.../astra/sdk/streaming/RegionClientTest.java | 35 +
.../astra/sdk/streaming/TenantClientTest.java | 53 +
.../sdk/streaming/TenantStatsClientTest.java | 100 +
.../src/test/resources/logback-test.xml | 17 +
cassio-cql/pom.xml | 111 -
.../dtsx/cassio/AbstractCassandraTable.java | 143 -
.../main/java/com/dtsx/cassio/AnnQuery.java | 41 -
.../main/java/com/dtsx/cassio/AnnResult.java | 29 -
.../src/main/java/com/dtsx/cassio/CassIO.java | 191 --
.../cassio/CassandraSimilarityMetric.java | 44 -
.../cassio/ClusteredMetadataVectorRecord.java | 80 -
.../cassio/ClusteredMetadataVectorTable.java | 381 ---
.../java/com/dtsx/cassio/ClusteredRecord.java | 30 -
.../java/com/dtsx/cassio/ClusteredTable.java | 193 --
.../com/dtsx/cassio/MetadataVectorRecord.java | 94 -
.../com/dtsx/cassio/MetadataVectorTable.java | 184 --
.../java/com/dtsx/cassio/package-info.java | 4 -
.../src/main/resources/application.conf | 17 -
.../CassIOClusteredMetadataVectorTable.java | 55 -
.../com/dtsx/cassio/CassIOConnection.java | 27 -
.../cassio/CassIOMetadataVectorTable.java | 48 -
.../cassio/ClusteredMetadataVectorStore.java | 213 --
.../com/dtsx/cassio/RagPdfVectorTest.java | 163 --
.../src/test/resources/documentation.asciidoc | 1433 ---------
cassio-cql/src/test/resources/johnny.pdf | Bin 66591 -> 0 bytes
.../src/test/resources/logback-test.xml | 32 -
.../src/test/resources/philo_quotes.json | 2590 -----------------
.../src/test/resources/philosopher-quotes.csv | 451 ---
cassio-cql/src/test/resources/sample.txt | 167 --
examples/pom.xml | 2 +-
.../client/database/CreateCollection.java | 3 +-
.../client/database/CreateCollection2.java | 62 +
langchain4j-astradb/pom.xml | 4 +-
pom.xml | 20 +-
177 files changed, 16756 insertions(+), 6750 deletions(-)
rename astra-db-java/src/main/java/com/datastax/astra/client/core/rerank/{RerankResult.java => RerankedResult.java} (91%)
create mode 100644 astra-sdk-devops/pom.xml
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/AbstractApiClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/AstraOpsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/AstraDBOpsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbAccessListsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbCdcsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbDatacentersClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbKeyspacesClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbOpsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbPrivateLinksClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbRegionsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbTelemetryClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/AccessList.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/AccessListAddress.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/AccessListAddressRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/AccessListRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/CloudProviderType.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/Database.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseCost.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseCreationBuilder.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseCreationRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseCreationType.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseFilter.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseInfo.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseMetrics.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseRegion.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseRegionCreationRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseRegionServerless.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseStatusType.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/DatabaseStorage.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/Datacenter.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/RegionType.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/CloudWatchTelemetryRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/DatadogTelemetryRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/KafkaTelemetryRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/PrometheusTelemetryRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/SpecializedTelemetryClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/SplunkTelemetryRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/domain/telemetry/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/ChangeDataCaptureNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/DatabaseNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/KeyspaceAlreadyExistException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/KeyspaceNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/RegionAlreadyExistException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/RegionNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/exception/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/exception/AuthenticationException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/exception/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/KeysClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/RolesClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/TokensClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/UsersClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/CreateRoleResponse.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/CreateTokenResponse.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/DefaultRoles.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/IamToken.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/InviteUserRequest.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/Key.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/KeyDefinition.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/KeyRegionDefinition.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/Organization.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/Permission.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/ResponseAllIamTokens.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/ResponseAllUsers.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/Role.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/RoleDefinition.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/RolePolicy.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/User.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/UserStatus.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/domain/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/exception/RoleNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/exception/UserAlreadyExistException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/exception/UserNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/exception/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/org/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/AstraStreamingClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/ClustersClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/ProvidersClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/RegionsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/TenantCdcClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/TenantClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/TenantLimitsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/TenantStatsClient.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/CdcDefinition.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/Cluster.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/CreateCdc.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/CreateTenant.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/CreateTenantResponse.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/DeleteCdc.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/Statistics.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/StreamingRegion.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/Tenant.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/TenantLimit.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/domain/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/exception/TenantAlreadyExistException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/exception/TenantNotFoundException.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/exception/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/streaming/package-info.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/ApiError.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/ApiLocator.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/ApiResponse.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/ApiResponseError.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/ApiResponseHttp.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/Assert.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/AstraEnvironment.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/AstraRc.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/HttpClientWrapper.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/IdUtils.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/JsonUtils.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/TestUtils.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/Utils.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/observability/AnsiUtils.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/observability/ApiExecutionInfos.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/observability/ApiRequestObserver.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/observability/CompletableFutures.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/observability/LoggingRequestObserver.java
create mode 100644 astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/utils/package-info.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/AbstractDevopsApiTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/ApiDevopsClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/db/CdcClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/db/DatabaseClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/db/DatabasesClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/db/NonProductionEnvironmentTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/iam/RolesClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/iam/TokensClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/iam/UsersClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/streaming/AstraStreamingClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/streaming/ClustersClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/streaming/ProvidersClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/streaming/RegionClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/streaming/TenantClientTest.java
create mode 100644 astra-sdk-devops/src/test/java/com/dtsx/astra/sdk/streaming/TenantStatsClientTest.java
create mode 100755 astra-sdk-devops/src/test/resources/logback-test.xml
delete mode 100644 cassio-cql/pom.xml
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/AbstractCassandraTable.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/AnnQuery.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/AnnResult.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/CassIO.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/CassandraSimilarityMetric.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/ClusteredMetadataVectorRecord.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/ClusteredMetadataVectorTable.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/ClusteredRecord.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/ClusteredTable.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/MetadataVectorRecord.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/MetadataVectorTable.java
delete mode 100644 cassio-cql/src/main/java/com/dtsx/cassio/package-info.java
delete mode 100644 cassio-cql/src/main/resources/application.conf
delete mode 100644 cassio-cql/src/test/java/com/dtsx/cassio/CassIOClusteredMetadataVectorTable.java
delete mode 100644 cassio-cql/src/test/java/com/dtsx/cassio/CassIOConnection.java
delete mode 100644 cassio-cql/src/test/java/com/dtsx/cassio/CassIOMetadataVectorTable.java
delete mode 100644 cassio-cql/src/test/java/com/dtsx/cassio/ClusteredMetadataVectorStore.java
delete mode 100644 cassio-cql/src/test/java/com/dtsx/cassio/RagPdfVectorTest.java
delete mode 100644 cassio-cql/src/test/resources/documentation.asciidoc
delete mode 100644 cassio-cql/src/test/resources/johnny.pdf
delete mode 100644 cassio-cql/src/test/resources/logback-test.xml
delete mode 100644 cassio-cql/src/test/resources/philo_quotes.json
delete mode 100644 cassio-cql/src/test/resources/philosopher-quotes.csv
delete mode 100644 cassio-cql/src/test/resources/sample.txt
create mode 100644 examples/src/main/java/com/datastax/astra/client/database/CreateCollection2.java
diff --git a/RELEASE.MD b/RELEASE.MD
index f4718814..3dc92b0f 100644
--- a/RELEASE.MD
+++ b/RELEASE.MD
@@ -43,4 +43,11 @@ cd ~/.ssh
ssh-add githubff4j
```
+- [x] Deploy
+
+```console
+mvn versions:set -DnewVersion=2.0.0-PREVIEW3 -DgenerateBackupPoms=false
+git tag 2.0.1 && git push origin 2.0.1
+```
+
diff --git a/astra-db-java-tools/pom.xml b/astra-db-java-tools/pom.xml
index dab2ed98..d7e23ce8 100644
--- a/astra-db-java-tools/pom.xml
+++ b/astra-db-java-tools/pom.xml
@@ -7,7 +7,7 @@
com.datastax.astraastra-db-java-parent
- 2.0.0-PREVIEW2
+ 2.0.0-PREVIEW3
diff --git a/astra-db-java/pom.xml b/astra-db-java/pom.xml
index 2cee10ec..a6302057 100644
--- a/astra-db-java/pom.xml
+++ b/astra-db-java/pom.xml
@@ -10,7 +10,7 @@
com.datastax.astraastra-db-java-parent
- 2.0.0-PREVIEW2
+ 2.0.0-PREVIEW3
@@ -23,6 +23,7 @@
com.datastax.astraastra-sdk-devops
+ ${project.version}com.fasterxml.uuid
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java
index 9adbfa51..e5e9d9e4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java
@@ -59,7 +59,7 @@
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
import com.datastax.astra.client.core.query.Projection;
-import com.datastax.astra.client.core.rerank.RerankResult;
+import com.datastax.astra.client.core.rerank.RerankedResult;
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.exceptions.DataAPIException;
@@ -1169,7 +1169,7 @@ public CollectionFindAndRerankCursor findAndRerank(Filter filter, Coll
* @param
* the type of the result items after mapping
* @return
- * a {@link Page} of {@link RerankResult} objects containing the paginated reranked results
+ * a {@link Page} of {@link RerankedResult} objects containing the paginated reranked results
*
*
Example usage:
*
@@ -1181,7 +1181,7 @@ public CollectionFindAndRerankCursor findAndRerank(Filter filter, Coll
*
+ * ...
+ */
+ public void resetPassword(String username, String password) {
+ // Parameter validations
+ Assert.hasLength(username, "username");
+ Assert.hasLength(password, "password");
+ // Build body
+ String body = "{" + "\"username\": \"" + username + "\", " + "\"password\": \"" + password + "\" }";
+ // Invoke
+ ApiResponseHttp res = POST(getEndpointDatabase() + "/resetPassword", body, getOperationName("resetPassword"));
+ // Check response code
+ assertHttpCodeAccepted(res, "resetPassword", databaseId);
+ }
+
+ // ---------------------------------
+ // ---- Keyspaces ----
+ // ---------------------------------
+
+ /**
+ * Work with keyspaces.
+
+ * @return
+ * keyspaces client
+ */
+ public DbKeyspacesClient keyspaces() {
+ return new DbKeyspacesClient(token, environment, databaseId);
+ }
+
+ // ---------------------------------
+ // ---- Datacenters ----
+ // ---------------------------------
+
+ /**
+ * Delegate datacenters operation in a dedicated class
+ *
+ * @return cdc client
+ */
+ public DbDatacentersClient datacenters() {
+ return new DbDatacentersClient(token, environment, databaseId);
+ }
+
+ // ---------------------------------
+ // ---- Access List ----
+ // ---------------------------------
+
+ /**
+ * Delegate access lists operation in a dedicated class
+ *
+ * @return access list client
+ */
+ public DbAccessListsClient accessLists() {
+ return new DbAccessListsClient(token, environment, databaseId);
+ }
+
+ // ---------------------------------
+ // ---- CDC ----
+ // ---------------------------------
+
+ /**
+ * Delegate cdc operation in a dedicated class
+ *
+ * @return cdc client
+ */
+ public DbCdcsClient cdc() {
+ return new DbCdcsClient(token, environment, databaseId);
+ }
+
+ // ---------------------------------
+ // ---- Telemetry ----
+ // ---------------------------------
+
+ /**
+ * Delegate Telemetry operation in a dedicated class
+ *
+ * @return telemetry client
+ */
+ public DbTelemetryClient telemetry() {
+ return new DbTelemetryClient(token, environment, databaseId);
+ }
+
+
+ // ---------------------------------
+ // ---- Private Links ----
+ // ---------------------------------
+
+ /**
+ * Delegate privateLink operation in a dedicated class
+ *
+ * @return privateLink client
+ */
+ public DbPrivateLinksClient privateLink() {
+ return new DbPrivateLinksClient(token, environment, databaseId);
+ }
+
+ // ---------------------------------
+ // ---- Utilities ----
+ // ---------------------------------
+
+ /**
+ * Gets databaseId
+ *
+ * @return value of databaseId
+ */
+ public String getDatabaseId() {
+ return databaseId;
+ }
+
+ /**
+ * Endpoint to access dbs.
+ *
+ * @return database endpoint
+ */
+ public String getEndpointDatabase() {
+ return getEndpointDatabase(databaseId);
+ }
+
+ /**
+ * Endpoint to access dbs (static)
+ *
+ * @param dbId
+ * database identifier
+ * @return database endpoint
+ */
+ public String getEndpointDatabase(String dbId) {
+ return ApiLocator.getApiDevopsEndpoint(environment) + "/databases/" + dbId;
+ }
+
+
+}
diff --git a/astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbPrivateLinksClient.java b/astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbPrivateLinksClient.java
new file mode 100644
index 00000000..9a520df0
--- /dev/null
+++ b/astra-sdk-devops/src/main/java/com/dtsx/astra/sdk/db/DbPrivateLinksClient.java
@@ -0,0 +1,144 @@
+package com.dtsx.astra.sdk.db;
+
+import com.dtsx.astra.sdk.AbstractApiClient;
+import com.dtsx.astra.sdk.db.domain.Database;
+import com.dtsx.astra.sdk.utils.Assert;
+import com.dtsx.astra.sdk.utils.AstraEnvironment;
+
+import java.util.Optional;
+
+/**
+ * Delegate private link operations.
+ */
+public class DbPrivateLinksClient extends AbstractApiClient {
+
+ /**
+ * unique db identifier.
+ */
+ private final Database db;
+
+ /**
+ * As immutable object use builder to initiate the object.
+ *
+ * @param token
+ * authenticated token
+ * @param databaseId
+ * database identifier
+ */
+ public DbPrivateLinksClient(String token, String databaseId) {
+ this(token, AstraEnvironment.PROD, databaseId);
+ }
+
+ /**
+ * As immutable object use builder to initiate the object.
+ *
+ * @param env
+ * define target environment to be used
+ * @param token
+ * authenticated token
+ * @param databaseId
+ * database identifier
+ */
+ public DbPrivateLinksClient(String token, AstraEnvironment env, String databaseId) {
+ super(token, env);
+ Assert.hasLength(databaseId, "databaseId");
+ this.db = new DbOpsClient(token, env, databaseId).get();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public String getServiceName() {
+ return "db.private-link";
+ }
+
+ /**
+ * TODO Get info about all private endpoint connections for a specific database
+ *
+ * ...
+ */
+ public void findAll() {
+ System.out.println(db);
+ throw new RuntimeException("This function is not yet implemented");
+ }
+
+ /**
+ * TODO Get info about private endpoints in a region.
+ *
+ * @param region
+ * current region where add the private link
+ *
+ * ...
+ */
+ public void findAll(String region) {
+ throw new RuntimeException("This function is not yet implemented");
+ }
+
+ /**
+ * TODO Add an allowed principal to the service.
+ *
+ * @param region
+ * region where add the principal
+ * Configure a private endpoint connection by providing the allowed principal to connect with
+ */
+ public void createPrincipal(String region) {
+ throw new RuntimeException("This function is not yet implemented");
+ }
+
+ /**
+ * TODO Accept a private endpoint connection.
+ *
+ * @param region
+ * region where add the private endpoint
+ *
+ *...
+ */
+ public void create(String region) {
+ throw new RuntimeException("This function is not yet implemented");
+ }
+
+ /**
+ * TODO Get a specific endpoint.
+ *
+ * ...
+ *
+ * @param region
+ * current region
+ * @param endpointId
+ * endpoint id fo the region
+ * @return the private endpoint of exist
+ */
+ public Optional