diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetFramework.csproj b/extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetFramework.csproj
new file mode 100644
index 000000000000..3bfc21e83660
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetFramework.csproj
@@ -0,0 +1,45 @@
+
+
+
+ net472
+ AWSSDK.Extensions.CborProtocol
+ AWSSDK.Extensions.CborProtocol
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ true
+ $(NoWarn);CS1591
+ True
+
+
+
+
+
+
+
+
+
+ ..\..\..\sdk\awssdk.dll.snk
+
+
+
+
+ $(AWSKeyFile)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetStandard.csproj b/extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetStandard.csproj
new file mode 100644
index 000000000000..e326b545b9bc
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetStandard.csproj
@@ -0,0 +1,51 @@
+
+
+
+ netstandard2.0;netcoreapp3.1;net8.0
+ AWSSDK.Extensions.CborProtocol
+ AWSSDK.Extensions.CborProtocol
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ true
+ true
+ $(NoWarn);CS1591
+ True
+
+
+
+
+
+
+
+ IL2026,IL2075
+ true
+
+
+
+
+
+ ..\..\..\sdk\awssdk.dll.snk
+
+
+
+
+ $(AWSKeyFile)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/CborWriterExtensions.cs b/extensions/src/AWSSDK.Extensions.CborProtocol/CborWriterExtensions.cs
new file mode 100644
index 000000000000..06411c538fe0
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/CborWriterExtensions.cs
@@ -0,0 +1,122 @@
+/*
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ * http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+
+using System;
+using System.Formats.Cbor;
+using Amazon.Util;
+
+namespace AWSSDK.Extensions.CborProtocol
+{
+ public static class CborWriterExtensions
+ {
+ ///
+ /// Writes the DateTime as UnixEpochSeconds which is the only type we support for CBOR.
+ ///
+ /// The CBOR writer to use.
+ /// The DateTime value to write.
+ public static void WriteDateTime(this CborWriter writer, DateTime value)
+ {
+ writer.WriteTag(CborTag.UnixTimeSeconds);
+ writer.WriteOptimizedNumber(AWSSDKUtils.ConvertToUnixEpochSecondsDouble(value));
+ }
+
+ ///
+ /// Writes a double using the smallest CBOR representation that preserves value and precision.
+ ///
+ /// The CBOR writer to use.
+ /// The double value to write.
+ public static void WriteOptimizedNumber(this CborWriter writer, double value)
+ {
+ if (double.IsNaN(value) || double.IsInfinity(value))
+ {
+ writer.WriteDouble(value); // Write NaN or Infinity as a double.
+ return;
+ }
+
+ // If the value is an integer (without fractional part), write it as Int64 or UInt64.
+ if (value % 1 == 0)
+ {
+ if (value >= long.MinValue && value <= long.MaxValue)
+ {
+ // If the value fits within the signed 64-bit integer (long) range,
+ // WriteInt64 serializes it into the smallest CBOR type representation
+ // that can contain its value without loss of precision.
+ writer.WriteInt64((long)value);
+ return;
+ }
+
+ if (value >= 0 && value <= ulong.MaxValue)
+ {
+ // If the value is non-negative and fits within the unsigned 64-bit range,
+ // WriteUInt64 serializes it into the smallest possible CBOR type representation.
+ writer.WriteUInt64((ulong)value);
+ return;
+ }
+ }
+
+ // Check if value can safely be represented as float32
+ float floatCandidate = (float)value;
+ if ((double)floatCandidate == value)
+ {
+ WriteOptimizedNumber(writer, floatCandidate);
+ return;
+ }
+
+ // If none of the above conditions are satisfied, write the value as a double.
+ writer.WriteDouble(value);
+ }
+
+ ///
+ /// Writes a float using the smallest CBOR representation that preserves value and precision.
+ /// This method uses manual encoding to avoid writing as a half-precision float.
+ ///
+ /// The CBOR writer to use.
+ /// The float value to write.
+ public static void WriteOptimizedNumber(this CborWriter writer, float value)
+ {
+ // If the value is an integer (without fractional part), write it as Int64 or UInt64.
+ if (value % 1 == 0)
+ {
+ if (value >= long.MinValue && value <= long.MaxValue)
+ {
+ // If the value fits within the signed 64-bit integer (long) range,
+ // WriteInt64 serializes it into the smallest CBOR type representation
+ // that can contain its value without loss of precision.
+ writer.WriteInt64((long)value);
+ return;
+ }
+
+ if (value >= 0 && value <= ulong.MaxValue)
+ {
+ // If the value is non-negative and fits within the unsigned 64-bit range,
+ // WriteUInt64 serializes it into the smallest possible CBOR type representation.
+ writer.WriteUInt64((ulong)value);
+ return;
+ }
+ }
+
+ // Manual encoding to avoid half-precision floats
+ var bytes = new byte[5];
+ bytes[0] = 0xFA; // CBOR float32 marker
+ BitConverter.GetBytes(value).CopyTo(bytes, 1);
+
+ // Ensure the bytes are in the correct endian order for CBOR.
+ if (BitConverter.IsLittleEndian)
+ Array.Reverse(bytes, 1, 4);
+
+ writer.WriteEncodedValue(bytes);
+ }
+ }
+}
diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/Directory.Build.props b/extensions/src/AWSSDK.Extensions.CborProtocol/Directory.Build.props
new file mode 100644
index 000000000000..7ace368652d0
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/Directory.Build.props
@@ -0,0 +1,6 @@
+
+
+
+ $(MSBuildProjectDirectory)\obj\$(MSBuildProjectName)
+
+
\ No newline at end of file
diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/Internal/CborMarshallerContext.cs b/extensions/src/AWSSDK.Extensions.CborProtocol/Internal/CborMarshallerContext.cs
new file mode 100644
index 000000000000..687e153f0be8
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/Internal/CborMarshallerContext.cs
@@ -0,0 +1,37 @@
+/*
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ * http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+using Amazon.Runtime;
+using Amazon.Runtime.Internal;
+using Amazon.Runtime.Internal.Transform;
+using Amazon.Runtime.Internal.Util;
+using Amazon.Util;
+using System;
+using System.Collections.Generic;
+using System.Formats.Cbor;
+using System.IO;
+
+namespace AWSSDK.Extensions.CborProtocol.Internal
+{
+ public class CborMarshallerContext : MarshallerContext
+ {
+ public CborWriter Writer { get; private set; }
+
+ public CborMarshallerContext(IRequest request, CborWriter writer)
+ : base(request)
+ {
+ Writer = writer;
+ }
+ }
+}
diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/Internal/CborWriterPool.cs b/extensions/src/AWSSDK.Extensions.CborProtocol/Internal/CborWriterPool.cs
new file mode 100644
index 000000000000..10b770c43715
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/Internal/CborWriterPool.cs
@@ -0,0 +1,66 @@
+/*
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License").
+ * You may not use this file except in compliance with the License.
+ * A copy of the License is located at
+ *
+ * http://aws.amazon.com/apache2.0
+ *
+ * or in the "license" file accompanying this file. This file is distributed
+ * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+using System;
+using System.Collections.Concurrent;
+using System.Formats.Cbor;
+using System.Threading;
+
+namespace AWSSDK.Extensions.CborProtocol.Internal
+{
+ public static class CborWriterPool
+ {
+ // Internal pool storage using thread-safe collection
+ private static readonly ConcurrentBag _pool = new ConcurrentBag();
+
+ // Maximum number of CborWriter instances the pool can hold
+ private static int _maxPoolSize = 16;
+
+ ///
+ /// Gets or sets the maximum size of the writer pool.
+ /// Minimum value is 1.
+ ///
+ public static int MaxPoolSize
+ {
+ get => Volatile.Read(ref _maxPoolSize);
+ set => Volatile.Write(ref _maxPoolSize, Math.Max(1, value));
+ }
+
+ ///
+ /// Retrieves a CborWriter from the pool, or creates a new one if the pool is empty.
+ ///
+ public static CborWriter Rent()
+ {
+ if (_pool.TryTake(out var writer))
+ {
+ return writer;
+ }
+ // Create a new CborWriter if the pool is empty
+ return new CborWriter(CborConformanceMode.Canonical, true);
+ }
+
+ ///
+ /// Returns a CborWriter to the pool for reuse.
+ /// If the pool is already full then the writer will be discard.
+ ///
+ public static void Return(CborWriter writer)
+ {
+ if (_pool.Count >= Volatile.Read(ref _maxPoolSize))
+ return;
+
+ writer.Reset(); // Ensure the writer is in a clean state before pooling
+ _pool.Add(writer);
+ }
+ }
+}
diff --git a/extensions/src/AWSSDK.Extensions.CborProtocol/Properties/AssemblyInfo.cs b/extensions/src/AWSSDK.Extensions.CborProtocol/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000000..d9897716be94
--- /dev/null
+++ b/extensions/src/AWSSDK.Extensions.CborProtocol/Properties/AssemblyInfo.cs
@@ -0,0 +1,19 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("AWSSDK.Extensions.CborProtocol")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Amazon.com, Inc")]
+[assembly: AssemblyProduct("AWS SDK for .NET extensions for Cbor protocol support")]
+[assembly: AssemblyDescription("AWS SDK for .NET extensions for Cbor protocol support")]
+[assembly: AssemblyCopyright("Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.")]
+[assembly: AssemblyTrademark("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+[assembly: AssemblyVersion("4.0")]
+[assembly: AssemblyFileVersion("4.0.0.0")]
diff --git a/generator/ServiceClientGeneratorLib/GeneratorDriver.cs b/generator/ServiceClientGeneratorLib/GeneratorDriver.cs
index 225f88179a9b..cccf88ae696a 100644
--- a/generator/ServiceClientGeneratorLib/GeneratorDriver.cs
+++ b/generator/ServiceClientGeneratorLib/GeneratorDriver.cs
@@ -1355,7 +1355,7 @@ internal static bool WriteFile(string baseOutputDir,
/// Sets the marshaller of the generator based on the service type
///
/// The marshaller to be set
- /// If the service type is a type of json then normalizeMarshallers is set to true, false otherwise
+ /// If the service type is using structure marshallers then normalizeMarshallers is set to true, false otherwise
void GetRequestMarshaller(out BaseRequestMarshaller marshaller, out bool normalizeMarshallers)
{
normalizeMarshallers = false;
@@ -1366,6 +1366,10 @@ void GetRequestMarshaller(out BaseRequestMarshaller marshaller, out bool normali
marshaller = new JsonRPCRequestMarshaller();
normalizeMarshallers = true;
break;
+ case ServiceType.Cbor:
+ marshaller = new CborRequestMarshaller();
+ normalizeMarshallers = true;
+ break;
case ServiceType.Query:
marshaller = new AWSQueryRequestMarshaller();
break;
@@ -1388,6 +1392,8 @@ BaseRequestMarshaller GetStructureMarshaller()
case ServiceType.Rest_Json:
case ServiceType.Json:
return new JsonRPCStructureMarshaller();
+ case ServiceType.Cbor:
+ return new CborStructureMarshaller();
default:
throw new Exception("No structure marshaller for service type: " + this.Configuration.ServiceModel.Type);
}
@@ -1409,6 +1415,8 @@ BaseResponseUnmarshaller GetResponseUnmarshaller()
return new AWSQueryResponseUnmarshaller();
case ServiceType.Rest_Xml:
return new RestXmlResponseUnmarshaller();
+ case ServiceType.Cbor:
+ return new CborResponseUnmarshaller();
default:
throw new Exception("No response unmarshaller for service type: " + this.Configuration.ServiceModel.Type);
}
@@ -1429,6 +1437,8 @@ BaseResponseUnmarshaller GetStructureUnmarshaller()
return new AWSQueryStructureUnmarshaller();
case ServiceType.Rest_Xml:
return new RestXmlStructureUnmarshaller();
+ case ServiceType.Cbor:
+ return new CborStructureUnmarshaller();
default:
throw new Exception("No structure unmarshaller for service type: " + this.Configuration.ServiceModel.Type);
}
@@ -1448,6 +1458,8 @@ BaseResponseUnmarshaller GetExceptionUnmarshaller()
return new AWSQueryExceptionUnmarshaller();
case ServiceType.Rest_Xml:
return new RestXmlExceptionUnmarshaller();
+ case ServiceType.Cbor:
+ return new CborExceptionUnmarshaller();
default:
throw new Exception("No structure unmarshaller for service type: " + this.Configuration.ServiceModel.Type);
}
diff --git a/generator/ServiceClientGeneratorLib/GeneratorEnumerations.cs b/generator/ServiceClientGeneratorLib/GeneratorEnumerations.cs
index c4893f0ccf9c..4f49f69e46e2 100644
--- a/generator/ServiceClientGeneratorLib/GeneratorEnumerations.cs
+++ b/generator/ServiceClientGeneratorLib/GeneratorEnumerations.cs
@@ -9,7 +9,7 @@ namespace ServiceClientGenerator
///
/// The set of data protocols used by AWS services
///
- public enum ServiceType { Json, Query, Rest_Xml, Rest_Json };
+ public enum ServiceType { Json, Query, Rest_Xml, Rest_Json, Cbor };
///
/// Where the properties of the request should be placed
diff --git a/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborRequestMarshaller.cs b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborRequestMarshaller.cs
new file mode 100644
index 000000000000..a2bff38135c3
--- /dev/null
+++ b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborRequestMarshaller.cs
@@ -0,0 +1,343 @@
+// ------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version: 17.0.0.0
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+// ------------------------------------------------------------------------------
+namespace ServiceClientGenerator.Generators.Marshallers
+{
+ using System.Linq;
+ using System.Text;
+ using System.Collections.Generic;
+ using System;
+
+ ///
+ /// Class to produce the template output
+ ///
+
+ #line 1 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
+ public partial class CborRequestMarshaller : CborStructureMarshaller
+ {
+#line hidden
+ ///
+ /// Create the template output
+ ///
+ public override string TransformText()
+ {
+
+ #line 6 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ AddLicenseHeader();
+
+ AddCommonUsingStatements();
+
+
+ #line default
+ #line hidden
+ this.Write("using AWSSDK.Extensions.CborProtocol;\r\nusing AWSSDK.Extensions.CborProtocol.Inter" +
+ "nal;\r\n\r\n#pragma warning disable CS0612,CS0618\r\nnamespace ");
+
+ #line 15 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.Namespace));
+
+ #line default
+ #line hidden
+ this.Write(".Model.Internal.MarshallTransformations\r\n{\r\n\t/// \r\n\t/// ");
+
+ #line 18 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Operation.Name));
+
+ #line default
+ #line hidden
+ this.Write(" Request Marshaller\r\n\t/// \r\n\tpublic class ");
+
+ #line 20 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Operation.Name));
+
+ #line default
+ #line hidden
+ this.Write("RequestMarshaller : IMarshaller , IMarshaller
+ {
+ ///
+ /// Marshaller the request object to the HTTP request.
+ ///
+ ///
+ ///
+ public IRequest Marshall(AmazonWebServiceRequest input)
+ {
+ return this.Marshall((");
+
+ #line 29 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Operation.Name));
+
+ #line default
+ #line hidden
+ this.Write("Request)input);\r\n }\r\n\r\n /// \r\n /// Marshaller the r" +
+ "equest object to the HTTP request.\r\n /// \r\n /// \r\n /// \r\n\t\tpublic IReque" +
+ "st Marshall(");
+
+ #line 37 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Operation.Name));
+
+ #line default
+ #line hidden
+ this.Write("Request publicRequest)\r\n\t\t{\r\n\t\t\tIRequest request = new DefaultRequest(publicReque" +
+ "st, \"");
+
+ #line 39 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.Namespace));
+
+ #line default
+ #line hidden
+ this.Write("\");\r\n request.Headers[\"smithy-protocol\"] = \"rpc-v2-cbor\";\r\n");
+
+ #line 41 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ if (string.IsNullOrEmpty(this.Config.ServiceModel.TargetPrefix))
+ {
+ throw new System.InvalidOperationException("TargetPrefix is required for CBOR based services.");
+ }
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\trequest.ResourcePath = \"");
+
+ #line 47 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture($"service/{this.Config.ServiceModel.TargetPrefix}/operation/{this.Operation.Name}"));
+
+ #line default
+ #line hidden
+ this.Write("\";\r\n");
+
+ #line 48 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ if ((this.Config.ServiceModel.H2Support == H2SupportDegree.Optional && this.Operation.IsEventStreamBidi) || (this.Config.ServiceModel.H2Support == H2SupportDegree.EventStream && this.Operation.IsEventStreamOutput) || this.Config.ServiceModel.H2Support == H2SupportDegree.Required)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("#if NET8_0_OR_GREATER\r\n request.HttpProtocolVersion = System.Net.HttpV" +
+ "ersion.Version20;\r\n#endif\r\n");
+
+ #line 55 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+ var requestStructure = this.Operation.RequestStructure;
+
+ if (this.Operation.IsEventStreamInput)
+ {
+ var eventStreamMember = this.Operation.RequestEventStreamingMember;
+
+
+ #line default
+ #line hidden
+ this.Write(" request.Headers[\"Content-Type\"] = \"application/vnd.amazon.eventstream" +
+ "\";\r\n request.EventStreamPublisher = new ");
+
+ #line 64 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(eventStreamMember.Shape.Name));
+
+ #line default
+ #line hidden
+ this.Write("PublisherMarshaller(publicRequest.");
+
+ #line 64 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(eventStreamMember.PropertyName));
+
+ #line default
+ #line hidden
+ this.Write(");\r\n");
+
+ #line 65 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+ else if (requestStructure != null)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\trequest.Headers[\"Content-Type\"] = \"application/cbor\";\r\n");
+
+ #line 71 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+
+ if (this.Operation.IsEventStreamOutput)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\trequest.Headers[\"Accept\"] = \"application/vnd.amazon.eventstream\";\r\n");
+
+ #line 78 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\trequest.Headers[\"Accept\"] = \"application/cbor\";\r\n");
+
+ #line 84 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+
+ SetCompressionAlgorithmEncoding(this.Operation);
+
+ var payload = this.Operation.RequestPayloadMember;
+
+
+ #line default
+ #line hidden
+ this.Write(" request.Headers[Amazon.Util.HeaderKeys.XAmzApiVersion] = \"");
+
+ #line 91 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.ServiceModel.APIVersion));
+
+ #line default
+ #line hidden
+ this.Write("\";\r\n request.HttpMethod = \"POST\";\r\n\r\n");
+
+ #line 94 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ // Generates code to add members of the request to the request being created by the marshaller
+ ProcessRequestUri(this.Operation);
+
+ var shouldMarshallPayload = (payload != null && !payload.Shape.IsEventStream);
+ // Process any members which are marshalled as part of the request body
+ if (requestStructure != null)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write(" var writer = CborWriterPool.Rent();\r\n try\r\n {\r\n" +
+ "");
+
+ #line 106 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ if (payload?.Shape.IsString == true)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\t\twriter.WriteTextString(publicRequest.");
+
+ #line 110 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(payload.PropertyName));
+
+ #line default
+ #line hidden
+ this.Write(");\r\n");
+
+ #line 111 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+ else if (shouldMarshallPayload)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\t\tvar context = new CborMarshallerContext(request, writer);\r\n\r\n");
+
+ #line 118 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ ProcessStructure(1, "publicRequest." + payload.PropertyName, payload.Shape);
+ }
+ else
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\t\twriter.WriteStartMap(null);\r\n\t\t\t\tvar context = new CborMarshallerContext(requ" +
+ "est, writer);\r\n");
+
+ #line 126 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ ProcessMembers(1, "publicRequest", this.Operation.RequestBodyMembers);
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\t\twriter.WriteEndMap();\r\n");
+
+ #line 130 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\t\trequest.Content = writer.Encode();\r\n\t\t\t}\r\n finally\r\n {\r" +
+ "\n CborWriterPool.Return(writer);\r\n }\r\n");
+
+ #line 139 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ GenerateRequestChecksumHandling(this.Operation, "snippet");
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\t\r\n");
+
+ #line 142 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ }
+
+ if (this.Operation.UnsignedPayload)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\trequest.DisablePayloadSigning = true;\r\n");
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+ }
+
+ if (!string.IsNullOrEmpty(this.Operation.EndpointHostPrefix))
+ {
+ ProcessEndpointHostPrefixMembers(3, "publicRequest", this.Operation);
+ }
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t\treturn request;\r\n\t\t}\r\n");
+
+ #line 158 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborRequestMarshaller.tt"
+
+ this.AddRequestSingletonMethod();
+
+
+ #line default
+ #line hidden
+ this.Write("\t}\r\n}");
+ return this.GenerationEnvironment.ToString();
+ }
+ }
+
+ #line default
+ #line hidden
+}
diff --git a/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborRequestMarshaller.tt b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborRequestMarshaller.tt
new file mode 100644
index 000000000000..a706f373cb7d
--- /dev/null
+++ b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborRequestMarshaller.tt
@@ -0,0 +1,162 @@
+<#@ template language="C#" inherits="CborStructureMarshaller" #>
+<#@ assembly name="System.Core" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#
+ AddLicenseHeader();
+
+ AddCommonUsingStatements();
+#>
+using AWSSDK.Extensions.CborProtocol;
+using AWSSDK.Extensions.CborProtocol.Internal;
+
+#pragma warning disable CS0612,CS0618
+namespace <#=this.Config.Namespace #>.Model.Internal.MarshallTransformations
+{
+ ///
+ /// <#=this.Operation.Name #> Request Marshaller
+ ///
+ public class <#=this.Operation.Name #>RequestMarshaller : IMarshallerRequest> , IMarshaller
+ {
+ ///
+ /// Marshaller the request object to the HTTP request.
+ ///
+ ///
+ ///
+ public IRequest Marshall(AmazonWebServiceRequest input)
+ {
+ return this.Marshall((<#=this.Operation.Name #>Request)input);
+ }
+
+ ///
+ /// Marshaller the request object to the HTTP request.
+ ///
+ ///
+ ///
+ public IRequest Marshall(<#=this.Operation.Name #>Request publicRequest)
+ {
+ IRequest request = new DefaultRequest(publicRequest, "<#=this.Config.Namespace #>");
+ request.Headers["smithy-protocol"] = "rpc-v2-cbor";
+<#
+ if (string.IsNullOrEmpty(this.Config.ServiceModel.TargetPrefix))
+ {
+ throw new System.InvalidOperationException("TargetPrefix is required for CBOR based services.");
+ }
+#>
+ request.ResourcePath = "<#=$"service/{this.Config.ServiceModel.TargetPrefix}/operation/{this.Operation.Name}"#>";
+<#
+ if ((this.Config.ServiceModel.H2Support == H2SupportDegree.Optional && this.Operation.IsEventStreamBidi) || (this.Config.ServiceModel.H2Support == H2SupportDegree.EventStream && this.Operation.IsEventStreamOutput) || this.Config.ServiceModel.H2Support == H2SupportDegree.Required)
+ {
+#>
+#if NET8_0_OR_GREATER
+ request.HttpProtocolVersion = System.Net.HttpVersion.Version20;
+#endif
+<#
+ }
+ var requestStructure = this.Operation.RequestStructure;
+
+ if (this.Operation.IsEventStreamInput)
+ {
+ var eventStreamMember = this.Operation.RequestEventStreamingMember;
+#>
+ request.Headers["Content-Type"] = "application/vnd.amazon.eventstream";
+ request.EventStreamPublisher = new <#=eventStreamMember.Shape.Name#>PublisherMarshaller(publicRequest.<#=eventStreamMember.PropertyName#>);
+<#
+ }
+ else if (requestStructure != null)
+ {
+#>
+ request.Headers["Content-Type"] = "application/cbor";
+<#
+ }
+
+ if (this.Operation.IsEventStreamOutput)
+ {
+#>
+ request.Headers["Accept"] = "application/vnd.amazon.eventstream";
+<#
+ }
+ else
+ {
+#>
+ request.Headers["Accept"] = "application/cbor";
+<#
+ }
+
+ SetCompressionAlgorithmEncoding(this.Operation);
+
+ var payload = this.Operation.RequestPayloadMember;
+#>
+ request.Headers[Amazon.Util.HeaderKeys.XAmzApiVersion] = "<#=this.Config.ServiceModel.APIVersion #>";
+ request.HttpMethod = "POST";
+
+<#
+ // Generates code to add members of the request to the request being created by the marshaller
+ ProcessRequestUri(this.Operation);
+
+ var shouldMarshallPayload = (payload != null && !payload.Shape.IsEventStream);
+ // Process any members which are marshalled as part of the request body
+ if (requestStructure != null)
+ {
+#>
+ var writer = CborWriterPool.Rent();
+ try
+ {
+<#
+ if (payload?.Shape.IsString == true)
+ {
+#>
+ writer.WriteTextString(publicRequest.<#=payload.PropertyName#>);
+<#
+ }
+ else if (shouldMarshallPayload)
+ {
+#>
+ var context = new CborMarshallerContext(request, writer);
+
+<#
+ ProcessStructure(1, "publicRequest." + payload.PropertyName, payload.Shape);
+ }
+ else
+ {
+#>
+ writer.WriteStartMap(null);
+ var context = new CborMarshallerContext(request, writer);
+<#
+ ProcessMembers(1, "publicRequest", this.Operation.RequestBodyMembers);
+#>
+ writer.WriteEndMap();
+<#
+ }
+#>
+ request.Content = writer.Encode();
+ }
+ finally
+ {
+ CborWriterPool.Return(writer);
+ }
+<#
+ GenerateRequestChecksumHandling(this.Operation, "snippet");
+#>
+<#
+ }
+
+ if (this.Operation.UnsignedPayload)
+ {
+#>
+ request.DisablePayloadSigning = true;
+<# }
+
+ if (!string.IsNullOrEmpty(this.Operation.EndpointHostPrefix))
+ {
+ ProcessEndpointHostPrefixMembers(3, "publicRequest", this.Operation);
+ }
+#>
+ return request;
+ }
+<#
+ this.AddRequestSingletonMethod();
+#>
+ }
+}
\ No newline at end of file
diff --git a/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborStructureMarshaller.cs b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborStructureMarshaller.cs
new file mode 100644
index 000000000000..4fd59aeb9249
--- /dev/null
+++ b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborStructureMarshaller.cs
@@ -0,0 +1,1502 @@
+// ------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version: 17.0.0.0
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+// ------------------------------------------------------------------------------
+namespace ServiceClientGenerator.Generators.Marshallers
+{
+ using System.Linq;
+ using System.Text;
+ using System.Collections.Generic;
+ using System;
+
+ ///
+ /// Class to produce the template output
+ ///
+
+ #line 1 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
+ public partial class CborStructureMarshaller : BaseRequestMarshaller
+ {
+#line hidden
+ ///
+ /// Create the template output
+ ///
+ public override string TransformText()
+ {
+
+ #line 6 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ AddLicenseHeader();
+
+ AddCommonUsingStatements();
+
+
+ #line default
+ #line hidden
+ this.Write("using AWSSDK.Extensions.CborProtocol;\r\nusing AWSSDK.Extensions.CborProtocol.Inter" +
+ "nal;\r\n\r\n#pragma warning disable CS0612,CS0618\r\nnamespace ");
+
+ #line 15 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.Namespace));
+
+ #line default
+ #line hidden
+ this.Write(".Model.Internal.MarshallTransformations\r\n{\r\n\t/// \r\n\t/// ");
+
+ #line 18 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name));
+
+ #line default
+ #line hidden
+ this.Write(" Marshaller\r\n\t/// \r\n\tpublic class ");
+
+ #line 20 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name));
+
+ #line default
+ #line hidden
+ this.Write("Marshaller : IRequestMarshaller<");
+
+ #line 20 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name));
+
+ #line default
+ #line hidden
+ this.Write(@", CborMarshallerContext>
+ {
+ ///
+ /// Unmarshaller the response from the service to the response class.
+ ///
+ ///
+ ///
+ ///
+ public void Marshall(");
+
+ #line 28 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name));
+
+ #line default
+ #line hidden
+ this.Write(" requestObject, CborMarshallerContext context)\r\n\t\t{\r\n\t\t\tif (requestObject == null" +
+ ")\r\n\t\t\t\treturn;\r\n\r\n");
+
+ #line 33 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ ProcessMembers(0, "requestObject", this.Structure.Members);
+
+
+ #line default
+ #line hidden
+ this.Write("\t\t}\r\n\r\n /// \r\n /// Singleton Marshaller.\r\n /// \r\n\t\tpublic readonly static ");
+
+ #line 41 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name));
+
+ #line default
+ #line hidden
+ this.Write("Marshaller Instance = new ");
+
+ #line 41 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name));
+
+ #line default
+ #line hidden
+ this.Write("Marshaller();\r\n\r\n\t}\r\n}\r\n\r\n");
+ return this.GenerationEnvironment.ToString();
+ }
+
+ #line 46 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ protected void ProcessMembers(int level, string variableName, IEnumerable members)
+ {
+ foreach(var member in members)
+ {
+ if (member.ModelShape.IsEventStream)
+ continue;
+
+
+ #line default
+ #line hidden
+
+ #line 54 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 54 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" if (");
+
+
+ #line default
+ #line hidden
+
+ #line 54 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 54 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(".IsSet");
+
+
+ #line default
+ #line hidden
+
+ #line 54 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(member.PropertyName));
+
+
+ #line default
+ #line hidden
+
+ #line 54 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("())\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 55 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 55 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" {\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 56 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 56 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteTextString(\"");
+
+
+ #line default
+ #line hidden
+
+ #line 56 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(member.MarshallName));
+
+
+ #line default
+ #line hidden
+
+ #line 56 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("\");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 57 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ string memberProperty = variableName + "." + member.PropertyName;
+ // Only append .Value for nullable types that aren't already complex types
+ if (member.IsNullable && !member.IsStructure && !member.IsList && !member.IsMap)
+ {
+ memberProperty += ".Value";
+ }
+ if (member.IsStructure || member.IsList || member.IsMap)
+ {
+ this.ProcessStructure(level + 1, variableName + "." + member.PropertyName, member.Shape);
+ }
+ else if (member.IsMemoryStream)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 71 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 71 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteByteString(");
+
+
+ #line default
+ #line hidden
+
+ #line 71 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName + "." + member.PropertyName));
+
+
+ #line default
+ #line hidden
+
+ #line 71 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(".ToArray());\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 72 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (member.IsTimeStamp)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 77 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 77 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteDateTime(");
+
+
+ #line default
+ #line hidden
+
+ #line 77 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName + "." + member.PropertyName));
+
+
+ #line default
+ #line hidden
+
+ #line 77 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(".Value);\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 78 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else
+ {
+ DetermineNormalCborWriteMethod(member.Shape, memberProperty, level);
+ }
+
+
+ #line default
+ #line hidden
+
+ #line 85 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 85 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" }\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 86 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ if (member.IsIdempotent)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 90 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 90 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" \t\t else if (!(");
+
+
+ #line default
+ #line hidden
+
+ #line 90 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 90 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(".IsSet");
+
+
+ #line default
+ #line hidden
+
+ #line 90 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(member.PropertyName));
+
+
+ #line default
+ #line hidden
+
+ #line 90 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("()))\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 91 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 91 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" \t\t {\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 92 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 92 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteTextString(\"");
+
+
+ #line default
+ #line hidden
+
+ #line 92 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(member.MarshallName));
+
+
+ #line default
+ #line hidden
+
+ #line 92 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("\");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 93 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 93 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteTextString(Guid.NewGuid().ToString());\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 94 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 94 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" \t\t }\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 95 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ }
+ }
+protected void ProcessStructure(int level, string variableName, Shape structure)
+ {
+ string flatVariableName = variableName.Replace(".", "");
+
+ if (structure.IsList)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 106 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 106 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteStartArray(");
+
+
+ #line default
+ #line hidden
+
+ #line 106 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 106 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(".Count);\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 107 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 107 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" foreach(var ");
+
+
+ #line default
+ #line hidden
+
+ #line 107 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableName));
+
+
+ #line default
+ #line hidden
+
+ #line 107 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("ListValue in ");
+
+
+ #line default
+ #line hidden
+
+ #line 107 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 107 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(")\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 108 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 108 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" {\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 109 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ ProcessStructure(level + 1, flatVariableName + "ListValue", structure.ListShape);
+
+
+ #line default
+ #line hidden
+
+ #line 112 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 112 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" }\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 113 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 113 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteEndArray();\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 114 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (structure.IsMap)
+ {
+ ProcessMap(level, variableName, structure);
+ }
+ else if (structure.IsStructure)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 123 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 123 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteStartMap(null);\r\n\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 125 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 125 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" var marshaller = ");
+
+
+ #line default
+ #line hidden
+
+ #line 125 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(structure.Name));
+
+
+ #line default
+ #line hidden
+
+ #line 125 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("Marshaller.Instance;\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 126 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 126 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" marshaller.Marshall(");
+
+
+ #line default
+ #line hidden
+
+ #line 126 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 126 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(", context);\r\n\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 128 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 128 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteEndMap();\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 129 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (structure.IsMemoryStream)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 134 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 134 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteByteString(");
+
+
+ #line default
+ #line hidden
+
+ #line 134 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 134 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(".ToArray());\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 135 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else
+ {
+ DetermineNormalCborWriteMethod(structure, variableName, level);
+ }
+ }
+
+ protected void ProcessMap(int level, string variableName, Shape structure)
+ {
+ string flatVariableName = variableName.Replace(".", "");
+ string flatVariableValue = flatVariableName + "Value";
+
+
+ #line default
+ #line hidden
+
+ #line 148 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 148 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteStartMap(null);\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" foreach (var ");
+
+
+ #line default
+ #line hidden
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableName));
+
+
+ #line default
+ #line hidden
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("Kvp in ");
+
+
+ #line default
+ #line hidden
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(variableName));
+
+
+ #line default
+ #line hidden
+
+ #line 149 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(")\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 150 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 150 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" {\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 151 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 151 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteTextString(");
+
+
+ #line default
+ #line hidden
+
+ #line 151 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableName));
+
+
+ #line default
+ #line hidden
+
+ #line 151 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("Kvp.Key);\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 152 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 152 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" var ");
+
+
+ #line default
+ #line hidden
+
+ #line 152 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableName));
+
+
+ #line default
+ #line hidden
+
+ #line 152 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("Value = ");
+
+
+ #line default
+ #line hidden
+
+ #line 152 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableName));
+
+
+ #line default
+ #line hidden
+
+ #line 152 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("Kvp.Value;\r\n\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 154 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+ // Check for null values - only null checks for sparse maps as defined in customizations
+
+ bool isNullableMap = false;
+ if (this.Structure != null)
+ {
+ var memberWithMap = this.Structure.Members.FirstOrDefault(m => m.PropertyName == variableName.Split('.').Last());
+ isNullableMap = (memberWithMap != null && memberWithMap.UseNullable);
+ }
+
+ if (isNullableMap)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 166 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 166 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" if (");
+
+
+ #line default
+ #line hidden
+
+ #line 166 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableName));
+
+
+ #line default
+ #line hidden
+
+ #line 166 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write("Value == null)\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 167 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 167 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" {\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 168 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 168 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteNull();\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 169 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 169 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" }\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 170 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 170 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" else\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 171 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 171 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" {\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 172 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ flatVariableValue = flatVariableValue + ".Value";
+ }
+
+ if (structure.ValueShape.IsBoolean)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 179 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 179 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteBoolean(");
+
+
+ #line default
+ #line hidden
+
+ #line 179 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableValue));
+
+
+ #line default
+ #line hidden
+
+ #line 179 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 180 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if ( structure.ValueShape.IsFloat || structure.ValueShape.IsDouble)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 185 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 185 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteOptimizedNumber(");
+
+
+ #line default
+ #line hidden
+
+ #line 185 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableValue));
+
+
+ #line default
+ #line hidden
+
+ #line 185 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 186 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (structure.ValueShape.IsInt)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 191 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 191 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteInt32(");
+
+
+ #line default
+ #line hidden
+
+ #line 191 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableValue));
+
+
+ #line default
+ #line hidden
+
+ #line 191 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 192 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (structure.ValueShape.IsLong)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 197 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 197 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteInt64(");
+
+
+ #line default
+ #line hidden
+
+ #line 197 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableValue));
+
+
+ #line default
+ #line hidden
+
+ #line 197 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 198 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+
+ else if (structure.ValueShape.IsTimeStamp)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 204 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 204 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteDateTime(");
+
+
+ #line default
+ #line hidden
+
+ #line 204 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(flatVariableValue));
+
+
+ #line default
+ #line hidden
+
+ #line 204 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 205 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else
+ {
+ if (isNullableMap)
+ {
+ ProcessStructure(level + 2, flatVariableName + "Value", structure.ValueShape);
+ }
+ else
+ {
+ ProcessStructure(level + 1, flatVariableName + "Value", structure.ValueShape);
+ }
+ }
+
+ // Close the else block for nullable maps
+ if (isNullableMap)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 223 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 223 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" }\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 224 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+
+
+ #line default
+ #line hidden
+
+ #line 227 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 227 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" }\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 228 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 228 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteEndMap();\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 229 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+
+
+protected void DetermineNormalCborWriteMethod(Shape shape, string memberProperty, int level)
+ {
+ if (shape.IsString || shape.IsEnum)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 238 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 238 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteTextString(");
+
+
+ #line default
+ #line hidden
+
+ #line 238 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(memberProperty));
+
+
+ #line default
+ #line hidden
+
+ #line 238 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 239 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (shape.IsTimeStamp)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 244 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 244 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteDateTime(");
+
+
+ #line default
+ #line hidden
+
+ #line 244 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(memberProperty));
+
+
+ #line default
+ #line hidden
+
+ #line 244 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 245 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (shape.IsFloat || shape.IsDouble)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 250 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 250 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteOptimizedNumber(");
+
+
+ #line default
+ #line hidden
+
+ #line 250 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(memberProperty));
+
+
+ #line default
+ #line hidden
+
+ #line 250 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 251 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (shape.IsLong)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 256 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 256 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteInt64(");
+
+
+ #line default
+ #line hidden
+
+ #line 256 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(memberProperty));
+
+
+ #line default
+ #line hidden
+
+ #line 256 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 257 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (shape.IsInt)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 262 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 262 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteInt32(");
+
+
+ #line default
+ #line hidden
+
+ #line 262 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(memberProperty));
+
+
+ #line default
+ #line hidden
+
+ #line 262 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 263 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else if (shape.IsBoolean)
+ {
+
+
+ #line default
+ #line hidden
+
+ #line 268 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(new string(' ', level * 4)));
+
+
+ #line default
+ #line hidden
+
+ #line 268 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(" context.Writer.WriteBoolean(");
+
+
+ #line default
+ #line hidden
+
+ #line 268 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(this.ToStringHelper.ToStringWithCulture(memberProperty));
+
+
+ #line default
+ #line hidden
+
+ #line 268 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+this.Write(");\r\n");
+
+
+ #line default
+ #line hidden
+
+ #line 269 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\Marshallers\CborStructureMarshaller.tt"
+
+ }
+ else
+ {
+ throw new Exception ("Unknown primitive type encountered");
+ }
+ }
+
+
+ #line default
+ #line hidden
+ }
+
+ #line default
+ #line hidden
+}
diff --git a/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborStructureMarshaller.tt b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborStructureMarshaller.tt
new file mode 100644
index 000000000000..02199fd1a7db
--- /dev/null
+++ b/generator/ServiceClientGeneratorLib/Generators/Marshallers/CborStructureMarshaller.tt
@@ -0,0 +1,276 @@
+<#@ template language="C#" inherits="BaseRequestMarshaller" #>
+<#@ assembly name="System.Core" #>
+<#@ import namespace="System.Linq" #>
+<#@ import namespace="System.Text" #>
+<#@ import namespace="System.Collections.Generic" #>
+<#
+ AddLicenseHeader();
+
+ AddCommonUsingStatements();
+#>
+using AWSSDK.Extensions.CborProtocol;
+using AWSSDK.Extensions.CborProtocol.Internal;
+
+#pragma warning disable CS0612,CS0618
+namespace <#= this.Config.Namespace #>.Model.Internal.MarshallTransformations
+{
+ ///
+ /// <#=this.Structure.Name #> Marshaller
+ ///
+ public class <#=this.Structure.Name #>Marshaller : IRequestMarshaller<<#=this.Structure.Name #>, CborMarshallerContext>
+ {
+ ///
+ /// Unmarshaller the response from the service to the response class.
+ ///
+ ///
+ ///
+ ///
+ public void Marshall(<#=this.Structure.Name #> requestObject, CborMarshallerContext context)
+ {
+ if (requestObject == null)
+ return;
+
+<#
+ ProcessMembers(0, "requestObject", this.Structure.Members);
+#>
+ }
+
+ ///
+ /// Singleton Marshaller.
+ ///
+ public readonly static <#=this.Structure.Name #>Marshaller Instance = new <#=this.Structure.Name #>Marshaller();
+
+ }
+}
+
+<#+
+ protected void ProcessMembers(int level, string variableName, IEnumerable members)
+ {
+ foreach(var member in members)
+ {
+ if (member.ModelShape.IsEventStream)
+ continue;
+#>
+<#=new string(' ', level * 4)#> if (<#=variableName#>.IsSet<#=member.PropertyName#>())
+<#=new string(' ', level * 4)#> {
+<#=new string(' ', level * 4)#> context.Writer.WriteTextString("<#=member.MarshallName#>");
+<#+
+ string memberProperty = variableName + "." + member.PropertyName;
+ // Only append .Value for nullable types that aren't already complex types
+ if (member.IsNullable && !member.IsStructure && !member.IsList && !member.IsMap)
+ {
+ memberProperty += ".Value";
+ }
+ if (member.IsStructure || member.IsList || member.IsMap)
+ {
+ this.ProcessStructure(level + 1, variableName + "." + member.PropertyName, member.Shape);
+ }
+ else if (member.IsMemoryStream)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteByteString(<#=variableName + "." + member.PropertyName#>.ToArray());
+<#+
+ }
+ else if (member.IsTimeStamp)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteDateTime(<#=variableName + "." + member.PropertyName#>.Value);
+<#+
+ }
+ else
+ {
+ DetermineNormalCborWriteMethod(member.Shape, memberProperty, level);
+ }
+#>
+<#=new string(' ', level * 4)#> }
+<#+
+ if (member.IsIdempotent)
+ {
+#>
+<#=new string(' ', level * 4)#> else if (!(<#=variableName#>.IsSet<#=member.PropertyName#>()))
+<#=new string(' ', level * 4)#> {
+<#=new string(' ', level * 4)#> context.Writer.WriteTextString("<#=member.MarshallName#>");
+<#=new string(' ', level * 4)#> context.Writer.WriteTextString(Guid.NewGuid().ToString());
+<#=new string(' ', level * 4)#> }
+<#+
+ }
+ }
+ }
+protected void ProcessStructure(int level, string variableName, Shape structure)
+ {
+ string flatVariableName = variableName.Replace(".", "");
+
+ if (structure.IsList)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteStartArray(<#=variableName#>.Count);
+<#=new string(' ', level * 4)#> foreach(var <#=flatVariableName#>ListValue in <#=variableName#>)
+<#=new string(' ', level * 4)#> {
+<#+
+ ProcessStructure(level + 1, flatVariableName + "ListValue", structure.ListShape);
+#>
+<#=new string(' ', level * 4)#> }
+<#=new string(' ', level * 4)#> context.Writer.WriteEndArray();
+<#+
+ }
+ else if (structure.IsMap)
+ {
+ ProcessMap(level, variableName, structure);
+ }
+ else if (structure.IsStructure)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteStartMap(null);
+
+<#=new string(' ', level * 4)#> var marshaller = <#=structure.Name#>Marshaller.Instance;
+<#=new string(' ', level * 4)#> marshaller.Marshall(<#=variableName#>, context);
+
+<#=new string(' ', level * 4)#> context.Writer.WriteEndMap();
+<#+
+ }
+ else if (structure.IsMemoryStream)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteByteString(<#=variableName#>.ToArray());
+<#+
+ }
+ else
+ {
+ DetermineNormalCborWriteMethod(structure, variableName, level);
+ }
+ }
+
+ protected void ProcessMap(int level, string variableName, Shape structure)
+ {
+ string flatVariableName = variableName.Replace(".", "");
+ string flatVariableValue = flatVariableName + "Value";
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteStartMap(null);
+<#=new string(' ', level * 4)#> foreach (var <#=flatVariableName#>Kvp in <#=variableName#>)
+<#=new string(' ', level * 4)#> {
+<#=new string(' ', level * 4)#> context.Writer.WriteTextString(<#=flatVariableName#>Kvp.Key);
+<#=new string(' ', level * 4)#> var <#=flatVariableName#>Value = <#=flatVariableName#>Kvp.Value;
+
+<#+ // Check for null values - only null checks for sparse maps as defined in customizations
+
+ bool isNullableMap = false;
+ if (this.Structure != null)
+ {
+ var memberWithMap = this.Structure.Members.FirstOrDefault(m => m.PropertyName == variableName.Split('.').Last());
+ isNullableMap = (memberWithMap != null && memberWithMap.UseNullable);
+ }
+
+ if (isNullableMap)
+ {
+#>
+<#=new string(' ', level * 4)#> if (<#=flatVariableName#>Value == null)
+<#=new string(' ', level * 4)#> {
+<#=new string(' ', level * 4)#> context.Writer.WriteNull();
+<#=new string(' ', level * 4)#> }
+<#=new string(' ', level * 4)#> else
+<#=new string(' ', level * 4)#> {
+<#+
+ flatVariableValue = flatVariableValue + ".Value";
+ }
+
+ if (structure.ValueShape.IsBoolean)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteBoolean(<#=flatVariableValue#>);
+<#+
+ }
+ else if ( structure.ValueShape.IsFloat || structure.ValueShape.IsDouble)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteOptimizedNumber(<#=flatVariableValue#>);
+<#+
+ }
+ else if (structure.ValueShape.IsInt)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteInt32(<#=flatVariableValue#>);
+<#+
+ }
+ else if (structure.ValueShape.IsLong)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteInt64(<#=flatVariableValue#>);
+<#+
+ }
+
+ else if (structure.ValueShape.IsTimeStamp)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteDateTime(<#=flatVariableValue#>);
+<#+
+ }
+ else
+ {
+ if (isNullableMap)
+ {
+ ProcessStructure(level + 2, flatVariableName + "Value", structure.ValueShape);
+ }
+ else
+ {
+ ProcessStructure(level + 1, flatVariableName + "Value", structure.ValueShape);
+ }
+ }
+
+ // Close the else block for nullable maps
+ if (isNullableMap)
+ {
+#>
+<#=new string(' ', level * 4)#> }
+<#+
+ }
+#>
+<#=new string(' ', level * 4)#> }
+<#=new string(' ', level * 4)#> context.Writer.WriteEndMap();
+<#+
+ }
+
+
+protected void DetermineNormalCborWriteMethod(Shape shape, string memberProperty, int level)
+ {
+ if (shape.IsString || shape.IsEnum)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteTextString(<#=memberProperty#>);
+<#+
+ }
+ else if (shape.IsTimeStamp)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteDateTime(<#=memberProperty#>);
+<#+
+ }
+ else if (shape.IsFloat || shape.IsDouble)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteOptimizedNumber(<#=memberProperty#>);
+<#+
+ }
+ else if (shape.IsLong)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteInt64(<#=memberProperty#>);
+<#+
+ }
+ else if (shape.IsInt)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteInt32(<#=memberProperty#>);
+<#+
+ }
+ else if (shape.IsBoolean)
+ {
+#>
+<#=new string(' ', level * 4)#> context.Writer.WriteBoolean(<#=memberProperty#>);
+<#+
+ }
+ else
+ {
+ throw new Exception ("Unknown primitive type encountered");
+ }
+ }
+#>
\ No newline at end of file
diff --git a/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.cs b/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.cs
index d9371b81e124..f6fbc8540248 100644
--- a/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.cs
+++ b/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.cs
@@ -16,7 +16,7 @@ namespace ServiceClientGenerator.Generators.ProjectFiles
/// Class to produce the template output
///
- #line 1 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 1 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "17.0.0.0")]
public partial class VS2017ProjectFile : VS2017ProjectFileBase
{
@@ -29,7 +29,7 @@ public virtual string TransformText()
this.Write("\r\n \r\n true\r\n");
- #line 7 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 7 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (this.Project.TargetFrameworks.Count() == 1)
{
@@ -39,14 +39,14 @@ public virtual string TransformText()
#line hidden
this.Write(" ");
- #line 11 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 11 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.TargetFrameworks.Single()));
#line default
#line hidden
this.Write("\r\n");
- #line 12 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 12 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
else
@@ -57,14 +57,14 @@ public virtual string TransformText()
#line hidden
this.Write(" ");
- #line 17 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 17 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(";", this.Project.TargetFrameworks)));
#line default
#line hidden
this.Write("\r\n");
- #line 19 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 19 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -73,14 +73,14 @@ public virtual string TransformText()
#line hidden
this.Write(" $(DefineConstants);");
- #line 22 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 22 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(";", this.Project.DefineConstants)));
#line default
#line hidden
this.Write("\r\n");
- #line 24 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 24 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (this.Project.TargetFrameworks.Contains("netstandard2.0"))
{
@@ -91,7 +91,7 @@ public virtual string TransformText()
this.Write(" $(Defin" +
"eConstants);NETSTANDARD20;AWS_ASYNC_ENUMERABLES_API\r\n");
- #line 29 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 29 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if (this.Project.TargetFrameworks.Contains("netcoreapp3.1"))
@@ -103,7 +103,7 @@ public virtual string TransformText()
this.Write(" $(Define" +
"Constants);AWS_ASYNC_ENUMERABLES_API\r\n");
- #line 35 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 35 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if (this.Project.TargetFrameworks.Contains("net8.0"))
@@ -115,7 +115,7 @@ public virtual string TransformText()
this.Write(" $(DefineConstan" +
"ts);AWS_ASYNC_ENUMERABLES_API\r\n");
- #line 41 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 41 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -125,14 +125,14 @@ public virtual string TransformText()
this.Write(" portable\r\n true\r\n ");
- #line 46 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 46 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.AssemblyName));
#line default
#line hidden
this.Write("\r\n ");
- #line 47 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 47 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.AssemblyName));
#line default
@@ -152,8 +152,19 @@ public virtual string TransformText()
");
- #line 60 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 60 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ if (this.Project.TargetFrameworks.Contains("netcoreapp3.1") && this.ServiceConfiguration.ServiceModel.Type == ServiceType.Cbor)
+ {
+
+
+ #line default
+ #line hidden
+ this.Write(" true\r\n");
+
+ #line 65 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+
+ }
if (!string.IsNullOrEmpty(this.Project.FrameworkPathOverride))
{
@@ -163,14 +174,14 @@ public virtual string TransformText()
this.Write(" \r\n " +
" ");
- #line 65 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 71 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.FrameworkPathOverride));
#line default
#line hidden
this.Write("\r\n");
- #line 66 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 72 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -182,14 +193,14 @@ public virtual string TransformText()
#line hidden
this.Write(" ");
- #line 72 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 78 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.SupressWarnings));
#line default
#line hidden
this.Write("\r\n");
- #line 73 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 79 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -202,14 +213,14 @@ public virtual string TransformText()
this.Write(" false\r" +
"\n ");
- #line 80 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 86 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.OutputPathOverride));
#line default
#line hidden
this.Write("\r\n");
- #line 81 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 87 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -218,7 +229,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 85 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 91 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (this.Project.TargetFrameworks.Contains("netstandard2.0"))
{
@@ -230,7 +241,7 @@ public virtual string TransformText()
"ramework)\' == \'netstandard2.0\'\">\r\n 8.0\r\n \r\n");
- #line 93 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 99 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -243,7 +254,7 @@ public virtual string TransformText()
this.Write(" \r\n " +
"true\r\n \r\n");
- #line 102 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 108 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if (this.Project.AssemblyName.Contains("UnitTests") && this.Project.TargetFrameworks.Contains("net472"))
@@ -255,7 +266,7 @@ public virtual string TransformText()
this.Write(" \r\n true\r\n \r\n");
- #line 110 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 116 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -274,7 +285,7 @@ public virtual string TransformText()
");
- #line 123 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 129 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
@@ -282,7 +293,7 @@ public virtual string TransformText()
#line default
#line hidden
- #line 126 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 132 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (!this.Project.AssemblyName.Contains("UnitTests"))
{
@@ -293,7 +304,7 @@ public virtual string TransformText()
this.Write(" \r\n\t");
- #line 131 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 137 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.FxcopAnalyzerRuleSetFilePath));
#line default
@@ -301,14 +312,14 @@ public virtual string TransformText()
this.Write("\r\n \r\n \r\n\t");
- #line 134 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 140 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(this.Project.FxcopAnalyzerRuleSetFilePathForBuild));
#line default
#line hidden
this.Write("\r\n \r\n\r\n");
- #line 137 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 143 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if (this.Project.SignBinaries)
@@ -320,7 +331,7 @@ public virtual string TransformText()
this.Write(" \r\n \r\n " +
"\r\n");
- #line 145 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 151 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (this.Project.AssemblyName == "AWSSDK.UnitTests.NetFramework")
{
@@ -331,7 +342,7 @@ public virtual string TransformText()
this.Write(" ../../awssdk.dll.snk\r\n");
- #line 150 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 156 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -339,7 +350,7 @@ public virtual string TransformText()
#line default
#line hidden
- #line 153 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 159 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
else
{
@@ -350,7 +361,7 @@ public virtual string TransformText()
this.Write(" ../../../awssdk.dll.snk\r\n");
- #line 158 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 164 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -361,7 +372,7 @@ public virtual string TransformText()
" $(AWSKeyFile)\r\n " +
"\r\n \r\n \r\n\r\n");
- #line 170 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 176 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if(this.Project.CustomRoslynAnalyzersDllDirectory != null)
@@ -372,14 +383,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n \r\n \r\n");
- #line 178 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 184 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if(this.Project.IndividualFileIncludes != null)
@@ -390,7 +401,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 184 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 190 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach (var compileIncludeEntry in this.Project.IndividualFileIncludes)
{
@@ -400,14 +411,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 189 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 195 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -416,7 +427,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 193 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 199 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -428,7 +439,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 200 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 206 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach (var compileRemoveEntry in this.Project.CompileRemoveList)
{
@@ -440,21 +451,21 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n\t\r\n");
- #line 208 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 214 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
continue;
}
@@ -464,14 +475,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 213 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 219 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -480,7 +491,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n\r\n");
- #line 218 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 224 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -488,7 +499,7 @@ public virtual string TransformText()
#line default
#line hidden
- #line 221 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 227 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (this.Project.ProjectReferences != null)
{
@@ -498,7 +509,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 226 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 232 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach (var projectReference in this.Project.ProjectReferences)
{
@@ -508,14 +519,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 231 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 237 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -524,7 +535,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n\r\n");
- #line 236 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 242 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -532,7 +543,7 @@ public virtual string TransformText()
#line default
#line hidden
- #line 239 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 245 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
if (this.Project.PackageReferences != null)
{
@@ -542,7 +553,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 244 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 250 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach(var package in this.Project.PackageReferences.Where(p => p.IsAnalyzer))
{
@@ -554,28 +565,28 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n ");
- #line 251 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 257 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(package.PrivateAssets));
#line default
#line hidden
this.Write("\r\n \r\n");
- #line 253 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 259 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
else
@@ -586,21 +597,21 @@ public virtual string TransformText()
#line hidden
this.Write("\t \r\n");
- #line 259 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 265 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
}
@@ -610,7 +621,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n \r\n");
- #line 265 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 271 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach(var package in this.Project.PackageReferences.Where(p => !p.IsAnalyzer))
{
@@ -622,28 +633,28 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n ");
- #line 272 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 278 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(package.PrivateAssets));
#line default
#line hidden
this.Write("\r\n \r\n");
- #line 274 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 280 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
else
@@ -654,21 +665,21 @@ public virtual string TransformText()
#line hidden
this.Write("\t \r\n");
- #line 280 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 286 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
}
@@ -678,7 +689,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n\r\n");
- #line 286 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 292 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if (this.Project.ReferenceDependencies != null)
@@ -689,7 +700,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 292 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 298 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach (var reference in this.Project.ReferenceDependencies)
{
@@ -701,14 +712,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 299 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 305 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
else
@@ -719,21 +730,21 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n ");
- #line 305 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 311 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
this.Write(this.ToStringHelper.ToStringWithCulture(reference.HintPath));
#line default
#line hidden
this.Write("\r\n \r\n");
- #line 307 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 313 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
}
@@ -743,7 +754,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n\r\n");
- #line 313 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 319 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
if (this.Project.EmbeddedResources != null)
@@ -754,7 +765,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 319 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 325 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach (var resource in this.Project.EmbeddedResources)
{
@@ -764,14 +775,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 324 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 330 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -780,7 +791,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 328 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 334 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -792,7 +803,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 335 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 341 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
foreach (var service in this.Project.Services)
{
@@ -802,14 +813,14 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 340 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 346 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -818,7 +829,7 @@ public virtual string TransformText()
#line hidden
this.Write(" \r\n");
- #line 344 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 350 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
}
@@ -829,7 +840,7 @@ public virtual string TransformText()
return this.GenerationEnvironment.ToString();
}
- #line 350 "C:\codebase\v4\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
+ #line 356 "C:\repos\aws-sdk-net-v4\generator\ServiceClientGeneratorLib\Generators\ProjectFiles\VS2017ProjectFile.tt"
public Project Project { get; set; }
public ServiceConfiguration ServiceConfiguration { get; set; }
diff --git a/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.tt b/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.tt
index d96f99073e81..a8941a53a1d6 100644
--- a/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.tt
+++ b/generator/ServiceClientGeneratorLib/Generators/ProjectFiles/VS2017ProjectFile.tt
@@ -58,6 +58,12 @@
true
<#
+ if (this.Project.TargetFrameworks.Contains("netcoreapp3.1") && this.ServiceConfiguration.ServiceModel.Type == ServiceType.Cbor)
+ {
+#>
+ true
+<#
+ }
if (!string.IsNullOrEmpty(this.Project.FrameworkPathOverride))
{
#>
diff --git a/generator/ServiceClientGeneratorLib/ProjectFileCreator.cs b/generator/ServiceClientGeneratorLib/ProjectFileCreator.cs
index c61029b7b372..bc45db44736d 100644
--- a/generator/ServiceClientGeneratorLib/ProjectFileCreator.cs
+++ b/generator/ServiceClientGeneratorLib/ProjectFileCreator.cs
@@ -120,7 +120,7 @@ public void Execute(string serviceFilesRoot, ServiceConfiguration serviceConfigu
IncludePath = Utils.PathCombineAlt("..", "..", "Services", dependency, $"AWSSDK.{dependency}.{projectType}.csproj")
});
}
-
+
projectReferenceList.Add(new ProjectReference
{
IncludePath = serviceConfiguration.IsTestService
@@ -128,9 +128,18 @@ public void Execute(string serviceFilesRoot, ServiceConfiguration serviceConfigu
: Utils.PathCombineAlt("..", "..", "Core", $"AWSSDK.Core.{projectType}.csproj")
});
+ if (serviceConfiguration.ServiceModel.Type == ServiceType.Cbor)
+ {
+ projectReferenceList.Add(new ProjectReference
+ {
+ IncludePath =
+ Utils.PathCombineAlt("..", "..", "..", "..", "extensions", "src", "AWSSDK.Extensions.CborProtocol", $"AWSSDK.Extensions.CborProtocol.{projectType}.csproj")
+ });
+ }
+
GenerateVS2017ProjectFile(serviceFilesRoot, serviceConfiguration, projectFileConfiguration, projectReferenceList);
continue;
- }
+ }
var projectFilename = string.Concat(assemblyName, ".", projectType, ".csproj");
bool newProject = false;
diff --git a/generator/ServiceClientGeneratorLib/ServiceClientGeneratorLib.csproj b/generator/ServiceClientGeneratorLib/ServiceClientGeneratorLib.csproj
index 4448c0ade851..48268ce6f16b 100644
--- a/generator/ServiceClientGeneratorLib/ServiceClientGeneratorLib.csproj
+++ b/generator/ServiceClientGeneratorLib/ServiceClientGeneratorLib.csproj
@@ -339,6 +339,31 @@
True
EventStreamPublisherMarshaller.tt
+
+ CborExceptionUnmarshaller.tt
+ True
+ True
+
+
+ CborResponseUnmarshaller.tt
+ True
+ True
+
+
+ CborStructureMarshaller.tt
+ True
+ True
+
+
+ CborStructureUnmarshaller.tt
+ True
+ True
+
+
+ CborRequestMarshaller.tt
+ True
+ True
+
True
True
@@ -623,6 +648,30 @@
TextTemplatingFilePreprocessor
EventStreamPublisherMarshaller.cs
+
+ CborExceptionUnmarshaller.cs
+ TextTemplatingFilePreprocessor
+
+
+ CborRequestMarshaller.cs
+ TextTemplatingFilePreprocessor
+
+
+ CborResponseUnmarshaller.cs
+ TextTemplatingFilePreprocessor
+
+
+ CborStructureMarshaller.cs
+ TextTemplatingFilePreprocessor
+
+
+ CborStructureUnmarshaller.cs
+ TextTemplatingFilePreprocessor
+
+
+ CborRequestMarshaller.cs
+ TextTemplatingFilePreprocessor
+
TextTemplatingFilePreprocessor
EventCollectionAddImplementation.cs
diff --git a/generator/ServiceClientGeneratorLib/ServiceModel.cs b/generator/ServiceClientGeneratorLib/ServiceModel.cs
index 394a9c0bee7f..12122b92fea2 100644
--- a/generator/ServiceClientGeneratorLib/ServiceModel.cs
+++ b/generator/ServiceClientGeneratorLib/ServiceModel.cs
@@ -269,6 +269,10 @@ public ServiceType Type
{
serviceType = "query";
}
+ else if (serviceType.Equals("smithy-rpc-v2-cbor", StringComparison.InvariantCulture))
+ {
+ serviceType = "cbor";
+ }
if (!Enum.TryParse(serviceType, true, out ServiceType value))
{
@@ -288,6 +292,7 @@ public ServiceType Type
///
private readonly List _supportedProtocols = new List
{
+ "smithy-rpc-v2-cbor",
"json",
"rest-json",
"rest-xml",
diff --git a/generator/ServiceClientGeneratorLib/SolutionFileCreator.cs b/generator/ServiceClientGeneratorLib/SolutionFileCreator.cs
index 44d3c4b1c2c0..a39ff919d616 100644
--- a/generator/ServiceClientGeneratorLib/SolutionFileCreator.cs
+++ b/generator/ServiceClientGeneratorLib/SolutionFileCreator.cs
@@ -364,6 +364,15 @@ private void GenerateVS2017Solution(string solutionFileName, bool includeTests,
ProjectGuid = projectGuidDictionary.ContainsKey(projectName) ? projectGuidDictionary[projectName] : Guid.NewGuid().ToString("B").ToUpper(),
});
}
+
+ // Add CborProtocol extension to core projects since it is required by some services.
+ var cborExtensionProjectName = string.Format("AWSSDK.Extensions.CborProtocol.{0}", configuration.Name);
+ coreProjects.Add(new Project
+ {
+ Name = cborExtensionProjectName,
+ ProjectPath = Utils.PathCombineAlt("..", "extensions", "src", "AWSSDK.Extensions.CborProtocol", $"{ cborExtensionProjectName}.csproj"),
+ ProjectGuid = projectGuidDictionary.ContainsKey(cborExtensionProjectName) ? projectGuidDictionary[cborExtensionProjectName] : Guid.NewGuid().ToString("B").ToUpper()
+ });
}
IList testProjects = new List();
@@ -444,10 +453,11 @@ private void GenerateVS2017ServiceSolution(IEnumerable
var session = new Dictionary();
var serviceSolutionFolders = new List();
var serviceDirectory = new DirectoryInfo(servicePath);
- var folder = ServiceSolutionFolderFromPath(serviceDirectory.Name);
+ var serviceFolder = ServiceSolutionFolderFromPath(serviceDirectory.Name);
var solutionFileName = serviceDirectory.Name + ".sln";
var serviceProjectDependencies = new List();
var testProjects = new List();
+ var coreDependenciesProjects = new List(CoreProjects);
var dependentProjects = new List();
var dependentProjectList = new List();
var solutionPath = Utils.PathCombineAlt(serviceDirectory.ToString(), solutionFileName);
@@ -459,7 +469,7 @@ private void GenerateVS2017ServiceSolution(IEnumerable
// To prevent all solution files from being modified, we re-use the GUID for the current service (if there's one available).
if (projectGuidDictionary.ContainsKey(serviceDirectory.Name))
{
- folder.ProjectGuid = projectGuidDictionary[serviceDirectory.Name];
+ serviceFolder.ProjectGuid = projectGuidDictionary[serviceDirectory.Name];
}
// Include only the service csproj files in the service specific solution.
@@ -492,24 +502,33 @@ private void GenerateVS2017ServiceSolution(IEnumerable
{
filePath = Path.GetFileName(serviceProjectDependency);
}
- folder.Projects.Add(new Project
+ var project = new Project
{
Name = projectName,
ProjectPath = filePath,
ProjectGuid = projectGuidDictionary.ContainsKey(projectName) ? projectGuidDictionary[projectName] : Guid.NewGuid().ToString("B").ToUpper()
- });
+ };
+
+ if (filePath.Contains("AWSSDK.Extensions.")) // Extensions dependencies are added to the core folder not the service.
+ {
+ coreDependenciesProjects.Add(project);
+ }
+ else
+ {
+ serviceFolder.Projects.Add(project);
+ }
}
- if (folder.Projects.Count == 0)
+ if (serviceFolder.Projects.Count == 0)
{
continue;
}
ConvertToSlnRelativePath(testProjects, solutionPath);
- serviceSolutionFolders.Add(folder);
+ serviceSolutionFolders.Add(serviceFolder);
// Adding core projects to service solution
- session["CoreProjects"] = CoreProjects;
+ session["CoreProjects"] = coreDependenciesProjects;
// Adding service projects and its dependencies to the service solution
session["ServiceSolutionFolders"] = serviceSolutionFolders;
// Adding test projects to the service solution
@@ -630,12 +649,12 @@ private List AddProjectDependencies(string projectFile, string serviceNa
{
var split = fileName.Split(Path.AltDirectorySeparatorChar);
- // This is in a different folder in than the usual service dependencies.
- // Also skipping the recursion since this does not currently have any ProjectReferences beyond Core
- if (fileName.Contains("AWSSDK.Extensions.CrtIntegration"))
+ // Extensions are in a different folder in than the usual service dependencies.
+ // Also skipping the recursion since these does not currently have any ProjectReferences beyond Core
+ if (fileName.Contains("AWSSDK.Extensions."))
{
- // Build the relative path to /extensions/src/AWSSDK.Extensions.CrtIntegration/AWSSDK.Extensions.CrtIntegration..csproj
+ // Build the relative path to /extensions/src/AWSSDK.Extensions.{ExtensionName}/AWSSDK.Extensions.{ExtensionName}..csproj
var deps = Utils.PathCombineAlt("..", "..", "..", "..", split[split.Length - 4], split[split.Length - 3], split[split.Length - 2], split[split.Length - 1]);
depsProjects.Add(deps);
}
diff --git a/sdk/AWSSDK.NetFramework.sln b/sdk/AWSSDK.NetFramework.sln
index 39998e264643..d978af03636f 100644
--- a/sdk/AWSSDK.NetFramework.sln
+++ b/sdk/AWSSDK.NetFramework.sln
@@ -6,6 +6,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{9863FCB3-B
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AWSSDK.Core.NetFramework", "src/Core/AWSSDK.Core.NetFramework.csproj", "{1827E98F-AAD5-4354-897D-C64DA0F95495}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AWSSDK.Extensions.CborProtocol.NetFramework", "../extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetFramework.csproj", "{139614FF-5A7B-4277-BFD3-234D04D3E149}"
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{939EC5C2-8345-43E2-8F97-72EEEBEEA0AB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AccessAnalyzer", "AccessAnalyzer", "{D35E1267-0F99-4C3C-BC76-23E855530127}"
@@ -1740,6 +1742,10 @@ Global
{1827E98F-AAD5-4354-897D-C64DA0F95495}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1827E98F-AAD5-4354-897D-C64DA0F95495}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1827E98F-AAD5-4354-897D-C64DA0F95495}.Release|Any CPU.Build.0 = Release|Any CPU
+ {139614FF-5A7B-4277-BFD3-234D04D3E149}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {139614FF-5A7B-4277-BFD3-234D04D3E149}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {139614FF-5A7B-4277-BFD3-234D04D3E149}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {139614FF-5A7B-4277-BFD3-234D04D3E149}.Release|Any CPU.Build.0 = Release|Any CPU
{C9E03D46-8113-4476-8B66-69A307DC193E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C9E03D46-8113-4476-8B66-69A307DC193E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C9E03D46-8113-4476-8B66-69A307DC193E}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -3482,6 +3488,7 @@ Global
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{1827E98F-AAD5-4354-897D-C64DA0F95495} = {9863FCB3-BFA4-4B9C-B8F6-302BA5F660B8}
+ {139614FF-5A7B-4277-BFD3-234D04D3E149} = {9863FCB3-BFA4-4B9C-B8F6-302BA5F660B8}
{D35E1267-0F99-4C3C-BC76-23E855530127} = {939EC5C2-8345-43E2-8F97-72EEEBEEA0AB}
{C9E03D46-8113-4476-8B66-69A307DC193E} = {D35E1267-0F99-4C3C-BC76-23E855530127}
{952ED7BB-663B-47BD-B5D9-393AF6BFF3E5} = {939EC5C2-8345-43E2-8F97-72EEEBEEA0AB}
diff --git a/sdk/AWSSDK.NetStandard.sln b/sdk/AWSSDK.NetStandard.sln
index 9930eabac3e5..db3cd8c3646d 100644
--- a/sdk/AWSSDK.NetStandard.sln
+++ b/sdk/AWSSDK.NetStandard.sln
@@ -6,6 +6,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{9863FCB3-B
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AWSSDK.Core.NetStandard", "src/Core/AWSSDK.Core.NetStandard.csproj", "{15BB19BE-ABCA-441F-8217-3AE9A993B5E7}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AWSSDK.Extensions.CborProtocol.NetStandard", "../extensions/src/AWSSDK.Extensions.CborProtocol/AWSSDK.Extensions.CborProtocol.NetStandard.csproj", "{5AB6FB6A-C197-41DD-A6FF-21576B5859FB}"
+EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{939EC5C2-8345-43E2-8F97-72EEEBEEA0AB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AccessAnalyzer", "AccessAnalyzer", "{CDEDFA0E-9192-5F7F-200A-5329D35913C5}"
@@ -1736,6 +1738,10 @@ Global
{15BB19BE-ABCA-441F-8217-3AE9A993B5E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{15BB19BE-ABCA-441F-8217-3AE9A993B5E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15BB19BE-ABCA-441F-8217-3AE9A993B5E7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5AB6FB6A-C197-41DD-A6FF-21576B5859FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5AB6FB6A-C197-41DD-A6FF-21576B5859FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5AB6FB6A-C197-41DD-A6FF-21576B5859FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5AB6FB6A-C197-41DD-A6FF-21576B5859FB}.Release|Any CPU.Build.0 = Release|Any CPU
{81A3EBDE-824D-458E-9ABF-359E5B32B773}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81A3EBDE-824D-458E-9ABF-359E5B32B773}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81A3EBDE-824D-458E-9ABF-359E5B32B773}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -3474,6 +3480,7 @@ Global
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{15BB19BE-ABCA-441F-8217-3AE9A993B5E7} = {9863FCB3-BFA4-4B9C-B8F6-302BA5F660B8}
+ {5AB6FB6A-C197-41DD-A6FF-21576B5859FB} = {9863FCB3-BFA4-4B9C-B8F6-302BA5F660B8}
{CDEDFA0E-9192-5F7F-200A-5329D35913C5} = {939EC5C2-8345-43E2-8F97-72EEEBEEA0AB}
{81A3EBDE-824D-458E-9ABF-359E5B32B773} = {CDEDFA0E-9192-5F7F-200A-5329D35913C5}
{AEF6C919-A19B-DF6C-2AEC-8537B2BEE229} = {939EC5C2-8345-43E2-8F97-72EEEBEEA0AB}