Skip to content

Commit d45a5c3

Browse files
Query: explicitly check if store is open (#142)
1 parent 461a9b3 commit d45a5c3

File tree

2 files changed

+17
-23
lines changed
  • objectbox-java/src/main/java/io/objectbox/query
  • tests/objectbox-java-test/src/test/java/io/objectbox/query

2 files changed

+17
-23
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,9 @@ private void checkOpen() {
717717
if (handle == 0) {
718718
throw new IllegalStateException("This query is closed. Build and use a new one.");
719719
}
720+
if (store.isClosed()) {
721+
throw new IllegalStateException("The store associated with this query is closed. Build and use a new one.");
722+
}
720723
}
721724

722725
}

tests/objectbox-java-test/src/test/java/io/objectbox/query/QueryTest.java

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import java.util.Arrays;
3737
import java.util.Date;
3838
import java.util.List;
39-
import java.util.concurrent.RejectedExecutionException;
4039

4140
import static io.objectbox.TestEntity_.simpleBoolean;
4241
import static io.objectbox.TestEntity_.simpleByteArray;
@@ -147,7 +146,7 @@ private void assertThrowsQueryIsClosed(ThrowingRunnable runnable) {
147146
}
148147

149148
@Test
150-
public void useAfterStoreClose_failsIfUsingStore() {
149+
public void useAfterStoreClose_fails() {
151150
Query<TestEntity> query = box.query(
152151
simpleString.equal("")
153152
.and(stringObjectMap.containsKeyValue("", ""))
@@ -171,33 +170,25 @@ public void useAfterStoreClose_failsIfUsingStore() {
171170
assertThrowsStoreIsClosed(query::findLazyCached);
172171
assertThrowsStoreIsClosed(query::findUnique);
173172
assertThrowsStoreIsClosed(query::remove);
174-
175-
// describe works, but returns no property info.
176-
assertEquals("Query for entity <deleted entity type> with 15 conditions", query.describe());
177-
178-
// describeParameters does not work.
179-
IllegalStateException exc = assertThrows(IllegalStateException.class, query::describeParameters);
180-
assertEquals("Query cannot be used after entity type was deleted (e.g. store was closed)", exc.getMessage());
181-
182-
// setParameter continues to work.
183-
query.setParameter(simpleString, "value");
184-
query.setParameters(stringObjectMap, "a", "b");
185-
query.setParameter(simpleInt, 1);
186-
query.setParameters("oneOf4", new int[]{1, 2});
187-
query.setParameters("oneOf8", new long[]{1, 2});
188-
query.setParameters("between", 1, 2);
189-
query.setParameter(simpleInt, 1.0);
190-
query.setParameters("between", 1.0, 2.0);
191-
query.setParameters("oneOfS", new String[]{"a", "b"});
192-
query.setParameter(simpleByteArray, new byte[]{1, 2});
193-
194173
assertThrowsStoreIsClosed(() -> query.subscribe().observer(data -> {
195174
}));
175+
assertThrowsStoreIsClosed(query::describe);
176+
assertThrowsStoreIsClosed(query::describeParameters);
177+
assertThrowsStoreIsClosed(() -> query.setParameter(simpleString, "value"));
178+
assertThrowsStoreIsClosed(() -> query.setParameters(stringObjectMap, "a", "b"));
179+
assertThrowsStoreIsClosed(() -> query.setParameter(simpleInt, 1));
180+
assertThrowsStoreIsClosed(() -> query.setParameters("oneOf4", new int[]{1, 2}));
181+
assertThrowsStoreIsClosed(() -> query.setParameters("oneOf8", new long[]{1, 2}));
182+
assertThrowsStoreIsClosed(() -> query.setParameters("between", 1, 2));
183+
assertThrowsStoreIsClosed(() -> query.setParameter(simpleInt, 1.0));
184+
assertThrowsStoreIsClosed(() -> query.setParameters("between", 1.0, 2.0));
185+
assertThrowsStoreIsClosed(() -> query.setParameters("oneOfS", new String[]{"a", "b"}));
186+
assertThrowsStoreIsClosed(() -> query.setParameter(simpleByteArray, new byte[]{1, 2}));
196187
}
197188

198189
private void assertThrowsStoreIsClosed(ThrowingRunnable runnable) {
199190
IllegalStateException ex = assertThrows(IllegalStateException.class, runnable);
200-
assertEquals("Store is closed", ex.getMessage());
191+
assertEquals("The store associated with this query is closed. Build and use a new one.", ex.getMessage());
201192
}
202193

203194
@Test

0 commit comments

Comments
 (0)