Skip to content

Commit 2369422

Browse files
author
bnasslahsen
committed
Add support for Sort GroupedOpenApi by name. Fixes #398
1 parent 446e1f5 commit 2369422

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

Diff for: springdoc-openapi-common/src/main/java/org/springdoc/core/SwaggerUiConfigProperties.java

+31-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.net.URL;
2222
import java.util.ArrayList;
23+
import java.util.Comparator;
2324
import java.util.List;
2425
import java.util.Map;
2526
import java.util.TreeMap;
@@ -152,6 +153,8 @@ public class SwaggerUiConfigProperties {
152153

153154
private String url;
154155

156+
private Direction groupsOrder = Direction.ASC;
157+
155158
public static void addGroup(String group) {
156159
SwaggerUrl swaggerUrl = new SwaggerUrl(group);
157160
swaggerUrls.add(swaggerUrl);
@@ -372,7 +375,13 @@ public boolean isValidUrl(String url) {
372375
}
373376

374377
private void put(String urls, List<SwaggerUrl> swaggerUrls, Map<String, Object> params) {
375-
swaggerUrls = swaggerUrls.stream().filter(elt -> StringUtils.isNotEmpty(elt.getUrl())).collect(Collectors.toList());
378+
Comparator<SwaggerUrl> swaggerUrlComparator;
379+
if (groupsOrder.isAscending())
380+
swaggerUrlComparator = (h1, h2) -> h1.getName().compareTo(h2.getName());
381+
else
382+
swaggerUrlComparator = (h1, h2) -> h2.getName().compareTo(h1.getName());
383+
384+
swaggerUrls = swaggerUrls.stream().sorted(swaggerUrlComparator).filter(elt -> StringUtils.isNotEmpty(elt.getUrl())).collect(Collectors.toList());
376385
if (!CollectionUtils.isEmpty(swaggerUrls)) {
377386
params.put(urls, swaggerUrls);
378387
}
@@ -408,4 +417,25 @@ public void setName(String name) {
408417
this.name = name;
409418
}
410419
}
420+
421+
static enum Direction {
422+
ASC,
423+
DESC;
424+
425+
public boolean isAscending() {
426+
return this.equals(ASC);
427+
}
428+
429+
public boolean isDescending() {
430+
return this.equals(DESC);
431+
}
432+
}
433+
434+
public Direction getGroupsOrder() {
435+
return groupsOrder;
436+
}
437+
438+
public void setGroupsOrder(Direction groupsOrder) {
439+
this.groupsOrder = groupsOrder;
440+
}
411441
}

Diff for: springdoc-openapi-ui/src/test/java/test/org/springdoc/ui/app4/SpringDocApp4Test.java

+3
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,14 @@
2525
import org.springdoc.core.SwaggerUiConfigProperties;
2626
import test.org.springdoc.ui.AbstractSpringDocTest;
2727

28+
import org.springframework.test.context.TestPropertySource;
29+
2830
import static org.hamcrest.CoreMatchers.equalTo;
2931
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
3032
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
3133
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
3234

35+
@TestPropertySource(properties = "springdoc.swagger-ui.groups-order=DESC")
3336
public class SpringDocApp4Test extends AbstractSpringDocTest {
3437

3538
@Test

0 commit comments

Comments
 (0)