#1892 fixed multiple definition loops

This commit is contained in:
Anna Bodnia
2016-01-22 20:24:45 +02:00
parent 9a5925f921
commit db328351b9
4 changed files with 121 additions and 33 deletions

30
dist/swagger-ui.js vendored
View File

@@ -27127,7 +27127,7 @@ SwaggerUi.partials.signature = (function () {
}
function getInfiniteLoopMessage (name) {
return '<!-- Infinite loop to model ' + name + ' -->';
return '<!-- Infinite loop $ref:' + name + ' -->';
}
function getErrorMessage () {
@@ -27135,7 +27135,10 @@ SwaggerUi.partials.signature = (function () {
}
function createSchemaXML (name, definition, models, config) {
var $ref = definition.$ref;
var $ref = _.isObject(definition) ? definition.$ref : null;
var output, index;
config = config || {};
config.modelsToIgnore = config.modelsToIgnore || [];
var descriptor = _.isString($ref) ? getDescriptorByRef($ref, models, config)
: getDescriptor(name, definition, models, config);
@@ -27145,14 +27148,23 @@ SwaggerUi.partials.signature = (function () {
switch (descriptor.type) {
case 'array':
return createArrayXML(descriptor);
output = createArrayXML(descriptor); break;
case 'object':
return createObjectXML(descriptor);
output = createObjectXML(descriptor); break;
case 'loop':
return getInfiniteLoopMessage(descriptor.name);
output = getInfiniteLoopMessage(descriptor.name); break;
default:
return createPrimitiveXML(descriptor);
output = createPrimitiveXML(descriptor);
}
if ($ref) {
index = config.modelsToIgnore.indexOf($ref);
if (index > -1) {
config.modelsToIgnore.splice(index, 1);
}
}
return output;
}
function Descriptor (name, type, definition, models, config) {
@@ -27174,12 +27186,10 @@ SwaggerUi.partials.signature = (function () {
var name = model.name || modelType;
var type = model.type || 'object';
config = config || {};
config.modelsToIgnore = config.modelsToIgnore || [];
if (config.modelsToIgnore.indexOf(name) > -1) {
if (config.modelsToIgnore.indexOf($ref) > -1) {
type = 'loop';
} else {
config.modelsToIgnore.push(modelType);
config.modelsToIgnore.push($ref);
}
if (!model.definition) {