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

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

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 1.5.3, 1.6.0
    • Component/s: saaj
    • Labels:
      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

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

              Dates

              • Created:
                Updated:
                Resolved: