Skip to content

Commit b21c8f5

Browse files
cleanup: introduced missing generics + using java8 default methods
1 parent 8b4ae2e commit b21c8f5

36 files changed

+321
-494
lines changed
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic;
22

3+
import java.util.List;
4+
35
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableParameter;
46
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.path.OperationWrapper;
57
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.path.PathWrapper;
68
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.path.ResponseWrapper;
79

8-
import java.util.List;
10+
import io.swagger.models.parameters.Parameter;
911

1012
public interface PathVisitor {
1113
void visit(List<PathWrapper> paths);
14+
1215
void visit(PathWrapper path);
16+
1317
void visit(OperationWrapper operation);
18+
1419
void visit(ResponseWrapper response);
15-
void visit(VisitableParameter parameter);
20+
21+
<T extends Parameter> void visit(VisitableParameter<T> parameter);
1622
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/VisitableParameterFactory.java

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

3+
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableParameter;
34
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.parameter.BodyParameterWrapper;
45
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.parameter.CookieParameterWrapper;
56
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.parameter.FormParameterWrapper;
@@ -8,6 +9,7 @@
89
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.parameter.PathParameterWraper;
910
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.parameter.QueryParameterWrapper;
1011
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.parameter.RefParameterWrapper;
12+
1113
import io.swagger.models.parameters.BodyParameter;
1214
import io.swagger.models.parameters.CookieParameter;
1315
import io.swagger.models.parameters.FormParameter;
@@ -19,27 +21,28 @@
1921

2022
public class VisitableParameterFactory {
2123

22-
public static com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableParameter createParameter(Parameter parameter) {
24+
@SuppressWarnings("unchecked")
25+
public static <T extends Parameter> VisitableParameter<T> createParameter(T parameter) {
2326
if (parameter instanceof BodyParameter) {
24-
return new BodyParameterWrapper((BodyParameter) parameter);
27+
return (VisitableParameter<T>) new BodyParameterWrapper((BodyParameter) parameter);
2528
}
2629
if (parameter instanceof CookieParameter) {
27-
return new CookieParameterWrapper((CookieParameter) parameter);
30+
return (VisitableParameter<T>) new CookieParameterWrapper((CookieParameter) parameter);
2831
}
2932
if (parameter instanceof FormParameter) {
30-
return new FormParameterWrapper((FormParameter) parameter);
33+
return (VisitableParameter<T>) new FormParameterWrapper((FormParameter) parameter);
3134
}
3235
if (parameter instanceof HeaderParameter) {
33-
return new HeaderParameterWrapper((HeaderParameter) parameter);
36+
return (VisitableParameter<T>) new HeaderParameterWrapper((HeaderParameter) parameter);
3437
}
3538
if (parameter instanceof PathParameter) {
36-
return new PathParameterWraper((PathParameter) parameter);
39+
return (VisitableParameter<T>) new PathParameterWraper((PathParameter) parameter);
3740
}
3841
if (parameter instanceof QueryParameter) {
39-
return new QueryParameterWrapper((QueryParameter) parameter);
42+
return (VisitableParameter<T>) new QueryParameterWrapper((QueryParameter) parameter);
4043
}
4144
if (parameter instanceof RefParameter) {
42-
return new RefParameterWrapper((RefParameter) parameter);
45+
return (VisitableParameter<T>) new RefParameterWrapper((RefParameter) parameter);
4346
}
4447
return new ParameterWrapper<>(parameter);
4548
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/VisitablePropertyFactory.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,26 @@
55
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.property.ObjectPropertyWrapper;
66
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.property.RefPropertyWrapper;
77
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.property.UnhandledPropertyWrapper;
8+
89
import io.swagger.models.properties.ArrayProperty;
910
import io.swagger.models.properties.ObjectProperty;
1011
import io.swagger.models.properties.Property;
1112
import io.swagger.models.properties.RefProperty;
1213

1314
public class VisitablePropertyFactory {
1415

15-
public static VisitableProperty createVisitableProperty(String propertyName, Property property) {
16+
@SuppressWarnings("unchecked")
17+
public static <T extends Property> VisitableProperty<T> createVisitableProperty(String propertyName, T property) {
1618
if (property instanceof ObjectProperty) {
17-
return new ObjectPropertyWrapper(propertyName, (ObjectProperty) property);
19+
return (VisitableProperty<T>) new ObjectPropertyWrapper(propertyName, (ObjectProperty) property);
1820
}
1921
if (property instanceof ArrayProperty) {
20-
return new ArrayPropertyWrapper(propertyName, (ArrayProperty) property);
22+
return (VisitableProperty<T>) new ArrayPropertyWrapper(propertyName, (ArrayProperty) property);
2123
}
2224
if (property instanceof RefProperty) {
23-
return new RefPropertyWrapper(propertyName, (RefProperty) property);
25+
return (VisitableProperty<T>) new RefPropertyWrapper(propertyName, (RefProperty) property);
2426
}
2527

26-
return new UnhandledPropertyWrapper(propertyName, property);
28+
return (VisitableProperty<T>) new UnhandledPropertyWrapper(propertyName, property);
2729
}
2830
}
Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic;
22

3+
import java.util.ArrayDeque;
4+
import java.util.Deque;
5+
36
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableModel;
47
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableProperty;
58

6-
import java.util.Stack;
9+
import io.swagger.models.properties.Property;
710

811
public class VisitedItemsHolder {
912

10-
private final Stack<String> visitedItems = new Stack<>();
13+
private final Deque<String> visitedItems = new ArrayDeque<>();
1114

12-
public void push(VisitableProperty property) {
15+
public void push(VisitableProperty<? extends Property> property) {
1316
visitedItems.push(property.getName());
1417
}
1518

@@ -26,14 +29,6 @@ public void pop() {
2629
}
2730

2831
public String getCurrentPath() {
29-
String path = "";
30-
for (int i = 0; i < visitedItems.size(); i++) {
31-
path += visitedItems.get(i);
32-
if (i < visitedItems.size() - 1) {
33-
path += ".";
34-
}
35-
}
36-
37-
return path;
32+
return String.join(".", (Iterable<String>) () -> visitedItems.descendingIterator());
3833
}
3934
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.node;
22

3+
import java.util.Map;
4+
35
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.ModelVisitor;
4-
import io.swagger.models.Model;
56

6-
import java.util.Map;
7+
import io.swagger.models.Model;
8+
import io.swagger.models.properties.Property;
79

810
public interface VisitableModel extends VisitableObject<ModelVisitor>, PathObject {
911

1012
Model getModel();
1113

12-
Map<String, VisitableProperty> getProperties();
14+
Map<String, VisitableProperty<? extends Property>> getProperties();
1315
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/node/model/AbstractModelWrapper.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.model;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
36
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.ModelVisitor;
47
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.VisitablePropertyFactory;
58
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableModel;
69
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableProperty;
10+
711
import io.swagger.models.AbstractModel;
812
import io.swagger.models.ExternalDocs;
913
import io.swagger.models.properties.Property;
1014

11-
import java.util.HashMap;
12-
import java.util.Map;
13-
1415
public abstract class AbstractModelWrapper<T extends AbstractModel> implements VisitableModel {
1516

1617
protected final T model;
1718
protected final String name;
18-
protected final Map<String, VisitableProperty> properties = new HashMap<>();
19+
protected final Map<String, VisitableProperty<? extends Property>> properties = new HashMap<>();
1920

2021
AbstractModelWrapper(String name, T model) {
2122
this.name = name;
2223
this.model = model;
2324

2425
if (model.getProperties() != null) {
2526
for (Map.Entry<String, Property> entry : model.getProperties().entrySet()) {
26-
properties.put(entry.getKey(), VisitablePropertyFactory.createVisitableProperty(entry.getKey(), entry.getValue()));
27+
properties.put(entry.getKey(),
28+
VisitablePropertyFactory.createVisitableProperty(entry.getKey(), entry.getValue()));
2729
}
2830
}
2931
}
@@ -55,13 +57,14 @@ public Map<String, Object> getVendorExtensions() {
5557
}
5658

5759
// returns only properties from this model, not parents
58-
public Map<String, VisitableProperty> getProperties() {
60+
@Override
61+
public Map<String, VisitableProperty<? extends Property>> getProperties() {
5962
return properties;
6063
}
6164

6265
@Override
6366
public void accept(ModelVisitor visitor) {
64-
for (VisitableProperty p : properties.values()) {
67+
for (VisitableProperty<? extends Property> p : properties.values()) {
6568
p.accept(visitor);
6669
}
6770
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/node/model/ArrayModelWrapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void accept(ModelVisitor modelVisitor) {
2323
modelVisitor.visit(this);
2424
}
2525

26-
public VisitableProperty getItems() {
26+
public VisitableProperty<? extends Property> getItems() {
2727
return items;
2828
}
2929

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/node/model/ComposedModelWrapper.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.model;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.Map;
6+
37
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.ModelVisitor;
48
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.VisitablePropertyFactory;
59
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableProperty;
10+
611
import io.swagger.models.ComposedModel;
712
import io.swagger.models.Model;
813
import io.swagger.models.ModelImpl;
914
import io.swagger.models.RefModel;
1015
import io.swagger.models.properties.Property;
1116

12-
import java.util.ArrayList;
13-
import java.util.List;
14-
import java.util.Map;
15-
16-
public class ComposedModelWrapper extends AbstractModelWrapper<ComposedModel> {
17+
public class ComposedModelWrapper extends AbstractModelWrapper<ComposedModel> {
1718

1819
public ComposedModelWrapper(String name, ComposedModel model) {
1920
super(name, model);
2021

2122
if (model.getChild() != null && model.getChild().getProperties() != null) {
2223
for (Map.Entry<String, Property> entry : model.getChild().getProperties().entrySet()) {
23-
properties.put(entry.getKey(), VisitablePropertyFactory.createVisitableProperty(entry.getKey(), entry.getValue()));
24+
properties.put(entry.getKey(),
25+
VisitablePropertyFactory.createVisitableProperty(entry.getKey(), entry.getValue()));
2426
}
2527
}
2628
}
@@ -73,7 +75,8 @@ public List<String> getRequired() {
7375
}
7476

7577
// returns only properties from this model, not parents
76-
public Map<String, VisitableProperty> getProperties() {
78+
@Override
79+
public Map<String, VisitableProperty<? extends Property>> getProperties() {
7780
return properties;
7881
}
7982
}

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/node/model/ModelImplWrapper.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.model;
22

3-
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.ModelVisitor;
4-
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.VisitablePropertyFactory;
5-
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableProperty;
6-
import io.swagger.models.ModelImpl;
3+
import static java.util.Collections.emptyList;
4+
import static org.apache.commons.collections4.ListUtils.emptyIfNull;
5+
import static org.apache.commons.lang3.reflect.FieldUtils.readField;
76

87
import java.math.BigDecimal;
98
import java.util.List;
109
import java.util.stream.Collectors;
1110

12-
import static java.util.Collections.emptyList;
13-
import static org.apache.commons.collections4.ListUtils.emptyIfNull;
14-
import static org.apache.commons.lang3.reflect.FieldUtils.readField;
11+
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.ModelVisitor;
12+
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.VisitablePropertyFactory;
13+
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableProperty;
14+
15+
import io.swagger.models.ModelImpl;
16+
import io.swagger.models.properties.Property;
1517

16-
public class ModelImplWrapper extends AbstractModelWrapper<ModelImpl> {
18+
public class ModelImplWrapper extends AbstractModelWrapper<ModelImpl> {
1719

18-
private VisitableProperty additionalProperties;
20+
private VisitableProperty<? extends Property> additionalProperties;
1921

2022
public ModelImplWrapper(String name, ModelImpl model) {
2123
super(name, model);
@@ -32,9 +34,7 @@ public List<String> getRequired() {
3234
}
3335

3436
public List<String> getReadOlyProperties() {
35-
return getProperties().values().stream()
36-
.filter(VisitableProperty::getReadOnly)
37-
.map(VisitableProperty::getName)
37+
return getProperties().values().stream().filter(VisitableProperty::getReadOnly).map(VisitableProperty::getName)
3838
.collect(Collectors.toList());
3939
}
4040

@@ -53,6 +53,7 @@ public String getDiscriminator() {
5353
return model.getDiscriminator();
5454
}
5555

56+
@Override
5657
public ModelImpl getModel() {
5758
return model;
5859
}
@@ -85,7 +86,7 @@ public Object getExample() {
8586
return model.getExample();
8687
}
8788

88-
public VisitableProperty getAdditionalProperties() {
89+
public VisitableProperty<? extends Property> getAdditionalProperties() {
8990
return additionalProperties;
9091
}
9192

src/main/java/com/github/sylvainlaurent/maven/swaggervalidator/semantic/node/model/RefModelWrapper.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
package com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.model;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
36
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.ModelVisitor;
47
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.VisitablePropertyFactory;
58
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableModel;
69
import com.github.sylvainlaurent.maven.swaggervalidator.semantic.node.VisitableProperty;
10+
711
import io.swagger.models.ExternalDocs;
812
import io.swagger.models.RefModel;
913
import io.swagger.models.properties.Property;
1014

11-
import java.util.HashMap;
12-
import java.util.Map;
13-
1415
public class RefModelWrapper implements VisitableModel {
1516

1617
private final String name;
1718
private RefModel model;
18-
private final Map<String, VisitableProperty> properties = new HashMap<>();
19+
private final Map<String, VisitableProperty<? extends Property>> properties = new HashMap<>();
1920

2021
public RefModelWrapper(String name, RefModel model) {
2122
this.name = name;
2223
this.model = model;
2324

2425
if (model.getProperties() != null) {
2526
for (Map.Entry<String, Property> entry : model.getProperties().entrySet()) {
26-
properties.put(entry.getKey(), VisitablePropertyFactory.createVisitableProperty(entry.getKey(), entry.getValue()));
27+
properties.put(entry.getKey(),
28+
VisitablePropertyFactory.createVisitableProperty(entry.getKey(), entry.getValue()));
2729
}
2830
}
2931
}
@@ -40,7 +42,7 @@ public RefModel getModel() {
4042

4143
@Override
4244
public void accept(ModelVisitor modelVisitor) {
43-
for (VisitableProperty p : properties.values()) {
45+
for (VisitableProperty<? extends Property> p : properties.values()) {
4446
p.accept(modelVisitor);
4547
}
4648
modelVisitor.visit(this);
@@ -58,7 +60,8 @@ public ExternalDocs getExternalDocs() {
5860
return model.getExternalDocs();
5961
}
6062

61-
public Map<String, VisitableProperty> getProperties() {
63+
@Override
64+
public Map<String, VisitableProperty<? extends Property>> getProperties() {
6265
return properties;
6366
}
6467

0 commit comments

Comments
 (0)