From a7786cb662fbd782b4e67aa74702dad6820f92e7 Mon Sep 17 00:00:00 2001 From: Alexandros Filios Date: Tue, 11 Mar 2025 16:39:11 +0100 Subject: [PATCH] Test Signed-off-by: Alexandros Filios --- platform/common/sdk/dig/sdk.go | 30 +++++++++++++++++++++++++++++- platform/view/sdk/dig/sdk.go | 26 +++++--------------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/platform/common/sdk/dig/sdk.go b/platform/common/sdk/dig/sdk.go index bfa6e84d7..e18831490 100644 --- a/platform/common/sdk/dig/sdk.go +++ b/platform/common/sdk/dig/sdk.go @@ -8,8 +8,11 @@ package dig import ( "context" + "errors" "github.com/hyperledger-labs/fabric-smart-client/pkg/api" + "github.com/hyperledger-labs/fabric-smart-client/pkg/node" + "github.com/hyperledger-labs/fabric-smart-client/platform/view" "github.com/hyperledger-labs/fabric-smart-client/platform/view/driver" "go.uber.org/dig" ) @@ -22,8 +25,33 @@ type SDK interface { ConfigService() driver.ConfigService } -type BaseSDK struct{} +type BaseSDK struct { + C *dig.Container + Config *view.ConfigService +} func (s *BaseSDK) PostStart(context.Context) error { return nil } func (s *BaseSDK) Stop() error { return nil } + +func (s *BaseSDK) Container() *dig.Container { return s.C } + +func (s *BaseSDK) ConfigService() driver.ConfigService { return s.Config } + +func NewSDK(registry node.Registry) *BaseSDK { + return NewSDKWithContainer(dig.New(), registry) +} + +func NewSDKWithContainer(c *dig.Container, registry node.Registry) *BaseSDK { + sdk := &BaseSDK{ + C: c, + Config: view.GetConfigService(registry), + } + err := errors.Join( + sdk.C.Provide(func() node.Registry { return registry }), + ) + if err != nil { + panic(err) + } + return sdk +} diff --git a/platform/view/sdk/dig/sdk.go b/platform/view/sdk/dig/sdk.go index 8c07d159b..eb37430e1 100644 --- a/platform/view/sdk/dig/sdk.go +++ b/platform/view/sdk/dig/sdk.go @@ -50,33 +50,14 @@ var logger = logging.MustGetLogger("view-sdk") type SDK struct { *dig2.BaseSDK - C *dig.Container - Config *view.ConfigService } -func (p *SDK) Container() *dig.Container { return p.C } - -func (p *SDK) ConfigService() driver.ConfigService { return p.Config } - func NewSDK(registry node.Registry) *SDK { - return NewSDKWithContainer(dig.New(), registry) + return &SDK{BaseSDK: dig2.NewSDK(registry)} } func NewSDKWithContainer(c *dig.Container, registry node.Registry) *SDK { - sdk := &SDK{ - C: c, - Config: view.GetConfigService(registry), - } - err := errors.Join( - sdk.C.Provide(func() node.Registry { return registry }), - sdk.C.Provide(digutils.Identity[node.Registry](), dig.As(new(driver.ServiceProvider), new(node.Registry), new(view.ServiceProvider), new(finality.Registry))), - sdk.C.Provide(func() *view.ConfigService { return sdk.Config }), - sdk.C.Provide(digutils.Identity[*view.ConfigService](), dig.As(new(driver.ConfigService), new(id.ConfigProvider), new(endpoint.ConfigService))), - ) - if err != nil { - panic(err) - } - return sdk + return &SDK{BaseSDK: dig2.NewSDKWithContainer(c, registry)} } type ViewManager interface { @@ -86,6 +67,9 @@ type ViewManager interface { func (p *SDK) Install() error { err := errors.Join( + p.C.Provide(digutils.Identity[node.Registry](), dig.As(new(driver.ServiceProvider), new(node.Registry), new(view.ServiceProvider), new(finality.Registry))), + p.C.Provide(func() *view.ConfigService { return p.Config }), + p.C.Provide(digutils.Identity[*view.ConfigService](), dig.As(new(driver.ConfigService), new(id.ConfigProvider), new(endpoint.ConfigService))), p.C.Provide(crypto.NewProvider, dig.As(new(hash.Hasher))), p.C.Provide(simple.NewEventBus, dig.As(new(events.EventSystem), new(events.Publisher), new(events.Subscriber))), p.C.Provide(func(system events.EventSystem) *events.Service { return &events.Service{EventSystem: system} }),