diff --git a/CHANGELOG.md b/CHANGELOG.md index 28e01abc42e2..706c4d55654d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,6 +61,8 @@ older clients. ### API Breaking Changes +* [\#6231](https://github.com/cosmos/cosmos-sdk/pull/6231) Simplify `AppModule` interface, `Route` and `NewHandler` methods become only `Route` +and returns a new `Route` type. * [\#6212](https://github.com/cosmos/cosmos-sdk/pull/6212) Remove `Get*` prefixes from key construction functions * [\#6079](https://github.com/cosmos/cosmos-sdk/pull/6079) Remove `UpgradeOldPrivValFile` (deprecated in Tendermint Core v0.28). * (modules) [\#5664](https://github.com/cosmos/cosmos-sdk/pull/5664) Remove amino `Codec` from simulation `StoreDecoder`, which now returns a function closure in order to unmarshal the key-value pairs. diff --git a/baseapp/baseapp_test.go b/baseapp/baseapp_test.go index 36afc93cef15..22e0acd3cd7a 100644 --- a/baseapp/baseapp_test.go +++ b/baseapp/baseapp_test.go @@ -781,9 +781,9 @@ func TestCheckTx(t *testing.T) { anteOpt := func(bapp *BaseApp) { bapp.SetAnteHandler(anteHandlerTxTest(t, capKey1, counterKey)) } routerOpt := func(bapp *BaseApp) { // TODO: can remove this once CheckTx doesnt process msgs. - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + bapp.Router().AddRoute(sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { return &sdk.Result{}, nil - }) + })) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -831,7 +831,8 @@ func TestDeliverTx(t *testing.T) { // test increments in the handler deliverKey := []byte("deliver-key") routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + r := sdk.NewRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -884,8 +885,10 @@ func TestMultiMsgDeliverTx(t *testing.T) { deliverKey := []byte("deliver-key") deliverKey2 := []byte("deliver-key2") routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) - bapp.Router().AddRoute(routeMsgCounter2, handlerMsgCounter(t, capKey1, deliverKey2)) + r1 := sdk.NewRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + r2 := sdk.NewRoute(routeMsgCounter2, handlerMsgCounter(t, capKey1, deliverKey2)) + bapp.Router().AddRoute(r1) + bapp.Router().AddRoute(r2) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -960,10 +963,11 @@ func TestSimulateTx(t *testing.T) { } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx.GasMeter().ConsumeGas(gasConsumed, "test") return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -1024,9 +1028,10 @@ func TestRunInvalidTransaction(t *testing.T) { }) } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -1149,11 +1154,12 @@ func TestTxGasLimits(t *testing.T) { } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { count := msg.(msgCounter).Counter ctx.GasMeter().ConsumeGas(uint64(count), "counter-handler") return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -1232,11 +1238,12 @@ func TestMaxBlockGasLimits(t *testing.T) { } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { count := msg.(msgCounter).Counter ctx.GasMeter().ConsumeGas(uint64(count), "counter-handler") return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -1317,9 +1324,10 @@ func TestCustomRunTxPanicHandler(t *testing.T) { }) } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -1356,7 +1364,8 @@ func TestBaseAppAnteHandler(t *testing.T) { deliverKey := []byte("deliver-key") routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + r := sdk.NewRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + bapp.Router().AddRoute(r) } cdc := codec.New() @@ -1451,11 +1460,12 @@ func TestGasConsumptionBadTx(t *testing.T) { } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { count := msg.(msgCounter).Counter ctx.GasMeter().ConsumeGas(uint64(count), "counter-handler") return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } cdc := codec.New() @@ -1504,11 +1514,12 @@ func TestQuery(t *testing.T) { } routerOpt := func(bapp *BaseApp) { - bapp.Router().AddRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + r := sdk.NewRoute(routeMsgCounter, func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { store := ctx.KVStore(capKey1) store.Set(key, value) return &sdk.Result{}, nil }) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) @@ -1639,8 +1650,8 @@ type testCustomRouter struct { routes sync.Map } -func (rtr *testCustomRouter) AddRoute(path string, h sdk.Handler) sdk.Router { - rtr.routes.Store(path, h) +func (rtr *testCustomRouter) AddRoute(route *sdk.Route) sdk.Router { + rtr.routes.Store(route.Path(), route.Handler()) return rtr } @@ -1662,7 +1673,8 @@ func TestWithRouter(t *testing.T) { deliverKey := []byte("deliver-key") routerOpt := func(bapp *BaseApp) { bapp.SetRouter(&testCustomRouter{routes: sync.Map{}}) - bapp.Router().AddRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + r := sdk.NewRoute(routeMsgCounter, handlerMsgCounter(t, capKey1, deliverKey)) + bapp.Router().AddRoute(r) } app := setupBaseApp(t, anteOpt, routerOpt) diff --git a/baseapp/router.go b/baseapp/router.go index 02303bbbb4f3..4108afe36c37 100644 --- a/baseapp/router.go +++ b/baseapp/router.go @@ -21,15 +21,15 @@ func NewRouter() *Router { // AddRoute adds a route path to the router with a given handler. The route must // be alphanumeric. -func (rtr *Router) AddRoute(path string, h sdk.Handler) sdk.Router { - if !sdk.IsAlphaNumeric(path) { +func (rtr *Router) AddRoute(route *sdk.Route) sdk.Router { + if !sdk.IsAlphaNumeric(route.Path()) { panic("route expressions can only contain alphanumeric characters") } - if rtr.routes[path] != nil { - panic(fmt.Sprintf("route %s has already been initialized", path)) + if rtr.routes[route.Path()] != nil { + panic(fmt.Sprintf("route %s has already been initialized", route.Path())) } - rtr.routes[path] = h + rtr.routes[route.Path()] = route.Handler() return rtr } diff --git a/baseapp/router_test.go b/baseapp/router_test.go index 86b727568d5d..1e11dc0ca089 100644 --- a/baseapp/router_test.go +++ b/baseapp/router_test.go @@ -17,15 +17,15 @@ func TestRouter(t *testing.T) { // require panic on invalid route require.Panics(t, func() { - rtr.AddRoute("*", testHandler) + rtr.AddRoute(sdk.NewRoute("*", testHandler)) }) - rtr.AddRoute("testRoute", testHandler) + rtr.AddRoute(sdk.NewRoute("testRoute", testHandler)) h := rtr.Route(sdk.Context{}, "testRoute") require.NotNil(t, h) // require panic on duplicate route require.Panics(t, func() { - rtr.AddRoute("testRoute", testHandler) + rtr.AddRoute(sdk.NewRoute("testRoute", testHandler)) }) } diff --git a/docs/building-modules/handler.md b/docs/building-modules/handler.md index 08850b258259..88f114f390bd 100644 --- a/docs/building-modules/handler.md +++ b/docs/building-modules/handler.md @@ -28,8 +28,8 @@ Let us break it down: Module `handler`s are typically implemented in a `./handler.go` file inside the module's folder. The [module manager](./module-manager.md) is used to add the module's `handler`s to the -[application's `router`](../core/baseapp.md#message-routing) via the `NewHandler()` method. Typically, -the manager's `NewHandler()` method simply calls a `NewHandler()` method defined in `handler.go`, +[application's `router`](../core/baseapp.md#message-routing) via the `Route()` method. Typically, +the manager's `Route()` method simply constructs a Route that calls a `NewHandler()` method defined in `handler.go`, which looks like the following: ```go diff --git a/docs/building-modules/module-manager.md b/docs/building-modules/module-manager.md index 5adc44fd22c4..8d8abf668c1f 100644 --- a/docs/building-modules/module-manager.md +++ b/docs/building-modules/module-manager.md @@ -67,8 +67,7 @@ The `AppModule` interface defines the inter-dependent methods modules need to im Let us go through the methods of `AppModule`: - `RegisterInvariants(sdk.InvariantRegistry)`: Registers the [`invariants`](./invariants.md) of the module. If the invariants deviates from its predicted value, the [`InvariantRegistry`](./invariants.md#registry) triggers appropriate logic (most often the chain will be halted). -- `Route()`: Returns the name of the module's route, for [`message`s](./messages-and-queries.md#messages) to be routed to the module by [`baseapp`](../core/baseapp.md#message-routing). -- `NewHandler()`: Returns a [`handler`](./handler.md) given the `Type()` of the `message`, in order to process the `message`. +- `Route()`: Returns the route for [`message`s](./messages-and-queries.md#messages) to be routed to the module by [`baseapp`](../core/baseapp.md#message-routing). - `QuerierRoute()`: Returns the name of the module's query route, for [`queries`](./messages-and-queries.md#queries) to be routes to the module by [`baseapp`](../core/baseapp.md#query-routing). - `NewQuerierHandler()`: Returns a [`querier`](./querier.md) given the query `path`, in order to process the `query`. - `BeginBlock(sdk.Context, abci.RequestBeginBlock)`: This method gives module developers the option to implement logic that is automatically triggered at the beginning of each block. Implement empty if no logic needs to be triggered at the beginning of each block for this module. @@ -78,7 +77,7 @@ Let us go through the methods of `AppModule`: Typically, the various application module interfaces are implemented in a file called `module.go`, located in the module's folder (e.g. `./x/module/module.go`). -Almost every module need to implement the `AppModuleBasic` and `AppModule` interfaces. If the module is only used for genesis, it will implement `AppModuleGenesis` instead of `AppModule`. The concrete type that implements the interface can add parameters that are required for the implementation of the various methods of the interface. For example, the `NewHandler()` function often calls a `NewHandler(k keeper)` function defined in [`handler.go`](./handler.md) and therefore needs to pass the module's [`keeper`](./keeper.md) as parameter. +Almost every module need to implement the `AppModuleBasic` and `AppModule` interfaces. If the module is only used for genesis, it will implement `AppModuleGenesis` instead of `AppModule`. The concrete type that implements the interface can add parameters that are required for the implementation of the various methods of the interface. For example, the `Route()` function often calls a `NewHandler(k keeper)` function defined in [`handler.go`](./handler.md) and therefore needs to pass the module's [`keeper`](./keeper.md) as parameter. ```go // example diff --git a/server/mock/app.go b/server/mock/app.go index 6779ce2c3f17..51a50efc72b0 100644 --- a/server/mock/app.go +++ b/server/mock/app.go @@ -36,8 +36,8 @@ func NewApp(rootDir string, logger log.Logger) (abci.Application, error) { baseApp.SetInitChainer(InitChainer(capKeyMainStore)) - // Set a handler Route. - baseApp.Router().AddRoute("kvstore", KVStoreHandler(capKeyMainStore)) + // Set a Route. + baseApp.Router().AddRoute(sdk.NewRoute("kvstore", KVStoreHandler(capKeyMainStore))) // Load latest version. if err := baseApp.LoadLatestVersion(); err != nil { diff --git a/tests/mocks/types_module_module.go b/tests/mocks/types_module_module.go index 2db37ef602aa..d2663f5d4c91 100644 --- a/tests/mocks/types_module_module.go +++ b/tests/mocks/types_module_module.go @@ -437,10 +437,10 @@ func (mr *MockAppModuleMockRecorder) RegisterInvariants(arg0 interface{}) *gomoc } // Route mocks base method -func (m *MockAppModule) Route() string { +func (m *MockAppModule) Route() *types.Route { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Route") - ret0, _ := ret[0].(string) + ret0, _ := ret[0].(*types.Route) return ret0 } @@ -450,20 +450,6 @@ func (mr *MockAppModuleMockRecorder) Route() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Route", reflect.TypeOf((*MockAppModule)(nil).Route)) } -// NewHandler mocks base method -func (m *MockAppModule) NewHandler() types.Handler { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "NewHandler") - ret0, _ := ret[0].(types.Handler) - return ret0 -} - -// NewHandler indicates an expected call of NewHandler -func (mr *MockAppModuleMockRecorder) NewHandler() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewHandler", reflect.TypeOf((*MockAppModule)(nil).NewHandler)) -} - // QuerierRoute mocks base method func (m *MockAppModule) QuerierRoute() string { m.ctrl.T.Helper() diff --git a/tests/mocks/types_router.go b/tests/mocks/types_router.go index 924d95146eda..33fe6edee67a 100644 --- a/tests/mocks/types_router.go +++ b/tests/mocks/types_router.go @@ -34,17 +34,17 @@ func (m *MockRouter) EXPECT() *MockRouterMockRecorder { } // AddRoute mocks base method -func (m *MockRouter) AddRoute(r string, h types.Handler) types.Router { +func (m *MockRouter) AddRoute(r *types.Route) types.Router { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddRoute", r, h) + ret := m.ctrl.Call(m, "AddRoute", r) ret0, _ := ret[0].(types.Router) return ret0 } // AddRoute indicates an expected call of AddRoute -func (mr *MockRouterMockRecorder) AddRoute(r, h interface{}) *gomock.Call { +func (mr *MockRouterMockRecorder) AddRoute(r interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoute", reflect.TypeOf((*MockRouter)(nil).AddRoute), r, h) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddRoute", reflect.TypeOf((*MockRouter)(nil).AddRoute), r) } // Route mocks base method diff --git a/types/module/module.go b/types/module/module.go index 92ec90b3a491..a46bb74b706e 100644 --- a/types/module/module.go +++ b/types/module/module.go @@ -141,8 +141,7 @@ type AppModule interface { RegisterInvariants(sdk.InvariantRegistry) // routes - Route() string - NewHandler() sdk.Handler + Route() *sdk.Route // Deprecated: use RegisterQueryService QuerierRoute() string // Deprecated: use RegisterQueryService @@ -173,10 +172,7 @@ func NewGenesisOnlyAppModule(amg AppModuleGenesis) AppModule { func (GenesisOnlyAppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} // Route empty module message route -func (GenesisOnlyAppModule) Route() string { return "" } - -// NewHandler returns an empty module handler -func (GenesisOnlyAppModule) NewHandler() sdk.Handler { return nil } +func (GenesisOnlyAppModule) Route() *sdk.Route { return nil } // QuerierRoute returns an empty module querier route func (GenesisOnlyAppModule) QuerierRoute() string { return "" } @@ -255,8 +251,8 @@ func (m *Manager) RegisterInvariants(ir sdk.InvariantRegistry) { // RegisterRoutes registers all module routes and module querier routes func (m *Manager) RegisterRoutes(router sdk.Router, queryRouter sdk.QueryRouter) { for _, module := range m.Modules { - if module.Route() != "" { - router.AddRoute(module.Route(), module.NewHandler()) + if module.Route() != nil { + router.AddRoute(module.Route()) } if module.QuerierRoute() != "" { queryRouter.AddRoute(module.QuerierRoute(), module.NewQuerierHandler()) diff --git a/types/module/module_test.go b/types/module/module_test.go index e3a63fe2a601..ead9fa3afe3d 100644 --- a/types/module/module_test.go +++ b/types/module/module_test.go @@ -69,9 +69,8 @@ func TestGenesisOnlyAppModule(t *testing.T) { mockInvariantRegistry := mocks.NewMockInvariantRegistry(mockCtrl) goam := module.NewGenesisOnlyAppModule(mockModule) - require.Empty(t, goam.Route()) + require.Nil(t, goam.Route()) require.Empty(t, goam.QuerierRoute()) - require.Nil(t, goam.NewHandler()) require.Nil(t, goam.NewQuerierHandler()) // no-op @@ -142,12 +141,10 @@ func TestManager_RegisterRoutes(t *testing.T) { router := mocks.NewMockRouter(mockCtrl) handler1, handler2 := sdk.Handler(nil), sdk.Handler(nil) - mockAppModule1.EXPECT().Route().Times(2).Return("route1") - mockAppModule2.EXPECT().Route().Times(2).Return("route2") - mockAppModule1.EXPECT().NewHandler().Times(1).Return(handler1) - mockAppModule2.EXPECT().NewHandler().Times(1).Return(handler2) - router.EXPECT().AddRoute(gomock.Eq("route1"), gomock.Eq(handler1)).Times(1) - router.EXPECT().AddRoute(gomock.Eq("route2"), gomock.Eq(handler2)).Times(1) + mockAppModule1.EXPECT().Route().Times(2).Return(sdk.NewRoute("route1", handler1)) + mockAppModule2.EXPECT().Route().Times(2).Return(sdk.NewRoute("route2", handler2)) + router.EXPECT().AddRoute(gomock.Eq(sdk.NewRoute("route1", handler1))).Times(1) + router.EXPECT().AddRoute(gomock.Eq(sdk.NewRoute("route2", handler2))).Times(1) queryRouter := mocks.NewMockQueryRouter(mockCtrl) mockAppModule1.EXPECT().QuerierRoute().Times(2).Return("querierRoute1") diff --git a/types/router.go b/types/router.go index 12d0455f805d..d009e2afa227 100644 --- a/types/router.go +++ b/types/router.go @@ -26,10 +26,27 @@ var ( // Router provides handlers for each transaction type. type Router interface { - AddRoute(r string, h Handler) Router + AddRoute(r *Route) Router Route(ctx Context, path string) Handler } +type Route struct { + path string + handler Handler +} + +func NewRoute(p string, h Handler) *Route { + return &Route{path: p, handler: h} +} + +func (r Route) Path() string { + return r.path +} + +func (r Route) Handler() Handler { + return r.handler +} + // QueryRouter provides queryables for each query path. type QueryRouter interface { AddRoute(r string, h Querier) QueryRouter diff --git a/x/auth/module.go b/x/auth/module.go index 291654a114a3..d448304e7cb0 100644 --- a/x/auth/module.go +++ b/x/auth/module.go @@ -105,10 +105,7 @@ func (AppModule) Name() string { func (AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} // Route returns the message routing key for the auth module. -func (AppModule) Route() string { return "" } - -// NewHandler returns an sdk.Handler for the auth module. -func (AppModule) NewHandler() sdk.Handler { return nil } +func (AppModule) Route() *sdk.Route { return nil } // QuerierRoute returns the auth module's querier route name. func (AppModule) QuerierRoute() string { diff --git a/x/bank/module.go b/x/bank/module.go index 2461450f72bd..0d7daff9d6c2 100644 --- a/x/bank/module.go +++ b/x/bank/module.go @@ -108,10 +108,9 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } // Route returns the message routing key for the bank module. -func (AppModule) Route() string { return RouterKey } - -// NewHandler returns an sdk.Handler for the bank module. -func (am AppModule) NewHandler() sdk.Handler { return NewHandler(am.keeper) } +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) +} // QuerierRoute returns the bank module's querier route name. func (AppModule) QuerierRoute() string { return RouterKey } diff --git a/x/capability/module.go b/x/capability/module.go index 0ebd9aa2c27c..e3d4a865d2d9 100644 --- a/x/capability/module.go +++ b/x/capability/module.go @@ -95,14 +95,11 @@ func (am AppModule) Name() string { } // Route returns the capability module's message routing key. -func (AppModule) Route() string { return "" } +func (AppModule) Route() *sdk.Route { return nil } // QuerierRoute returns the capability module's query routing key. func (AppModule) QuerierRoute() string { return "" } -// NewHandler returns the capability module's message Handler. -func (am AppModule) NewHandler() sdk.Handler { return nil } - // NewQuerierHandler returns the capability module's Querier. func (am AppModule) NewQuerierHandler() sdk.Querier { return nil } diff --git a/x/crisis/module.go b/x/crisis/module.go index 6111a289c9c4..d32614c00e48 100644 --- a/x/crisis/module.go +++ b/x/crisis/module.go @@ -94,13 +94,8 @@ func (AppModule) Name() string { func (AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} // Route returns the message routing key for the crisis module. -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler returns an sdk.Handler for the crisis module. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(*am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(*am.keeper)) } // QuerierRoute returns no querier route. diff --git a/x/distribution/module.go b/x/distribution/module.go index 6848c012500a..7c1dc66ef475 100644 --- a/x/distribution/module.go +++ b/x/distribution/module.go @@ -119,13 +119,8 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } // Route returns the message routing key for the distribution module. -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler returns an sdk.Handler for the distribution module. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) } // QuerierRoute returns the distribution module's querier route name. diff --git a/x/evidence/module.go b/x/evidence/module.go index 2990d52555d1..96af56883c51 100644 --- a/x/evidence/module.go +++ b/x/evidence/module.go @@ -127,8 +127,8 @@ func (am AppModule) Name() string { } // Route returns the evidence module's message routing key. -func (AppModule) Route() string { - return RouterKey +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) } // QuerierRoute returns the evidence module's query routing key. @@ -136,11 +136,6 @@ func (AppModule) QuerierRoute() string { return QuerierRoute } -// NewHandler returns the evidence module's message Handler. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(am.keeper) -} - // NewQuerierHandler returns the evidence module's Querier. func (am AppModule) NewQuerierHandler() sdk.Querier { return NewQuerier(am.keeper) diff --git a/x/gov/module.go b/x/gov/module.go index 48ba7bddc928..8ae5b9388669 100644 --- a/x/gov/module.go +++ b/x/gov/module.go @@ -135,13 +135,8 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } // Route returns the message routing key for the gov module. -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler returns an sdk.Handler for the gov module. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) } // QuerierRoute returns the gov module's querier route name. diff --git a/x/ibc-transfer/module.go b/x/ibc-transfer/module.go index 45eea63a3758..3ab73573704f 100644 --- a/x/ibc-transfer/module.go +++ b/x/ibc-transfer/module.go @@ -105,13 +105,8 @@ func (AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } // Route implements the AppModule interface -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler implements the AppModule interface -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) } // QuerierRoute implements the AppModule interface diff --git a/x/ibc/module.go b/x/ibc/module.go index f68c4e5a8dc1..507ed8658d37 100644 --- a/x/ibc/module.go +++ b/x/ibc/module.go @@ -108,13 +108,8 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } // Route returns the message routing key for the ibc module. -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler returns an sdk.Handler for the ibc module. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(*am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(*am.keeper)) } // QuerierRoute returns the ibc module's querier route name. diff --git a/x/mint/module.go b/x/mint/module.go index 5c03561b7646..d02cc6fc6c90 100644 --- a/x/mint/module.go +++ b/x/mint/module.go @@ -100,10 +100,7 @@ func (AppModule) Name() string { func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} // Route returns the message routing key for the mint module. -func (AppModule) Route() string { return "" } - -// NewHandler returns an sdk.Handler for the mint module. -func (am AppModule) NewHandler() sdk.Handler { return nil } +func (AppModule) Route() *sdk.Route { return nil } // QuerierRoute returns the mint module's querier route name. func (AppModule) QuerierRoute() string { diff --git a/x/params/module.go b/x/params/module.go index 8811752cebbe..e37b905ac393 100644 --- a/x/params/module.go +++ b/x/params/module.go @@ -79,14 +79,12 @@ func NewAppModule(k Keeper) AppModule { func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} -func (am AppModule) NewHandler() sdk.Handler { return nil } - // InitGenesis performs a no-op. func (am AppModule) InitGenesis(_ sdk.Context, _ codec.JSONMarshaler, _ json.RawMessage) []abci.ValidatorUpdate { return []abci.ValidatorUpdate{} } -func (AppModule) Route() string { return "" } +func (AppModule) Route() *sdk.Route { return nil } // GenerateGenesisState performs a no-op. func (AppModule) GenerateGenesisState(simState *module.SimulationState) {} diff --git a/x/slashing/module.go b/x/slashing/module.go index d8f1627311af..7dd55f981c97 100644 --- a/x/slashing/module.go +++ b/x/slashing/module.go @@ -110,13 +110,8 @@ func (AppModule) Name() string { func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} // Route returns the message routing key for the slashing module. -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler returns an sdk.Handler for the slashing module. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) } // QuerierRoute returns the slashing module's querier route name. diff --git a/x/staking/module.go b/x/staking/module.go index 693496db1bb2..777c4dab9db9 100644 --- a/x/staking/module.go +++ b/x/staking/module.go @@ -134,13 +134,8 @@ func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) { } // Route returns the message routing key for the staking module. -func (AppModule) Route() string { - return RouterKey -} - -// NewHandler returns an sdk.Handler for the staking module. -func (am AppModule) NewHandler() sdk.Handler { - return NewHandler(am.keeper) +func (am AppModule) Route() *sdk.Route { + return sdk.NewRoute(RouterKey, NewHandler(am.keeper)) } // QuerierRoute returns the staking module's querier route name. diff --git a/x/upgrade/module.go b/x/upgrade/module.go index 2bf29a698687..6ef3c07a3dab 100644 --- a/x/upgrade/module.go +++ b/x/upgrade/module.go @@ -98,10 +98,7 @@ func NewAppModule(keeper Keeper) AppModule { func (AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} // Route is empty, as we do not handle Messages (just proposals) -func (AppModule) Route() string { return "" } - -// NewHandler is empty, as we do not handle Messages (just proposals) -func (am AppModule) NewHandler() sdk.Handler { return nil } +func (AppModule) Route() *sdk.Route { return nil } // QuerierRoute returns the route we respond to for abci queries func (AppModule) QuerierRoute() string { return QuerierKey }