Skip to content

Commit c498603

Browse files
committed
fix(openapi): fix sort criteria parameter
1 parent 84e50d8 commit c498603

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

metadata-service/openapi-servlet/src/main/java/io/datahubproject/openapi/controller/GenericEntitiesController.java

+14-6
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import java.util.stream.Collectors;
5858
import javax.annotation.Nonnull;
5959
import javax.annotation.Nullable;
60+
import org.apache.commons.lang.StringUtils;
6061
import org.springframework.beans.factory.annotation.Autowired;
6162
import org.springframework.beans.factory.annotation.Qualifier;
6263
import org.springframework.http.MediaType;
@@ -190,7 +191,8 @@ public ResponseEntity<S> getEntities(
190191
@RequestParam(value = "count", defaultValue = "10") Integer count,
191192
@RequestParam(value = "query", defaultValue = "*") String query,
192193
@RequestParam(value = "scrollId", required = false) String scrollId,
193-
@RequestParam(value = "sort", required = false, defaultValue = "urn") String sortField,
194+
@RequestParam(value = "sort", required = false, defaultValue = "urn") @Deprecated
195+
String sortField,
194196
@RequestParam(value = "sortCriteria", required = false) List<String> sortFields,
195197
@RequestParam(value = "sortOrder", required = false, defaultValue = "ASCENDING")
196198
String sortOrder,
@@ -222,14 +224,20 @@ public ResponseEntity<S> getEntities(
222224
authentication.getActor().toUrnStr() + " is unauthorized to " + READ + " entities.");
223225
}
224226

227+
SortOrder finalSortOrder =
228+
SortOrder.valueOf(Optional.ofNullable(sortOrder).orElse("ASCENDING"));
229+
225230
List<SortCriterion> sortCriteria;
226-
if (!CollectionUtils.isEmpty(sortFields)) {
231+
if (!CollectionUtils.isEmpty(sortFields)
232+
&& sortFields.stream().anyMatch(StringUtils::isNotBlank)) {
227233
sortCriteria = new ArrayList<>();
228-
sortFields.forEach(
229-
field -> sortCriteria.add(SearchUtil.sortBy(field, SortOrder.valueOf(sortOrder))));
234+
sortFields.stream()
235+
.filter(StringUtils::isNotBlank)
236+
.forEach(field -> sortCriteria.add(SearchUtil.sortBy(field, finalSortOrder)));
237+
} else if (StringUtils.isNotBlank(sortField)) {
238+
sortCriteria = Collections.singletonList(SearchUtil.sortBy(sortField, finalSortOrder));
230239
} else {
231-
sortCriteria =
232-
Collections.singletonList(SearchUtil.sortBy(sortField, SortOrder.valueOf(sortOrder)));
240+
sortCriteria = Collections.singletonList(SearchUtil.sortBy("urn", finalSortOrder));
233241
}
234242

235243
ScrollResult result =

metadata-service/openapi-servlet/src/main/java/io/datahubproject/openapi/v3/OpenAPIV3Generator.java

+2-6
Original file line numberDiff line numberDiff line change
@@ -570,19 +570,15 @@ private static void addExtraParameters(final Components components) {
570570
"SortBy" + MODEL_VERSION,
571571
new Parameter()
572572
.in(NAME_QUERY)
573-
.name("sort")
573+
.name("sortCriteria")
574574
.explode(true)
575575
.description("Sort fields for pagination.")
576576
.example(PROPERTY_URN)
577577
.schema(
578578
new Schema()
579579
.type(TYPE_ARRAY)
580580
._default(List.of(PROPERTY_URN))
581-
.items(
582-
new Schema<>()
583-
.type(TYPE_STRING)
584-
._enum(List.of(PROPERTY_URN))
585-
._default(PROPERTY_URN))));
581+
.items(new Schema<>().type(TYPE_STRING)._default(PROPERTY_URN))));
586582
components.addParameters(
587583
"SortOrder" + MODEL_VERSION,
588584
new Parameter()

0 commit comments

Comments
 (0)