blob: c129c729251ab439176700e06fb311868ad827cb [file] [log] [blame]
/*
* 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.
* <p>
* If javax.activation is not available, this is the *only* class that
* will be compiled in org.apache.axis.attachments.
*
* @author Rob Jellinghaus (robj@unrealities.com)
* @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 <CODE>AttachmentPart</CODE> objects that have
* been added to this <CODE>SOAPMessage</CODE> object.
*
* <P>This method does not touch the SOAP part.</P>
*/
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 <CODE>AttachmentPart</CODE> 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 <CODE>MimeHeaders</CODE>
* 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 <code>Part</code>
*/
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();
}