Skip to content

Commit 57b5914

Browse files
committed
refactor: use dedicated QueryWeaviateObject in .query
1 parent 430397d commit 57b5914

23 files changed

Lines changed: 190 additions & 363 deletions

src/it/java/io/weaviate/integration/DataITest.java

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
2121
import io.weaviate.client6.v1.api.collections.VectorConfig;
2222
import io.weaviate.client6.v1.api.collections.Vectors;
23-
import io.weaviate.client6.v1.api.collections.WeaviateObject;
2423
import io.weaviate.client6.v1.api.collections.data.BatchReference;
2524
import io.weaviate.client6.v1.api.collections.data.DeleteManyResponse;
2625
import io.weaviate.client6.v1.api.collections.data.Reference;
2726
import io.weaviate.client6.v1.api.collections.query.Metadata;
2827
import io.weaviate.client6.v1.api.collections.query.Metadata.MetadataField;
2928
import io.weaviate.client6.v1.api.collections.query.QueryMetadata;
3029
import io.weaviate.client6.v1.api.collections.query.QueryReference;
30+
import io.weaviate.client6.v1.api.collections.query.QueryWeaviateObject;
3131
import io.weaviate.client6.v1.api.collections.query.Where;
3232
import io.weaviate.containers.Container;
3333

@@ -103,7 +103,7 @@ public void testBlobData() throws IOException {
103103
cat -> cat.returnProperties("img"));
104104

105105
Assertions.assertThat(got).get()
106-
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
106+
.extracting(QueryWeaviateObject::properties, InstanceOfAssertFactories.MAP)
107107
.extractingByKey("img").isEqualTo(ragdollPng);
108108
}
109109

