Skip to content

Commit

Permalink
refactor: export HasRegisterServices (#23488)
Browse files Browse the repository at this point in the history
  • Loading branch information
aljo242 authored Jan 23, 2025
1 parent 1253ee5 commit 8493d4f
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 71 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i
### Improvements

* (codec) [#22988](https://github.com/cosmos/cosmos-sdk/pull/22988) Improve edge case handling for recursion limits.
* (module) [#23488](https://github.com/cosmos/cosmos-sdk/pull/23488) Remove CoreAppModuleAdaptor which is no longer used and add HasRegisterServices public interface.

### Bug Fixes

Expand Down
11 changes: 2 additions & 9 deletions runtime/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmtcrypto "github.com/cometbft/cometbft/crypto"
cmted25519 "github.com/cometbft/cometbft/crypto/ed25519"
"google.golang.org/grpc"

runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
"cosmossdk.io/core/appmodule"
Expand Down Expand Up @@ -80,8 +79,8 @@ func (a *App) RegisterModules(modules ...module.AppModule) error {

if mod, ok := appModule.(module.HasServices); ok {
mod.RegisterServices(a.configurator)
} else if module, ok := appModule.(hasServicesV1); ok {
if err := module.RegisterServices(a.configurator); err != nil {
} else if mod, ok := appModule.(module.HasRegisterServices); ok {
if err := mod.RegisterServices(a.configurator); err != nil {
return err
}
}
Expand Down Expand Up @@ -267,12 +266,6 @@ func (a *App) UnsafeFindStoreKey(storeKey string) storetypes.StoreKey {
return a.storeKeys[i]
}

// hasServicesV1 is the interface for registering service in baseapp Cosmos SDK.
// This API is part of core/appmodule but commented out for dependencies.
type hasServicesV1 interface {
RegisterServices(grpc.ServiceRegistrar) error
}

// ValidatorKeyProvider returns a function that generates a private key for use by comet.
func (a *App) ValidatorKeyProvider() KeyGenF {
return func() (cmtcrypto.PrivKey, error) {
Expand Down
40 changes: 20 additions & 20 deletions testutil/mock/types_module_module.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

66 changes: 34 additions & 32 deletions types/module/core_module.go → types/module/core_module_test.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package module
package module_test

import (
"context"
Expand All @@ -14,34 +14,36 @@ import (

"github.com/cosmos/cosmos-sdk/client"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
)

var (
_ appmodule.AppModule = coreAppModuleAdaptor{}

_ HasAminoCodec = coreAppModuleAdaptor{}
_ HasGRPCGateway = coreAppModuleAdaptor{}
_ module.HasAminoCodec = coreAppModuleAdaptor{}
_ module.HasGRPCGateway = coreAppModuleAdaptor{}
_ appmodule.HasRegisterInterfaces = coreAppModuleAdaptor{}
_ HasABCIGenesis = coreAppModuleAdaptor{}
_ HasServices = coreAppModuleAdaptor{}
_ module.HasABCIGenesis = coreAppModuleAdaptor{}
_ module.HasServices = coreAppModuleAdaptor{}
)

// CoreAppModuleAdaptor wraps the core API module as an AppModule that this version of the SDK can use.
func CoreAppModuleAdaptor(name string, module appmodule.AppModule) AppModule {
func newCoreAppModuleAdaptor(name string, module appmodule.AppModule) module.AppModule {
return coreAppModuleAdaptor{
name: name,
module: module,
name: name,
appModule: module,
}
}

// coreAppModuleAdaptor wraps the core API module as an AppModule that this version of the SDK can use.
// This is only used for testing purposes.
type coreAppModuleAdaptor struct {
name string
module appmodule.AppModule
name string
appModule appmodule.AppModule
}

// DefaultGenesis implements HasGenesis
func (c coreAppModuleAdaptor) DefaultGenesis() json.RawMessage {
if mod, ok := c.module.(appmodule.HasGenesisAuto); ok {
if mod, ok := c.appModule.(appmodule.HasGenesisAuto); ok {
target := genesis.RawJSONTarget{}
err := mod.DefaultGenesis(target.Target())
if err != nil {
Expand All @@ -56,11 +58,11 @@ func (c coreAppModuleAdaptor) DefaultGenesis() json.RawMessage {
return res
}

if mod, ok := c.module.(HasGenesisBasics); ok {
if mod, ok := c.appModule.(module.HasGenesisBasics); ok {
return mod.DefaultGenesis()
}

if mod, ok := c.module.(HasGenesis); ok {
if mod, ok := c.appModule.(module.HasGenesis); ok {
return mod.DefaultGenesis()
}

Expand All @@ -69,7 +71,7 @@ func (c coreAppModuleAdaptor) DefaultGenesis() json.RawMessage {

// ValidateGenesis implements HasGenesis
func (c coreAppModuleAdaptor) ValidateGenesis(bz json.RawMessage) error {
if mod, ok := c.module.(appmodule.HasGenesisAuto); ok {
if mod, ok := c.appModule.(appmodule.HasGenesisAuto); ok {
source, err := genesis.SourceFromRawJSON(bz)
if err != nil {
return err
Expand All @@ -80,11 +82,11 @@ func (c coreAppModuleAdaptor) ValidateGenesis(bz json.RawMessage) error {
}
}

if mod, ok := c.module.(HasGenesisBasics); ok {
if mod, ok := c.appModule.(module.HasGenesisBasics); ok {
return mod.ValidateGenesis(bz)
}

if mod, ok := c.module.(HasGenesis); ok {
if mod, ok := c.appModule.(module.HasGenesis); ok {
return mod.ValidateGenesis(bz)
}

Expand All @@ -93,7 +95,7 @@ func (c coreAppModuleAdaptor) ValidateGenesis(bz json.RawMessage) error {

// ExportGenesis implements HasGenesis
func (c coreAppModuleAdaptor) ExportGenesis(ctx context.Context) (json.RawMessage, error) {
if module, ok := c.module.(appmodule.HasGenesisAuto); ok {
if module, ok := c.appModule.(appmodule.HasGenesisAuto); ok {
ctx := sdk.UnwrapSDKContext(ctx).WithGasMeter(storetypes.NewInfiniteGasMeter()) // avoid race conditions
target := genesis.RawJSONTarget{}
err := module.ExportGenesis(ctx, target.Target())
Expand All @@ -109,11 +111,11 @@ func (c coreAppModuleAdaptor) ExportGenesis(ctx context.Context) (json.RawMessag
return rawJSON, nil
}

if mod, ok := c.module.(HasABCIGenesis); ok {
if mod, ok := c.appModule.(module.HasABCIGenesis); ok {
return mod.ExportGenesis(ctx)
}

if mod, ok := c.module.(HasGenesis); ok {
if mod, ok := c.appModule.(module.HasGenesis); ok {
eg, err := mod.ExportGenesis(ctx)
if err != nil {
return nil, err
Expand All @@ -126,8 +128,8 @@ func (c coreAppModuleAdaptor) ExportGenesis(ctx context.Context) (json.RawMessag
}

// InitGenesis implements HasGenesis
func (c coreAppModuleAdaptor) InitGenesis(ctx context.Context, bz json.RawMessage) ([]ValidatorUpdate, error) {
if module, ok := c.module.(appmodule.HasGenesisAuto); ok {
func (c coreAppModuleAdaptor) InitGenesis(ctx context.Context, bz json.RawMessage) ([]module.ValidatorUpdate, error) {
if module, ok := c.appModule.(appmodule.HasGenesisAuto); ok {
// core API genesis
source, err := genesis.SourceFromRawJSON(bz)
if err != nil {
Expand All @@ -139,11 +141,11 @@ func (c coreAppModuleAdaptor) InitGenesis(ctx context.Context, bz json.RawMessag
}
}

if mod, ok := c.module.(HasABCIGenesis); ok {
if mod, ok := c.appModule.(module.HasABCIGenesis); ok {
return mod.InitGenesis(ctx, bz)
}

if mod, ok := c.module.(HasGenesis); ok {
if mod, ok := c.appModule.(module.HasGenesis); ok {
if err := mod.InitGenesis(ctx, bz); err != nil {
return nil, err
}
Expand All @@ -159,7 +161,7 @@ func (c coreAppModuleAdaptor) Name() string {
}

func (c coreAppModuleAdaptor) GetQueryCmd() *cobra.Command {
if mod, ok := c.module.(interface {
if mod, ok := c.appModule.(interface {
GetQueryCmd() *cobra.Command
}); ok {
return mod.GetQueryCmd()
Expand All @@ -169,7 +171,7 @@ func (c coreAppModuleAdaptor) GetQueryCmd() *cobra.Command {
}

func (c coreAppModuleAdaptor) GetTxCmd() *cobra.Command {
if mod, ok := c.module.(interface {
if mod, ok := c.appModule.(interface {
GetTxCmd() *cobra.Command
}); ok {
return mod.GetTxCmd()
Expand All @@ -180,7 +182,7 @@ func (c coreAppModuleAdaptor) GetTxCmd() *cobra.Command {

// RegisterGRPCGatewayRoutes implements HasGRPCGateway
func (c coreAppModuleAdaptor) RegisterGRPCGatewayRoutes(ctx client.Context, mux *runtime.ServeMux) {
if mod, ok := c.module.(interface {
if mod, ok := c.appModule.(interface {
RegisterGRPCGatewayRoutes(context client.Context, mux *runtime.ServeMux)
}); ok {
mod.RegisterGRPCGatewayRoutes(ctx, mux)
Expand All @@ -189,7 +191,7 @@ func (c coreAppModuleAdaptor) RegisterGRPCGatewayRoutes(ctx client.Context, mux

// RegisterInterfaces implements HasRegisterInterfaces
func (c coreAppModuleAdaptor) RegisterInterfaces(reg registry.InterfaceRegistrar) {
if mod, ok := c.module.(interface {
if mod, ok := c.appModule.(interface {
RegisterInterfaces(registry.InterfaceRegistrar)
}); ok {
mod.RegisterInterfaces(reg)
Expand All @@ -198,23 +200,23 @@ func (c coreAppModuleAdaptor) RegisterInterfaces(reg registry.InterfaceRegistrar

// RegisterLegacyAminoCodec implements HasAminoCodec
func (c coreAppModuleAdaptor) RegisterLegacyAminoCodec(amino registry.AminoRegistrar) {
if mod, ok := c.module.(interface {
if mod, ok := c.appModule.(interface {
RegisterLegacyAminoCodec(amino registry.AminoRegistrar)
}); ok {
mod.RegisterLegacyAminoCodec(amino)
}
}

// RegisterServices implements HasServices
func (c coreAppModuleAdaptor) RegisterServices(cfg Configurator) {
if module, ok := c.module.(hasServicesV1); ok {
func (c coreAppModuleAdaptor) RegisterServices(cfg module.Configurator) {
if module, ok := c.appModule.(module.HasRegisterServices); ok {
err := module.RegisterServices(cfg)
if err != nil {
panic(err)
}
}

if module, ok := c.module.(appmodule.HasMigrations); ok {
if module, ok := c.appModule.(appmodule.HasMigrations); ok {
err := module.RegisterMigrations(cfg)
if err != nil {
panic(err)
Expand Down
9 changes: 5 additions & 4 deletions types/module/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,16 @@ type HasInvariants interface {
RegisterInvariants(sdk.InvariantRegistry)
}

// HasServices is the interface for modules to register services.
// HasServices is the interface for modules to register legacy services using the deprecated Configurator type.
// Deprecated: use HasRegisterServices and its interface in your modules instea.
type HasServices interface {
// RegisterServices allows a module to register services.
RegisterServices(Configurator)
}

// hasServicesV1 is the interface for registering service in baseapp Cosmos SDK.
// HasRegisterServices is the interface for registering service in baseapp Cosmos SDK.
// This API is part of core/appmodule but commented out for dependencies.
type hasServicesV1 interface {
type HasRegisterServices interface {
appmodulev2.AppModule

RegisterServices(grpc.ServiceRegistrar) error
Expand Down Expand Up @@ -406,7 +407,7 @@ func (m *Manager) RegisterServices(cfg Configurator) error {
module.RegisterServices(cfg)
}

if module, ok := module.(hasServicesV1); ok {
if module, ok := module.(HasRegisterServices); ok {
err := module.RegisterServices(cfg)
if err != nil {
return err
Expand Down
Loading

0 comments on commit 8493d4f

Please sign in to comment.