Skip to content

Commit 8ece255

Browse files
committed
Duplicate GroupConfigs in SpringDocConfigProperties. Fixes #2518.
1 parent 2da5a96 commit 8ece255

File tree

2 files changed

+81
-3
lines changed

2 files changed

+81
-3
lines changed

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/properties/SpringDocConfigProperties.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
package org.springdoc.core.properties;
2626

2727
import java.util.ArrayList;
28+
import java.util.HashSet;
2829
import java.util.List;
30+
import java.util.Objects;
31+
import java.util.Set;
2932

3033
import io.swagger.v3.oas.models.SpecVersion;
3134
import org.springdoc.core.configuration.SpringDocConfiguration;
@@ -112,7 +115,7 @@ public class SpringDocConfigProperties {
112115
/**
113116
* The Group configs.
114117
*/
115-
private List<GroupConfig> groupConfigs = new ArrayList<>();
118+
private Set<GroupConfig> groupConfigs = new HashSet<>();
116119

117120
/**
118121
* The Auto tag classes.
@@ -781,12 +784,13 @@ public boolean isCacheDisabled() {
781784
return cache.isDisabled();
782785
}
783786

787+
784788
/**
785789
* Gets group configs.
786790
*
787791
* @return the group configs
788792
*/
789-
public List<GroupConfig> getGroupConfigs() {
793+
public Set<GroupConfig> getGroupConfigs() {
790794
return groupConfigs;
791795
}
792796

@@ -795,7 +799,7 @@ public List<GroupConfig> getGroupConfigs() {
795799
*
796800
* @param groupConfigs the group configs
797801
*/
798-
public void setGroupConfigs(List<GroupConfig> groupConfigs) {
802+
public void setGroupConfigs(Set<GroupConfig> groupConfigs) {
799803
this.groupConfigs = groupConfigs;
800804
}
801805

@@ -1703,6 +1707,19 @@ public String getDisplayName() {
17031707
public void setDisplayName(String displayName) {
17041708
this.displayName = displayName;
17051709
}
1710+
1711+
@Override
1712+
public boolean equals(Object o) {
1713+
if (this == o) return true;
1714+
if (o == null || getClass() != o.getClass()) return false;
1715+
GroupConfig that = (GroupConfig) o;
1716+
return Objects.equals(group, that.group);
1717+
}
1718+
1719+
@Override
1720+
public int hashCode() {
1721+
return Objects.hash(group);
1722+
}
17061723
}
17071724

17081725

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
*
3+
* * Copyright 2019-2023 the original author or authors.
4+
* *
5+
* * Licensed under the Apache License, Version 2.0 (the "License");
6+
* * you may not use this file except in compliance with the License.
7+
* * You may obtain a copy of the License at
8+
* *
9+
* * https://www.apache.org/licenses/LICENSE-2.0
10+
* *
11+
* * Unless required by applicable law or agreed to in writing, software
12+
* * distributed under the License is distributed on an "AS IS" BASIS,
13+
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* * See the License for the specific language governing permissions and
15+
* * limitations under the License.
16+
*
17+
*/
18+
19+
package test.org.springdoc.api.v30.app214;
20+
21+
import org.junit.jupiter.api.Test;
22+
import org.springdoc.core.customizers.SpecPropertiesCustomizer;
23+
import org.springdoc.core.properties.SpringDocConfigProperties;
24+
import org.springdoc.core.properties.SpringDocConfigProperties.GroupConfig;
25+
import test.org.springdoc.api.AbstractCommonTest;
26+
27+
import org.springframework.beans.factory.annotation.Autowired;
28+
import org.springframework.boot.autoconfigure.SpringBootApplication;
29+
import org.springframework.boot.test.context.SpringBootTest;
30+
import org.springframework.test.context.TestPropertySource;
31+
32+
import static org.junit.jupiter.api.Assertions.assertEquals;
33+
34+
/**
35+
* <p>
36+
* A test for {@link SpecPropertiesCustomizer}
37+
*/
38+
@SpringBootTest
39+
@TestPropertySource(properties = { "springdoc.group-configs[0].group=Group0",
40+
"springdoc.group-configs[0].packages-to-scan=com.my-package",
41+
"springdoc.group-configs[1].group=Group1",
42+
"springdoc.group-configs[1].packages-to-scan=com.my-package",
43+
"springdoc.group-configs[2].group=Group2",
44+
"springdoc.group-configs[2].packages-to-scan=com.my-package",
45+
"springdoc.group-configs[3].group=Group3",
46+
"springdoc.group-configs[3].packages-to-scan=com.my-package" })
47+
48+
public class SpringDocApp214Test extends AbstractCommonTest {
49+
50+
@Autowired
51+
private SpringDocConfigProperties springDocConfigProperties;
52+
53+
@SpringBootApplication
54+
static class SpringDocTestApp {}
55+
56+
@Test
57+
public void testApp() throws Exception {
58+
assertEquals(4, springDocConfigProperties.getGroupConfigs().stream().map(GroupConfig::getGroup).toList().size());
59+
}
60+
61+
}

0 commit comments

Comments
 (0)