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('');
};
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 || '';
xml = xml || {};
@@ -704,6 +705,19 @@ SwaggerUi.partials.signature = (function () {
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 namespace = '';
@@ -739,9 +753,12 @@ SwaggerUi.partials.signature = (function () {
var attributes = [];
if (!items) { return getErrorMessage(); }
value = createSchemaXML(name, items, models, config);
var key = name;
// 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) {
attributes.push(namespace);
}
@@ -827,7 +844,7 @@ SwaggerUi.partials.signature = (function () {
if (namespace) {
attrs.push(namespace);
}
}
if (!properties && !additionalProperties) { return getErrorMessage(); }
@@ -872,9 +889,10 @@ SwaggerUi.partials.signature = (function () {
var output, index;
config = config || {};
config.modelsToIgnore = config.modelsToIgnore || [];
var descriptor = _.isString($ref) ? getDescriptorByRef($ref, name, models, config)
: getDescriptor(name, definition, models, config);
if (!descriptor) {
return getErrorMessage();
}
@@ -904,10 +922,10 @@ SwaggerUi.partials.signature = (function () {
if (arguments.length < 4) {
throw new Error();
}
this.config = config || {};
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.models = models;
this.type = type;
@@ -917,8 +935,15 @@ SwaggerUi.partials.signature = (function () {
var modelType = simpleRef($ref);
var model = models[modelType] || {};
var type = model.definition && model.definition.type ? model.definition.type : 'object';
name = name || model.name;
// 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;
}
if (config.modelsToIgnore.indexOf($ref) > -1) {
type = 'loop';
config.loopTo = modelType;
@@ -929,13 +954,15 @@ SwaggerUi.partials.signature = (function () {
if (!model.definition) {
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){
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) {
return null;
}