bug fixed
This commit is contained in:
parent
e44b732fea
commit
7fe27b5719
13
registry.go
13
registry.go
|
@ -22,7 +22,7 @@ type Definition struct {
|
||||||
// Regist is interface
|
// Regist is interface
|
||||||
type Regist interface {
|
type Regist interface {
|
||||||
// Register is method
|
// Register is method
|
||||||
Register(t reflect.Type)
|
Register(t reflect.Type) error
|
||||||
// Parse is method
|
// Parse is method
|
||||||
Parse(tag reflect.StructTag) (map[reflect.Type]Annotation, error)
|
Parse(tag reflect.StructTag) (map[reflect.Type]Annotation, error)
|
||||||
}
|
}
|
||||||
|
@ -42,22 +42,22 @@ func newRegistry() Regist {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register is method
|
// Register is method
|
||||||
func Register(t reflect.Type) {
|
func Register(t reflect.Type) error {
|
||||||
registry.Register(t)
|
return registry.Register(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register is method
|
// Register is method
|
||||||
func (r *Registry) Register(t reflect.Type) {
|
func (r *Registry) Register(t reflect.Type) error {
|
||||||
rt, _, _ := luReflect.GetTypeInfo(t)
|
rt, _, _ := luReflect.GetTypeInfo(t)
|
||||||
f := r.getTypeAnnotationField(t)
|
f := r.getTypeAnnotationField(t)
|
||||||
if nil == f {
|
if nil == f {
|
||||||
panic(fmt.Sprintf("Annotation: This type[%s] is not Annotation. use TypeAnnotation", rt.Name()))
|
return fmt.Errorf("Annotation: This type[%s] is not Annotation. use TypeAnnotation", rt.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
name := r.parseAnnotationMeta(f.Tag)
|
name := r.parseAnnotationMeta(f.Tag)
|
||||||
|
|
||||||
if _, ok := r.definitions[name]; ok {
|
if _, ok := r.definitions[name]; ok {
|
||||||
panic(fmt.Sprintf("Annotation: name[%s] of annotation exist already", name))
|
return fmt.Errorf("Annotation: name[%s] of annotation exist already", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
def := &Definition{
|
def := &Definition{
|
||||||
|
@ -66,6 +66,7 @@ func (r *Registry) Register(t reflect.Type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
r.definitions[name] = def
|
r.definitions[name] = def
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse is method
|
// Parse is method
|
||||||
|
|
Loading…
Reference in New Issue
Block a user