chore: rename container.AutoGroupType to container.ManyPerContainerType (#11978)

Co-authored-by: Marko <marbar3778@yahoo.com>
This commit is contained in:
Facundo Medica 2022-05-18 18:20:03 -03:00 committed by GitHub
parent 0b810ba08e
commit bc2d553f77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 34 deletions

View File

@ -82,18 +82,18 @@ func (c *container) getResolver(typ reflect.Type) (resolver, error) {
}
elemType := typ
if isAutoGroupSliceType(elemType) || isOnePerModuleMapType(elemType) {
if isManyPerContainerSliceType(elemType) || isOnePerModuleMapType(elemType) {
elemType = elemType.Elem()
}
var typeGraphNode *graphviz.Node
if isAutoGroupType(elemType) {
c.logf("Registering resolver for auto-group type %v", elemType)
if isManyPerContainerType(elemType) {
c.logf("Registering resolver for many-per-container type %v", elemType)
sliceType := reflect.SliceOf(elemType)
typeGraphNode = c.typeGraphNode(sliceType)
typeGraphNode.SetComment("auto-group")
typeGraphNode.SetComment("many-per-container")
r := &groupResolver{
typ: elemType,
@ -141,8 +141,8 @@ func (c *container) addNode(provider *ProviderDescriptor, key *moduleKey) (inter
hasOwnModuleKeyParam = true
}
if isAutoGroupType(typ) {
return nil, fmt.Errorf("auto-group type %v can't be used as an input parameter", typ)
if isManyPerContainerType(typ) {
return nil, fmt.Errorf("many-per-container type %v can't be used as an input parameter", typ)
} else if isOnePerModuleType(typ) {
return nil, fmt.Errorf("one-per-module type %v can't be used as an input parameter", typ)
}
@ -184,8 +184,8 @@ func (c *container) addNode(provider *ProviderDescriptor, key *moduleKey) (inter
typ, typ.Elem())
}
// auto-group slices of auto-group types
if isAutoGroupSliceType(typ) {
// many-per-container slices of many-per-container types
if isManyPerContainerSliceType(typ) {
typ = typ.Elem()
}

View File

@ -40,7 +40,7 @@ type Command struct {
Run func()
}
func (Command) IsAutoGroupType() {}
func (Command) IsManyPerContainerType() {}
func ProvideKVStoreKey(moduleKey container.ModuleKey) KVStoreKey {
return KVStoreKey{name: moduleKey.Name()}
@ -401,19 +401,19 @@ func TestOnePerModule(t *testing.T) {
)
}
type AutoGroupInt int
type ManyPerContainerInt int
func (AutoGroupInt) IsAutoGroupType() {}
func (ManyPerContainerInt) IsManyPerContainerType() {}
func TestAutoGroup(t *testing.T) {
var xs []AutoGroupInt
func TestManyPerContainer(t *testing.T) {
var xs []ManyPerContainerInt
var sum string
require.NoError(t,
container.Build(
container.Provide(
func() AutoGroupInt { return 4 },
func() AutoGroupInt { return 9 },
func(xs []AutoGroupInt) string {
func() ManyPerContainerInt { return 4 },
func() ManyPerContainerInt { return 9 },
func(xs []ManyPerContainerInt) string {
sum := 0
for _, x := range xs {
sum += int(x)
@ -426,15 +426,15 @@ func TestAutoGroup(t *testing.T) {
),
)
require.Len(t, xs, 2)
require.Contains(t, xs, AutoGroupInt(4))
require.Contains(t, xs, AutoGroupInt(9))
require.Contains(t, xs, ManyPerContainerInt(4))
require.Contains(t, xs, ManyPerContainerInt(9))
require.Equal(t, "13", sum)
var z AutoGroupInt
var z ManyPerContainerInt
require.Error(t,
container.Build(
container.Provide(
func() AutoGroupInt { return 0 },
func() ManyPerContainerInt { return 0 },
),
&z,
),

View File

@ -9,23 +9,23 @@ import (
"github.com/cosmos/cosmos-sdk/container/internal/graphviz"
)
// AutoGroupType marks a type which automatically gets grouped together. For an AutoGroupType T,
// ManyPerContainerType marks a type which automatically gets grouped together. For an ManyPerContainerType T,
// T and []T can be declared as output parameters for providers as many times within the container
// as desired. All of the provided values for T can be retrieved by declaring an
// []T input parameter.
type AutoGroupType interface {
// IsAutoGroupType is a marker function which just indicates that this is a auto-group type.
IsAutoGroupType()
type ManyPerContainerType interface {
// IsManyPerContainerType is a marker function which just indicates that this is a many-per-container type.
IsManyPerContainerType()
}
var autoGroupTypeType = reflect.TypeOf((*AutoGroupType)(nil)).Elem()
var manyPerContainerTypeType = reflect.TypeOf((*ManyPerContainerType)(nil)).Elem()
func isAutoGroupType(t reflect.Type) bool {
return t.Implements(autoGroupTypeType)
func isManyPerContainerType(t reflect.Type) bool {
return t.Implements(manyPerContainerTypeType)
}
func isAutoGroupSliceType(typ reflect.Type) bool {
return typ.Kind() == reflect.Slice && isAutoGroupType(typ.Elem())
func isManyPerContainerSliceType(typ reflect.Type) bool {
return typ.Kind() == reflect.Slice && isManyPerContainerType(typ.Elem())
}
type groupResolver struct {
@ -43,12 +43,12 @@ type sliceGroupResolver struct {
}
func (g *groupResolver) describeLocation() string {
return fmt.Sprintf("auto-group type %v", g.typ)
return fmt.Sprintf("many-per-container type %v", g.typ)
}
func (g *sliceGroupResolver) resolve(c *container, _ *moduleKey, caller Location) (reflect.Value, error) {
// Log
c.logf("Providing auto-group type slice %v to %s from:", g.sliceType, caller.Name())
c.logf("Providing many-per-container type slice %v to %s from:", g.sliceType, caller.Name())
c.indentLogger()
for _, node := range g.providers {
c.logf(node.provider.Location.String())
@ -81,7 +81,7 @@ func (g *sliceGroupResolver) resolve(c *container, _ *moduleKey, caller Location
}
func (g *groupResolver) resolve(_ *container, _ *moduleKey, _ Location) (reflect.Value, error) {
return reflect.Value{}, errors.Errorf("%v is an auto-group type and cannot be used as an input value, instead use %v", g.typ, g.sliceType)
return reflect.Value{}, errors.Errorf("%v is an many-per-container type and cannot be used as an input value, instead use %v", g.typ, g.sliceType)
}
func (g *groupResolver) addNode(n *simpleProvider, i int) error {

View File

@ -14,7 +14,7 @@ digraph "" {
"github.com/cosmos/cosmos-sdk/container_test.ProvideKVStoreKey"[color="black", fontcolor="black", penwidth="1.5", shape="box"];
}
"[]github.com/cosmos/cosmos-sdk/container_test.Command"[color="lightgrey", comment="auto-group", fontcolor="dimgrey", penwidth="0.5"];
"[]github.com/cosmos/cosmos-sdk/container_test.Command"[color="lightgrey", comment="many-per-container", fontcolor="dimgrey", penwidth="0.5"];
"github.com/cosmos/cosmos-sdk/container.ModuleKey"[color="black", fontcolor="black", penwidth="1.5"];
"github.com/cosmos/cosmos-sdk/container.OwnModuleKey"[color="lightgrey", fontcolor="dimgrey", penwidth="0.5"];
"github.com/cosmos/cosmos-sdk/container_test.KVStoreKey"[color="black", fontcolor="black", penwidth="1.5"];

View File

@ -14,7 +14,7 @@ digraph "" {
"github.com/cosmos/cosmos-sdk/container_test.ProvideKVStoreKey"[color="black", fontcolor="black", penwidth="1.5", shape="box"];
}
"[]github.com/cosmos/cosmos-sdk/container_test.Command"[color="lightgrey", comment="auto-group", fontcolor="dimgrey", penwidth="0.5"];
"[]github.com/cosmos/cosmos-sdk/container_test.Command"[color="lightgrey", comment="many-per-container", fontcolor="dimgrey", penwidth="0.5"];
"github.com/cosmos/cosmos-sdk/container.ModuleKey"[color="black", fontcolor="black", penwidth="1.5"];
"github.com/cosmos/cosmos-sdk/container.OwnModuleKey"[color="lightgrey", fontcolor="dimgrey", penwidth="0.5"];
"github.com/cosmos/cosmos-sdk/container_test.KVStoreKey"[color="black", fontcolor="black", penwidth="1.5"];