Skip to content

Commit d0b0c91

Browse files
committed
Generate GetBucketAccelerateConfiguration, PutBucketEncryption, GetBucketEncryption
1 parent 5c93993 commit d0b0c91

File tree

42 files changed

+2727
-2027
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2727
-2027
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 gauranteed 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
@@ -1913,7 +1913,7 @@ void ProcessStructure(int level, string variableName, Member member)
19131913

19141914
// Use shape's ListMarshallName if the structure is a list.
19151915
var marshallName = member.Shape.IsList ? member.Shape.ListMarshallName ?? "member" : member.MarshallName;
1916-
if(member.IsFlattened)
1916+
if(member.Shape.IsFlattened || member.IsFlattened)
19171917
marshallName = member.LocationName ?? member.ModeledName;
19181918

19191919

@@ -2159,7 +2159,7 @@ void ProcessList(int level, string variableName, Member member)
21592159

21602160
#line 442 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\Marshallers\RestXmlRequestMarshaller.tt"
21612161

2162-
if (!member.IsFlattened)
2162+
if (!member.IsFlattened && !member.Shape.IsFlattened)
21632163
{
21642164
if (string.IsNullOrEmpty(member.XmlNamespace))
21652165
{
@@ -2781,7 +2781,7 @@ void ProcessList(int level, string variableName, Member member)
27812781

27822782
#line 545 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\Marshallers\RestXmlRequestMarshaller.tt"
27832783

2784-
if (!member.IsFlattened)
2784+
if (!member.IsFlattened && !member.Shape.IsFlattened)
27852785
{
27862786

27872787

generator/ServiceClientGeneratorLib/Generators/Marshallers/RestXmlRequestMarshaller.tt

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

417417
// Use shape's ListMarshallName if the structure is a list.
418418
var marshallName = member.Shape.IsList ? member.Shape.ListMarshallName ?? "member" : member.MarshallName;
419-
if(member.IsFlattened)
419+
if(member.Shape.IsFlattened || member.IsFlattened)
420420
marshallName = member.LocationName ?? member.ModeledName;
421421
#>
422422
<#=new string(' ', level * 4)#> if (<#=variableName#> != null)
@@ -440,7 +440,7 @@ WriteXmlAttributeString(level + 1, member, variableName, isPayload: true, operat
440440
<#=new string(' ', level * 4)#> if (<#=listVariable#> != null && (<#=listVariable#>.Count > 0 || !AWSConfigs.InitializeCollections))
441441
<#=new string(' ', level * 4)#> {
442442
<#+
443-
if (!member.IsFlattened)
443+
if (!member.IsFlattened && !member.Shape.IsFlattened)
444444
{
445445
if (string.IsNullOrEmpty(member.XmlNamespace))
446446
{
@@ -543,7 +543,7 @@ WriteXmlAttributeString(level + 1, member, variableName, isPayload: true, operat
543543
#>
544544
<#=new string(' ', level * 4)#> }
545545
<#+
546-
if (!member.IsFlattened)
546+
if (!member.IsFlattened && !member.Shape.IsFlattened)
547547
{
548548
#>
549549
<#=new string(' ', level * 4)#> xmlWriter.WriteEndElement();

0 commit comments

Comments
 (0)