service interface added
reflect method call refactoring
This commit is contained in:
parent
3c62b06189
commit
7bd2c6403c
@ -6,7 +6,8 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"git.loafle.net/overflow/overflow_proxy_service/proxy"
|
"fmt"
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestServices(t *testing.T) {
|
func TestServices(t *testing.T) {
|
||||||
@ -50,6 +51,71 @@ func TestServiceParam(t *testing.T) {
|
|||||||
glog.Fatal("Json Unmarshal Failed : ", err.Error())
|
glog.Fatal("Json Unmarshal Failed : ", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.ObjectsAreEqual(proxy.MemberService{}, meb)
|
//assert.ObjectsAreEqual(proxy.MemberService{}, meb)
|
||||||
|
}
|
||||||
|
//
|
||||||
|
//type Member struct {
|
||||||
|
// Email string `json:"email"`
|
||||||
|
// Password string `json:"password"`
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//type MemberService struct {
|
||||||
|
// ServiceName string `json:"serviceName"`
|
||||||
|
// MethodName string `json:"methodName"`
|
||||||
|
// Param *Member `json:"param"`
|
||||||
|
//}
|
||||||
|
|
||||||
|
func TestComvertJson(t *testing.T) {
|
||||||
|
//res := `{"serviceName":"Member","methodName":"Regist","param":{"email":"geek@loafle.com","password":"qwer5795"}}`
|
||||||
|
|
||||||
|
InitServices()
|
||||||
|
|
||||||
|
meb, _ := g_services["Member"]
|
||||||
|
mem := meb.GetModel()
|
||||||
|
m := make(map[string]string)
|
||||||
|
|
||||||
|
m["email"] = "geek@loafle.com"
|
||||||
|
m["password"] = "qwer5795"
|
||||||
|
|
||||||
|
//ss := member.NewMemberService()
|
||||||
|
|
||||||
|
|
||||||
|
convertParam(mem, m)
|
||||||
|
|
||||||
|
methodName := reflect.ValueOf(meb).MethodByName("Regist")
|
||||||
|
in := make([]reflect.Value, methodName.Type().NumIn())
|
||||||
|
|
||||||
|
for i := 0; i < methodName.Type().NumIn(); i++{
|
||||||
|
temp := methodName.Type().In(i)
|
||||||
|
|
||||||
|
in[i] = reflect.ValueOf(mem)
|
||||||
|
fmt.Println(temp)
|
||||||
|
}
|
||||||
|
|
||||||
|
va := methodName.Call(in)[0].String()
|
||||||
|
fmt.Println(va)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//func TestReflectType(t *testing.T) {
|
||||||
|
//ss := &MemberService{}
|
||||||
|
////t1 := reflect.ValueOf(ss.Param).Elem()
|
||||||
|
//
|
||||||
|
//ms1 := reflect.New(reflect.TypeOf(ss.Param)).Elem().Type()
|
||||||
|
//
|
||||||
|
//fmt.Println(ms1)
|
||||||
|
////ss.Param = ms1
|
||||||
|
////ss.Param.Email = "ddd"
|
||||||
|
////fmt.Println(ss.Param.Email)
|
||||||
|
//ms := reflect.New(reflect.ValueOf(ss.Param).Type()).Elem()
|
||||||
|
//fmt.Printf("created a [%T]\n", reflect.ValueOf(ms).Type())
|
||||||
|
|
||||||
|
|
||||||
|
//}
|
||||||
|
|
||||||
|
func TestReflectType(t *testing.T) {
|
||||||
|
InitServices()
|
||||||
|
|
||||||
|
//serviceName, _ := g_services["Member"]
|
||||||
|
|
||||||
|
//reflect.TypeOf(serviceName).Elem().(member.MemberService)
|
||||||
|
}
|
@ -4,28 +4,32 @@ import (
|
|||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
pb "git.loafle.net/overflow/overflow_api_service/grpc"
|
pb "git.loafle.net/overflow/overflow_api_service/grpc"
|
||||||
"git.loafle.net/overflow/overflow_proxy_service/proxy/member"
|
"git.loafle.net/overflow/overflow_proxy_service/proxy/member"
|
||||||
"git.loafle.net/overflow/overflow_proxy_service/proxy/noauthagent"
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
var g_services map[string]interface{}
|
var g_services map[string]Services
|
||||||
|
|
||||||
func AddServices(name string, s interface{}) {
|
func AddServices(name string, s Services) {
|
||||||
if g_services == nil {
|
if g_services == nil {
|
||||||
g_services = make(map[string]interface{},0)
|
g_services = make(map[string]Services,0)
|
||||||
}
|
}
|
||||||
|
|
||||||
g_services[name] = s
|
g_services[name] = s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Services interface {
|
||||||
|
GetModel()(interface{})
|
||||||
|
}
|
||||||
|
|
||||||
func InitServices() {
|
func InitServices() {
|
||||||
g_services = make(map[string]interface{},0)
|
g_services = make(map[string]Services,0)
|
||||||
|
|
||||||
// proxy services save
|
// proxy services save
|
||||||
AddServices("Member", member.NewMember())
|
AddServices("Member", member.NewMemberService())
|
||||||
AddServices("NoAuthAgent", noauthagent.NewNoAuthAgentService())
|
//AddServices("NoAuthAgent", noauthagent.NewNoAuthAgentService())
|
||||||
}
|
}
|
||||||
type ServiceImpl struct {
|
type ServiceImpl struct {
|
||||||
|
|
||||||
@ -35,18 +39,28 @@ func (s *ServiceImpl) ExecServices(c context.Context, in *pb.ServiceInput) (*pb.
|
|||||||
// Check Service Name
|
// Check Service Name
|
||||||
serviceName, ok := g_services[in.ServiceName]
|
serviceName, ok := g_services[in.ServiceName]
|
||||||
|
|
||||||
glog.Infoln(serviceName)
|
glog.Infoln(serviceName.GetModel())
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Error("Not Exist Service Name")
|
glog.Error("Not Exist Service Name")
|
||||||
}
|
}
|
||||||
|
|
||||||
convertParam(serviceName, in.Param)
|
model := serviceName.GetModel()
|
||||||
|
convertParam(model, in.Param)
|
||||||
|
|
||||||
pbs := &pb.ServiceOutput{}
|
pbs := &pb.ServiceOutput{}
|
||||||
|
methodName := reflect.ValueOf(serviceName).MethodByName(in.MethodName)
|
||||||
|
params := make([]reflect.Value, methodName.Type().NumIn())
|
||||||
|
|
||||||
|
for i := 0; i < methodName.Type().NumIn(); i++{
|
||||||
|
temp := methodName.Type().In(i)
|
||||||
|
|
||||||
|
params[i] = reflect.ValueOf(model)
|
||||||
|
fmt.Println(temp)
|
||||||
|
}
|
||||||
|
|
||||||
// Todo Call Service Method
|
// Todo Call Service Method
|
||||||
result := reflect.ValueOf(serviceName).MethodByName(in.MethodName).Call([]reflect.Value{})[0].String()
|
result := methodName.Call(params)[0].String()
|
||||||
|
|
||||||
pbs.ResultStr = result
|
pbs.ResultStr = result
|
||||||
|
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
package: git.loafle.net/overflow/overflow_gateway_service
|
package: git.loafle.net/overflow/overflow_gateway_service
|
||||||
import:
|
import:
|
||||||
- package: git.loafle.net/overflow/overflow_api_service
|
- package: git.loafle.net/overflow/overflow_api_service
|
||||||
|
vcs: git
|
||||||
|
version: master
|
||||||
|
repo: https://git.loafle.net/overflow/overflow_api_service.git
|
||||||
subpackages:
|
subpackages:
|
||||||
- grpc
|
- grpc
|
||||||
- package: git.loafle.net/overflow/overflow_proxy_service
|
- package: git.loafle.net/overflow/overflow_proxy_service
|
||||||
|
vcs: git
|
||||||
|
version: master
|
||||||
|
repo: https://git.loafle.net/overflow/overflow_proxy_service.git
|
||||||
subpackages:
|
subpackages:
|
||||||
- proxy/member
|
- proxy/member
|
||||||
|
- proxy/noauthagent
|
||||||
- package: github.com/golang/glog
|
- package: github.com/golang/glog
|
||||||
- package: github.com/grpc-ecosystem/grpc-gateway
|
- package: github.com/grpc-ecosystem/grpc-gateway
|
||||||
|
version: ^1.2.2
|
||||||
subpackages:
|
subpackages:
|
||||||
- runtime
|
- runtime
|
||||||
- package: golang.org/x/net
|
- package: golang.org/x/net
|
||||||
|
Loading…
x
Reference in New Issue
Block a user