From 169ebafb30dc1324297b66baac26d47743c19892 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Fri, 3 Jul 2020 12:42:12 -0400 Subject: [PATCH] Add proper support for Any in gRPC queries (#6594) * Add proper gRPC Any support via AnyUnpacker * Wire up grpc query router AnyUnpacker --- app.go | 33 +++++++++++++++++++++++---------- cmd/simcli/main.go | 1 + 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app.go b/app.go index b501a7c9acf4..63615fb3dbac 100644 --- a/app.go +++ b/app.go @@ -4,6 +4,8 @@ import ( "io" "os" + "github.com/cosmos/cosmos-sdk/codec/types" + abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" tmos "github.com/tendermint/tendermint/libs/os" @@ -129,8 +131,9 @@ var _ App = (*SimApp)(nil) // capabilities aren't needed for testing. type SimApp struct { *baseapp.BaseApp - cdc *codec.Codec - appCodec codec.Marshaler + cdc *codec.Codec + appCodec codec.Marshaler + interfaceRegistry types.InterfaceRegistry invCheckPeriod uint @@ -173,11 +176,15 @@ func NewSimApp( ) *SimApp { // TODO: Remove cdc in favor of appCodec once all modules are migrated. - appCodec, cdc := MakeCodecs() + encodingConfig := MakeEncodingConfig() + appCodec := encodingConfig.Marshaler + cdc := encodingConfig.Amino + interfaceRegistry := encodingConfig.InterfaceRegistry bApp := baseapp.NewBaseApp(appName, logger, db, authtypes.DefaultTxDecoder(cdc), baseAppOptions...) bApp.SetCommitMultiStoreTracer(traceStore) bApp.SetAppVersion(version.Version) + bApp.GRPCQueryRouter().SetAnyUnpacker(interfaceRegistry) keys := sdk.NewKVStoreKeys( authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, @@ -189,13 +196,14 @@ func NewSimApp( memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) app := &SimApp{ - BaseApp: bApp, - cdc: cdc, - appCodec: appCodec, - invCheckPeriod: invCheckPeriod, - keys: keys, - tkeys: tkeys, - memKeys: memKeys, + BaseApp: bApp, + cdc: cdc, + appCodec: appCodec, + interfaceRegistry: interfaceRegistry, + invCheckPeriod: invCheckPeriod, + keys: keys, + tkeys: tkeys, + memKeys: memKeys, } app.ParamsKeeper = initParamsKeeper(appCodec, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) @@ -456,6 +464,11 @@ func (app *SimApp) AppCodec() codec.Marshaler { return app.appCodec } +// InterfaceRegistry returns SimApp's InterfaceRegistry +func (app *SimApp) InterfaceRegistry() types.InterfaceRegistry { + return app.interfaceRegistry +} + // GetKey returns the KVStoreKey for the provided store key. // // NOTE: This is solely to be used for testing purposes. diff --git a/cmd/simcli/main.go b/cmd/simcli/main.go index 0a6a76c193aa..779acf2fb5c3 100644 --- a/cmd/simcli/main.go +++ b/cmd/simcli/main.go @@ -24,6 +24,7 @@ var ( encodingConfig = simapp.MakeEncodingConfig() initClientCtx = client.Context{}. WithJSONMarshaler(encodingConfig.Marshaler). + WithInterfaceRegistry(encodingConfig.InterfaceRegistry). WithTxGenerator(encodingConfig.TxGenerator). WithCodec(encodingConfig.Amino). WithInput(os.Stdin).