blob: 801e883ab29d3a2b407bdccbaad4059b2bcce76f [file] [log] [blame]
package org.apache.axis.attachments;
import java.io.IOException;
import org.apache.axis.AxisFault;
import org.apache.axis.transport.http.HTTPConstants;
import org.apache.axis.utils.Messages;
/**
*
* This is the concrete implementation of the IncomingAttachmentStreams class
* and is used to parse data that is in the DIME format. This class will make
* use of Axis' DimeDelimitedInputStream to parse the data in the HTTP stream
* which will give this class the capability of creating
* IncomingAttachmentInputStream objects at each marker within the HTTP stream.
*
* @author David Wong
* @author Brian Husted
*
*/
public final class DimeAttachmentStreams extends IncomingAttachmentStreams
{
private DimeDelimitedInputStream _delimitedStream = null;
public DimeAttachmentStreams(DimeDelimitedInputStream stream)
throws AxisFault
{
if (stream == null)
{
throw new AxisFault(Messages.getMessage("nullDelimitedStream"));
}
_delimitedStream = stream;
}
/* (non-Javadoc)
* @see org.apache.axis.attachments.IncomingAttachmentStreams#getNextStream()
*/
public IncomingAttachmentInputStream getNextStream() throws AxisFault
{
IncomingAttachmentInputStream stream = null;
if (!isReadyToGetNextStream())
{
throw new IllegalStateException(Messages.getMessage("nextStreamNotReady"));
}
try
{
_delimitedStream = _delimitedStream.getNextStream();
if (_delimitedStream == null)
{
return null;
}
stream = new IncomingAttachmentInputStream(_delimitedStream);
}
catch (IOException e)
{
throw new AxisFault(Messages.getMessage("failedToGetDelimitedAttachmentStream"), e);
}
String value = _delimitedStream.getContentId();
if (value != null && value.length() > 0)
{
stream.addHeader(HTTPConstants.HEADER_CONTENT_ID, value);
}
value = _delimitedStream.getType();
if (value != null && value.length() > 0)
{
stream.addHeader(HTTPConstants.HEADER_CONTENT_TYPE, value);
}
setReadyToGetNextStream(false);
return stream;
}
}