Skip to content

Commit 57d031b

Browse files
authored
Generate PutBucketEncryption, GetBucketEncryption, GetBucketAccelerate (#3876)
* Generate GetBucketEncryption PutBucketEncryption and GetBucketAccelerate * Add postmarshallcustomization for getbucketencryption and re-generate s3 marshallers * Update customizations.json file and generate * Run Custom tool and address PR feedback
1 parent 3049c92 commit 57d031b

File tree

39 files changed

+2720
-2013
lines changed

39 files changed

+2720
-2013
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"core": {
3+
"changeLogMessages": [
4+
"refactor generator to reduce duplication by splitting logic into methods."
5+
],
6+
"type": "patch",
7+
"updateMinimum": true
8+
},
9+
"services": [
10+
{
11+
"serviceName": "S3",
12+
"type": "patch",
13+
"changeLogMessages": [
14+
"Generate GetBucketAccelerate, PutBucketEncryption, GetBucketEncryption."
15+
]
16+
}
17+
]
18+
}

generator/ServiceClientGeneratorLib/Generators/Marshallers/BaseResponseUnmarshaller.cs

Lines changed: 854 additions & 212 deletions
Large diffs are not rendered by default.

generator/ServiceClientGeneratorLib/Generators/Marshallers/BaseResponseUnmarshaller.tt

