All Downloads are FREE. Search and download functionalities are using the official Maven repository.

macros.marshaller.rest-xml.MemberMarshallerMacro.ftl Maven / Gradle / Ivy

<#macro content customConfig shapeName getterFunctionPrefix shapes>
<#local shape = shapes[shapeName]/>

<#if shape.members?has_content>
<#list shape.members as member>
<#local getMember = getterFunctionPrefix + "." + member.getterMethodName />
<#local http = member.http />

<#if !(http.location)?? && !(http.isStreaming) && !(http.isPayload)>
<#if member.simple>
    <#if member.idempotencyToken>
        xmlWriter.startElement("${http.marshallLocationName}").value(<@IdempotencyTokenMacro.content getMember member.variable.simpleType/>).endElement();
    <#else>
        if(${getMember}() != null) {
            xmlWriter.startElement("${http.marshallLocationName}").value(${getMember}()).endElement();
        }
    
<#elseif member.list>
    <#local listModel = member.listModel />
    <#-- More explicit name in order to avoid variable name collision -->
    <#local listVariable = shapeName?uncap_first + member.name + "List"/>
    <#local loopVariable = listVariable + "Value"/>

  <#if customConfig.useAutoConstructList>
      ${listModel.templateImplType} ${listVariable} = (${listModel.templateImplType})${getMember}();
      if (!${listVariable}.isEmpty() || !${listVariable}.isAutoConstruct()) {
  <#else>
      ${listModel.templateType} ${listVariable} = ${getMember}();
      if (${listVariable} != null) {
  
  <#if member.http.flattened>
      for (${listModel.memberType} ${loopVariable} : ${listVariable}) {
          <#local memberLocationName = listModel.memberLocationName!member.name />
          xmlWriter.startElement("${memberLocationName}");
          <#if listModel.simple>
              xmlWriter.value(${loopVariable});
          <#else>
              <@MemberMarshallerMacro.content customConfig listModel.memberType loopVariable shapes/>
          
          xmlWriter.endElement();
      }
     }
  <#else>
      xmlWriter.startElement("${http.marshallLocationName}");

      for (${listModel.memberType} ${loopVariable} : ${listVariable}) {
          <#local memberLocationName = listModel.memberLocationName!"member" />
          xmlWriter.startElement("${memberLocationName}");
          <#if listModel.simple>
              xmlWriter.value(${loopVariable});
          <#else>
              <@MemberMarshallerMacro.content customConfig listModel.memberType loopVariable shapes/>
          
          xmlWriter.endElement();
      }
      xmlWriter.endElement();
    }
  
<#elseif member.map>
    <#local mapModel = member.mapModel />
    <#-- More explicit name in order to avoid variable name collision -->
    <#local mapVariable = shapeName?uncap_first + member.name + "Map"/>
    <#local loopVariable = mapVariable + "Value"/>

    ${mapModel.templateImplType} ${mapVariable} = (${mapModel.templateImplType})${getMember}();
    <#if customConfig.useAutoConstructMap>
        if (!${mapVariable}.isEmpty() || !${mapVariable}.isAutoConstruct()) {
    <#else>
        if (${mapVariable} != null) {
    
    xmlWriter.startElement("${http.marshallLocationName}");

    for (${mapModel.entryType} ${loopVariable} : ${mapVariable}.entrySet()) {
        xmlWriter.startElement("entry");
        xmlWriter.startElement("${mapModel.keyLocationName}");
        xmlWriter.value(${loopVariable}.getKey());
        xmlWriter.endElement();
        xmlWriter.startElement("${mapModel.valueLocationName}");
        <#if mapModel.valueSimple>
            xmlWriter.value(${loopVariable}.getValue());
        <#else>
            <@MemberMarshallerMacro.content customConfig mapModel.valueType loopVariable shapes/>
        
        xmlWriter.endElement();
        xmlWriter.endElement();
    }
    xmlWriter.endElement();
 }
<#else>
    <#local variable = member.variable />
    ${variable.variableType} ${variable.variableName} = ${getMember}();
    if (${variable.variableName} != null) {
        xmlWriter.startElement("${http.marshallLocationName}");
        <@MemberMarshallerMacro.content customConfig variable.simpleType variable.variableName shapes/>
        xmlWriter.endElement();
    }









© 2015 - 2025 Weber Informatics LLC | Privacy Policy