Skip to content

Commit

Permalink
Merge pull request swagger-api#419 from swagger-api/issue-418
Browse files Browse the repository at this point in the history
catch invalid cast
  • Loading branch information
fehguy authored Mar 11, 2017
2 parents 1bf0bff + 1e1d37e commit 7d5e502
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 4 deletions.
2 changes: 1 addition & 1 deletion modules/swagger-compat-spec-parser/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>io.swagger</groupId>
<artifactId>swagger-parser-project</artifactId>
<version>1.0.27</version>
<version>1.0.28-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
2 changes: 1 addition & 1 deletion modules/swagger-parser/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>io.swagger</groupId>
<artifactId>swagger-parser-project</artifactId>
<version>1.0.27</version>
<version>1.0.28-SNAPSHOT</version>
<relativePath>../..</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,14 @@ public ResolverCache(Swagger swagger, List<AuthorizationValue> auths, String par
public <T> T loadRef(String ref, RefFormat refFormat, Class<T> expectedType) {
if (refFormat == RefFormat.INTERNAL) {
//we don't need to go get anything for internal refs
return expectedType.cast(loadInternalRef(ref));
Object loadedRef = loadInternalRef(ref);

try{
return expectedType.cast(loadedRef);
}
catch (Exception e) {
return null;
}
}

final String[] refParts = ref.split("#/");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ public List<Parameter> processParameters(List<Parameter> parameters) {
final Parameter resolvedParameter = cache.loadRef(refParameter.get$ref(), refParameter.getRefFormat(), Parameter.class);

if(resolvedParameter == null) {
// can't resolve it!
processedPathLevelParameters.add(refParameter);
continue;
}
// if the parameter exists, replace it
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -837,4 +837,34 @@ public void testIssue358() {
assertEquals("pathParam", parms.get(0).getName());
assertEquals("string", ((SerializableParameter)parms.get(0)).getType());
}

@Test
public void testIncompatibleRefs() {
String yaml =
"swagger: '2.0'\n" +
"paths:\n" +
" /test:\n" +
" post:\n" +
" parameters:\n" +
" # this is not the correct reference type\n" +
" - $ref: '#/definitions/Model'\n" +
" - in: body\n" +
" name: incorrectType\n" +
" required: true\n" +
" schema:\n" +
" $ref: '#/definitions/Model'\n" +
" responses:\n" +
" 200:\n" +
" # this is not the correct reference type\n" +
" $ref: '#/definitions/Model'\n" +
" 400:\n" +
" definitions: this is right\n" +
" schema:\n" +
" $ref: '#/definitions/Model'\n" +
"definitions:\n" +
" Model:\n" +
" type: object";
SwaggerDeserializationResult result = new SwaggerParser().readWithInfo(yaml);
Json.prettyPrint(result);
}
}
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.swagger</groupId>
<artifactId>swagger-parser-project</artifactId>
<version>1.0.27</version>
<version>1.0.28-SNAPSHOT</version>
<packaging>pom</packaging>
<name>swagger-parser-project</name>
<developers>
Expand Down

0 comments on commit 7d5e502

Please sign in to comment.