Skip to content

Commit 832d750

Browse files
author
Olha Yelisieieva
committed
Issue-19: Solve MR comments
1 parent 5ee92ca commit 832d750

File tree

6 files changed

+58
-32
lines changed

6 files changed

+58
-32
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.github.sylvainlaurent.maven.swaggervalidator.semantic;
2+
3+
public interface OperationConstants {
4+
String OPERATION_TYPE_GET = "get";
5+
String OPERATION_TYPE_DELETE = "delete";
6+
String OPERATION_PARAMETRES_BODY = "body";
7+
String OPERATION_PARAMETRES_FORM = "formData";
8+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator;
2+
3+
import static org.apache.commons.lang3.reflect.FieldUtils.readDeclaredStaticField;
4+
5+
import java.util.Arrays;
6+
import java.util.HashSet;
7+
import java.util.Map;
8+
import java.util.Set;
9+
import java.util.stream.Collectors;
10+
11+
import io.swagger.models.Swagger;
12+
13+
public class MediaType {
14+
private static final Set<String> DEFINED_MEDIA_TYPES = getDefinedMimeTypes();
15+
16+
@SuppressWarnings("unchecked")
17+
private static Set<String> getDefinedMimeTypes() {
18+
Set<String> set;
19+
try {
20+
set = ((Map<com.google.common.net.MediaType, com.google.common.net.MediaType>) readDeclaredStaticField(
21+
com.google.common.net.MediaType.class, "KNOWN_TYPES", true)).keySet().stream()
22+
.map(x -> x.withoutParameters().toString()).collect(Collectors.toSet());
23+
} catch (IllegalAccessException e) {
24+
set = new HashSet<>();
25+
}
26+
return set;
27+
}
28+
29+
public static Set<String> getMimeTypes() {
30+
return DEFINED_MEDIA_TYPES;
31+
}
32+
33+
public static void addCustomMimeTypes(String[] customMimeTypes) {
34+
if (customMimeTypes != null) {
35+
DEFINED_MEDIA_TYPES.addAll(Arrays.asList(customMimeTypes));
36+
}
37+
}
38+
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/validator/ValidationContext.java

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,23 @@
44
import static org.apache.commons.lang3.reflect.FieldUtils.readDeclaredStaticField;
55

66
import java.util.ArrayList;
7+
import java.util.Arrays;
78
import java.util.HashMap;
89
import java.util.HashSet;
910
import java.util.List;
1011
import java.util.Map;
1112
import java.util.Set;
12-
import java.util.stream.Collectors;
1313

1414
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.VisitableParameterFactory;
1515
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableParameter;
1616
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.path.PathWrapper;
17-
import com.google.common.net.MediaType;
18-
import edu.emory.mathcs.backport.java.util.Arrays;
1917
import io.swagger.models.Model;
2018
import io.swagger.models.Path;
2119
import io.swagger.models.Swagger;
2220
import io.swagger.models.auth.SecuritySchemeDefinition;
2321
import io.swagger.models.parameters.Parameter;
2422

2523
public class ValidationContext {
26-
private final Set<String> definedMimeTypes;
2724
protected List<PathWrapper> paths = new ArrayList<>();
2825
protected Map<String, Model> definitions = new HashMap<>();
2926
private Swagger swagger;
@@ -36,7 +33,6 @@ public ValidationContext(Swagger swagger) {
3633
this.swagger = swagger;
3734
setPaths(emptyIfNull(swagger.getPaths()));
3835
setDefinitions(emptyIfNull(swagger.getDefinitions()));
39-
definedMimeTypes = getDefinedMimeTypes();
4036
}
4137

4238
public Swagger getSwagger() {
@@ -72,26 +68,4 @@ public Map<String, VisitableParameter<? extends Parameter>> getParameters() {
7268
public Map<String, SecuritySchemeDefinition> getSecurityDefinitions() {
7369
return swagger.getSecurityDefinitions();
7470
}
75-
76-
@SuppressWarnings("unchecked")
77-
private Set<String> getDefinedMimeTypes() {
78-
Set<String> set;
79-
try {
80-
set = ((Map<MediaType, MediaType>) readDeclaredStaticField(MediaType.class, "KNOWN_TYPES", true)).keySet().stream()
81-
.map(x -> x.withoutParameters().toString()).collect(Collectors.toSet());
82-
} catch (IllegalAccessException e) {
83-
set = new HashSet<>();
84-
}
85-
return set;
86-
}
87-
88-
public Set<String> getMimeTypes() {
89-
return definedMimeTypes;
90-
}
91-
92-
public void addCustomMimeTypes(String[] customMimeTypes) {
93-
if (customMimeTypes != null) {
94-
definedMimeTypes.addAll(Arrays.asList(customMimeTypes));
95-
}
96-
}
9771
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/validator/definition/InheritanceChainPropertiesValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,4 +175,4 @@ List<String> getRequiredProperties() {
175175
return requiredProperties;
176176
}
177177
}
178-
}
178+
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/validator/path/MimeTypeValidator.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.path;
22

3+
import static com.github.sylvainlaurent.maven.swaggervalidator.semantic.OperationConstants.OPERATION_PARAMETRES_BODY;
4+
import static com.github.sylvainlaurent.maven.swaggervalidator.semantic.OperationConstants.OPERATION_PARAMETRES_FORM;
5+
import static com.github.sylvainlaurent.maven.swaggervalidator.semantic.OperationConstants.OPERATION_TYPE_DELETE;
6+
import static com.github.sylvainlaurent.maven.swaggervalidator.semantic.OperationConstants.OPERATION_TYPE_GET;
37
import static org.apache.commons.collections4.ListUtils.emptyIfNull;
48

59
import java.util.ArrayList;
610
import java.util.Collection;
711
import java.util.List;
812

913
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.path.OperationWrapper;
14+
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.MediaType;
1015
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.error.SemanticError;
1116

1217
public class MimeTypeValidator extends PathValidatorTemplate {
@@ -24,8 +29,8 @@ private void validateConsumes(OperationWrapper operation) {
2429
if (consumes == null) {
2530
consumes = new ArrayList<>(emptyIfNull(context.getSwagger().getConsumes()));
2631
}
27-
if ("get".equals(operationName) || "delete".equals(operationName) ||
28-
(operation.getParameters("body").isEmpty() && operation.getParameters("formData").isEmpty())) {
32+
if (OPERATION_TYPE_GET.equals(operationName) || OPERATION_TYPE_DELETE.equals(operationName) ||
33+
(operation.getParameters(OPERATION_PARAMETRES_BODY).isEmpty() && operation.getParameters(OPERATION_PARAMETRES_FORM).isEmpty())) {
2934
if (consumes == null || !consumes.isEmpty()) {
3035
validationErrors
3136
.add(new SemanticError(holder.getCurrentPath(), "'consumes' must be equal to 'consumes: []' "));
@@ -68,7 +73,7 @@ private void validateMimeTypesInCollection(Collection<String> collection, String
6873
collection.stream().filter(x ->
6974
{
7075
try {
71-
return !(context.getMimeTypes().contains(x));
76+
return !(MediaType.getMimeTypes().contains(x));
7277
} catch (Exception e) {
7378
return true;
7479
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/service/SemanticValidationService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableModel;
1212
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.path.OperationWrapper;
13+
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.MediaType;
1314
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.SwaggerValidator;
1415
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.ValidationContext;
1516
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.validator.definition.InheritanceChainPropertiesValidator;
@@ -58,7 +59,7 @@ public SemanticValidationService(Swagger swagger, String validatorsPackageName,
5859
if (pathValidatorsPackageName != null) {
5960
validators.addAll(Util.createInstances(pathValidatorsPackageName, SwaggerPathValidator.class));
6061
}
61-
context.addCustomMimeTypes(customMimeTypes);
62+
MediaType.addCustomMimeTypes(customMimeTypes);
6263
}
6364

6465
public List<SemanticError> validate() {

0 commit comments

Comments
 (0)