diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d7560b1d..a8c6a849e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 7.7.0 Release + +### Breaking +- General + - When using `returnIdOnly` parameter; the ids returned now use 'string' rather than 'number' JSON data type, to avoid rounding. Fixes #367. + ## 7.6.0 Release (Jan 2022) Minor release with bug fixes and improvements. @@ -28,7 +34,6 @@ Minor release with bug fixes and improvements. - Authoring - MAINT-1842 Fix false warnings when using semantic tag pattern. - ## 7.5.4 Release (Dec 2021) Maintenance release with new features in FHIR and many improvements and fixes. diff --git a/src/main/java/org/snomed/snowstorm/rest/ConceptController.java b/src/main/java/org/snomed/snowstorm/rest/ConceptController.java index d37c29b45..ca319f36d 100644 --- a/src/main/java/org/snomed/snowstorm/rest/ConceptController.java +++ b/src/main/java/org/snomed/snowstorm/rest/ConceptController.java @@ -23,6 +23,8 @@ import org.snomed.snowstorm.core.pojo.BranchTimepoint; import org.snomed.snowstorm.core.pojo.LanguageDialect; import org.snomed.snowstorm.core.util.PageHelper; +import org.snomed.snowstorm.core.util.SearchAfterPage; +import org.snomed.snowstorm.core.util.SearchAfterPageImpl; import org.snomed.snowstorm.core.util.TimerUtil; import org.snomed.snowstorm.ecl.validation.ECLValidator; import org.snomed.snowstorm.rest.converter.SearchAfterHelper; @@ -46,6 +48,7 @@ import javax.validation.Valid; import java.util.*; +import java.util.stream.Collectors; import static io.kaicode.elasticvc.api.ComponentService.LARGE_PAGE; import static org.apache.commons.lang3.StringUtils.isNotBlank; @@ -181,7 +184,10 @@ public ItemsPage findConcepts( pageRequest = getPageRequestWithSort(offset, limit, searchAfter, Sort.sort(QueryConcept.class).by(QueryConcept::getConceptIdL).descending()); } if (returnIdOnly) { - return new ItemsPage<>(queryService.searchForIds(queryBuilder, branch, pageRequest)); + SearchAfterPage longsPage = queryService.searchForIds(queryBuilder, branch, pageRequest); + SearchAfterPageImpl stringPage = new SearchAfterPageImpl<>(longsPage.stream().map(Object::toString).collect(Collectors.toList()), + longsPage.getPageable(), longsPage.getTotalElements(), longsPage.getSearchAfter()); + return new ItemsPage<>(stringPage); } else { return new ItemsPage<>(queryService.search(queryBuilder, branch, pageRequest)); }