Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-1014

org.apache.asix2.saaj.SOAPConnectionImpl does not handle MimeHeaders (SOAPAction)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.5.3, 1.6.0
    • saaj
    • None

    Description

      I looked into org.apache.axis2.saaj.SOAPConnectionImpl.java in the
      Axis2 Source Repositoy, as the following code snippet shown, it
      never pass down MimeHeaders from SOAPMessage to the ServiceClient,
      so all the SOAPMessages with empty SOAPAction as ""

      ==========================================
      public SOAPMessage call(SOAPMessage request, Object endpoint) throws SOAPException {

      if (closed)

      { throw new SOAPException("SOAPConnection closed"); }

      // initialize URL
      URL url;
      try

      { url = (endpoint instanceof URL) ? (URL) endpoint : new URL(endpoint.toString()); }

      catch (MalformedURLException e)

      { throw new SOAPException(e); }

      // initialize and set Options
      Options options = new Options();
      options.setTo(new EndpointReference(url.toString()));

      // initialize the Sender
      OperationClient opClient;
      try { serviceClient = new ServiceClient(); opClient = serviceClient.createClient(ServiceClient.ANON_OUT_IN_OP); } catch (AxisFault e) { throw new SOAPException(e); }

      opClient.setOptions(options);

      if (request.countAttachments() != 0)

      { // SOAPMessage with attachments opClient.getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); return handleSOAPMessage(request, opClient); }

      else

      { // simple SOAPMessage return handleSOAPMessage(request, opClient); }

      }

      private SOAPMessage handleSOAPMessage(SOAPMessage request,
      OperationClient opClient) throws SOAPException {

      MessageContext requestMsgCtx = new MessageContext();
      try

      { requestMsgCtx.setEnvelope(toOMSOAPEnvelope(request)); opClient.addMessageContext(requestMsgCtx); opClient.execute(true); MessageContext msgCtx = opClient.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE); //TODO: get attachments return getSOAPMessage(msgCtx.getEnvelope()); }

      catch (AxisFault e)

      { throw new SOAPException(e); }

      }

      protected org.apache.axiom.soap.SOAPEnvelope toOMSOAPEnvelope(SOAPMessage saajSOAPMsg)
      throws SOAPException {

      final org.apache.axiom.soap.SOAPEnvelope omSOAPEnv =
      SAAJUtil.toOMSOAPEnvelope(saajSOAPMsg.getSOAPPart().getDocumentElement());
      System.err.println("#### req OM Soap Env=" + omSOAPEnv);

      Map attachmentMap = new HashMap();
      final Iterator attachments = saajSOAPMsg.getAttachments();
      while (attachments.hasNext()) {
      final AttachmentPart attachment = (AttachmentPart) attachments.next();
      if (attachment.getContentId() == null ||
      attachment.getContentId().trim().length() == 0)

      { attachment.setContentId(IDGenerator.generateID()); }

      if (attachment.getDataHandler() == null)

      { throw new SOAPException("Attachment with NULL DataHandler"); }

      attachmentMap.put(attachment.getContentId(), attachment);
      }

      insertAttachmentNodes(attachmentMap, omSOAPEnv);

      // printOMSOAPEnvelope(omSOAPEnv);

      return omSOAPEnv;
      }
      ======================================

      As suggested by Davanum Srinivas, I file this bug to track this problem

      Attachments

        Activity

          People

            veithen Andreas Veithen
            hellojianwu Jian Wu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: