Skip to content

Commit 0fdc40d

Browse files
author
gracekarina
committed
Changes in inflector, fixing tests to support 3.0
1 parent d566e0c commit 0fdc40d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+4544
-202
lines changed

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ To add inflector via `web.xml`:
4141
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
4242
<init-param>
4343
<param-name>javax.ws.rs.Application</param-name>
44-
<param-value>SwaggerInflector</param-value>
44+
<param-value>io.swagger.oas.inflector.OpenAPIInflector</param-value>
4545
</init-param>
4646
<load-on-startup>1</load-on-startup>
4747
</servlet>
@@ -69,17 +69,17 @@ The configuration supports the following:
6969
environment: development
7070

7171
# configure your default controller package for method discovery
72-
controllerPackage: io.swagger.sample.controllers
72+
controllerPackage: io.swagger.oas.sample.controllers
7373

7474
# configure the default model package for model discovery
75-
modelPackage: io.swagger.sample.models
75+
modelPackage: io.swagger.oas.sample.models
7676

7777
# the path to the swagger definition (Note! this can be overridden with -DswaggerUrl as a system property
7878
swaggerUrl: swagger.yaml
7979

8080
# specific mappings for models, used to locate models in the `#/definitions/${model}`
8181
modelMappings:
82-
User: io.swagger.sample.models.User
82+
User: io.swagger.oas.sample.models.User
8383

8484
# HTTP response code when required parameters are missing
8585
invalidRequestCode: 400

scripts/web.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
2424
<init-param>
2525
<param-name>javax.ws.rs.Application</param-name>
26-
<param-value>io.swagger.oas.inflector.SwaggerInflector</param-value>
26+
<param-value>io.swagger.oas.inflector.OpenAPIInflector</param-value>
2727
</init-param>
2828
<load-on-startup>1</load-on-startup>
2929
</servlet>

src/main/java/io/swagger/oas/inflector/OpenAPIInflector.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import com.fasterxml.jackson.databind.module.SimpleModule;
66
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
77
import com.fasterxml.jackson.jaxrs.xml.JacksonJaxbXMLProvider;
8-
//import io.swagger.config.FilterFactory;
9-
//import io.swagger.core.filter.SwaggerSpecFilter;
8+
import io.swagger.oas.inflector.config.FilterFactory;
9+
import io.swagger.core.filter.SwaggerSpecFilter;
1010
import io.swagger.jaxrs2.SwaggerSerializers;
1111

