Skip to content

Commit 2344ce4

Browse files
authored
Merge pull request #4612 from swagger-api/SWG-9981-Fix-explode-bug
Fix isExplode method and explode tests
2 parents 78a11e9 + 914564f commit 2344ce4

File tree

9 files changed

+20
-2
lines changed

9 files changed

+20
-2
lines changed

modules/swagger-core/src/main/java/io/swagger/v3/core/util/AnnotationsUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1411,7 +1411,7 @@ public static void setHeaderExplode (Header header, io.swagger.v3.oas.annotation
14111411
}
14121412

14131413
private static boolean isHeaderExplodable(io.swagger.v3.oas.annotations.headers.Header h, Header header) {
1414-
io.swagger.v3.oas.annotations.media.Schema schema = h.schema();
1414+
io.swagger.v3.oas.annotations.media.Schema schema = hasArrayAnnotation(h.array()) ? h.array().schema() : h.schema();
14151415
boolean explode = true;
14161416
if (schema != null) {
14171417
Class implementation = schema.implementation();

modules/swagger-core/src/main/java/io/swagger/v3/core/util/ParameterProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public static void setParameterExplode(Parameter parameter, io.swagger.v3.oas.an
234234
}
235235

236236
private static boolean isExplodable(io.swagger.v3.oas.annotations.Parameter p, Parameter parameter) {
237-
io.swagger.v3.oas.annotations.media.Schema schema = p.schema();
237+
io.swagger.v3.oas.annotations.media.Schema schema = AnnotationsUtils.hasArrayAnnotation(p.array()) ? p.array().schema() : p.schema();
238238
boolean explode = true;
239239
if ("form".equals(parameter.getIn())){
240240
return true;

modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/operations/AnnotatedOperationMethodTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,7 @@ public void testOperationWithResponseMultipleHeadersImplementationSchema() {
582582
" Rate-Limit-Limit:\n" +
583583
" description: The number of allowed requests in the current period\n" +
584584
" style: simple\n" +
585+
" explode: true\n" +
585586
" schema:\n" +
586587
" maxItems: 10\n" +
587588
" minItems: 1\n" +

modules/swagger-jaxrs2/src/test/java/io/swagger/v3/jaxrs2/annotations/parameters/ParametersTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ public void testParameters() {
8888
" - name: arrayParameter\n" +
8989
" in: query\n" +
9090
" required: true\n" +
91+
" explode: true\n" +
9192
" content:\n" +
9293
" application/json:\n" +
9394
" schema:\n" +
@@ -102,6 +103,7 @@ public void testParameters() {
102103
" - name: arrayParameterImplementation\n" +
103104
" in: query\n" +
104105
" required: true\n" +
106+
" explode: true\n" +
105107
" schema:\n" +
106108
" maxItems: 10\n" +
107109
" minItems: 1\n" +
@@ -148,6 +150,7 @@ public void testArraySchemaParameters() {
148150
" - name: arrayParameter\n" +
149151
" in: query\n" +
150152
" required: true\n" +
153+
" explode: true\n" +
151154
" schema:\n" +
152155
" maxItems: 10\n" +
153156
" minItems: 1\n" +
@@ -220,6 +223,7 @@ public void testRepeatableParameters() {
220223
" - name: arrayParameter\n" +
221224
" in: query\n" +
222225
" required: true\n" +
226+
" explode: true\n" +
223227
" content:\n" +
224228
" application/json:\n" +
225229
" schema:\n" +
@@ -234,6 +238,7 @@ public void testRepeatableParameters() {
234238
" - name: arrayParameterImplementation\n" +
235239
" in: query\n" +
236240
" required: true\n" +
241+
" explode: true\n" +
237242
" schema:\n" +
238243
" maxItems: 10\n" +
239244
" minItems: 1\n" +

modules/swagger-jaxrs2/src/test/resources/petstore/FullPetResource.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,7 @@ paths:
631631
- name: arrayParameter
632632
in: query
633633
required: true
634+
explode: true
634635
schema:
635636
maxItems: 10
636637
minItems: 1
@@ -787,6 +788,7 @@ paths:
787788
- name: arrayParameter
788789
in: query
789790
required: true
791+
explode: true
790792
content:
791793
application/json:
792794
schema:
@@ -801,6 +803,7 @@ paths:
801803
- name: arrayParameterImplementation
802804
in: query
803805
required: true
806+
explode: true
804807
schema:
805808
maxItems: 10
806809
minItems: 1
@@ -868,6 +871,7 @@ paths:
868871
- name: arrayParameter
869872
in: query
870873
required: true
874+
explode: true
871875
content:
872876
application/json:
873877
schema:
@@ -882,6 +886,7 @@ paths:
882886
- name: arrayParameterImplementation
883887
in: query
884888
required: true
889+
explode: true
885890
schema:
886891
maxItems: 10
887892
minItems: 1

modules/swagger-jaxrs2/src/test/resources/petstore/parameters/ArraySchemaResource.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ paths:
1010
- name: arrayParameter
1111
in: query
1212
required: true
13+
explode: true
1314
schema:
1415
maxItems: 10
1516
minItems: 1

modules/swagger-jaxrs2/src/test/resources/petstore/parameters/Parameters31Resource.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ paths:
4444
- name: arrayParameter
4545
in: query
4646
required: true
47+
explode: true
4748
content:
4849
application/json:
4950
schema:
@@ -58,6 +59,7 @@ paths:
5859
- name: arrayParameterImplementation
5960
in: query
6061
required: true
62+
explode: true
6163
schema:
6264
type: array
6365
contains: {}

modules/swagger-jaxrs2/src/test/resources/petstore/parameters/ParametersResource.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ paths:
4242
- name: arrayParameter
4343
in: query
4444
required: true
45+
explode: true
4546
content:
4647
application/json:
4748
schema:
@@ -56,6 +57,7 @@ paths:
5657
- name: arrayParameterImplementation
5758
in: query
5859
required: true
60+
explode: true
5961
schema:
6062
maxItems: 10
6163
minItems: 1

modules/swagger-jaxrs2/src/test/resources/petstore/parameters/RepeatableParametersResource.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ paths:
4242
- name: arrayParameter
4343
in: query
4444
required: true
45+
explode: true
4546
content:
4647
application/json:
4748
schema:
@@ -56,6 +57,7 @@ paths:
5657
- name: arrayParameterImplementation
5758
in: query
5859
required: true
60+
explode: true
5961
schema:
6062
maxItems: 10
6163
minItems: 1

0 commit comments

Comments
 (0)