Skip to content

Commit aace196

Browse files
Query: remove explicitly check if store is open, rely on native (#142)
This is better: tests native throws, is consistent with Dart.
1 parent d45a5c3 commit aace196

File tree

2 files changed

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

2 files changed

+25
-17
lines changed

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

-3
Original file line numberDiff line numberDiff line change
@@ -717,9 +717,6 @@ 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-
}
723720
}
724721

725722
}

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

+25-14
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ private void assertThrowsQueryIsClosed(ThrowingRunnable runnable) {
146146
}
147147

148148
@Test
149-
public void useAfterStoreClose_fails() {
149+
public void useAfterStoreClose_failsIfUsingStore() {
150150
Query<TestEntity> query = box.query(
151151
simpleString.equal("")
152152
.and(stringObjectMap.containsKeyValue("", ""))
@@ -172,23 +172,34 @@ public void useAfterStoreClose_fails() {
172172
assertThrowsStoreIsClosed(query::remove);
173173
assertThrowsStoreIsClosed(() -> query.subscribe().observer(data -> {
174174
}));
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}));
175+
176+
// describe works, but returns no property info.
177+
assertEquals("Query for entity <deleted entity type> with 15 conditions", query.describe());
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 throws.
183+
assertThrowsEntityDeleted(() -> query.setParameter(simpleString, "value"));
184+
assertThrowsEntityDeleted(() -> query.setParameters(stringObjectMap, "a", "b"));
185+
assertThrowsEntityDeleted(() -> query.setParameter(simpleInt, 1));
186+
assertThrowsEntityDeleted(() -> query.setParameters("oneOf4", new int[]{1, 2}));
187+
assertThrowsEntityDeleted(() -> query.setParameters("oneOf8", new long[]{1, 2}));
188+
assertThrowsEntityDeleted(() -> query.setParameters("between", 1, 2));
189+
assertThrowsEntityDeleted(() -> query.setParameter(simpleInt, 1.0));
190+
assertThrowsEntityDeleted(() -> query.setParameters("between", 1.0, 2.0));
191+
assertThrowsEntityDeleted(() -> query.setParameters("oneOfS", new String[]{"a", "b"}));
192+
assertThrowsEntityDeleted(() -> query.setParameter(simpleByteArray, new byte[]{1, 2}));
187193
}
188194

189195
private void assertThrowsStoreIsClosed(ThrowingRunnable runnable) {
190196
IllegalStateException ex = assertThrows(IllegalStateException.class, runnable);
191-
assertEquals("The store associated with this query is closed. Build and use a new one.", ex.getMessage());
197+
assertEquals("Store is closed", ex.getMessage());
198+
}
199+
200+
private void assertThrowsEntityDeleted(ThrowingRunnable runnable) {
201+
IllegalStateException ex = assertThrows(IllegalStateException.class, runnable);
202+
assertEquals("Query cannot be used after entity type was deleted (e.g. store was closed)", ex.getMessage());
192203
}
193204

194205
@Test

0 commit comments

Comments
 (0)