Skip to content

Commit 24c4601

Browse files
committed
Merge branch 'namkee-issues/1282'
closes springfox#1282
2 parents 0409649 + b02bace commit 24c4601

File tree

3 files changed

+54
-30
lines changed

3 files changed

+54
-30
lines changed

springfox-schema/src/main/java/springfox/documentation/schema/DefaultModelDependencyProvider.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
import static com.google.common.collect.FluentIterable.*;
3939
import static com.google.common.collect.Lists.*;
4040
import static springfox.documentation.schema.Collections.*;
41-
import static springfox.documentation.schema.Maps.isMapType;
41+
import static springfox.documentation.schema.Maps.*;
4242
import static springfox.documentation.schema.ResolvedTypes.*;
4343

4444
@Component
@@ -64,9 +64,9 @@ public DefaultModelDependencyProvider(
6464
@Override
6565
public Set<ResolvedType> dependentModels(ModelContext modelContext) {
6666
return from(resolvedDependencies(modelContext))
67-
.filter(ignorableTypes(modelContext))
68-
.filter(not(baseTypes(modelContext)))
69-
.toSet();
67+
.filter(ignorableTypes(modelContext))
68+
.filter(not(baseTypes(modelContext)))
69+
.toSet();
7070
}
7171

7272
private Predicate<ResolvedType> baseTypes(final ModelContext modelContext) {
@@ -101,10 +101,23 @@ private List<ResolvedType> resolvedDependencies(ModelContext modelContext) {
101101
return newArrayList();
102102
}
103103
List<ResolvedType> dependencies = newArrayList(resolvedTypeParameters(modelContext, resolvedType));
104+
dependencies.addAll(resolvedArrayElementType(modelContext, resolvedType));
104105
dependencies.addAll(resolvedPropertiesAndFields(modelContext, resolvedType));
105106
return dependencies;
106107
}
107108

109+
private List<? extends ResolvedType> resolvedArrayElementType(ModelContext modelContext, ResolvedType resolvedType) {
110+
List<ResolvedType> parameters = newArrayList();
111+
if (resolvedType.isArray()) {
112+
ResolvedType elementType = resolvedType.getArrayElementType();
113+
LOG.debug("Adding type for element {}", elementType.getSignature());
114+
parameters.add(modelContext.alternateFor(elementType));
115+
LOG.debug("Recursively resolving dependencies for element {}", elementType.getSignature());
116+
parameters.addAll(resolvedDependencies(ModelContext.fromParent(modelContext, elementType)));
117+
}
118+
return parameters;
119+
}
120+
108121
private List<? extends ResolvedType> resolvedTypeParameters(ModelContext modelContext, ResolvedType resolvedType) {
109122
List<ResolvedType> parameters = newArrayList();
110123
for (ResolvedType parameter : resolvedType.getTypeParameters()) {

springfox-schema/src/main/java/springfox/documentation/schema/Types.java

Lines changed: 37 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import com.fasterxml.classmate.ResolvedType;
2323
import com.google.common.collect.ImmutableMap;
24+
import org.springframework.web.multipart.MultipartFile;
2425

2526
import java.lang.reflect.Type;
2627
import java.math.BigDecimal;
@@ -38,33 +39,44 @@ private Types() {
3839
throw new UnsupportedOperationException();
3940
}
4041

41-
private static final Set<String> baseTypes
42-
= newHashSet("int", "date", "string", "double", "float", "boolean", "byte", "object", "long", "date-time");
42+
private static final Set<String> baseTypes = newHashSet(
43+
"int",
44+
"date",
45+
"string",
46+
"double",
47+
"float",
48+
"boolean",
49+
"byte",
50+
"object",
51+
"long",
52+
"date-time",
53+
"file");
4354
private static final Map<Type, String> typeNameLookup = ImmutableMap.<Type, String>builder()
44-
.put(Long.TYPE, "long")
45-
.put(Short.TYPE, "int")
46-
.put(Integer.TYPE, "int")
47-
.put(Double.TYPE, "double")
48-
.put(Float.TYPE, "float")
49-
.put(Byte.TYPE, "byte")
50-
.put(Boolean.TYPE, "boolean")
51-
.put(Character.TYPE, "string")
55+
.put(Long.TYPE, "long")
56+
.put(Short.TYPE, "int")
57+
.put(Integer.TYPE, "int")
58+
.put(Double.TYPE, "double")
59+
.put(Float.TYPE, "float")
60+
.put(Byte.TYPE, "byte")
61+
.put(Boolean.TYPE, "boolean")
62+
.put(Character.TYPE, "string")
5263

53-
.put(Date.class, "date-time")
54-
.put(String.class, "string")
55-
.put(Object.class, "object")
56-
.put(Long.class, "long")
57-
.put(Integer.class, "int")
58-
.put(Short.class, "int")
59-
.put(Double.class, "double")
60-
.put(Float.class, "float")
61-
.put(Boolean.class, "boolean")
62-
.put(Byte.class, "byte")
63-
.put(BigDecimal.class, "double")
64-
.put(BigInteger.class, "long")
65-
.put(Currency.class, "string")
66-
.put(UUID.class, "string")
67-
.build();
64+
.put(Date.class, "date-time")
65+
.put(String.class, "string")
66+
.put(Object.class, "object")
67+
.put(Long.class, "long")
68+
.put(Integer.class, "int")
69+
.put(Short.class, "int")
70+
.put(Double.class, "double")
71+
.put(Float.class, "float")
72+
.put(Boolean.class, "boolean")
73+
.put(Byte.class, "byte")
74+
.put(BigDecimal.class, "double")
75+
.put(BigInteger.class, "long")
76+
.put(Currency.class, "string")
77+
.put(UUID.class, "string")
78+
.put(MultipartFile.class, "file")
79+
.build();
6880

6981
public static String typeNameFor(Type type) {
7082
return typeNameLookup.get(type);

springfox-spi/src/main/java/springfox/documentation/spi/service/contexts/Defaults.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ private void initIgnorableTypes() {
161161
ignored.add(BindingResult.class);
162162
ignored.add(ServletContext.class);
163163
ignored.add(UriComponentsBuilder.class);
164-
ignored.add(ApiIgnore.class);
165164
}
166165

167166
private void initResponseMessages() {

0 commit comments

Comments
 (0)