ing
This commit is contained in:
parent
70018c51f5
commit
ae21044261
|
@ -6,7 +6,7 @@ import (
|
||||||
|
|
||||||
"git.loafle.net/commons_go/logging"
|
"git.loafle.net/commons_go/logging"
|
||||||
|
|
||||||
cdur "git.loafle.net/commons_go/di/util/reflect"
|
cur "git.loafle.net/commons_go/util/reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
var annotationRegistry map[string]*AnnotationDefinition
|
var annotationRegistry map[string]*AnnotationDefinition
|
||||||
|
@ -21,7 +21,7 @@ func RegisterAnnotation(name string, t reflect.Type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
meta := getMetaFields(t)
|
meta := getMetaFields(t)
|
||||||
fRT, _, _ := cdur.GetTypeInfo(t)
|
fRT, _, _ := cur.GetTypeInfo(t)
|
||||||
|
|
||||||
def := &AnnotationDefinition{
|
def := &AnnotationDefinition{
|
||||||
t: t,
|
t: t,
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
cdur "git.loafle.net/commons_go/di/util/reflect"
|
cur "git.loafle.net/commons_go/util/reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AnnotationFieldMeta struct {
|
type AnnotationFieldMeta struct {
|
||||||
|
@ -35,7 +35,7 @@ func (o anotationMetaOptions) Contains(optionName string) bool {
|
||||||
|
|
||||||
func getMetaFields(t reflect.Type) map[string]*AnnotationFieldMeta {
|
func getMetaFields(t reflect.Type) map[string]*AnnotationFieldMeta {
|
||||||
fields := make(map[string]*AnnotationFieldMeta, 0)
|
fields := make(map[string]*AnnotationFieldMeta, 0)
|
||||||
rt, _, _ := cdur.GetTypeInfo(t)
|
rt, _, _ := cur.GetTypeInfo(t)
|
||||||
if reflect.Struct != rt.Kind() {
|
if reflect.Struct != rt.Kind() {
|
||||||
return fields
|
return fields
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
package: git.loafle.net/commons_go/di
|
package: git.loafle.net/commons_go/di
|
||||||
import: []
|
import:
|
||||||
|
- package: git.loafle.net/commons_go/util
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
cda "git.loafle.net/commons_go/di/annotation"
|
cda "git.loafle.net/commons_go/di/annotation"
|
||||||
cdur "git.loafle.net/commons_go/di/util/reflect"
|
cur "git.loafle.net/commons_go/util/reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TypeDefinition struct {
|
type TypeDefinition struct {
|
||||||
|
@ -48,7 +48,7 @@ func (td *TypeDefinition) GetAnnotationByType(at reflect.Type, includeEmbedding
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkAnnotation(t reflect.Type, st reflect.Type) bool {
|
func checkAnnotation(t reflect.Type, st reflect.Type) bool {
|
||||||
rt, _, _ := cdur.GetTypeInfo(t)
|
rt, _, _ := cur.GetTypeInfo(t)
|
||||||
if reflect.Struct != rt.Kind() {
|
if reflect.Struct != rt.Kind() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,8 @@ import (
|
||||||
|
|
||||||
cda "git.loafle.net/commons_go/di/annotation"
|
cda "git.loafle.net/commons_go/di/annotation"
|
||||||
cdia "git.loafle.net/commons_go/di/injection/annotation"
|
cdia "git.loafle.net/commons_go/di/injection/annotation"
|
||||||
cdur "git.loafle.net/commons_go/di/util/reflect"
|
|
||||||
"git.loafle.net/commons_go/logging"
|
"git.loafle.net/commons_go/logging"
|
||||||
|
cur "git.loafle.net/commons_go/util/reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -58,7 +58,7 @@ func (cr *defaultComponentRegistry) RegisterType(t reflect.Type) {
|
||||||
if nil == t {
|
if nil == t {
|
||||||
logging.Logger().Panic("DI: t[reflect.Type] is nil")
|
logging.Logger().Panic("DI: t[reflect.Type] is nil")
|
||||||
}
|
}
|
||||||
if !cdur.IsTypeKind(t, reflect.Struct, true) {
|
if !cur.IsTypeKind(t, reflect.Struct, true) {
|
||||||
logging.Logger().Panic(fmt.Sprintf("DI: t[reflect.Type] must be specified but is %v", t))
|
logging.Logger().Panic(fmt.Sprintf("DI: t[reflect.Type] must be specified but is %v", t))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ func (cr *defaultComponentRegistry) GetInstance(t reflect.Type) interface{} {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
rt, _, _ := cdur.GetTypeInfo(t)
|
rt, _, _ := cur.GetTypeInfo(t)
|
||||||
td, ok := cr.definitionByType[rt]
|
td, ok := cr.definitionByType[rt]
|
||||||
if !ok {
|
if !ok {
|
||||||
td, err = cr.buildDefinition(t)
|
td, err = cr.buildDefinition(t)
|
||||||
|
@ -223,7 +223,7 @@ func (cr *defaultComponentRegistry) buildDefinition(t reflect.Type) (*TypeDefini
|
||||||
return nil, fmt.Errorf("t[reflect.Type] is nil")
|
return nil, fmt.Errorf("t[reflect.Type] is nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
rt, pkgName, tName := cdur.GetTypeInfo(t)
|
rt, pkgName, tName := cur.GetTypeInfo(t)
|
||||||
td := &TypeDefinition{}
|
td := &TypeDefinition{}
|
||||||
td.FullName = FullName(pkgName, tName)
|
td.FullName = FullName(pkgName, tName)
|
||||||
td.PkgName = pkgName
|
td.PkgName = pkgName
|
||||||
|
@ -239,7 +239,7 @@ func (cr *defaultComponentRegistry) buildDefinition(t reflect.Type) (*TypeDefini
|
||||||
|
|
||||||
func parseFields(t reflect.Type, td *TypeDefinition) {
|
func parseFields(t reflect.Type, td *TypeDefinition) {
|
||||||
// fields := make([]*FieldDefinition, 0)
|
// fields := make([]*FieldDefinition, 0)
|
||||||
rt, _, _ := cdur.GetTypeInfo(t)
|
rt, _, _ := cur.GetTypeInfo(t)
|
||||||
if reflect.Struct != rt.Kind() {
|
if reflect.Struct != rt.Kind() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -258,7 +258,7 @@ func parseFields(t reflect.Type, td *TypeDefinition) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if nil != as && 0 < len(as) {
|
if nil != as && 0 < len(as) {
|
||||||
fRT, fPkgName, fTName := cdur.GetTypeInfo(f.Type)
|
fRT, fPkgName, fTName := cur.GetTypeInfo(f.Type)
|
||||||
|
|
||||||
fd := &FieldDefinition{
|
fd := &FieldDefinition{
|
||||||
FieldName: f.Name,
|
FieldName: f.Name,
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package reflect
|
|
||||||
|
|
||||||
import (
|
|
||||||
"reflect"
|
|
||||||
)
|
|
||||||
|
|
||||||
func IsTypeKind(t reflect.Type, kind reflect.Kind, removePtr bool) bool {
|
|
||||||
if reflect.Ptr == t.Kind() {
|
|
||||||
if removePtr {
|
|
||||||
return IsTypeKind(t.Elem(), kind, removePtr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return kind == t.Kind()
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetTypeInfo(t reflect.Type) (realType reflect.Type, pkgName string, name string) {
|
|
||||||
if reflect.Ptr == t.Kind() {
|
|
||||||
return GetTypeInfo(t.Elem())
|
|
||||||
}
|
|
||||||
|
|
||||||
return t, t.PkgPath(), t.Name()
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user