org.apache.axis.attachments.Attachments Maven / Gradle / Ivy
/*
 * Copyright 2001-2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.axis.attachments;
import org.apache.axis.Part;
/**
 * Access the Attachments of a Message.  This interface essentially
 * firewalls the rest of Axis from any dependencies on javax.activation.
 * 
 * If javax.activation is not available, this is the *only* class that
 * will be compiled in org.apache.axis.attachments.
 *
 * @author Rob Jellinghaus ([email protected])
 * @author Rick Rineholt
 */
public interface Attachments extends java.io.Serializable {
    /**
     * Adds an existing attachment to this list.
     * Note: Passed part will be bound to this message.
     * @param newPart new part to add
     * @return Part old attachment with the same Content-ID, or null.
     * @throws org.apache.axis.AxisFault
     */
    public Part addAttachmentPart(Part newPart)
            throws org.apache.axis.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.
     *
     * @param reference The reference that referers to an attachment.
     * @return The part associated with the removed attachment, or null.
     *
     * @throws org.apache.axis.AxisFault
     */
    public Part removeAttachmentPart(String reference)
            throws org.apache.axis.AxisFault;
    /**
     * Removes all AttachmentPart objects that have
     *   been added to this SOAPMessage object.
     *
     *   
This method does not touch the SOAP part.
     */
    public void removeAllAttachments();
    /**
     * This method should look at a refernce and determine if it is a CID: or url
     * to look for attachment.
     *
     * @param reference The reference in the xml that referers to an attachment.
     * @return The part associated with the attachment.
     *
     * @throws org.apache.axis.AxisFault
     */
    public Part getAttachmentByReference(String reference)
            throws org.apache.axis.AxisFault;
    /**
     * This method will return all attachments as a collection.
     *
     * @return A collection of attachments.
     *
     * @throws org.apache.axis.AxisFault
     */
    public java.util.Collection getAttachments()
            throws org.apache.axis.AxisFault;
    /**
     * 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.
     * @param   headers a MimeHeaders
     *     object containing the MIME headers for which to
     *     search
     * @return an iterator over all attachments that have a header
     *     that matches one of the given headers
     */
    public java.util.Iterator getAttachments(
            javax.xml.soap.MimeHeaders headers);
    /**
     * Create a new attachment Part in this Message.
     * Will actually, and always, return an AttachmentPart.
     *
     * @param part The part that is referenced
     *
     * @return a new attachment part
     *
     * @throws org.apache.axis.AxisFault
     */
    public Part createAttachmentPart(Object part)
            throws org.apache.axis.AxisFault;
    /**
     * Create a new attachment Part in this Message.
     * Will actually, and always, return an AttachmentPart.
     *
     * @return a new attachment part
     *
     * @throws org.apache.axis.AxisFault
     */
    public Part createAttachmentPart() throws org.apache.axis.AxisFault;
    /**
     *  Will the attachments of this message to that of the colleciton.
     *
     * @param parts
     *
     * @throws org.apache.axis.AxisFault
     */
    public void setAttachmentParts(java.util.Collection parts)
            throws org.apache.axis.AxisFault;
    /**
     * From the complex stream return the SOAP part.
     * @return will return the root part if the stream is supported,
     *         otherwise null.
     */
    public Part getRootPart();
    /**
     * Sets the root part of this multipart block
     *
     * @param newRoot  the new root Part
     */
    public void setRootPart(Part newRoot);
    /**
     * Get the content length of the stream.
     *
     * @return the content length of
     *
     * @throws org.apache.axis.AxisFault
     */
    public long getContentLength() throws org.apache.axis.AxisFault;
    /**
     * Write the content to the stream.
     *
     * @param os the stream
     *
     * @throws org.apache.axis.AxisFault
     */
    public void writeContentToStream(java.io.OutputStream os)
            throws org.apache.axis.AxisFault;
    /**
     * Write the content to the stream.
     *
     * @return the content type
     *
     * @throws org.apache.axis.AxisFault
     */
    public String getContentType() throws org.apache.axis.AxisFault;
    /**
     * This is the number of attachments.
     *
     * @return the number of attachments
     */
    public int getAttachmentCount();
    /**
     * Determine if an object is to be treated as an attchment.
     *
     * @param value the value that is to be determined if
     * its an attachment.
     *
     * @return True if value should be treated as an attchment.
     */
    public boolean isAttachment(Object value);
    /** Use the default attatchment send type. */
    public final int SEND_TYPE_NOTSET = 1;
    /** Use the SOAP with MIME attatchment send type. */
    public final int SEND_TYPE_MIME = 2; //use mime
    /** Use the DIME attatchment type. */
    public final int  SEND_TYPE_DIME= 3; //use dime;
    /** Use the MTOM attatchment type. */
    public final int  SEND_TYPE_MTOM= 4; //use MTOM;
    /** Use the DIME attatchment type. */
    public final int  SEND_TYPE_NONE= 5; //don't send as attachments
    final int SEND_TYPE_MAX = 5;
    /** The default attatchment type. MIME */
    final int SEND_TYPE_DEFAULT = SEND_TYPE_MIME;
    /** The prefix used to assoc. attachments as content-id */
    public final String CIDprefix= "cid:";
    /**
     * Set the format for attachments.
     *
     * @param sendtype the format to send.
     *      SEND_TYPE_MIME for Multipart Releated Mail type attachments.
     *      SEND_TYPE_DIME for DIME type attachments.
     */
    public void setSendType( int sendtype);
    /**
     * Determine if an object is to be treated as an attchment.
     *
     *
     * @return SEND_TYPE_MIME, SEND_TYPE_DIME,  SEND_TYPE_NOTSET
     */
    public int getSendType();
    /**
     * dispose of the attachments and their files; do not use the object
     * after making this call.
     */
    public void dispose();
    /**
     * 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 ConcurrentModificationException to be thrown.
     * @return All of the attachment streams.
     */
    public IncomingAttachmentStreams getIncomingAttachmentStreams();
}