Skip to content

Commit e6562d6

Browse files
committed
Row Serializer different from documetn serialzer
1 parent cf8dd81 commit e6562d6

File tree

49 files changed

+744
-248
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+744
-248
lines changed

RELEASE.MD

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,64 @@ docker-compose -f ./docker-compose-dse.yml up -d
1515
docker run -it --rm --network container:$(docker ps | grep dse | cut -b 1-12) cassandra:latest cqlsh -u cassandra -p cassandra
1616
```
1717

18+
19+
```sql
20+
insert into default_keyspace.table_all_returns (
21+
p_ascii,
22+
p_bigint,
23+
p_blob,
24+
p_boolean,
25+
p_date,
26+
p_decimal,
27+
p_double,
28+
p_double_minf,
29+
p_double_pinf,
30+
p_duration,
31+
p_float,
32+
p_float_nan,
33+
p_inet,
34+
p_int,
35+
p_smallint,
36+
p_text,
37+
p_text_nulled,
38+
p_time,
39+
p_timestamp,
40+
p_tinyint,
41+
p_uuid,
42+
p_varint,
43+
p_vector,
44+
p_list_int,
45+
// p_map_text_int,
46+
p_set_int
47+
) values (
48+
'abc',
49+
10000,
50+
0xabcdef0123456789,
51+
true,
52+
'2015-05-03',
53+
123.45,
54+
987.6543,
55+
-Infinity,
56+
Infinity,
57+
12h48m,
58+
66.55,
59+
NaN,
60+
'12.34.56.78',
61+
2024,
62+
200,
63+
'måndag',
64+
null,
65+
'13:30:54.234',
66+
'2015-05-03 13:30:54.234',
67+
104,
68+
9c5b94b1-35ad-49bb-b118-8e8fc24abf80,
69+
123456789,
70+
[0.1, 0.2, 0.3],
71+
[4, 17, 34],
72+
// {'a': 101, 'b': 102},
73+
{9, 81}
74+
);
75+
```
1876
## Run the Test
1977

2078
### Prerequisites

astra-db-java/src/main/java/com/datastax/astra/client/admin/DataAPIDatabaseAdmin.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import com.datastax.astra.internal.api.ApiResponse;
3131
import com.datastax.astra.internal.command.AbstractCommandRunner;
3232
import com.datastax.astra.internal.command.CommandObserver;
33+
import com.datastax.astra.internal.serializer.DataAPISerializer;
34+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
3335
import com.datastax.astra.internal.utils.Assert;
3436
import lombok.Getter;
3537
import lombok.extern.slf4j.Slf4j;
@@ -52,6 +54,9 @@ public class DataAPIDatabaseAdmin extends AbstractCommandRunner implements Datab
5254
/** parameters names. */
5355
private static final String ARG_KEYSPACE = "keyspaceName";
5456

57+
/** Serializer. */
58+
protected static final DataAPISerializer SERIALIZER = new DocumentSerializer();
59+
5560
/** Database if initialized from the DB. */
5661
protected Database db;
5762

@@ -173,6 +178,14 @@ protected String getApiEndpoint() {
173178
return db.getDbApiEndpoint() + "/v1";
174179
}
175180

181+
/** {@inheritDoc} */
182+
@Override
183+
protected DataAPISerializer getSerializer() {
184+
return SERIALIZER;
185+
}
186+
187+
188+
176189
/**
177190
* Register a listener to execute commands on the collection. Please now use {@link CommandOptions}.
178191
*

astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,31 +38,32 @@
3838
import com.datastax.astra.client.collections.commands.InsertManyResult;
3939
import com.datastax.astra.client.collections.commands.InsertOneOptions;
4040
import com.datastax.astra.client.collections.commands.InsertOneResult;
41-
import com.datastax.astra.client.databases.Database;
42-
import com.datastax.astra.client.exception.DataAPIFaultyResponseException;
43-
import com.datastax.astra.client.exception.DataApiException;
44-
import com.datastax.astra.client.exception.TooManyDocumentsToCountException;
45-
import com.datastax.astra.client.collections.documents.Document;
46-
import com.datastax.astra.client.core.paging.Page;
4741
import com.datastax.astra.client.collections.commands.ReplaceOneOptions;
48-
import com.datastax.astra.client.collections.documents.ReturnDocument;
49-
import com.datastax.astra.client.collections.documents.Update;
5042
import com.datastax.astra.client.collections.commands.UpdateManyOptions;
5143
import com.datastax.astra.client.collections.commands.UpdateOneOptions;
5244
import com.datastax.astra.client.collections.commands.UpdateResult;
45+
import com.datastax.astra.client.collections.documents.Document;
46+
import com.datastax.astra.client.collections.documents.ReturnDocument;
47+
import com.datastax.astra.client.collections.documents.Update;
5348
import com.datastax.astra.client.core.commands.Command;
5449
import com.datastax.astra.client.core.commands.CommandOptions;
50+
import com.datastax.astra.client.core.paging.Page;
5551
import com.datastax.astra.client.core.query.Filter;
5652
import com.datastax.astra.client.core.query.Filters;
5753
import com.datastax.astra.client.core.types.DataAPIKeywords;
5854
import com.datastax.astra.client.core.types.ObjectId;
5955
import com.datastax.astra.client.core.types.UUIDv6;
6056
import com.datastax.astra.client.core.types.UUIDv7;
57+
import com.datastax.astra.client.databases.Database;
58+
import com.datastax.astra.client.exception.DataAPIFaultyResponseException;
59+
import com.datastax.astra.client.exception.DataApiException;
60+
import com.datastax.astra.client.exception.TooManyDocumentsToCountException;
6161
import com.datastax.astra.internal.api.ApiResponse;
6262
import com.datastax.astra.internal.command.AbstractCommandRunner;
6363
import com.datastax.astra.internal.command.CommandObserver;
64+
import com.datastax.astra.internal.serializer.DataAPISerializer;
65+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
6466
import com.datastax.astra.internal.utils.Assert;
65-
import com.datastax.astra.internal.utils.JsonUtils;
6667
import lombok.Getter;
6768
import lombok.extern.slf4j.Slf4j;
6869

@@ -84,9 +85,9 @@
8485
import java.util.concurrent.atomic.AtomicInteger;
8586
import java.util.stream.Collectors;
8687

88+
import static com.datastax.astra.client.core.types.DataAPIKeywords.SORT_VECTOR;
8789
import static com.datastax.astra.client.exception.DataApiException.ERROR_CODE_INTERRUPTED;
8890
import static com.datastax.astra.client.exception.DataApiException.ERROR_CODE_TIMEOUT;
89-
import static com.datastax.astra.client.core.types.DataAPIKeywords.SORT_VECTOR;
9091
import static com.datastax.astra.internal.utils.AnsiUtils.cyan;
9192
import static com.datastax.astra.internal.utils.AnsiUtils.green;
9293
import static com.datastax.astra.internal.utils.AnsiUtils.magenta;
@@ -181,6 +182,9 @@ public class Collection<T> extends AbstractCommandRunner {
181182
/** json inputs */
182183
private static final String INPUT_PAGE_STATE = "pageState";
183184

185+
/** Serializer for the Collections. */
186+
private static final DocumentSerializer SERIALIZER = new DocumentSerializer();
187+
184188
/** Collection identifier. */
185189
@Getter
186190
private final String collectionName;
@@ -482,7 +486,7 @@ public final InsertOneResult insertOne(T document) {
482486
*/
483487
public final InsertOneResult insertOne(T document, InsertOneOptions insertOneOptions) {
484488
Assert.notNull(document, DOCUMENT);
485-
return internalInsertOne(JsonUtils.convertValue(document, Document.class), insertOneOptions);
489+
return internalInsertOne(SERIALIZER.convertValue(document, Document.class), insertOneOptions);
486490
}
487491

488492
/**
@@ -612,7 +616,7 @@ public final InsertOneResult insertOne(T document, float[] embeddings) {
612616
public final InsertOneResult insertOne(T document, float[] embeddings, InsertOneOptions options) {
613617
Assert.notNull(document, DOCUMENT);
614618
Assert.notNull(embeddings, ARG_EMBEDDINGS);
615-
return internalInsertOne(JsonUtils.convertValue(document, Document.class).vector(embeddings), options);
619+
return internalInsertOne(SERIALIZER.convertValue(document, Document.class).vector(embeddings), options);
616620
}
617621

618622
/**
@@ -698,7 +702,7 @@ public final CompletableFuture<InsertOneResult> insertOneAsync(T document, float
698702
public final InsertOneResult insertOne(T document, String vectorize, InsertOneOptions options) {
699703
Assert.notNull(document, DOCUMENT);
700704
Assert.hasLength(vectorize, ARG_VECTORIZE);
701-
return internalInsertOne(JsonUtils.convertValue(document, Document.class).vectorize(vectorize), options);
705+
return internalInsertOne(SERIALIZER.convertValue(document, Document.class).vectorize(vectorize), options);
702706
}
703707

704708
/**
@@ -1879,7 +1883,7 @@ public UpdateResult replaceOne(Filter filter, T replacement, ReplaceOneOptions r
18791883
result.setMatchedCount(res.getMatchedCount());
18801884
result.setModifiedCount(res.getModifiedCount());
18811885
if (res.getDocument() != null) {
1882-
Document doc = JsonUtils.convertValue(res.getDocument(), Document.class);
1886+
Document doc = SERIALIZER.convertValue(res.getDocument(), Document.class);
18831887
if (doc.getId(Object.class) != null) {
18841888
result.setUpsertedId(doc.getId(Object.class));
18851889
}
@@ -2174,6 +2178,12 @@ public void deleteListener(String name) {
21742178
this.commandOptions.unregisterObserver(name);
21752179
}
21762180

2181+
/** {@inheritDoc} */
2182+
@Override
2183+
protected DataAPISerializer getSerializer() {
2184+
return SERIALIZER;
2185+
}
2186+
21772187
/** {@inheritDoc} */
21782188
@Override
21792189
protected String getApiEndpoint() {

astra-db-java/src/main/java/com/datastax/astra/client/collections/CollectionDefinition.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* #L%
2121
*/
2222

23-
import com.datastax.astra.internal.utils.JsonUtils;
23+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
2424
import lombok.Getter;
2525
import lombok.Setter;
2626

@@ -50,6 +50,6 @@ public CollectionDefinition() {
5050
/** {@inheritDoc} */
5151
@Override
5252
public String toString() {
53-
return JsonUtils.marshall(this);
53+
return new DocumentSerializer().marshall(this);
5454
}
5555
}

astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/DistinctIterator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import com.datastax.astra.client.collections.documents.Document;
2424
import com.datastax.astra.client.core.paging.PageableIterable;
25-
import com.datastax.astra.internal.utils.JsonUtils;
25+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
2626
import lombok.extern.slf4j.Slf4j;
2727

2828
import java.util.HashSet;
@@ -86,7 +86,7 @@ public DistinctIterator(PageableIterable<T> findIterable, String fieldName, Clas
8686
* extraction of field from document
8787
*/
8888
private F extractField(T t) {
89-
return JsonUtils.convertValue(t, Document.class).get(fieldName, fieldClass);
89+
return new DocumentSerializer().convertValue(t, Document.class).get(fieldName, fieldClass);
9090
}
9191

9292
/** {@inheritDoc} */

astra-db-java/src/main/java/com/datastax/astra/client/collections/documents/Document.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838

3939
import com.datastax.astra.client.core.types.DataAPIKeywords;
4040
import com.datastax.astra.client.core.types.ObjectId;
41-
import com.datastax.astra.internal.utils.JsonUtils;
41+
import com.datastax.astra.internal.serializer.DataAPISerializer;
42+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
4243
import com.fasterxml.jackson.annotation.JsonUnwrapped;
4344
import lombok.NonNull;
4445

@@ -61,6 +62,11 @@
6162
*/
6263
public class Document implements Map<String, Object>, Serializable {
6364

65+
/**
66+
* Serializer
67+
*/
68+
protected static final DataAPISerializer SERIALIZER = new DocumentSerializer();
69+
6470
/**
6571
* Data to be used in the document.
6672
*/
@@ -118,7 +124,7 @@ public static Document create() {
118124
* current type
119125
*/
120126
public <T> T map(Class<T> clazz) {
121-
return JsonUtils.convertValue(documentMap, clazz);
127+
return SERIALIZER.convertValue(documentMap, clazz);
122128
}
123129

124130
/**
@@ -140,7 +146,7 @@ public Document(final Map<String, ?> map) {
140146
*/
141147
@SuppressWarnings("unchecked")
142148
public static Document parse(final String json) {
143-
return new Document(JsonUtils.unMarshallBean(json, LinkedHashMap.class));
149+
return new Document(SERIALIZER.unMarshallBean(json, LinkedHashMap.class));
144150
}
145151

146152
/**
@@ -185,7 +191,7 @@ public Document appendIfNotNull(final String key, final Object value) {
185191
* @throws ClassCastException if the value of the given key is not of type T
186192
*/
187193
public <T> T get(@NonNull final String key, @NonNull final Class<T> clazz) {
188-
return clazz.cast(JsonUtils.convertValue(documentMap.get(key), clazz));
194+
return clazz.cast(SERIALIZER.convertValue(documentMap.get(key), clazz));
189195
}
190196

191197
/**
@@ -535,7 +541,7 @@ private <T> List<T> constructValuesList(final String key, final Class<T> clazz,
535541
*/
536542
@Override
537543
public String toString() {
538-
return JsonUtils.marshall(documentMap);
544+
return SERIALIZER.marshall(documentMap);
539545
}
540546

541547
/**

astra-db-java/src/main/java/com/datastax/astra/client/collections/documents/Update.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* #L%
2121
*/
2222

23-
import com.datastax.astra.internal.utils.JsonUtils;
23+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
2424

2525
import java.util.Arrays;
2626
import java.util.HashMap;
@@ -49,7 +49,7 @@ public Update() {
4949
@SuppressWarnings("unchecked")
5050
public Update(String json) {
5151
super();
52-
this.documentMap.putAll(JsonUtils.unMarshallBean(json, Map.class));
52+
this.documentMap.putAll(SERIALIZER.unMarshallBean(json, Map.class));
5353
}
5454

5555
/**

astra-db-java/src/main/java/com/datastax/astra/client/core/query/Filter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@
2222

2323
import com.datastax.astra.client.collections.documents.Document;
2424
import com.datastax.astra.internal.utils.Assert;
25-
import com.datastax.astra.internal.utils.JsonUtils;
25+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
2626
import lombok.Getter;
2727
import lombok.NonNull;
2828

2929
import java.util.Map;
30+
import java.util.Set;
3031

3132
/**
3233
* Filter Builder.
@@ -112,7 +113,7 @@ public String toString() {
112113
*/
113114
@Override
114115
public String toJson() {
115-
return JsonUtils.marshall(this);
116+
return SERIALIZER.marshall(this);
116117
}
117118

118119
}

astra-db-java/src/main/java/com/datastax/astra/client/databases/Database.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
import com.datastax.astra.internal.api.AstraApiEndpoint;
4242
import com.datastax.astra.internal.command.AbstractCommandRunner;
4343
import com.datastax.astra.internal.command.CommandObserver;
44-
import com.datastax.astra.internal.utils.JsonUtils;
44+
import com.datastax.astra.internal.serializer.DataAPISerializer;
45+
import com.datastax.astra.internal.serializer.collections.DocumentSerializer;
4546
import lombok.Getter;
4647
import lombok.NonNull;
4748
import lombok.extern.slf4j.Slf4j;
@@ -65,6 +66,9 @@
6566
@Slf4j
6667
public class Database extends AbstractCommandRunner {
6768

69+
/** Serializer for the Collections. */
70+
private static final DocumentSerializer SERIALIZER = new DocumentSerializer();
71+
6872
/** Token to be used with the Database. */
6973
@Getter
7074
private final String token;
@@ -418,7 +422,7 @@ public <T> Collection<T> createCollection(String collectionName, CollectionOptio
418422
.create("createCollection")
419423
.append("name", collectionName);
420424
if (collectionOptions != null) {
421-
createCollection.withOptions(JsonUtils.convertValue(collectionOptions, Document.class));
425+
createCollection.withOptions(SERIALIZER.convertValue(collectionOptions, Document.class));
422426
}
423427
runCommand(createCollection, commandOptions);
424428
log.info("Collection '" + green("{}") + "' has been created", collectionName);
@@ -659,6 +663,11 @@ public void dropTable(String tableName) {
659663
// ---- Generation Information ----
660664
// ------------------------------------------
661665

666+
/** {@inheritDoc} */
667+
@Override
668+
protected DataAPISerializer getSerializer() {
669+
return SERIALIZER;
670+
}
662671

663672
/** {@inheritDoc} */
664673
@Override

0 commit comments

Comments
 (0)