Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions generator/.DevConfigs/34a3fc68-a145-4312-b55e-e9490ea8c7db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"services": [
{
"serviceName": "S3",
"type": "patch",
"changeLogMessages": [
"Remove unused custom partials"
]
}
]
}
85 changes: 85 additions & 0 deletions generator/ServiceClientGeneratorLib/Customizations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1427,17 +1427,102 @@ public class PropertyModifier
public const string AccessModifierKey = "accessModifier";
public const string InjectXmlUnmarshallCodeKey = "injectXmlUnmarshallCode";
public const string SkipContextTestExpressionUnmarshallingLogicKey = "skipContextTestExpressionUnmarshallingLogic";
public const string InjectXmlIsSetCodeKey = "injectXmlIsSet";
public const string InjectXmlPrivateMemberAssignmentKey = "injectXmlPrivateMemberAssignment";
public const string InjectXmlPropertyGetterKey = "injectXmlPropertyGetter";
public const string InjectXmlPropertySetterKey = "injectXmlPropertySetter";
public const string SkipSetterKey = "skipSetter";



private readonly string _modelPropertyName;
private readonly JsonData _modifierData;
private readonly HashSet<string> _injectXmlUnmarshallCode;
private readonly HashSet<string> _injectXmlIsSetCode;
private readonly HashSet<string> _injectXmlPrivateMemberAssignment;
private readonly HashSet<string> _injectXmlPropertyGetter;
private readonly HashSet<string> _injectedXmlPropertySetter;
private readonly bool _skipSetter;

internal PropertyModifier(string modelPropertyName, JsonData modifierData)
{
this._modelPropertyName = modelPropertyName;
this._modifierData = modifierData;
_injectXmlUnmarshallCode = ParseInjectXmlUnmarshallCode();
_injectXmlIsSetCode = ParseInjectXmlIsSetCode();
_injectXmlPrivateMemberAssignment = ParseInjectXmlPrivateMemberAssignment();
_injectXmlPropertyGetter = ParseInjectXmlGetter();
_injectedXmlPropertySetter = ParseInjectXmlPropertySetter();
_skipSetter = ParseXmlSkipSetter();
}

private bool ParseXmlSkipSetter()
{
var data = _modifierData[SkipSetterKey];
return data != null && data.IsBoolean ? (bool)data : false;

}

public bool SkipSetter { get { return _skipSetter; } }

private HashSet<string> ParseInjectXmlPropertySetter()
{
var data = _modifierData[InjectXmlPropertySetterKey]?.Cast<object>()
.Select(x => x.ToString());

return new HashSet<string>(data ?? new string[0]);
}

/// <summary>
/// Use this customization within a property modifier to inject code in the Setter for a property.
/// If this HashSet has values then the default setter will not be generated and this custom injected
/// code will be used instead.
/// </summary>
public HashSet<string> InjectXmlPropertySetter { get { return _injectedXmlPropertySetter; } }

private HashSet<string> ParseInjectXmlGetter()
{
var data = _modifierData[InjectXmlPropertyGetterKey]?.Cast<object>()
.Select(x => x.ToString());

return new HashSet<string>(data ?? new string[0]);
}

/// <summary>
/// Use this customization within a property modifier to inject code in the getter for a property.
/// If this HashSet has values then the default getter will not be generated and this custom injected
/// code will be used instead.
/// </summary>
public HashSet<string> InjectXmlPropertyGetter { get { return _injectXmlPropertyGetter; } }

private HashSet<string> ParseInjectXmlPrivateMemberAssignment()
{
var data = _modifierData[InjectXmlPrivateMemberAssignmentKey]?.Cast<object>()
.Select(x => x.ToString());

return new HashSet<string>(data ?? new string[0]);
}

/// <summary>
/// Use this customization within a property modifier to inject code in the private member assignment
/// for a property. If this HashSet has values then the default private member assignment will not be generated
/// and this custom injected code will be used instead.
/// </summary>
public HashSet<string> InjectXmlPrivateMemberAssignment { get { return _injectXmlPrivateMemberAssignment; } }

private HashSet<string> ParseInjectXmlIsSetCode()
{
var data = _modifierData[InjectXmlIsSetCodeKey]?.Cast<object>()
.Select(x => x.ToString());

return new HashSet<string>(data ?? new string[0]);
}

/// <summary>
/// Use this customization within a property modifier to inject code in the IsSet() method for a property
/// If this HashSet has values then the default IsSet() code will not be generated and this custom injected code will be used instead.
/// </summary>
public HashSet<string> InjectXmlIsSetCode { get { return _injectXmlIsSetCode; } }
/// <summary>
/// Returns the original property name of the renamed property
/// </summary>
Expand Down
42 changes: 42 additions & 0 deletions generator/ServiceClientGeneratorLib/Generators/BaseGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2074,6 +2074,48 @@ protected void WriteInjectXmlUnmarshallCode(Member member, int level)
}


#line default
#line hidden

#line 625 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\BaseGenerator.tt"

// writes injected xml code. Call this when you know that the property modifier exists.
protected void WriteInjectXmlCode(HashSet<string> codeArray, int level)
{
foreach (var code in codeArray)
{


#line default
#line hidden

#line 632 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\BaseGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));


#line default
#line hidden

#line 632 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\BaseGenerator.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(code));


#line default
#line hidden

#line 632 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\BaseGenerator.tt"
this.Write("\r\n");


#line default
#line hidden

#line 633 "C:\Dev\Repos\aws-sdk-net-staging\generator\ServiceClientGeneratorLib\Generators\BaseGenerator.tt"

}
}


#line default
#line hidden
}
Expand Down
12 changes: 12 additions & 0 deletions generator/ServiceClientGeneratorLib/Generators/BaseGenerator.tt
Original file line number Diff line number Diff line change
Expand Up @@ -622,3 +622,15 @@ foreach (var member in docMembers)
}
}
#>
<#+
// writes injected xml code. Call this when you know that the property modifier exists.
protected void WriteInjectXmlCode(HashSet<string> codeArray, int level)
{
foreach (var code in codeArray)
{
#>
<#=new string(' ', level * 4)#><#=code#>
<#+
}
}
#>
Loading