Skip to content

Commit 9b9f5fc

Browse files
author
ralphdoe
committed
Resolve References Options in Parser
1 parent bfe2c80 commit 9b9f5fc

File tree

1 file changed

+30
-5
lines changed

1 file changed

+30
-5
lines changed

modules/swagger-parser/src/main/java/io/swagger/parser/SwaggerParser.java

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public Swagger read(String location, List<AuthorizationValue> auths, boolean res
8787
}
8888

8989
public SwaggerDeserializationResult readWithInfo(String swaggerAsString) {
90-
if(swaggerAsString == null) {
90+
if (swaggerAsString == null) {
9191
return new SwaggerDeserializationResult().message("empty or null swagger supplied");
9292
}
9393
try {
@@ -102,13 +102,38 @@ public SwaggerDeserializationResult readWithInfo(String swaggerAsString) {
102102
SwaggerDeserializationResult result = new Swagger20Parser().readWithInfo(node);
103103
if (result != null) {
104104
result.setSwagger(new SwaggerResolver(result.getSwagger(), new ArrayList<AuthorizationValue>(), null).resolve());
105-
}
106-
else {
107-
result = new SwaggerDeserializationResult().message("Definition does not appear to be a valid Swagger format");
105+
} else {
106+
result = new SwaggerDeserializationResult().message("Definition does not appear to be a valid Swagger format");
108107
}
109108
return result;
109+
} catch (Exception e) {
110+
return new SwaggerDeserializationResult().message("malformed or unreadable swagger supplied");
110111
}
111-
catch (Exception e) {
112+
}
113+
114+
public SwaggerDeserializationResult readWithInfo(String swaggerAsString, boolean resolve) {
115+
if (swaggerAsString == null) {
116+
return new SwaggerDeserializationResult().message("empty or null swagger supplied");
117+
}
118+
try {
119+
JsonNode node;
120+
if (swaggerAsString.trim().startsWith("{")) {
121+
ObjectMapper mapper = Json.mapper();
122+
node = mapper.readTree(swaggerAsString);
123+
} else {
124+
node = DeserializationUtils.readYamlTree(swaggerAsString);
125+
}
126+
127+
SwaggerDeserializationResult result = new Swagger20Parser().readWithInfo(node);
128+
if (result != null) {
129+
if (resolve) {
130+
result.setSwagger(new SwaggerResolver(result.getSwagger(), new ArrayList<AuthorizationValue>(), null).resolve());
131+
}
132+
} else {
133+
result = new SwaggerDeserializationResult().message("Definition does not appear to be a valid Swagger format");
134+
}
135+
return result;
136+
} catch (Exception e) {
112137
return new SwaggerDeserializationResult().message("malformed or unreadable swagger supplied");
113138
}
114139
}

0 commit comments

Comments
 (0)