From 2b7aca73d2f8903f1ffa9f93c25793b7a3eb9d94 Mon Sep 17 00:00:00 2001 From: Facundo Medica <14063057+facundomedica@users.noreply.github.com> Date: Mon, 6 Jun 2022 17:58:28 -0300 Subject: [PATCH] feat: add MsgServiceRouter to Baseapp (and runtime's provideCodecs) (#12168) ## Description This PR adds a way to provide through depinject BaseApp's MsgServiceRouter, required for `x/auth`. Ref: #12125 --- ### Author Checklist *All items are required. Please add a note to the item if the item is not applicable and please add links to any relevant follow up issues.* I have... - [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [x] added `!` to the type prefix if API or client breaking change - [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#pr-targeting)) - [ ] provided a link to the relevant issue or specification - [ ] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/main/docs/building-modules) - [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/main/CONTRIBUTING.md#testing) - [ ] added a changelog entry to `CHANGELOG.md` - [ ] included comments for [documenting Go code](https://blog.golang.org/godoc) - [ ] updated the relevant documentation or specification - [ ] reviewed "Files changed" and left comments if necessary - [ ] confirmed all CI checks have passed ### Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title - [ ] confirmed `!` in the type prefix if API or client breaking change - [ ] confirmed all author checklist items have been addressed - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] reviewed documentation is accurate - [ ] reviewed tests and test coverage - [ ] manually tested (if applicable) --- baseapp/baseapp.go | 5 +++++ runtime/builder.go | 9 ++++++++- runtime/module.go | 3 ++- simapp/app.go | 4 +++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 34f62c7b07..0962286149 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -198,6 +198,11 @@ func (app *BaseApp) Trace() bool { // MsgServiceRouter returns the MsgServiceRouter of a BaseApp. func (app *BaseApp) MsgServiceRouter() *MsgServiceRouter { return app.msgServiceRouter } +// SetMsgServiceRouter sets the MsgServiceRouter of a BaseApp. +func (app *BaseApp) SetMsgServiceRouter(msgServiceRouter *MsgServiceRouter) { + app.msgServiceRouter = msgServiceRouter +} + // MountStores mounts all IAVL or DB stores to the provided keys in the BaseApp // multistore. func (app *BaseApp) MountStores(keys ...storetypes.StoreKey) { diff --git a/runtime/builder.go b/runtime/builder.go index 47a979b4dc..4103427e99 100644 --- a/runtime/builder.go +++ b/runtime/builder.go @@ -25,12 +25,19 @@ func (a *AppBuilder) DefaultGenesis() map[string]json.RawMessage { } // Build builds an *App instance. -func (a *AppBuilder) Build(logger log.Logger, db dbm.DB, traceStore io.Writer, baseAppOptions ...func(*baseapp.BaseApp)) *App { +func (a *AppBuilder) Build( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + msgServiceRouter *baseapp.MsgServiceRouter, + baseAppOptions ...func(*baseapp.BaseApp), +) *App { for _, option := range a.app.baseAppOptions { baseAppOptions = append(baseAppOptions, option) } // TODO: when the auth module is configured, fill-in txDecoder bApp := baseapp.NewBaseApp(a.app.config.AppName, logger, db, nil, baseAppOptions...) + bApp.SetMsgServiceRouter(msgServiceRouter) bApp.SetCommitMultiStoreTracer(traceStore) bApp.SetVersion(version.Version) bApp.SetInterfaceRegistry(a.app.interfaceRegistry) diff --git a/runtime/module.go b/runtime/module.go index 399e9ad2c0..84c3f390c9 100644 --- a/runtime/module.go +++ b/runtime/module.go @@ -44,6 +44,7 @@ func provideCodecs(moduleBasics map[string]AppModuleBasicWrapper) ( *codec.LegacyAmino, appWrapper, codec.ProtoCodecMarshaler, + *baseapp.MsgServiceRouter, ) { interfaceRegistry := codectypes.NewInterfaceRegistry() amino := codec.NewLegacyAmino() @@ -67,7 +68,7 @@ func provideCodecs(moduleBasics map[string]AppModuleBasicWrapper) ( basicManager: basicManager, } - return interfaceRegistry, cdc, amino, app, cdc + return interfaceRegistry, cdc, amino, app, cdc, baseapp.NewMsgServiceRouter() } type appInputs struct { diff --git a/simapp/app.go b/simapp/app.go index bae5e40657..d25e3897a4 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -213,6 +213,7 @@ func NewSimApp( } var appBuilder *runtime.AppBuilder + var msgServiceRouter *baseapp.MsgServiceRouter err := depinject.Inject(AppConfig, &appBuilder, @@ -225,12 +226,13 @@ func NewSimApp( &app.BankKeeper, &app.FeeGrantKeeper, &app.StakingKeeper, + &msgServiceRouter, ) if err != nil { panic(err) } - app.App = appBuilder.Build(logger, db, traceStore, baseAppOptions...) + app.App = appBuilder.Build(logger, db, traceStore, msgServiceRouter, baseAppOptions...) app.keys = sdk.NewKVStoreKeys( minttypes.StoreKey, distrtypes.StoreKey,