@@ -242,7 +242,7 @@ public Mono<ResponseEntity<SchemaSubjectsResponseDTO>> getSchemas(String cluster
242242
243243 List <String > subjectsToRetrieve ;
244244 boolean paginate = true ;
245- var schemaComparator = Comparator . nullsFirst ( getComparatorForSchema (orderBy ) );
245+ var schemaComparator = getComparatorForSchema (orderBy );
246246 final Comparator <SubjectWithCompatibilityLevel > comparator =
247247 sortOrder == null || !sortOrder .equals (SortOrderDTO .DESC )
248248 ? schemaComparator : schemaComparator .reversed ();
@@ -286,16 +286,34 @@ private List<SubjectWithCompatibilityLevel> paginateSchemas(
286286
287287 private Comparator <SubjectWithCompatibilityLevel > getComparatorForSchema (
288288 @ Valid SchemaColumnsToSortDTO orderBy ) {
289- var defaultComparator = Comparator .comparing (SubjectWithCompatibilityLevel ::getSubject );
289+ var defaultComparator = Comparator .comparing (
290+ SubjectWithCompatibilityLevel ::getSubject ,
291+ Comparator .nullsFirst (Comparator .naturalOrder ())
292+ );
290293 if (orderBy == null ) {
291294 return defaultComparator ;
292295 }
293296 return switch (orderBy ) {
294- case SUBJECT -> Comparator .comparing (SubjectWithCompatibilityLevel ::getSubject );
295- case ID -> Comparator .comparing (SubjectWithCompatibilityLevel ::getId );
296- case TYPE -> Comparator .comparing (SubjectWithCompatibilityLevel ::getSchemaType );
297- case COMPATIBILITY -> Comparator .comparing (SubjectWithCompatibilityLevel ::getCompatibility );
298- case VERSION -> Comparator .nullsLast (Comparator .comparing (SubjectWithCompatibilityLevel ::getVersion ));
297+ case SUBJECT -> Comparator .comparing (
298+ SubjectWithCompatibilityLevel ::getSubject ,
299+ Comparator .nullsFirst (Comparator .naturalOrder ())
300+ );
301+ case ID -> Comparator .comparing (
302+ SubjectWithCompatibilityLevel ::getId ,
303+ Comparator .nullsFirst (Integer ::compareTo )
304+ );
305+ case TYPE -> Comparator .comparing (
306+ SubjectWithCompatibilityLevel ::getSchemaType ,
307+ Comparator .nullsFirst (Comparator .naturalOrder ())
308+ );
309+ case COMPATIBILITY -> Comparator .comparing (
310+ SubjectWithCompatibilityLevel ::getCompatibility ,
311+ Comparator .nullsFirst (Comparator .naturalOrder ())
312+ );
313+ case VERSION -> Comparator .comparing (
314+ SubjectWithCompatibilityLevel ::getVersion ,
315+ Comparator .nullsFirst (Comparator .naturalOrder ())
316+ );
299317 default -> defaultComparator ;
300318 };
301319 }
0 commit comments