ServiceClientGenerator.GeneratorHelpers.DetermineAWSQueryMarshallName C# (CSharp) Method

DetermineAWSQueryMarshallName() public static method

public static DetermineAWSQueryMarshallName ( Member member, Operation operation ) : string
member Member
operation Operation
return string
        public static string DetermineAWSQueryMarshallName(Member member, Operation operation)
        {
            var isEC2Protocol = member.model.IsEC2Protocol;
            CustomizationsModel.OperationModifiers modifiers = null;
            if (operation != null)
                modifiers = operation.OperationModifiers;

            var marshallName = new StringBuilder();
            if (modifiers != null)
            {
                var marshallOverride = modifiers.GetMarshallNameOverrides(member.OwningShape.Name, member.PropertyName);
                if (marshallOverride != null)
                {
                    var marshallOverrideName = !isEC2Protocol
                                                    ? marshallOverride.MarshallName
                                                    : (string.IsNullOrEmpty(marshallOverride.MarshallLocationName)
                                                        ? marshallOverride.MarshallName
                                                        : marshallOverride.MarshallLocationName);

                    marshallName.Append(TransformMarshallLocationName(isEC2Protocol, marshallOverrideName));
                }
            }

            // if the operation didn't override the marshal location, is there a property modifier doing so?
            if (marshallName.Length == 0 && member.PropertyModifier != null)
            {
                var locationName = TransformMarshallLocationName(isEC2Protocol, member.PropertyModifier.LocationName);
                marshallName.Append(locationName);
            }

            // if the marshal name still isn't set, fall back to the model
            if (marshallName.Length == 0)
            {
                var modelMarshallName = !isEC2Protocol
                                            ? member.MarshallName
                                            : (string.IsNullOrEmpty(member.MarshallLocationName)
                                                ? member.MarshallName
                                                : member.MarshallLocationName);

                marshallName.Append(TransformMarshallLocationName(isEC2Protocol, modelMarshallName));
            }

            // also check if we need to emit from a submember as a result of shape substitution
            var substituteShapeData = member.model.Customizations.GetSubstituteShapeData(member.ModelShape.Name);
            if (substituteShapeData != null && substituteShapeData[CustomizationsModel.EmitFromMemberKey] != null)
            {
                var valueMember = (string) substituteShapeData[CustomizationsModel.EmitFromMemberKey];
                var subMember = member.ModelShape.Members.Single(m => m.PropertyName.Equals(valueMember, StringComparison.Ordinal));
                if (subMember != null)
                {
                    var subExpression = string.IsNullOrEmpty(subMember.MarshallLocationName)
                        ? subMember.MarshallName
                        : subMember.MarshallLocationName;

                    marshallName.AppendFormat(".{0}", TransformMarshallLocationName(isEC2Protocol, subExpression));
                }
            }

            return marshallName.ToString();
        }