Merge pull request #75 from jmsegrev/master

Fix for api docs generate bug
This commit is contained in:
astaxie 2015-05-09 14:41:37 +08:00
commit 52d6031795
1 changed files with 40 additions and 16 deletions

View File

@ -570,30 +570,54 @@ func getModel(str string) (pkgpath, objectname string, m swagger.Model, realType
} else { } else {
mp.Type = realType mp.Type = realType
} }
// if the tag contains json tag, set the name to the left most json tag
var name = field.Names[0].Name // dont add property if anonymous field
if field.Tag != nil { if field.Names != nil {
// set property name as field name
var name = field.Names[0].Name
// if no tag skip tag processing
if field.Tag == nil {
m.Properties[name] = mp
continue
}
var tagValues []string
stag := reflect.StructTag(strings.Trim(field.Tag.Value, "`")) stag := reflect.StructTag(strings.Trim(field.Tag.Value, "`"))
if tag := stag.Get("json"); tag != "" { tag := stag.Get("json")
name = tag
if tag != "" {
tagValues = strings.Split(tag, ",")
} }
if thrifttag := stag.Get("thrift"); thrifttag != "" {
ts := strings.Split(thrifttag, ",") // dont add property if json tag first value is "-"
if ts[0] != "" { if len(tagValues) == 0 || tagValues[0] != "-" {
name = ts[0]
// set property name to the left most json tag value only if is not omitempty
if len(tagValues) > 0 && tagValues[0] != "omitempty" {
name = tagValues[0]
} }
}
if required := stag.Get("required"); required != "" { if thrifttag := stag.Get("thrift"); thrifttag != "" {
m.Required = append(m.Required, name) ts := strings.Split(thrifttag, ",")
} if ts[0] != "" {
if desc := stag.Get("description"); desc != "" { name = ts[0]
mp.Description = desc }
}
if required := stag.Get("required"); required != "" {
m.Required = append(m.Required, name)
}
if desc := stag.Get("description"); desc != "" {
mp.Description = desc
}
m.Properties[name] = mp
} }
if ignore := stag.Get("ignore"); ignore != "" { if ignore := stag.Get("ignore"); ignore != "" {
continue continue
} }
} }
m.Properties[name] = mp
} }
} }
return return