diff --git a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java index 8bac000c85..d808ccb07e 100644 --- a/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java +++ b/modules/swagger-parser/src/main/java/io/swagger/parser/processors/ExternalRefProcessor.java @@ -1,6 +1,7 @@ package io.swagger.parser.processors; import io.swagger.models.Model; +import io.swagger.models.RefModel; import io.swagger.models.Swagger; import io.swagger.models.properties.Property; import io.swagger.models.properties.RefProperty; @@ -48,6 +49,15 @@ public String processRefToExternalDefinition(String $ref, RefFormat refFormat) { //If this is a new model, then check it for other sub references + String file = $ref.split("#/")[0]; + if (model instanceof RefModel) { + RefModel refModel = (RefModel) model; + if(isAnExternalRefFormat(refModel.getRefFormat())) { + processRefToExternalDefinition(refModel.get$ref(), refModel.getRefFormat()); + } else { + processRefToExternalDefinition(file + refModel.get$ref(), RefFormat.RELATIVE); + } + } //Loop the properties and recursively call this method; Map subProps = model.getProperties(); if(subProps != null) { @@ -55,8 +65,11 @@ public String processRefToExternalDefinition(String $ref, RefFormat refFormat) { if (prop.getValue() instanceof RefProperty) { RefProperty subRef = (RefProperty) prop.getValue(); - if(isAnExternalRefFormat(subRef.getRefFormat())) + if(isAnExternalRefFormat(subRef.getRefFormat())) { subRef.set$ref(processRefToExternalDefinition(subRef.get$ref(), subRef.getRefFormat())); + } else { + processRefToExternalDefinition(file + subRef.get$ref(), RefFormat.RELATIVE); + } } } }