Lines changed: 113 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,8 @@ using Amazon.Runtime.Internal.Util;
387387
protected string DetermineXmlMarshallName(Member member, bool withPrefix = true)
388388
{
389389
var locationName = member.data[ServiceModel.LocationNameKey];
390-
if (locationName == null)
390+
// operation can be null if we're determining the xml marshall name for a structure
391+
if (locationName == null && this.Operation != null)
391392
{
392393
var payload = this.Operation.ResponsePayloadMember;
393394
var shouldMarshallPayload = (payload != null && payload.IsStructure);
@@ -402,12 +403,119 @@ using Amazon.Runtime.Internal.Util;
402403
return colonIndex != -1 ? locationNameString.Substring(colonIndex + 1) : locationNameString;
403404
}
404405
// the locationName and modeled name must only be different for those members which are marshalled on the body.
405-
if (!string.Equals(locationName.ToString(), member.ModeledName, StringComparison.Ordinal) || member.MarshallLocation != MarshallLocation.Body)
406-
{
407-
return locationName.ToString();
408-
}
406+
// S3 / S3 Control don't seem to follow this rule where the location name is used only if it doesn't match the member's name.
407+
if (locationName != null)
408+
{
409+
if (this.Config.ServiceId == "S3" || this.Config.ServiceId == "S3 Control" || !string.Equals(locationName.ToString(), member.ModeledName, StringComparison.Ordinal) || member.MarshallLocation != MarshallLocation.Body)
410+
{
411+
return locationName.ToString();
412+
}
413+
}
414+
415+
// some structure members do not have a locationName.
416+
// so if we get to this point, it is guaranteed that the marshall name we are determining is for a
417+
// member of a structure. For a member of a structure the marshall name is straightforward.
418+
if (locationName == null)
419+
{
420+
return member.MarshallName;
421+
}
409422
var memberTarget = member.Shape.data[ServiceModel.LocationNameKey];
410423

411424
return memberTarget != null ? memberTarget.ToString() : member.Shape.Name;
412425
}
413426
#>
427+
428+
<#+
429+
/// Only to be used by rest-xml response unmarshallers
430+
protected void ProcessResponseBodyOrStructureMembers(Member member, bool isStructure)
431+
{
432+
string unmarshalledVariable = isStructure ? "unmarshalledObject" : "response";
433+
if (member.Shape.IsList)
434+
{
435+
var listMarshallName = member.Shape.ListMarshallName ?? "member";
436+
437+
if (member.IsFlattened || member.Shape.IsFlattened)
438+
{
439+
#>
440+
if (context.TestExpression("<#=DetermineXmlMarshallName(member)#>", targetDepth))
441+
{
442+
if (<#=unmarshalledVariable#>.<#=member.PropertyName#> == null)
443+
{
444+
<#=unmarshalledVariable#>.<#=member.PropertyName#> = new <#=member.DetermineType()#>();
445+
}
446+
var unmarshaller = <#= member.DetermineTypeUnmarshallerInstantiate() #>;
447+
<#=unmarshalledVariable#>.<#=member.PropertyName#>.Add(unmarshaller.Unmarshall(context));
448+
continue;
449+
}
450+
<#+
451+
}
452+
else
453+
{
454+
#>
455+
if (context.TestExpression("<#=DetermineXmlMarshallName(member)#>/<#=listMarshallName#>", targetDepth))
456+
{
457+
if (<#=unmarshalledVariable#>.<#=member.PropertyName#> == null)
458+
{
459+
<#=unmarshalledVariable#>.<#=member.PropertyName#> = new <#=member.DetermineType()#>();
460+
}
461+
var unmarshaller = <#= member.DetermineTypeUnmarshallerInstantiate() #>;
462+
<#=unmarshalledVariable#>.<#=member.PropertyName#>.Add(unmarshaller.Unmarshall(context));
463+
continue;
464+
}
465+
<#+
466+
}
467+
}
468+
else if(member.Shape.IsMap)
469+
{
470+
if(member.IsFlattened)
471+
{
472+
#>
473+
if (context.TestExpression("<#=DetermineXmlMarshallName(member)#>", targetDepth))
474+
{
475+
if (response.<#=member.PropertyName#> == null)
476+
{
477+
response.<#=member.PropertyName#> = new <#=member.DetermineType()#>();
478+
}
479+
var unmarshaller = <#= member.DetermineTypeUnmarshallerInstantiate() #>;
480+
<#=unmarshalledVariable#>.<#=member.PropertyName#>.Add(unmarshaller.Unmarshall(context));
481+
continue;
482+
}
483+
<#+
484+
}
485+
else
486+
{
487+
#>
488+
if (context.TestExpression("<#=DetermineXmlMarshallName(member)#>", targetDepth))
489+
{
490+
var unmarshaller = <#= member.DetermineTypeUnmarshallerInstantiate() #>;
491+
<#=unmarshalledVariable#>.<#=member.PropertyName#> = unmarshaller.Unmarshall(context);
492+
continue;
493+
}
494+
<#+
495+
}
496+
}
497+
else
498+
{
499+
if (!member.IsXmlAttribute)
500+
{
501+
#>
502+
if (context.TestExpression("<#=DetermineXmlMarshallName(member)#>", targetDepth))
503+
<#+
504+
}
505+
else
506+
{
507+
#>
508+
if (context.TestExpression("@<#=DetermineXmlMarshallName(member, false)#>", targetDepth - 1))
509+
510+
<#+
511+
}
512+
#>
513+
{
514+
var unmarshaller = <#= member.DetermineTypeUnmarshallerInstantiate() #>;
515+
<#=unmarshalledVariable#>.<#=member.PropertyName#> = unmarshaller.Unmarshall(context);
516+
continue;
517+
}
518+
<#+
519+
}
520+
}
521+
#>

generator/ServiceClientGeneratorLib/Generators/Marshallers/RestXmlRequestMarshaller.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1875,7 +1875,7 @@ void ProcessStructure(int level, string variableName, Member member)
18751875

18761876
// Use shape's ListMarshallName if the structure is a list.
18771877
var marshallName = member.Shape.IsList ? member.Shape.ListMarshallName ?? "member" : member.MarshallName;
1878-
if(member.IsFlattened)
1878+
if(member.Shape.IsFlattened || member.IsFlattened)
18791879
marshallName = member.LocationName ?? member.ModeledName;
18801880

18811881

@@ -2121,7 +2121,7 @@ void ProcessList(int level, string variableName, Member member)
21212121

21222122
#line 427 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\Marshallers\RestXmlRequestMarshaller.tt"
21232123

2124-
if (!member.IsFlattened)
2124+
if (!member.IsFlattened && !member.Shape.IsFlattened)
21252125
{
21262126
if (string.IsNullOrEmpty(member.XmlNamespace))
21272127
{
@@ -2743,7 +2743,7 @@ void ProcessList(int level, string variableName, Member member)
27432743

27442744
#line 530 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\Marshallers\RestXmlRequestMarshaller.tt"
27452745

2746-
if (!member.IsFlattened)
2746+
if (!member.IsFlattened && !member.Shape.IsFlattened)
27472747
{
27482748

27492749

generator/ServiceClientGeneratorLib/Generators/Marshallers/RestXmlRequestMarshaller.tt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ WriteXmlAttributeString(level + 1, member, variableName, isPayload: true, operat
401401

402402
// Use shape's ListMarshallName if the structure is a list.
403403
var marshallName = member.Shape.IsList ? member.Shape.ListMarshallName ?? "member" : member.MarshallName;
404-
if(member.IsFlattened)
404+
if(member.Shape.IsFlattened || member.IsFlattened)
405405
marshallName = member.LocationName ?? member.ModeledName;
406406
#>
407407
<#=new string(' ', level * 4)#> if (<#=variableName#> != null)
@@ -425,7 +425,7 @@ WriteXmlAttributeString(level + 1, member, variableName, isPayload: true, operat
425425
<#=new string(' ', level * 4)#> if (<#=listVariable#> != null && (<#=listVariable#>.Count > 0 || !AWSConfigs.InitializeCollections))
426426
<#=new string(' ', level * 4)#> {
427427
<#+
428-
if (!member.IsFlattened)
428+
if (!member.IsFlattened && !member.Shape.IsFlattened)
429429
{
430430
if (string.IsNullOrEmpty(member.XmlNamespace))
431431
{
@@ -528,7 +528,7 @@ WriteXmlAttributeString(level + 1, member, variableName, isPayload: true, operat
528528
#>
529529
<#=new string(' ', level * 4)#> }
530530
<#+
531-
if (!member.IsFlattened)
531+
if (!member.IsFlattened && !member.Shape.IsFlattened)
532532
{
533533
#>
534534
<#=new string(' ', level * 4)#> xmlWriter.WriteEndElement();

0 commit comments

Comments
 (0)