diff --git a/README.md b/README.md index 114fb51..1dbc3ce 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ func BuildContainer() (*di.Container, error) { // Injects the whole DI Container di.ContainerArg(), // Injects another service - di.ServiceRefArg(di.StringRef("OtherService")), + di.ServiceArg(di.StringRef("OtherService")), // Inject multiple services by tag di.ServicesByTagsArg([]fmt.Stringer{di.StringRef("foo")}), // Injects a value using interface{} diff --git a/arg.go b/arg.go index 448f14f..e44f324 100644 --- a/arg.go +++ b/arg.go @@ -2,7 +2,6 @@ package di import "fmt" - type ServiceDefArg interface { evaluate(*Container) (interface{}, error) } @@ -13,7 +12,6 @@ type interfaceArg struct { inValue interface{} } - func (a *interfaceArg) evaluate(_ *Container) (interface{}, error) { return a.inValue, nil } @@ -29,19 +27,12 @@ type serviceRefArg struct { ref fmt.Stringer } - func (a *serviceRefArg) evaluate(c *Container) (interface{}, error) { return c.Get(a.ref) } - -func ServiceRefArg(ref fmt.Stringer) ServiceDefArg { - return &serviceRefArg{ref: ref} -} - -// Deprecated: use ServiceRefArg. func ServiceArg(ref fmt.Stringer) ServiceDefArg { - return ServiceRefArg(ref) + return &serviceRefArg{ref: ref} } // Services By Tag Arg allows to get one or more services by tags and inject them. @@ -49,12 +40,12 @@ type servicesByTagArg struct { tags []fmt.Stringer } - func (a *servicesByTagArg) evaluate(c *Container) (interface{}, error) { return c.FindByTags(a.tags) } // ServicesByTagsArg is a shortcut for a service argument. +//goland:noinspection GoUnusedExportedFunction func ServicesByTagsArg(tags []fmt.Stringer) ServiceDefArg { return &servicesByTagArg{tags: tags} } @@ -64,12 +55,10 @@ type paramArg struct { paramPath string } - func (a *paramArg) evaluate(c *Container) (interface{}, error) { return c.paramProvider.Get(a.paramPath) } - func ParamArg(paramPath string) ServiceDefArg { return ¶mArg{paramPath: paramPath} } @@ -77,12 +66,10 @@ func ParamArg(paramPath string) ServiceDefArg { // Context Argument injects the context from di.Container. type contextArg struct{} - func (a *contextArg) evaluate(c *Container) (interface{}, error) { return c.ctx, nil } - func ContextArg() ServiceDefArg { return &contextArg{} } @@ -90,12 +77,10 @@ func ContextArg() ServiceDefArg { // Container Argument injects the container from di.Container. type containerArg struct{} - func (a *containerArg) evaluate(c *Container) (interface{}, error) { return c, nil } - func ContainerArg() ServiceDefArg { return &containerArg{} } @@ -103,12 +88,11 @@ func ContainerArg() ServiceDefArg { // EventBus Argument injects the eventBus from di.EventBus. type eventBusArg struct{} - func (a *eventBusArg) evaluate(c *Container) (interface{}, error) { return c.eventBus, nil } - +//goland:noinspection GoUnusedExportedFunction func EventBusArg() ServiceDefArg { return &eventBusArg{} } diff --git a/container_test.go b/container_test.go index 40d8c60..19337cd 100644 --- a/container_test.go +++ b/container_test.go @@ -111,7 +111,7 @@ func BuildContainer() (*di.Container, error) { di.NewServiceDef(di.StringRef("TestService2")). Provider(NewTestService2). Args( - di.ServiceRefArg(di.StringRef("TestService1")), + di.ServiceArg(di.StringRef("TestService1")), di.InterfaceArg(true), di.ParamArg("foo.bar.baz"), ). diff --git a/examples/simple/main.go b/examples/simple/main.go index 745e821..9929d09 100644 --- a/examples/simple/main.go +++ b/examples/simple/main.go @@ -100,14 +100,14 @@ func main() { Provider(greeter.NewGreeter). Args( di.ContextArg(), - di.ServiceRefArg(di.LoggerService), + di.ServiceArg(di.LoggerService), di.ParamArg("morning"), ), di.NewServiceDef(greeter.ServiceGreeterAfternoon). Provider(greeter.NewGreeter). Args( di.ContextArg(), - di.ServiceRefArg(di.LoggerService), + di.ServiceArg(di.LoggerService), di.ParamArg("afternoon"), ), di.NewServiceDef(greeter.ServiceGreeterEvening). @@ -118,7 +118,7 @@ func main() { Provider(greeter.NewGreeter). Args( di.ContextArg(), - di.ServiceRefArg(di.LoggerService), + di.ServiceArg(di.LoggerService), di.ParamArg("evening"), ), ) diff --git a/service_def_example_test.go b/service_def_example_test.go index fce4c10..77442b1 100644 --- a/service_def_example_test.go +++ b/service_def_example_test.go @@ -21,7 +21,7 @@ func ExampleNewServiceDef() { // This magic Arg injects the context provided with di container di.ContextArg(), // This magic Arg injects the logger provided with di container - di.ServiceRefArg(di.LoggerService), + di.ServiceArg(di.LoggerService), // Interface Arg can be used for any value type. The passed value must match the target value type // in the provider function di.InterfaceArg("Hello, "), diff --git a/service_def_test.go b/service_def_test.go index c1c720a..d7a4d25 100644 --- a/service_def_test.go +++ b/service_def_test.go @@ -16,7 +16,7 @@ func TestNewServiceDef(t *testing.T) { di.ContextArg(), di.ContainerArg(), di.InterfaceArg(""), - di.ServiceRefArg(di.StringRef("bar")), + di.ServiceArg(di.StringRef("bar")), di.ParamArg(""), ). Tags(di.StringRef("foo"))