Map inconsistent web service response using import mapping

0
Response of web service that I am consuming is not consistent. I am seeing below two different response formats Response1: Value element is an array and is based on an enum value <ns3:customFields>                <ns3:Custom>                   <ns3:key>testType</ns3:key>                   <ns3:value xsi:type="ns3:ArrayOfEnumOptionId">                      <ns3:EnumOptionId xsi:type="ns3:EnumOptionId">                         <ns3:id xsi:type="xsd:string">Type1</ns3:id>                      </ns3:EnumOptionId>                      <ns3:EnumOptionId xsi:type="ns3:EnumOptionId">                         <ns3:id xsi:type="xsd:string">Type2</ns3:id>                      </ns3:EnumOptionId>                   </ns3:value>                </ns3:Custom>             </ns3:customFields>   Response2: Value element is single value <ns3:customFields>                <ns3:Custom>                   <ns3:key>testType</ns3:key>                   <ns3:value > Test  </ns3:value>                </ns3:Custom>             </ns3:customFields>   Any Idea how can I map my service response values to mendix objects using import mapping
asked
2 answers
0

Does your service have a WSDL?

answered
0
Here is an idea. Before processing the xml store it is a string and replace  "ns3:value xsi:type=" with
"ns3:valueEnum" using replaceAll. Then map both cases of the response and mark value and valueEnum as nullable.

               <ns3:Custom>
                  <ns3:key>testType</ns3:key>
                  <ns3:valueEnum xsi:type="ns3:ArrayOfEnumOptionId">
                     <ns3:EnumOptionId xsi:type="ns3:EnumOptionId">
                        <ns3:id xsi:type="xsd:string">Type1</ns3:id>
                     </ns3:EnumOptionId>
                     <ns3:EnumOptionId xsi:type="ns3:EnumOptionId">
                        <ns3:id xsi:type="xsd:string">Type2</ns3:id>
                     </ns3:EnumOptionId>
                  </ns3:valueEnum>
                  <ns3:value > Test  </ns3:value>
               </ns3:Custom>

Afterward you can check which format was received by checking for empty.

 

answered