2 Replies Latest reply on Oct 21, 2010 5:35 AM by boby

    SOAP client and use Array with OGNL expression

    boby

      Hello,

       

      I have a problem to use the arrays with OGNL expression.

      My wsdl is in attachment.

      My request action :

       

      public Message process(Message message) throws Exception {
          ArrayList<GeolocWave> geolocWaves = (ArrayList<GeolocWave>) message.getBody().get(Body.DEFAULT_LOCATION);
          GeolocWave geolocWave = geolocWaves.iterator().next();
      
          // add paramaters to the web service request map
          HashMap<String, String> requestMap = new HashMap<String, String>();
          requestMap.put("reverseGeocode.points[0].latitude", Double.toString(geolocWave.getLatitude()));
          requestMap.put("reverseGeocode.points[0].longitude", Double.toString(geolocWave.getLongitude()));
          requestMap.put("reverseGeocode.language", "fr");
          requestMap.put("dumpSOAP", "");
      
          // The "paramsLocation" property was set in jboss-esb.xml to
          // requestMap.put("groupReference", "MCU");
          message.getBody().add("get-reverseGeocode-params", requestMap);
      
          return message;
      
        }
      

       

      And my log :

       

      17:58:50,657 INFO  [STDOUT] ------------------------------------------------------------------------------------------------------------------------------------------
      17:58:50,658 INFO  [STDOUT] SOAP Template (Unexpanded):
      17:58:50,658 INFO  [STDOUT] <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:geoc="http://ws.webservices.masternaut.fr/MasterWS/services/Geocode" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <soapenv:Header />
         <soapenv:Body>
            <geoc:reverseGeocode soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
               <points xmlns:urn="urn:Geocode" soapenc:arrayType="urn:Point[]" xsi:type="geoc:ArrayOf_tns1_Point" />
               <language xsi:type="xsd:string">?</language>
            </geoc:reverseGeocode>
         </soapenv:Body>
      </soapenv:Envelope>
      17:58:50,658 INFO  [STDOUT] ------------------------------------------------------------------------------------------------------------------------------------------
      17:58:50,658 INFO  [STDOUT] ------------------------------------------------------------------------------------------------------------------------------------------
      17:58:50,658 INFO  [STDOUT] SOAP Template (Expanded):
      17:58:50,659 INFO  [STDOUT] <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:geoc="http://ws.webservices.masternaut.fr/MasterWS/services/Geocode" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <soapenv:Header />
         <soapenv:Body>
            <geoc:reverseGeocode soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
               <points xmlns:urn="urn:Geocode" soapenc:arrayType="urn:Point[]" xsi:type="geoc:ArrayOf_tns1_Point" />
               <language xsi:type="xsd:string">?</language>
            </geoc:reverseGeocode>
         </soapenv:Body>
      </soapenv:Envelope>
      17:58:50,659 INFO  [STDOUT] ------------------------------------------------------------------------------------------------------------------------------------------
      17:58:50,659 INFO  [STDOUT] ------------------------------------------------------------------------------------------------------------------------------------------
      17:58:50,659 INFO  [STDOUT] SOAP Message (Populated Template):
      17:58:50,659 INFO  [STDOUT] <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:geoc="http://ws.webservices.masternaut.fr/MasterWS/services/Geocode" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <soapenv:Header />
         <soapenv:Body>
            <geoc:reverseGeocode soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
               <points xmlns:urn="urn:Geocode" soapenc:arrayType="urn:Point[]" xsi:type="geoc:ArrayOf_tns1_Point" />
               <language xsi:type="xsd:string">fr</language>
            </geoc:reverseGeocode>
         </soapenv:Body>
      </soapenv:Envelope>
      17:58:50,659 INFO  [STDOUT] ------------------------------------------------------------------------------------------------------------------------------------------
      17:58:50,738 INFO  [AuthChallengeProcessor] basic authentication scheme selected
      17:58:50,820 WARN  [HttpMethodBase] Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
      

       

      My language element is filled, but not the points. I tried many possibilities without succes.

       

      So, if anyone could help me, it would be nice.

      Thanks.