Skip to content

Commit 7de3a3b

Browse files
CIRCSTORE-612 Handle empty CQL set (==()) in queries
1 parent de95024 commit 7de3a3b

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

src/main/java/org/folio/service/request/RequestService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,19 @@ public RequestService(Context vertxContext, Map<String, String> okapiHeaders) {
6363
}
6464

6565
public Future<Response> findByQuery(String query, int offset, int limit) {
66+
if (containsEmptyCqlSet(query)) {
67+
log.info("findByQuery:: query contains empty CQL set, returning empty result: {}", query);
68+
return succeededFuture(RequestStorage.GetRequestStorageRequestsResponse
69+
.respond200WithApplicationJson(new Requests().withRequests(List.of()).withTotalRecords(0)));
70+
}
6671
return PgUtil.get(REQUEST_TABLE, REQUEST_CLASS, Requests.class, query, offset, limit, okapiHeaders, vertxContext,
6772
RequestStorage.GetRequestStorageRequestsResponse.class);
6873
}
6974

75+
private static boolean containsEmptyCqlSet(String query) {
76+
return query != null && query.contains("==()");
77+
}
78+
7079
public Future<Response> findById(String requestId) {
7180
return PgUtil.getById(REQUEST_TABLE, REQUEST_CLASS, requestId, okapiHeaders, vertxContext,
7281
RequestStorage.GetRequestStorageRequestsByRequestIdResponse.class);

src/test/java/org/folio/rest/api/RequestsApiTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2174,4 +2174,23 @@ private static URL cancelReasonURL(String subPath)
21742174
return StorageTestSuite.storageUrl(
21752175
CANCEL_REASON_URL + subPath);
21762176
}
2177+
2178+
@Test
2179+
void shouldReturnEmptyResultWhenQueryContainsEmptyCqlSet()
2180+
throws MalformedURLException, InterruptedException, ExecutionException, TimeoutException {
2181+
2182+
CompletableFuture<JsonResponse> getCompleted = new CompletableFuture<>();
2183+
2184+
client.get(requestStorageUrl() + "?query=itemId==()&limit=10000",
2185+
TENANT_ID, ResponseHandler.json(getCompleted));
2186+
2187+
JsonResponse response = getCompleted.get(5, TimeUnit.SECONDS);
2188+
2189+
assertThat(String.format("Expected 200 OK but got: %s", response.getBody()),
2190+
response.getStatusCode(), is(HttpURLConnection.HTTP_OK));
2191+
2192+
JsonObject body = response.getJson();
2193+
assertThat(body.getJsonArray("requests").size(), is(0));
2194+
assertThat(body.getInteger("totalRecords"), is(0));
2195+
}
21772196
}

0 commit comments

Comments
 (0)