25
25
import software .amazon .smithy .model .shapes .MapShape ;
26
26
import software .amazon .smithy .model .shapes .MemberShape ;
27
27
import software .amazon .smithy .model .shapes .Shape ;
28
+ import software .amazon .smithy .model .shapes .SimpleShape ;
28
29
import software .amazon .smithy .model .shapes .StructureShape ;
29
30
import software .amazon .smithy .model .traits .IdempotencyTokenTrait ;
30
31
import software .amazon .smithy .model .traits .SensitiveTrait ;
@@ -89,6 +90,8 @@ void writeMemberFilterSensitiveLog(TypeScriptWriter writer, MemberShape member,
89
90
if (member .getMemberTrait (model , SensitiveTrait .class ).isPresent ()) {
90
91
// member is Sensitive, hide the value.
91
92
writer .write ("SENSITIVE_STRING" );
93
+ } else if (memberTarget instanceof SimpleShape ) {
94
+ writer .write (memberParam );
92
95
} else if (memberTarget .isStructureShape () || memberTarget .isUnionShape ()) {
93
96
writeStructureFilterSensitiveLog (writer , memberTarget , memberParam );
94
97
} else if (memberTarget instanceof CollectionShape ) {
@@ -103,7 +106,7 @@ void writeMemberFilterSensitiveLog(TypeScriptWriter writer, MemberShape member,
103
106
/**
104
107
* Recursively writes filterSensitiveLog for StructureShape.
105
108
*/
106
- void writeStructureFilterSensitiveLog (
109
+ private void writeStructureFilterSensitiveLog (
107
110
TypeScriptWriter writer ,
108
111
Shape structureTarget ,
109
112
String structureParam
@@ -123,84 +126,85 @@ void writeStructureFilterSensitiveLog(
123
126
/**
124
127
* Recursively writes filterSensitiveLog for CollectionShape.
125
128
*/
126
- void writeCollectionFilterSensitiveLog (
129
+ private void writeCollectionFilterSensitiveLog (
127
130
TypeScriptWriter writer ,
128
131
MemberShape collectionMember ,
129
132
String collectionParam
130
133
) {
131
134
if (collectionMember .getMemberTrait (model , SensitiveTrait .class ).isPresent ()) {
132
135
// member is Sensitive, hide the value.
133
136
writer .write ("SENSITIVE_STRING" );
134
- return ;
137
+ } else if (model .expectShape (collectionMember .getTarget ()) instanceof SimpleShape ) {
138
+ writer .write (collectionParam );
139
+ } else {
140
+ writer .openBlock ("$L.map(" , ")" , collectionParam , () -> {
141
+ String itemParam = "item" ;
142
+ Shape collectionMemberTarget = model .expectShape (collectionMember .getTarget ());
143
+ writer .write ("$L => " , itemParam );
144
+ if (collectionMemberTarget .isStructureShape () || collectionMemberTarget .isUnionShape ()) {
145
+ writeStructureFilterSensitiveLog (writer , collectionMemberTarget , itemParam );
146
+ } else if (collectionMemberTarget instanceof CollectionShape ) {
147
+ MemberShape nestedCollectionMember = ((CollectionShape ) collectionMemberTarget ).getMember ();
148
+ writeCollectionFilterSensitiveLog (writer , nestedCollectionMember , itemParam );
149
+ } else if (collectionMemberTarget instanceof MapShape ) {
150
+ MemberShape mapMember = ((MapShape ) collectionMemberTarget ).getValue ();
151
+ writeMapFilterSensitiveLog (writer , mapMember , itemParam );
152
+ } else {
153
+ // This path should not reach because of recursive isMemberOverwriteRequired.
154
+ throw new CodegenException (String .format (
155
+ "CollectionFilterSensitiveLog attempted for %s while it was not required" ,
156
+ collectionMemberTarget .getType ()
157
+ ));
158
+ // For quick-fix in case of high severity issue:
159
+ // comment out the exception above and uncomment the line below.
160
+ // writer.write("$L", itemParam);
161
+ }
162
+ });
135
163
}
136
-
137
- writer .openBlock ("$L.map(" , ")" , collectionParam , () -> {
138
- String itemParam = "item" ;
139
- Shape collectionMemberTarget = model .expectShape (collectionMember .getTarget ());
140
- writer .write ("$L => " , itemParam );
141
- if (collectionMemberTarget .isStructureShape () || collectionMemberTarget .isUnionShape ()) {
142
- writeStructureFilterSensitiveLog (writer , collectionMemberTarget , itemParam );
143
- } else if (collectionMemberTarget instanceof CollectionShape ) {
144
- MemberShape nestedCollectionMember = ((CollectionShape ) collectionMemberTarget ).getMember ();
145
- writeCollectionFilterSensitiveLog (writer , nestedCollectionMember , itemParam );
146
- } else if (collectionMemberTarget instanceof MapShape ) {
147
- MemberShape mapMember = ((MapShape ) collectionMemberTarget ).getValue ();
148
- writeMapFilterSensitiveLog (writer , mapMember , itemParam );
149
- } else {
150
- // This path should not reach because of recursive isMemberOverwriteRequired.
151
- throw new CodegenException (String .format (
152
- "CollectionFilterSensitiveLog attempted for %s while it was not required" ,
153
- collectionMemberTarget .getType ()
154
- ));
155
- // For quick-fix in case of high severity issue:
156
- // comment out the exception above and uncomment the line below.
157
- // writer.write("$L", itemParam);
158
- }
159
- });
160
164
}
161
165
162
166
/**
163
167
* Recursively writes filterSensitiveLog for MapShape.
164
168
*/
165
- void writeMapFilterSensitiveLog (TypeScriptWriter writer , MemberShape mapMember , String mapParam ) {
169
+ private void writeMapFilterSensitiveLog (TypeScriptWriter writer , MemberShape mapMember , String mapParam ) {
166
170
if (mapMember .getMemberTrait (model , SensitiveTrait .class ).isPresent ()) {
167
171
// member is Sensitive, hide the value.
168
172
writer .write ("SENSITIVE_STRING" );
169
- return ;
170
- }
171
-
172
- String accParam = "acc" ; // accumulator for the reducer
173
- String keyParam = "key" ; // key of the Object.entries() key-value pair
174
- String valueParam = "value" ; // value of the Object.entries() key-value pair
175
-
176
- // Reducer is common to all shapes.
177
- writer .openBlock ("Object.entries($L).reduce(($L: any, [$L, $L]: [string, $T]) => ({" , "}), {})" ,
178
- mapParam , accParam , keyParam , valueParam , symbolProvider .toSymbol (mapMember ), () -> {
179
- writer .write ("...$L," , accParam );
180
- Shape mapMemberTarget = model .expectShape (mapMember .getTarget ());
181
- writer .openBlock ("[$L]: " , "," , keyParam , () -> {
182
- if (mapMemberTarget .isStructureShape () || mapMemberTarget .isUnionShape ()) {
183
- writeStructureFilterSensitiveLog (writer , mapMemberTarget , valueParam );
184
- } else if (mapMemberTarget instanceof CollectionShape ) {
185
- MemberShape collectionMember = ((CollectionShape ) mapMemberTarget ).getMember ();
186
- writeCollectionFilterSensitiveLog (writer , collectionMember , valueParam );
187
- } else if (mapMemberTarget instanceof MapShape ) {
188
- MemberShape nestedMapMember = ((MapShape ) mapMemberTarget ).getValue ();
189
- writeMapFilterSensitiveLog (writer , nestedMapMember , valueParam );
190
- } else {
191
- // This path should not reach because of recursive isMemberOverwriteRequired.
192
- throw new CodegenException (String .format (
193
- "MapFilterSensitiveLog attempted for %s while it was not required" ,
194
- mapMemberTarget .getType ()
195
- ));
196
- // For quick-fix in case of high severity issue:
197
- // comment out the exception above and uncomment the line below.
198
- // writer.write("$L", valueParam);
199
- }
173
+ } else if (model .expectShape (mapMember .getTarget ()) instanceof SimpleShape ) {
174
+ writer .write (mapParam );
175
+ } else {
176
+ String accParam = "acc" ; // accumulator for the reducer
177
+ String keyParam = "key" ; // key of the Object.entries() key-value pair
178
+ String valueParam = "value" ; // value of the Object.entries() key-value pair
200
179
201
- });
202
- }
203
- );
180
+ // Reducer is common to all shapes.
181
+ writer .openBlock ("Object.entries($L).reduce(($L: any, [$L, $L]: [string, $T]) => ({" , "}), {})" ,
182
+ mapParam , accParam , keyParam , valueParam , symbolProvider .toSymbol (mapMember ), () -> {
183
+ writer .write ("...$L," , accParam );
184
+ Shape mapMemberTarget = model .expectShape (mapMember .getTarget ());
185
+ writer .openBlock ("[$L]: " , "," , keyParam , () -> {
186
+ if (mapMemberTarget .isStructureShape () || mapMemberTarget .isUnionShape ()) {
187
+ writeStructureFilterSensitiveLog (writer , mapMemberTarget , valueParam );
188
+ } else if (mapMemberTarget instanceof CollectionShape ) {
189
+ MemberShape collectionMember = ((CollectionShape ) mapMemberTarget ).getMember ();
190
+ writeCollectionFilterSensitiveLog (writer , collectionMember , valueParam );
191
+ } else if (mapMemberTarget instanceof MapShape ) {
192
+ MemberShape nestedMapMember = ((MapShape ) mapMemberTarget ).getValue ();
193
+ writeMapFilterSensitiveLog (writer , nestedMapMember , valueParam );
194
+ } else {
195
+ // This path should not reach because of recursive isMemberOverwriteRequired.
196
+ throw new CodegenException (String .format (
197
+ "MapFilterSensitiveLog attempted for %s while it was not required" ,
198
+ mapMemberTarget .getType ()
199
+ ));
200
+ // For quick-fix in case of high severity issue:
201
+ // comment out the exception above and uncomment the line below.
202
+ // writer.write("$L", valueParam);
203
+ }
204
+ });
205
+ }
206
+ );
207
+ }
204
208
}
205
209
206
210
/**
0 commit comments