Skip to content

Commit 238ac70

Browse files
committed
NPE fix
1 parent 1086a95 commit 238ac70

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

objectbox-java/src/main/java/io/objectbox/query/Query.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -290,23 +290,23 @@ void resolveEagerRelations(List entities) {
290290
}
291291

292292
/** Note: no null check on eagerRelations! */
293-
void resolveEagerRelationForNonNullEagerRelations(Object entity, int entityIndex) {
293+
void resolveEagerRelationForNonNullEagerRelations(@Nonnull Object entity, int entityIndex) {
294294
for (EagerRelation eagerRelation : eagerRelations) {
295295
if (eagerRelation.limit == 0 || entityIndex < eagerRelation.limit) {
296296
resolveEagerRelation(entity, eagerRelation);
297297
}
298298
}
299299
}
300300

301-
void resolveEagerRelation(Object entity) {
302-
if (eagerRelations != null) {
301+
void resolveEagerRelation(@Nullable Object entity) {
302+
if (eagerRelations != null && entity != null) {
303303
for (EagerRelation eagerRelation : eagerRelations) {
304304
resolveEagerRelation(entity, eagerRelation);
305305
}
306306
}
307307
}
308308

309-
void resolveEagerRelation(Object entity, EagerRelation eagerRelation) {
309+
void resolveEagerRelation(@Nonnull Object entity, EagerRelation eagerRelation) {
310310
if (eagerRelations != null) {
311311
RelationInfo relationInfo = eagerRelation.relationInfo;
312312
if (relationInfo.toOneGetter != null) {

tests/objectbox-java-test/src/main/java/io/objectbox/relation/RelationEagerTest.java

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

2121
import java.util.List;
2222

23+
import io.objectbox.query.Query;
2324
import io.objectbox.query.QueryConsumer;
2425

2526

@@ -77,6 +78,19 @@ public void accept(Customer data) {
7778
assertTrue(((ToMany) customer.getOrders()).isResolved());
7879
}
7980

81+
@Test
82+
public void testEagerToMany_NoResult() {
83+
Query<Customer> query = customerBox.query().eager(Customer_.orders).build();
84+
query.find();
85+
query.findFirst();
86+
query.forEach(new QueryConsumer<Customer>() {
87+
@Override
88+
public void accept(Customer data) {
89+
90+
}
91+
});
92+
}
93+
8094
@Test
8195
public void testEagerToSingle() {
8296
Customer customer = putCustomer();
@@ -122,4 +136,18 @@ public void accept(Customer data) {
122136
assertTrue(order.customer__toOne.isResolved());
123137
}
124138

139+
@Test
140+
public void testEagerToSingle_NoResult() {
141+
Query<Order> query = orderBox.query().eager(Order_.customer).build();
142+
query.find();
143+
query.findFirst();
144+
query.forEach(new QueryConsumer<Order>() {
145+
@Override
146+
public void accept(Order data) {
147+
148+
}
149+
});
150+
}
151+
152+
125153
}

0 commit comments

Comments
 (0)