Merge pull request #2581 from ritesh-garg/issue-2577

Issue 2577
This commit is contained in:
Tony Tam
2017-01-02 13:42:35 -07:00
committed by GitHub

View File

@@ -689,7 +689,8 @@ SwaggerUi.partials.signature = (function () {
return str.join(''); return str.join('');
}; };
var getName = function (name, xml) { // Commenting this funtion as the names are now determined beforehand and the prefix part is exposed as a separate function | https://github.com/swagger-api/swagger-ui/issues/2577
/** var getName = function (name, xml) {
var result = name || ''; var result = name || '';
xml = xml || {}; xml = xml || {};
@@ -704,6 +705,19 @@ SwaggerUi.partials.signature = (function () {
return result; return result;
}; };
*/
var getPrefix = function (name, xml) {
var result = name || '';
xml = xml || {};
if (xml.prefix) {
result = xml.prefix + ':' + result;
}
return result;
};
var getNamespace = function (xml) { var getNamespace = function (xml) {
var namespace = ''; var namespace = '';
@@ -739,9 +753,12 @@ SwaggerUi.partials.signature = (function () {
var attributes = []; var attributes = [];
if (!items) { return getErrorMessage(); } if (!items) { return getErrorMessage(); }
var key = name;
value = createSchemaXML(name, items, models, config); // If there is a name specified for the array elements, use that for the array elements name | https://github.com/swagger-api/swagger-ui/issues/2577
if(items.xml && items.xml.name) {
key = items.xml.name;
}
value = createSchemaXML(key, items, models, config);
if (namespace) { if (namespace) {
attributes.push(namespace); attributes.push(namespace);
} }
@@ -872,6 +889,7 @@ SwaggerUi.partials.signature = (function () {
var output, index; var output, index;
config = config || {}; config = config || {};
config.modelsToIgnore = config.modelsToIgnore || []; config.modelsToIgnore = config.modelsToIgnore || [];
var descriptor = _.isString($ref) ? getDescriptorByRef($ref, name, models, config) var descriptor = _.isString($ref) ? getDescriptorByRef($ref, name, models, config)
: getDescriptor(name, definition, models, config); : getDescriptor(name, definition, models, config);
@@ -904,10 +922,10 @@ SwaggerUi.partials.signature = (function () {
if (arguments.length < 4) { if (arguments.length < 4) {
throw new Error(); throw new Error();
} }
this.config = config || {}; this.config = config || {};
this.config.modelsToIgnore = this.config.modelsToIgnore || []; this.config.modelsToIgnore = this.config.modelsToIgnore || [];
this.name = getName(name, definition.xml); // name is already set by getDescriptorByRef or getDescriptor function depending on the type. Only prefix, if present is needed to be set here | https://github.com/swagger-api/swagger-ui/issues/2577
this.name = getPrefix(name, definition.xml);
this.definition = definition; this.definition = definition;
this.models = models; this.models = models;
this.type = type; this.type = type;
@@ -917,7 +935,14 @@ SwaggerUi.partials.signature = (function () {
var modelType = simpleRef($ref); var modelType = simpleRef($ref);
var model = models[modelType] || {}; var model = models[modelType] || {};
var type = model.definition && model.definition.type ? model.definition.type : 'object'; var type = model.definition && model.definition.type ? model.definition.type : 'object';
// If model definition xml name is present, then that will be preferred over model name. This is the case of preferring XmlElement name over XmlRootElement name if XmlElement name is provided | https://github.com/swagger-api/swagger-ui/issues/2577
if(model.definition && model.definition.xml && model.definition.xml.name) {
name = name || model.definition.xml.name || model.name;
}
// else only model name will be considered for determination | https://github.com/swagger-api/swagger-ui/issues/2577
else {
name = name || model.name; name = name || model.name;
}
if (config.modelsToIgnore.indexOf($ref) > -1) { if (config.modelsToIgnore.indexOf($ref) > -1) {
type = 'loop'; type = 'loop';
@@ -929,13 +954,15 @@ SwaggerUi.partials.signature = (function () {
if (!model.definition) { if (!model.definition) {
return null; return null;
} }
return new Descriptor(name, type, model.definition, models, config); return new Descriptor(name, type, model.definition, models, config);
} }
function getDescriptor (name, definition, models, config){ function getDescriptor (name, definition, models, config){
var type = definition.type || 'object'; var type = definition.type || 'object';
// If definition xml name is present, then that will be preferred over name | https://github.com/swagger-api/swagger-ui/issues/2577
if(definition.xml && definition.xml.name) {
name = definition.xml.name || name;
}
if (!definition) { if (!definition) {
return null; return null;
} }