66package software .amazon .smithy .aws .typescript .codegen ;
77
88import java .util .Collections ;
9+ import java .util .List ;
910import java .util .Map ;
1011import java .util .Objects ;
1112import java .util .function .Consumer ;
1213import software .amazon .smithy .aws .traits .protocols .AwsJson1_0Trait ;
1314import software .amazon .smithy .aws .traits .protocols .AwsJson1_1Trait ;
15+ import software .amazon .smithy .aws .traits .protocols .AwsQueryCompatibleTrait ;
1416import software .amazon .smithy .aws .traits .protocols .AwsQueryTrait ;
1517import software .amazon .smithy .aws .traits .protocols .Ec2QueryTrait ;
1618import software .amazon .smithy .aws .traits .protocols .RestJson1Trait ;
1719import software .amazon .smithy .aws .traits .protocols .RestXmlTrait ;
1820import software .amazon .smithy .codegen .core .SymbolProvider ;
1921import software .amazon .smithy .model .Model ;
2022import software .amazon .smithy .model .traits .XmlNamespaceTrait ;
23+ import software .amazon .smithy .protocol .traits .Rpcv2CborTrait ;
2124import software .amazon .smithy .typescript .codegen .LanguageTarget ;
25+ import software .amazon .smithy .typescript .codegen .TypeScriptDependency ;
2226import software .amazon .smithy .typescript .codegen .TypeScriptSettings ;
2327import software .amazon .smithy .typescript .codegen .TypeScriptWriter ;
2428import software .amazon .smithy .typescript .codegen .integration .TypeScriptIntegration ;
@@ -60,6 +64,13 @@ public void addConfigInterfaceFields(
6064 // by the smithy client config interface.
6165 }
6266
67+ @ Override
68+ public List <String > runAfter () {
69+ return List .of (
70+ software .amazon .smithy .typescript .codegen .integration .AddProtocolConfig .class .getCanonicalName ()
71+ );
72+ }
73+
6374 @ Override
6475 public Map <String , Consumer <TypeScriptWriter >> getRuntimeConfigWriters (
6576 TypeScriptSettings settings ,
@@ -76,6 +87,7 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
7687 .getTrait (XmlNamespaceTrait .class )
7788 .map (XmlNamespaceTrait ::getUri )
7889 .orElse ("" );
90+ String awsQueryCompat = settings .getService (model ).hasTrait (AwsQueryCompatibleTrait .class ) ? "true" : "false" ;
7991
8092 switch (target ) {
8193 case SHARED :
@@ -148,9 +160,15 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
148160 "AwsJson1_0Protocol" , null ,
149161 AwsDependency .AWS_SDK_CORE , "/protocols" );
150162 writer .write (
151- "new AwsJson1_0Protocol({ defaultNamespace: $S, serviceTarget: $S })" ,
163+ """
164+ new AwsJson1_0Protocol({
165+ defaultNamespace: $S,
166+ serviceTarget: $S,
167+ awsQueryCompatible: $L
168+ })""" ,
152169 namespace ,
153- rpcTarget
170+ rpcTarget ,
171+ awsQueryCompat
154172 );
155173 }
156174 );
@@ -161,9 +179,32 @@ public Map<String, Consumer<TypeScriptWriter>> getRuntimeConfigWriters(
161179 "AwsJson1_1Protocol" , null ,
162180 AwsDependency .AWS_SDK_CORE , "/protocols" );
163181 writer .write (
164- "new AwsJson1_1Protocol({ defaultNamespace: $S, serviceTarget: $S })" ,
182+ """
183+ new AwsJson1_1Protocol({
184+ defaultNamespace: $S,
185+ serviceTarget: $S,
186+ awsQueryCompatible: $L
187+ })""" ,
188+ namespace ,
189+ rpcTarget ,
190+ awsQueryCompat
191+ );
192+ }
193+ );
194+ } else if (Objects .equals (settings .getProtocol (), Rpcv2CborTrait .ID )) {
195+ return MapUtils .of (
196+ "protocol" , writer -> {
197+ writer .addImportSubmodule (
198+ "AwsSmithyRpcV2CborProtocol" , null ,
199+ AwsDependency .AWS_SDK_CORE , "/protocols" );
200+ writer .write (
201+ """
202+ new AwsSmithyRpcV2CborProtocol({
203+ defaultNamespace: $S,
204+ awsQueryCompatible: $L
205+ })""" ,
165206 namespace ,
166- rpcTarget
207+ awsQueryCompat
167208 );
168209 }
169210 );
0 commit comments