Skip to content

Commit

Permalink
Do not use rel=instances to infer array values
Browse files Browse the repository at this point in the history
  • Loading branch information
ernesto-jimenez committed Nov 11, 2014
1 parent 3b605c5 commit 2b9479c
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 30 deletions.
8 changes: 1 addition & 7 deletions gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,12 +212,6 @@ func (s *Schema) Values(name string, l *Link) []string {
values = append(values, "error")
} else if s.ReturnsCustomType(l) {
values = append(values, fmt.Sprintf("*%s", name), "error")
} else if l.Rel == "instances" {
if l.TargetSchema == nil {
values = append(values, fmt.Sprintf("[]*%s", name), "error")
} else {
values = append(values, fmt.Sprintf("[]*%s", s.ReturnedGoType(l)), "error")
}
} else {
values = append(values, s.ReturnedGoType(l), "error")
}
Expand Down Expand Up @@ -292,7 +286,7 @@ func (l *Link) Parameters(name string) ([]string, map[string]string) {
params["o"] = "*" + params["o"]
}
}
if l.Rel == "instances" {
if l.Rel == "instances" && strings.ToUpper(l.Method) == "GET" {
order = append(order, "lr")
params["lr"] = "*ListRange"
}
Expand Down
33 changes: 26 additions & 7 deletions gen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,9 @@ var paramsTests = []struct {
{
Schema: &Schema{},
Link: &Link{
HRef: NewHRef("/instances/"),
Rel: "instances",
HRef: NewHRef("/instances/"),
Rel: "instances",
Method: "get",
},
Order: []string{"lr"},
Parameters: map[string]string{"lr": "*ListRange"},
Expand Down Expand Up @@ -256,9 +257,10 @@ var paramsTests = []struct {
{
Schema: &Schema{},
Link: &Link{
Title: "list",
Rel: "instances",
HRef: NewHRef("/list/"),
Title: "list",
Rel: "instances",
Method: "get",
HRef: NewHRef("/list/"),
Schema: &Schema{
PatternProperties: map[string]*Schema{
"^\\w+$": {
Expand Down Expand Up @@ -330,13 +332,18 @@ var valuesTests = []struct {
},
{
Schema: &Schema{
Properties: map[string]*Schema{
"value": {
Type: "integer",
},
},
Type: "object",
},
Name: "Result",
Link: &Link{
Rel: "instances",
},
Values: []string{"[]*Result", "error"},
Values: []string{"*Result", "error"},
},
{
Schema: &Schema{
Expand Down Expand Up @@ -447,7 +454,19 @@ var valuesTests = []struct {
Type: "string",
},
},
Values: []string{"[]*string", "error"},
Values: []string{"string", "error"},
},
{
Schema: &Schema{},
Name: "Result",
Link: &Link{
Rel: "instances",
Title: "List",
TargetSchema: &Schema{
Type: []interface{}{"string", "null"},
},
},
Values: []string{"*string", "error"},
},
{
Schema: &Schema{
Expand Down
9 changes: 1 addition & 8 deletions templates/funcs.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,9 @@
func (s *Service) {{printf "%s-%s" $Name .Title | initialCap}}({{params $Name .}}) ({{values $Name $Def .}}) {
{{if ($Def.EmptyResult .)}}
return s.{{methodCap .Method}}(nil, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{else if ($Def.ReturnsCustomType .)}}
{{$Var := initialLow $Name}}var {{$Var}} {{returnType $Name $Def .}}
return &{{$Var}}, s.{{methodCap .Method}}(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{else if eq .Rel "instances"}}
{{$Var := printf "%s-%s" $Name "List" | initialLow}}
var {{$Var}} []*{{returnType $Name $Def .}}
return {{$Var}}, s.Get(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{else}}
{{$Var := initialLow $Name}}var {{$Var}} {{returnType $Name $Def .}}
return {{$Var}}, s.{{methodCap .Method}}(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
return {{if ($Def.ReturnsCustomType .)}}&{{end}}{{$Var}}, s.{{methodCap .Method}}(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{end}}
}
{{end}}
Expand Down
9 changes: 1 addition & 8 deletions templates/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,9 @@ var templates = map[string]string{"field.tmpl": `{{initialCap .Name}} {{.Type}}
func (s *Service) {{printf "%s-%s" $Name .Title | initialCap}}({{params $Name .}}) ({{values $Name $Def .}}) {
{{if ($Def.EmptyResult .)}}
return s.{{methodCap .Method}}(nil, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{else if ($Def.ReturnsCustomType .)}}
{{$Var := initialLow $Name}}var {{$Var}} {{returnType $Name $Def .}}
return &{{$Var}}, s.{{methodCap .Method}}(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{else if eq .Rel "instances"}}
{{$Var := printf "%s-%s" $Name "List" | initialLow}}
var {{$Var}} []*{{returnType $Name $Def .}}
return {{$Var}}, s.Get(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{else}}
{{$Var := initialLow $Name}}var {{$Var}} {{returnType $Name $Def .}}
return {{$Var}}, s.{{methodCap .Method}}(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
return {{if ($Def.ReturnsCustomType .)}}&{{end}}{{$Var}}, s.{{methodCap .Method}}(&{{$Var}}, fmt.Sprintf("{{.HRef}}", {{args .HRef}}){{requestParams .}})
{{end}}
}
{{end}}
Expand Down

0 comments on commit 2b9479c

Please sign in to comment.