@@ -33,32 +33,139 @@ type DynamicResourceConfigGroup struct {
33
33
}
34
34
35
35
func (drcg * DynamicResourceConfigGroup ) DynamicMapFields () []string {
36
- return []string {"values" }
36
+ return []string {"values" , "groups" }
37
37
}
38
38
39
39
func (drcg * DynamicResourceConfigGroup ) DynamicMapFieldProto (name string , key string , base proto.Message ) (proto.Message , error ) {
40
+ switch name {
41
+ case "groups" :
42
+ cg , ok := base .(* common.ConfigGroup )
43
+ if ! ok {
44
+ return nil , fmt .Errorf ("ConfigGroup groups can only contain ConfigGroup messages" )
45
+ }
46
+ switch key {
47
+ case "APIs" :
48
+ return & DynamicResourceAPIsConfigGroup {ConfigGroup : cg }, nil
49
+ case "Chaincodes" :
50
+ return & DynamicResourceChaincodesConfigGroup {ConfigGroup : cg }, nil
51
+ case "PeerPolicies" :
52
+ return cg , nil
53
+ }
54
+ }
55
+ return nil , fmt .Errorf ("ConfigGroup does not have a dynamic field: %s" , name )
56
+ }
57
+
58
+ type DynamicResourceChaincodesConfigGroup struct {
59
+ * common.ConfigGroup
60
+ }
61
+
62
+ func (draccg * DynamicResourceChaincodesConfigGroup ) DynamicMapFields () []string {
63
+ return []string {"groups" }
64
+ }
65
+
66
+ func (drccg * DynamicResourceChaincodesConfigGroup ) DynamicMapFieldProto (name string , key string , base proto.Message ) (proto.Message , error ) {
67
+ switch name {
68
+ case "groups" :
69
+ cg , ok := base .(* common.ConfigGroup )
70
+ if ! ok {
71
+ return nil , fmt .Errorf ("ConfigGroup groups can only contain ConfigGroup messages" )
72
+ }
73
+ return & DynamicResourceChaincodeConfigGroup {ConfigGroup : cg }, nil
74
+ default :
75
+ return nil , fmt .Errorf ("ConfigGroup does not have a dynamic field: %s" , name )
76
+ }
77
+ }
78
+
79
+ type DynamicResourceChaincodeConfigGroup struct {
80
+ * common.ConfigGroup
81
+ }
82
+
83
+ func (draccg * DynamicResourceChaincodeConfigGroup ) DynamicMapFields () []string {
84
+ return []string {"values" }
85
+ }
86
+
87
+ func (drccg * DynamicResourceChaincodeConfigGroup ) DynamicMapFieldProto (name string , key string , base proto.Message ) (proto.Message , error ) {
88
+ switch name {
89
+ case "values" :
90
+ cv , ok := base .(* common.ConfigValue )
91
+ if ! ok {
92
+ return nil , fmt .Errorf ("ConfigGroup groups can only contain ConfigValue messages" )
93
+ }
94
+ return & DynamicResourceChaincodeConfigValue {ConfigValue : cv , key : key }, nil
95
+ default :
96
+ return nil , fmt .Errorf ("ConfigGroup does not have a dynamic field: %s" , name )
97
+ }
98
+ }
99
+
100
+ type DynamicResourceChaincodeConfigValue struct {
101
+ * common.ConfigValue
102
+ key string
103
+ }
104
+
105
+ func (drccv * DynamicResourceChaincodeConfigValue ) VariablyOpaqueFieldProto (name string ) (proto.Message , error ) {
106
+ if name != drccv .VariablyOpaqueFields ()[0 ] {
107
+ return nil , fmt .Errorf ("Not a marshaled field: %s" , name )
108
+ }
109
+
110
+ switch drccv .key {
111
+ case "ChaincodeIdentifier" :
112
+ return & ChaincodeIdentifier {}, nil
113
+ case "ChaincodeValidation" :
114
+ return & ChaincodeValidation {}, nil
115
+ case "ChaincodeEndorsement" :
116
+ return & ChaincodeEndorsement {}, nil
117
+ default :
118
+ return nil , fmt .Errorf ("unknown value key: %s" , drccv .key )
119
+ }
120
+ }
121
+
122
+ func (cv * ChaincodeValidation ) VariablyOpaqueFields () []string {
123
+ return []string {"argument" }
124
+ }
125
+
126
+ func (cv * ChaincodeValidation ) VariablyOpaqueFieldProto (name string ) (proto.Message , error ) {
127
+ if name != cv .VariablyOpaqueFields ()[0 ] {
128
+ return nil , fmt .Errorf ("not a marshaled field: %s" , name )
129
+ }
130
+ switch cv .Name {
131
+ case "vscc" :
132
+ return & VSCCArgs {}, nil
133
+ default :
134
+ return nil , fmt .Errorf ("unknown validation name: %s" , cv .Name )
135
+ }
136
+ }
137
+
138
+ type DynamicResourceAPIsConfigGroup struct {
139
+ * common.ConfigGroup
140
+ }
141
+
142
+ func (dracg * DynamicResourceAPIsConfigGroup ) DynamicMapFields () []string {
143
+ return []string {"values" }
144
+ }
145
+
146
+ func (dracg * DynamicResourceAPIsConfigGroup ) DynamicMapFieldProto (name string , key string , base proto.Message ) (proto.Message , error ) {
40
147
switch name {
41
148
case "values" :
42
149
cv , ok := base .(* common.ConfigValue )
43
150
if ! ok {
44
151
return nil , fmt .Errorf ("ConfigGroup values can only contain ConfigValue messages" )
45
152
}
46
- return & DynamicResourceConfigValue {
153
+ return & DynamicResourceAPIsConfigValue {
47
154
ConfigValue : cv ,
48
155
}, nil
49
156
default :
50
157
return nil , fmt .Errorf ("ConfigGroup does not have a dynamic field: %s" , name )
51
158
}
52
159
}
53
160
54
- type DynamicResourceConfigValue struct {
161
+ type DynamicResourceAPIsConfigValue struct {
55
162
* common.ConfigValue
56
163
}
57
164
58
- func (drcv * DynamicResourceConfigValue ) VariablyOpaqueFieldProto (name string ) (proto.Message , error ) {
165
+ func (drcv * DynamicResourceAPIsConfigValue ) VariablyOpaqueFieldProto (name string ) (proto.Message , error ) {
59
166
if name != drcv .VariablyOpaqueFields ()[0 ] {
60
167
return nil , fmt .Errorf ("Not a marshaled field: %s" , name )
61
168
}
62
169
63
- return & Resource {}, nil
170
+ return & APIResource {}, nil
64
171
}
0 commit comments