Skip to content

Commit

Permalink
mir:fixed chain info always nil and reflect value error
Browse files Browse the repository at this point in the history
  • Loading branch information
alimy committed Jan 15, 2019
1 parent 6b886c1 commit 7ece011
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
17 changes: 11 additions & 6 deletions fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,16 +76,21 @@ func TagMirFrom(entries ...interface{}) ([]*TagMir, error) {
continue
}
// merge tagFields by group
if mergedFields, exist := mergedTagMirs[tagFields.Group]; exist {
mergedFields.Fields = append(mergedFields.Fields, tagFields.Fields...)
var tagMir *TagMir
if item, exist := mergedTagMirs[tagFields.Group]; exist {
tagMir = item
} else {
mergedFields = &TagMir{
tagMir = &TagMir{
Group: tagFields.Group,
Fields: make([]*TagField, 0, len(tagFields.Fields)),
}
mergedFields.Fields = append(mergedFields.Fields, tagFields.Fields...)
mergedTagMirs[tagFields.Group] = mergedFields
mergedTagMirs[tagFields.Group] = tagMir
}
// Notice: override tagMir.Chain if tagFields.Chain not nil
if tagFields.Chain != nil {
tagMir.Chain = tagFields.Chain
}
tagMir.Fields = append(tagMir.Fields, tagFields.Fields...)
} else {
return nil, err
}
Expand Down Expand Up @@ -148,7 +153,7 @@ func tagMirFrom(entry interface{}) (*TagMir, error) {
if tagInfo.chainName != "" {
if !chainSetuped {
chainSetuped = true
tagMir.Chain = entryValue.FieldByName(tagInfo.chainName).Interface()
tagMir.Chain = entryValue.FieldByName(tagInfo.chainName).Elem().Interface()
break
} else {
return nil, tagMultChainInfo
Expand Down
2 changes: 1 addition & 1 deletion mir_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func checkGroupV2(t *testing.T, mir *TagMir) {
t.Errorf("want 2 handler in chain but have %d", len(chains))
}
} else {
t.Errorf("want chain in type []func()string but not")
t.Errorf("want chain in type []func()string but is %t", mir.Chain)
}
if len(mir.Fields) != 2 {
t.Errorf("want 2 TagFields but have %d", len(mir.Fields))
Expand Down
3 changes: 2 additions & 1 deletion module/example/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
)

type site struct {
Chain mir.Chain `mir:"-"`
v1 mir.Group `mir:"v1"`
index mir.Get `mir:"/index/"`
articles mir.Get `mir:"/articles/:category/#GetArticles"`
Expand All @@ -34,7 +35,7 @@ func main() {

// Register handler to engine by mir
e := ginE.Mir(engine)
if err := mir.Register(e, &site{}); err != nil {
if err := mir.Register(e, &site{Chain: gin.HandlersChain{gin.Logger(), gin.Recovery()}}); err != nil {
panic(err)
}

Expand Down

0 comments on commit 7ece011

Please sign in to comment.