Class AttachmentsImpl

java.lang.Object
org.apache.axis.attachments.AttachmentsImpl
All Implemented Interfaces:
Serializable, Attachments

public class AttachmentsImpl extends Object implements Attachments
Implements the Attachment interface, via an actual Hashmap of actual AttachmentParts.
See Also:
  • Field Details

    • log

      protected static org.apache.commons.logging.Log log
    • soapPart

      protected SOAPPart soapPart
      Field soapPart.
    • mpartStream

      protected MultiPartInputStream mpartStream
      The actual stream to manage the multi-related input stream.
    • sendtype

      protected int sendtype
      The form of the attachments, whether MIME or DIME.
    • contentLocation

      protected String contentLocation
      This is the content location as specified in SOAP with Attachments. This maybe null if the message had no Content-Location specifed.
  • Constructor Details

    • AttachmentsImpl

      public AttachmentsImpl(Object intialContents, String contentType, String contentLocation) throws AxisFault
      Construct one of these on a parent Message. Should only ever be called by Message constructor!
      Parameters:
      intialContents - should be anything but today only a stream is supported.
      contentType - The mime content type of the stream for transports that provide it.
      contentLocation -
      Throws:
      AxisFault
  • Method Details

    • removeAttachmentPart

      public Part removeAttachmentPart(String reference) throws AxisFault
      This method uses getAttacmentByReference() to look for attachment. If attachment has been found, it will be removed from the list, and returned to the user.
      Specified by:
      removeAttachmentPart in interface Attachments
      Parameters:
      reference - The reference that referers to an attachment.
      Returns:
      The part associated with the removed attachment, or null.
      Throws:
      AxisFault
    • addAttachmentPart

      public Part addAttachmentPart(Part newPart) throws AxisFault
      Adds an existing attachment to this list. Note: Passed part will be bound to this message.
      Specified by:
      addAttachmentPart in interface Attachments
      Parameters:
      newPart - new part to add
      Returns:
      Part old attachment with the same Content-ID, or null.
      Throws:
      AxisFault
    • createAttachmentPart

      public Part createAttachmentPart(Object datahandler) throws AxisFault
      Description copied from interface: Attachments
      Create a new attachment Part in this Message. Will actually, and always, return an AttachmentPart.
      Specified by:
      createAttachmentPart in interface Attachments
      Parameters:
      datahandler - The part that is referenced
      Returns:
      a new attachment part
      Throws:
      AxisFault
    • setAttachmentParts

      public void setAttachmentParts(Collection parts) throws AxisFault
      Add the collection of parts.
      Specified by:
      setAttachmentParts in interface Attachments
      Parameters:
      parts -
      Throws:
      AxisFault
    • getAttachmentByReference

      public Part getAttachmentByReference(String reference) throws AxisFault
      This method should look at a refernce and determine if it is a CID: or url to look for attachment.
      Note: if Content-Id or Content-Location headers have changed by outside code, lookup will not return proper values. In order to change these values attachment should be removed, then added again.
      Specified by:
      getAttachmentByReference in interface Attachments
      Parameters:
      reference - The reference in the xml that referers to an attachment.
      Returns:
      The part associated with the attachment.
      Throws:
      AxisFault
    • getAttachments

      public Collection getAttachments() throws AxisFault
      This method will return all attachments as a collection.
      Specified by:
      getAttachments in interface Attachments
      Returns:
      A collection of attachments.
      Throws:
      AxisFault
    • getRootPart

      public Part getRootPart()
      From the complex stream return the root part. Today this is SOAP.
      Specified by:
      getRootPart in interface Attachments
      Returns:
      the root Part
    • setRootPart

      public void setRootPart(Part newRoot)
      Description copied from interface: Attachments
      Sets the root part of this multipart block
      Specified by:
      setRootPart in interface Attachments
      Parameters:
      newRoot - the new root Part
    • getContentLength

      public long getContentLength() throws AxisFault
      Get the content length of the stream.
      Specified by:
      getContentLength in interface Attachments
      Returns:
      the content length of the stream
      Throws:
      AxisFault
    • createDimeMessage

      protected DimeMultiPart createDimeMessage() throws AxisFault
      Creates the DIME message
      Returns:
      a DIME part
      Throws:
      AxisFault - if the part could not be built
    • writeContentToStream

      public void writeContentToStream(OutputStream os) throws AxisFault
      Write the content to the stream.
      Specified by:
      writeContentToStream in interface Attachments
      Parameters:
      os -
      Throws:
      AxisFault
    • getContentType

      public String getContentType() throws AxisFault
      Gets the content type for the whole stream.
      Specified by:
      getContentType in interface Attachments
      Returns:
      the content type for the whole stream
      Throws:
      AxisFault
    • getAttachmentCount

      public int getAttachmentCount()
      This is the number of attachments.
      Specified by:
      getAttachmentCount in interface Attachments
      Returns:
      the number of attachments
    • isAttachment

      public boolean isAttachment(Object value)
      Determine if an object is to be treated as an attchment.
      Specified by:
      isAttachment in interface Attachments
      Parameters:
      value - the value that is to be determined if its an attachment.
      Returns:
      True if value should be treated as an attchment.
    • removeAllAttachments

      public void removeAllAttachments()
      Removes all AttachmentPart objects that have been added to this SOAPMessage object.

      This method does not touch the SOAP part.

      Specified by:
      removeAllAttachments in interface Attachments
    • getAttachments

      public Iterator getAttachments(MimeHeaders headers)
      Retrieves all the AttachmentPart objects that have header entries that match the specified headers. Note that a returned attachment could have headers in addition to those specified.
      Specified by:
      getAttachments in interface Attachments
      Parameters:
      headers - a MimeHeaders object containing the MIME headers for which to search
      Returns:
      an iterator over all attachments that have a header that matches one of the given headers
    • createAttachmentPart

      public Part createAttachmentPart() throws AxisFault
      Create a new attachment Part in this Message. Will actually, and always, return an AttachmentPart.
      Specified by:
      createAttachmentPart in interface Attachments
      Returns:
      a new attachment Part
      Throws:
      AxisFault
    • setSendType

      public void setSendType(int sendtype)
      Description copied from interface: Attachments
      Set the format for attachments.
      Specified by:
      setSendType in interface Attachments
      Parameters:
      sendtype - the format to send. SEND_TYPE_MIME for Multipart Releated Mail type attachments. SEND_TYPE_DIME for DIME type attachments.
    • getSendType

      public int getSendType()
      Description copied from interface: Attachments
      Determine if an object is to be treated as an attchment.
      Specified by:
      getSendType in interface Attachments
      Returns:
      SEND_TYPE_MIME, SEND_TYPE_DIME, SEND_TYPE_NOTSET
    • dispose

      public void dispose()
      dispose of the attachments and their files; do not use the object after making this call.
      Specified by:
      dispose in interface Attachments
    • getSendType

      public static int getSendType(String value)
      Determine how an object typically sent as attachments are to be represented. Currently, MIME DIME and NONE are reccognised.
      Parameters:
      value - a String representing a sending type, treated in a case-insensetive manner
      Returns:
      an int send type code
    • getSendTypeString

      public static String getSendTypeString(int value)
      For a given sendType value, return a string representation.
      Parameters:
      value - a type code integer
      Returns:
      a String representation of value
    • getIncomingAttachmentStreams

      public IncomingAttachmentStreams getIncomingAttachmentStreams()
      Once this method is called, attachments can only be accessed via the InputStreams. Any other access to the attachments collection (e.g. via getAttachments()) is prohibited and will cause a IllegalStateException to be thrown.
      Specified by:
      getIncomingAttachmentStreams in interface Attachments
      Returns:
      All of the attachment streams.