1212
import io.swagger.oas.inflector.config.Configuration;
@@ -188,15 +188,15 @@ protected void init(Configuration configuration) {
188188
if (config.getFilterClass() != null) {
189189
if(!config.getFilterClass().isEmpty()) {
190190
try {
191-
// FilterFactory.setFilter((SwaggerSpecFilter) OpenAPIInflector.class.getClassLoader().loadClass(config.getFilterClass()).newInstance());
191+
FilterFactory.setFilter((SwaggerSpecFilter) OpenAPIInflector.class.getClassLoader().loadClass(config.getFilterClass()).newInstance());
192192
}
193193
catch (Exception e) {
194194
LOGGER.error("Unable to set filter class " + config.getFilterClass());
195195
}
196196
}
197197
}
198198
else {
199-
//FilterFactory.setFilter(new DefaultSpecFilter());
199+
FilterFactory.setFilter(new DefaultSpecFilter());
200200
}
201201

202202
if(openAPI == null) {
@@ -258,13 +258,13 @@ protected void init(Configuration configuration) {
258258
try {
259259
String clsName = inputValidator;
260260
if ("requiredFieldValidator".equalsIgnoreCase(inputValidator)) {
261-
clsName = "DefaultValidator";
261+
clsName = "io.swagger.oas.inflector.validators.DefaultValidator";
262262
}
263263
if ("numericValidator".equalsIgnoreCase(inputValidator)) {
264-
clsName = "NumericValidator";
264+
clsName = "io.swagger.oas.inflector.validators.NumericValidator";
265265
}
266266
if ("stringValidator".equalsIgnoreCase(inputValidator)) {
267-
clsName = "StringTypeValidator";
267+
clsName = "io.swagger.oas.inflector.validators.StringTypeValidator";
268268
}
269269
InputConverter.getInstance().addValidator((Validator) Class.forName(clsName).newInstance());
270270
} catch (Exception e) {
@@ -283,7 +283,7 @@ protected void init(Configuration configuration) {
283283
try {
284284
String clsName = converter;
285285
if ("defaultConverter".equalsIgnoreCase(converter)) {
286-
clsName = "DefaultConverter";
286+
clsName = "io.swagger.oas.inflector.converters.DefaultConverter";
287287
}
288288
LOGGER.debug("adding converter `" + clsName + "`");
289289
InputConverter.getInstance().addConverter((Converter) Class.forName(clsName).newInstance());

src/main/java/io/swagger/oas/inflector/config/Configuration.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,10 @@ public static Configuration read(String configLocation) throws Exception {
147147

148148
public static Configuration defaultConfiguration() {
149149
return new Configuration()
150-
.controllerPackage("io.swagger.sample.controllers")
151-
.modelPackage("io.swagger.sample.models")
150+
.controllerPackage("io.swagger.oas.sample.controllers")
151+
.modelPackage("io.swagger.oas.sample.models")
152152
.swaggerUrl("swagger.yaml")
153-
.exceptionMapper("io.swagger.inflector.utils.DefaultExceptionMapper")
153+
.exceptionMapper("io.swagger.oas.inflector.utils.DefaultExceptionMapper")
154154
.defaultValidators()
155155
.defaultConverters()
156156
.defaultProcessors();

src/main/java/io/swagger/oas/inflector/controllers/OpenAPIResourceController.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
package io.swagger.oas.inflector.controllers;
1818

19-
//import io.swagger.config.FilterFactory;
20-
//import io.swagger.core.filter.SwaggerSpecFilter;
19+
import io.swagger.oas.inflector.config.FilterFactory;
20+
import io.swagger.core.filter.SwaggerSpecFilter;
2121
import io.swagger.oas.inflector.config.OpenAPIProcessor;
2222
import io.swagger.oas.inflector.utils.VendorSpecFilter;
2323
import io.swagger.oas.models.OpenAPI;
@@ -59,8 +59,8 @@ public OpenAPIResourceController(OpenAPI openAPI, List<String> swaggerProcessors
5959

6060
@Override
6161
public Response apply(ContainerRequestContext arg0) {
62-
//SwaggerSpecFilter filter = FilterFactory.getFilter();
63-
/*if(filter != null) {
62+
SwaggerSpecFilter filter = FilterFactory.getFilter();
63+
if(filter != null) {
6464
// Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers
6565
Map<String, Cookie> cookiesvalue = arg0.getCookies();
6666
Map<String, String> cookies = new HashMap<String, String>();
@@ -71,11 +71,10 @@ public Response apply(ContainerRequestContext arg0) {
7171
}
7272

7373
MultivaluedMap<String, String> headers = arg0.getHeaders();
74-
// return Response.ok().entity(new VendorSpecFilter().filter(getOpenAPI(), filter, null, cookies, headers)).build();
75-
//added by grace to test resolvedFully Functionality TODO remove it
74+
return Response.ok().entity(new VendorSpecFilter().filter(getOpenAPI(), filter, null, cookies, headers)).build();
75+
7676
}
77-
return Response.ok().entity(getOpenAPI()).build();*/
78-
return null;
77+
return Response.ok().entity(getOpenAPI()).build();
7978
}
8079

8180
private OpenAPI getOpenAPI() {

src/main/java/io/swagger/oas/inflector/converters/DefaultConverter.java

+41-34
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
import io.swagger.oas.inflector.validators.ValidationError;
77
import io.swagger.oas.inflector.validators.ValidationMessage;
88

9+
import io.swagger.oas.models.media.ArraySchema;
910
import io.swagger.oas.models.media.Schema;
1011
import io.swagger.oas.models.parameters.Parameter;
12+
import io.swagger.oas.models.parameters.QueryParameter;
1113
import io.swagger.util.Json;
1214
import org.apache.commons.csv.CSVFormat;
1315
import org.apache.commons.csv.CSVParser;
@@ -29,40 +31,43 @@ public class DefaultConverter extends ReflectionUtils implements Converter {
2931
public DefaultConverter(){}
3032

3133
public Object convert(List<String> value, Parameter parameter, Class<?> cls, Map<String, Schema> definitions, Iterator<Converter> chain) throws ConversionException {
32-
//return coerceValue(value, parameter, cls);
33-
return null; //added by Grace to test ResolvedFully Functionallity TODO remove it afterwards
34+
35+
return coerceValue(value, parameter, cls);
36+
3437
}
3538

3639

3740

38-
/*public Object coerceValue(List<String> o, Parameter parameter, Class<?> cls) throws ConversionException {
41+
public Object coerceValue(List<String> o, Parameter parameter, Class<?> cls) throws ConversionException {
3942
if (o == null || o.size() == 0) {
4043
return null;
4144
}
4245

4346
LOGGER.debug("casting `" + o + "` to " + cls);
4447
if (List.class.equals(cls)) {
45-
if (parameter instanceof SerializableParameter) {
46-
List<Object> output = new ArrayList<Object>();
47-
SerializableParameter sp = (SerializableParameter) parameter;
48-
if (sp.getItems() != null) {
49-
Property inner = sp.getItems();
48+
if (parameter.getSchema() != null) {
49+
List<Object> output = new ArrayList<>();
50+
if (parameter.getSchema() instanceof ArraySchema) {
51+
ArraySchema arraySchema = ((ArraySchema) parameter.getSchema());
52+
Schema inner = arraySchema.getItems();
53+
5054

5155
// TODO: this does not need to be done this way, update the helper method
52-
Parameter innerParam = new QueryParameter().property(inner);
56+
Parameter innerParam = new QueryParameter();
57+
innerParam.setSchema(inner);
5358
JavaType innerClass = getTypeFromParameter(innerParam, definitions);
5459
for (String obj : o) {
5560
String[] parts = new String[0];
56-
if ("csv".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
61+
if (Parameter.StyleEnum.FORM.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj) && parameter.getExplode() == false ) {
5762
parts = obj.split(",");
5863
}
59-
if ("pipes".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
64+
if (Parameter.StyleEnum.PIPEDELIMITED.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj)) {
6065
parts = obj.split("|");
6166
}
62-
if ("ssv".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
67+
if (Parameter.StyleEnum.SPACEDELIMITED.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj)) {
6368
parts = obj.split(" ");
6469
}
65-
if ("multi".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
70+
if (Parameter.StyleEnum.FORM.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj) && parameter.getExplode() == true) {
6671
parts = new String[1];
6772
parts[0]= obj;
6873
}
@@ -76,40 +81,41 @@ public Object convert(List<String> value, Parameter parameter, Class<?> cls, Map
7681
}
7782
return output;
7883
}
79-
} else if (parameter instanceof SerializableParameter) {
84+
} else if (parameter.getSchema() != null) {
8085
TypeFactory tf = Json.mapper().getTypeFactory();
81-
SerializableParameter sp = (SerializableParameter) parameter;
82-
return cast(o.get(0), sp.getItems(), tf.constructType(cls));
86+
87+
return cast(o.get(0), parameter.getSchema(), tf.constructType(cls));
88+
8389
}
8490
return null;
8591
}
8692

87-
public Object cast(List<String> o, Parameter parameter, JavaType javaType, Map<String, Model> definitions) throws ConversionException {
93+
public Object cast(List<String> o, Parameter parameter, JavaType javaType, Map<String, Schema> definitions) throws ConversionException {
8894
if (o == null || o.size() == 0) {
8995
return null;
9096
}
9197
Class<?> cls = javaType.getRawClass();
9298

9399
LOGGER.debug("converting array `" + o + "` to `" + cls + "`");
94100
if (javaType.isArrayType()) {
95-
if (parameter instanceof SerializableParameter) {
96-
List<Object> output = new ArrayList<Object>();
97-
SerializableParameter sp = (SerializableParameter) parameter;
98-
if (sp.getItems() != null) {
99-
if (sp.getItems() instanceof ArrayProperty) {
100-
Property inner = ((ArrayProperty) sp.getItems()).getItems();
101+
if (parameter.getSchema() != null) {
102+
List<Object> output = new ArrayList<>();
103+
if (parameter.getSchema() instanceof ArraySchema) {
104+
ArraySchema arraySchema = (ArraySchema) parameter.getSchema();
105+
if (arraySchema.getItems() != null) {
106+
Schema inner = arraySchema.getItems();
101107

102108
// TODO: this does not need to be done this way, update the helper method
103-
Parameter innerParam = new QueryParameter().property(inner);
109+
Parameter innerParam = new QueryParameter().schema(inner);
104110
JavaType innerClass = getTypeFromParameter(innerParam, definitions);
105111
for (String obj : o) {
106112
String[] parts = new String[0];
107113
CSVFormat format = null;
108-
if ("csv".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
114+
if (Parameter.StyleEnum.FORM.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj) && parameter.getExplode() == false) {
109115
format = CSVFormat.DEFAULT;
110-
} else if ("pipes".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
116+
} else if (Parameter.StyleEnum.PIPEDELIMITED.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj)) {
111117
format = CSVFormat.newFormat('|').withQuote('"');
112-
} else if ("ssv".equals(sp.getCollectionFormat()) && !StringUtils.isEmpty(obj)) {
118+
} else if (Parameter.StyleEnum.SPACEDELIMITED.equals(parameter.getStyle()) && !StringUtils.isEmpty(obj)) {
113119
format = CSVFormat.newFormat(' ').withQuote('"');
114120
}
115121
if (format != null) {
@@ -133,19 +139,20 @@ public Object cast(List<String> o, Parameter parameter, JavaType javaType, Map<S
133139
output.add(ob);
134140
}
135141
}
142+
136143
}
144+
145+
return output;
137146
}
138147
}
139-
return output;
140148
}
141-
} else if (parameter instanceof SerializableParameter) {
142-
SerializableParameter sp = (SerializableParameter) parameter;
143-
return cast(o.get(0), sp.getItems(), javaType);
149+
} else if (parameter != null) {
150+
return cast(o.get(0), parameter.getSchema(), javaType);
144151
}
145152
return null;
146153
}
147154

148-
public Object cast(String o, Property property, JavaType javaType) throws ConversionException {
155+
public Object cast(String o, Schema property, JavaType javaType) throws ConversionException {
149156
if (o == null || javaType == null) {
150157
return null;
151158
}
@@ -199,5 +206,5 @@ public Object cast(String o, Property property, JavaType javaType) throws Conver
199206
.message("couldn't convert `" + o + "` to type `" + cls + "`"));
200207
}
201208
return null;
202-
}*/
203-
}
209+
}
210+
}

src/main/java/io/swagger/oas/inflector/utils/DefaultSpecFilter.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
import java.util.List;
1212
import java.util.Map;
1313

14-
public class DefaultSpecFilter /*extends AbstractSpecFilter */{
14+
public class DefaultSpecFilter extends AbstractSpecFilter {
1515

16-
/*@Override
16+
@Override
1717
public boolean isOperationAllowed(Operation operation, ApiDescription api, Map<String, List<String>> params, Map<String, String> cookies, Map<String, List<String>> headers) {
1818
if(operation.getExtensions() != null && operation.getExtensions().containsKey(Constants.X_INFLECTOR_HIDDEN)) {
1919
return false;
@@ -40,5 +40,5 @@ public boolean isPropertyAllowed(Schema model, Schema property, String propertyN
4040
@Override
4141
public boolean isRemovingUnreferencedDefinitions() {
4242
return false;
43-
}*/
43+
}
4444
}

0 commit comments

Comments
 (0)