@@ -152,10 +152,10 @@ public void testReferences_AddReplaceDelete() throws IOException {
152152

153153
Assertions.assertThat(johnWithFriends).get()
154154
.as("friends after ADD")
155-
.extracting(WeaviateObject::references).extracting("hasFriend")
156-
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
155+
.extracting(QueryWeaviateObject::references).extracting("hasFriend")
156+
.asInstanceOf(InstanceOfAssertFactories.list(QueryWeaviateObject.class))
157157
.hasSize(1)
158-
.first().extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
158+
.first().extracting(QueryWeaviateObject::properties, InstanceOfAssertFactories.MAP)
159159
.returns("albie", friend -> friend.get("name"));
160160

161161
// Act: replace reference
@@ -172,10 +172,10 @@ public void testReferences_AddReplaceDelete() throws IOException {
172172

173173
Assertions.assertThat(johnWithFriends).get()
174174
.as("friends after REPLACE")
175-
.extracting(WeaviateObject::references).extracting("hasFriend")
176-
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
175+
.extracting(QueryWeaviateObject::references).extracting("hasFriend")
176+
.asInstanceOf(InstanceOfAssertFactories.list(QueryWeaviateObject.class))
177177
.hasSize(1)
178-
.first().extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
178+
.first().extracting(QueryWeaviateObject::properties, InstanceOfAssertFactories.MAP)
179179
.returns("barbara", friend -> friend.get("name"));
180180

181181
// Act: delete reference
@@ -191,8 +191,8 @@ public void testReferences_AddReplaceDelete() throws IOException {
191191

192192
Assertions.assertThat(johnWithFriends).get()
193193
.as("friends after DELETE")
194-
.extracting(WeaviateObject::references).extracting("hasFriend")
195-
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
194+
.extracting(QueryWeaviateObject::references).extracting("hasFriend")
195+
.asInstanceOf(InstanceOfAssertFactories.list(QueryWeaviateObject.class))
196196
.isEmpty();
197197
}
198198

@@ -218,7 +218,7 @@ public void testReplace() throws IOException {
218218

219219
Assertions.assertThat(replacedIvanhoe).get()
220220
.as("has ONLY year property")
221-
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
221+
.extracting(QueryWeaviateObject::properties, InstanceOfAssertFactories.MAP)
222222
.doesNotContain(Map.entry("title", "ivanhoe"))
223223
.contains(Map.entry("year", 1819L));
224224
}
@@ -268,20 +268,20 @@ public void testUpdate() throws IOException {
268268
.satisfies(book -> {
269269
Assertions.assertThat(book)
270270
.as("has both year and title property")
271-
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
271+
.extracting(QueryWeaviateObject::properties, InstanceOfAssertFactories.MAP)
272272
.contains(Map.entry("title", "ivanhoe"), Map.entry("year", 1819L));
273273

274274
Assertions.assertThat(book)
275275
.as("has reference to Authors")
276-
.extracting(WeaviateObject::references, InstanceOfAssertFactories.MAP)
277-
.extractingByKey("writtenBy", InstanceOfAssertFactories.list(WeaviateObject.class))
276+
.extracting(QueryWeaviateObject::references, InstanceOfAssertFactories.MAP)
277+
.extractingByKey("writtenBy", InstanceOfAssertFactories.list(QueryWeaviateObject.class))
278278
.first()
279-
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
279+
.extracting(QueryWeaviateObject::properties, InstanceOfAssertFactories.MAP)
280280
.contains(Map.entry("name", "walter scott"));
281281

282282
Assertions.assertThat(book)
283283
.as("has a vector")
284-
.extracting(WeaviateObject::metadata)
284+
.extracting(QueryWeaviateObject::metadata)
285285
.extracting(QueryMetadata::vectors)
286286
.returns(vector, Vectors::getDefaultSingle);
287287
});
@@ -393,9 +393,10 @@ public void testReferenceAddMany() throws IOException {
393393

394394
Assertions.assertThat(goodburgAirports).get()
395395
.as("Goodburg has 3 airports")
396-
.extracting(WeaviateObject::references)
397-
.extracting(references -> references.get("hasAirports"), InstanceOfAssertFactories.list(WeaviateObject.class))
398-
.extracting(WeaviateObject::uuid)
396+
.extracting(QueryWeaviateObject::references)
397+
.extracting(references -> references.get("hasAirports"),
398+
InstanceOfAssertFactories.list(QueryWeaviateObject.class))
399+
.extracting(QueryWeaviateObject::uuid)
399400
.contains(alpha, bravo, charlie);
400401
}
401402

@@ -473,7 +474,7 @@ public void testDataTypes() throws IOException {
473474

474475
// Assert
475476
Assertions.assertThat(got).get()
476-
.extracting(WeaviateObject::properties)
477+
.extracting(QueryWeaviateObject::properties)
477478
.asInstanceOf(InstanceOfAssertFactories.map(String.class, Object.class))
478479
// Most of PhoneNumber fields are only present on read and are null on write.
479480
.usingRecursiveComparison()

src/it/java/io/weaviate/integration/ORMITest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
import io.weaviate.client6.v1.api.collections.CollectionConfig;
1818
import io.weaviate.client6.v1.api.collections.GeoCoordinates;
1919
import io.weaviate.client6.v1.api.collections.PhoneNumber;
20-
import io.weaviate.client6.v1.api.collections.WeaviateObject;
2120
import io.weaviate.client6.v1.api.collections.annotations.Collection;
2221
import io.weaviate.client6.v1.api.collections.annotations.Property;
2322
import io.weaviate.client6.v1.api.collections.data.InsertManyResponse.InsertObject;
23+
import io.weaviate.client6.v1.api.collections.query.QueryWeaviateObject;
2424
import io.weaviate.client6.v1.api.collections.query.Where;
2525
import io.weaviate.containers.Container;
2626

@@ -358,7 +358,7 @@ public void test_partialScan() throws IOException {
358358

359359
// Assert
360360
Assertions.assertThat(got).get()
361-
.extracting(WeaviateObject::properties)
361+
.extracting(QueryWeaviateObject::properties)
362362
.returns("Dystopia", Song::title)
363363
.returns(null, Song::album)
364364
.returns(0, Song::year)

src/it/java/io/weaviate/integration/PaginationITest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
import io.weaviate.client6.v1.api.WeaviateClient;
1919
import io.weaviate.client6.v1.api.WeaviateException;
2020
import io.weaviate.client6.v1.api.collections.Property;
21-
import io.weaviate.client6.v1.api.collections.WeaviateMetadata;
22-
import io.weaviate.client6.v1.api.collections.WeaviateObject;
2321
import io.weaviate.client6.v1.api.collections.pagination.PaginationException;
2422
import io.weaviate.client6.v1.api.collections.query.Metadata;
23+
import io.weaviate.client6.v1.api.collections.query.QueryMetadata;
24+
import io.weaviate.client6.v1.api.collections.query.QueryWeaviateObject;
2525
import io.weaviate.containers.Container;
2626

2727
public class PaginationITest extends ConcurrentTest {
@@ -39,15 +39,15 @@ public void testIterateAll() throws IOException {
3939
var inserted = new ArrayList<String>();
4040
for (var i = 0; i < count; i++) {
4141
var object = things.data.insert(Collections.emptyMap());
42-
inserted.add(object.metadata().uuid());
42+
inserted.add(object.uuid());
4343
}
4444
assumeTrue("all objects were inserted", inserted.size() == count);
4545

4646
var allThings = things.paginate();
4747

4848
// Act: stream
4949
var gotStream = allThings.stream()
50-
.map(WeaviateObject::metadata).map(WeaviateMetadata::uuid).toList();
50+
.map(QueryWeaviateObject::metadata).map(QueryMetadata::uuid).toList();
5151

5252
// Assert
5353
Assertions.assertThat(gotStream)
@@ -84,7 +84,7 @@ public void testResumePagination() throws IOException {
8484
var inserted = new ArrayList<String>();
8585
for (var i = 0; i < count; i++) {
8686
var object = things.data.insert(Collections.emptyMap());
87-
inserted.add(object.metadata().uuid());
87+
inserted.add(object.uuid());
8888
}
8989

9090
// Iterate over first 5 objects
@@ -114,7 +114,7 @@ public void testWithQueryOptions() throws IOException {
114114
var inserted = new ArrayList<String>();
115115
for (var i = 0; i < count; i++) {
116116
var object = things.data.insert(Collections.emptyMap());
117-
inserted.add(object.metadata().uuid());
117+
inserted.add(object.uuid());
118118
}
119119

120120
// Act / Assert

src/it/java/io/weaviate/integration/ReferencesITest.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111

1212
import io.weaviate.ConcurrentTest;
1313
import io.weaviate.client6.v1.api.WeaviateClient;
14-
import io.weaviate.client6.v1.api.collections.ObjectMetadata;
1514
import io.weaviate.client6.v1.api.collections.Property;
1615
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
17-
import io.weaviate.client6.v1.api.collections.WeaviateObject;
1816
import io.weaviate.client6.v1.api.collections.data.Reference;
1917
import io.weaviate.client6.v1.api.collections.query.QueryReference;
18+
import io.weaviate.client6.v1.api.collections.query.QueryWeaviateObject;
2019
import io.weaviate.containers.Container;
2120

2221
/**
@@ -74,7 +73,7 @@ public void testReferences() throws IOException {
7473
Map.of("name", "Alex"),
7574
opt -> opt
7675
.reference("hasAwards", Reference.uuids(
77-
grammy_1.metadata().uuid(), oscar_1.metadata().uuid()))
76+
grammy_1.uuid(), oscar_1.uuid()))
7877
.reference("hasAwards", Reference.objects(grammy_2, oscar_2)));
7978

8079
// Act: add one more reference
@@ -91,28 +90,28 @@ public void testReferences() throws IOException {
9190
.extracting(ReferenceProperty::dataTypes, InstanceOfAssertFactories.list(String.class))
9291
.containsOnly(nsMovies);
9392

94-
var gotAlex = artists.query.byId(alex.metadata().uuid(),
93+
var gotAlex = artists.query.byId(alex.uuid(),
9594
opt -> opt.returnReferences(
9695
QueryReference.multi("hasAwards", nsOscar),
9796
QueryReference.multi("hasAwards", nsGrammy)));
9897

9998
Assertions.assertThat(gotAlex).get()
10099
.as("Artists: fetch by id including hasAwards references")
101100

102-
// Cast references to Map<String, List<WeaviateObject>>
103-
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
101+
// Cast references to Map<String, List<QueryWeaviateObject>>
102+
.extracting(QueryWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
104103
.as("hasAwards object reference").extractingByKey("hasAwards")
105-
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
104+
.asInstanceOf(InstanceOfAssertFactories.list(QueryWeaviateObject.class))
106105

107-
.extracting(object -> ((ObjectMetadata) object.metadata()).uuid())
106+
.extracting(object -> object.uuid())
108107
.containsOnly(
109108
// INVESTIGATE: When references to 2+ collections are requested,
110109
// seems to Weaviate only return references to the first one in the list.
111110
// In this case we request { "hasAwards": Oscars } and { "hasAwards": Grammys }
112111
// so the latter will not be in the response.
113112
//
114113
// grammy_1.metadata().id(), grammy_2.metadata().id(),
115-
oscar_1.metadata().uuid(), oscar_2.metadata().uuid());
114+
oscar_1.uuid(), oscar_2.uuid());
116115
}
117116

118117
@Test
@@ -155,7 +154,7 @@ public void testNestedReferences() throws IOException {
155154
.reference("hasAwards", Reference.objects(grammy_1)));
156155

157156
// Assert: fetch nested references
158-
var gotAlex = artists.query.byId(alex.metadata().uuid(),
157+
var gotAlex = artists.query.byId(alex.uuid(),
159158
opt -> opt.returnReferences(
160159
QueryReference.single("hasAwards",
161160
ref -> ref
@@ -166,20 +165,20 @@ public void testNestedReferences() throws IOException {
166165
Assertions.assertThat(gotAlex).get()
167166
.as("Artists: fetch by id including nested references")
168167

169-
// Cast references to Map<String, List<WeaviateObject>>
170-
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
168+
// Cast references to Map<String, List<QueryWeaviateObject>>
169+
.extracting(QueryWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
171170
.as("hasAwards object reference").extractingByKey("hasAwards")
172-
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
171+
.asInstanceOf(InstanceOfAssertFactories.list(QueryWeaviateObject.class))
173172

174173
.hasSize(1).allSatisfy(award -> Assertions.assertThat(award)
175-
.returns(grammy_1.metadata().uuid(), grammy -> ((ObjectMetadata) grammy.metadata()).uuid())
174+
.returns(grammy_1.uuid(), grammy -> grammy.uuid())
176175

177-
// Cast references to Map<String, List<WeaviateObject>>
178-
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
176+
// Cast references to Map<String, List<QueryWeaviateObject>>
177+
.extracting(QueryWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
179178
.as("presentedBy object reference").extractingByKey("presentedBy")
180-
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
179+
.asInstanceOf(InstanceOfAssertFactories.list(QueryWeaviateObject.class))
181180

182-
.hasSize(1).extracting(WeaviateObject::properties)
181+
.hasSize(1).extracting(QueryWeaviateObject::properties)
183182
.allSatisfy(properties -> Assertions.assertThat(properties)
184183
.asInstanceOf(InstanceOfAssertFactories.map(String.class, Object.class))
185184
.containsEntry("ceo", "Harvy Mason")));

0 commit comments

Comments
 (0)