## org.apache.axis.attachments
Class AttachmentsImpl

    java.lang.Object
      org.apache.axis.attachments.AttachmentsImpl

All Implemented Interfaces:
  Attachments, java.io.Serializable

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 Summary
`protected java.lang.String` `contentLocation` This is the content location as specified in SOAP with Attachments.
`protected static org.apache.commons.logging.Log` `log`
`protected MultiPartInputStream` `mpartStream` The actual stream to manage the multi-related input stream.
`protected int` `sendtype` The form of the attachments, whether MIME or DIME.
`protected SOAPPart` `soapPart` Field soapPart.

Fields inherited from interface org.apache.axis.attachments.Attachments
`CIDprefix, SEND_TYPE_DEFAULT, SEND_TYPE_DIME, SEND_TYPE_MAX, SEND_TYPE_MIME, SEND_TYPE_MTOM, SEND_TYPE_NONE, SEND_TYPE_NOTSET`

Constructor Summary
`AttachmentsImpl(java.lang.Object intialContents, java.lang.String contentType, java.lang.String contentLocation)` Construct one of these on a parent Message.

Method Summary
`Part` `addAttachmentPart(Part newPart)` Adds an existing attachment to this list.
`Part` `createAttachmentPart()` Create a new attachment Part in this Message.
`Part` `createAttachmentPart(java.lang.Object datahandler)` Create a new attachment Part in this Message.
`protected DimeMultiPart` `createDimeMessage()` Creates the DIME message
`void` `dispose()` dispose of the attachments and their files; do not use the object after making this call.
`Part` `getAttachmentByReference(java.lang.String reference)` This method should look at a refernce and determine if it is a CID: or url to look for attachment.
`int` `getAttachmentCount()` This is the number of attachments.
`java.util.Collection` `getAttachments()` This method will return all attachments as a collection.
`java.util.Iterator` `getAttachments(MimeHeaders headers)` Retrieves all the `AttachmentPart` objects that have header entries that match the specified headers.
`long` `getContentLength()` Get the content length of the stream.
`java.lang.String` `getContentType()` Gets the content type for the whole stream.
`IncomingAttachmentStreams` `getIncomingAttachmentStreams()` Once this method is called, attachments can only be accessed via the InputStreams.
`Part` `getRootPart()` From the complex stream return the root part.
`int` `getSendType()` Determine if an object is to be treated as an attchment.
`static int` `getSendType(java.lang.String value)` Determine how an object typically sent as attachments are to be represented.
`static java.lang.String` `getSendTypeString(int value)` For a given sendType value, return a string representation.
`boolean` `isAttachment(java.lang.Object value)` Determine if an object is to be treated as an attchment.
`void` `removeAllAttachments()` Removes all `AttachmentPart` objects that have been added to this `SOAPMessage` object.
`Part` `removeAttachmentPart(java.lang.String reference)` This method uses getAttacmentByReference() to look for attachment.
`void` `setAttachmentParts(java.util.Collection parts)` Add the collection of parts.
`void` `setRootPart(Part newRoot)` Sets the root part of this multipart block
`void` `setSendType(int sendtype)` Set the format for attachments.
`void` `writeContentToStream(java.io.OutputStream os)` Write the content to the stream.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

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`

### setAttachmentParts

    public void setAttachmentParts(java.util.Collection parts)
                            throws AxisFault

  Add the collection of parts.

  Specified by:
    `setAttachmentParts` in interface `Attachments`
  Parameters:
    `parts` -
  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`

### 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(java.io.OutputStream os)
                              throws AxisFault

  Write the content to the stream.

  Specified by:
    `writeContentToStream` in interface `Attachments`
  Parameters:
    `os` -
  Throws:
    `AxisFault`

### 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.

Copyright © 2005 Apache Web Services Project. All Rights Reserved.