Class AttachmentsImpl

  • All Implemented Interfaces:
    java.io.Serializable, Attachments

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

      • 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 java.lang.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 Detail

      • AttachmentsImpl

        public AttachmentsImpl​(java.lang.Object intialContents,
                               java.lang.String contentType,
                               java.lang.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 Detail

      • removeAttachmentPart

        public Part removeAttachmentPart​(java.lang.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​(java.lang.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
      • getAttachmentByReference

        public Part getAttachmentByReference​(java.lang.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 java.util.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
      • createDimeMessage

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

        public java.lang.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​(java.lang.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 java.util.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​(java.lang.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 java.lang.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.