ソースを参照

Change to fix the naming for elements for an array from the element name(XmlElement) defined with array rather than determining it from the element model definition(XmlRootElement)

bubble
Ritesh Garg 7年前
コミット
8b01247192
1個のファイルの変更37行の追加11行の削除
  1. +37
    -11
      src/main/javascript/view/partials/signature.js

+ 37
- 11
src/main/javascript/view/partials/signature.js ファイルの表示

@@ -704,6 +704,18 @@ 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,8 +751,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 +843,7 @@ SwaggerUi.partials.signature = (function () {

if (namespace) {
attrs.push(namespace);
}
}

if (!properties && !additionalProperties) { return getErrorMessage(); }

@@ -872,9 +888,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 +921,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 +934,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.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 +953,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;
}


読み込み中…
キャンセル
保存