Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package gov.nist.javax.sip.message;
  
  
  import java.util.Iterator;
 import java.util.List;
 
Content list for multipart mime content type.

Author(s):
M. Ranganathan
 
 public class MultipartMimeContentImpl implements MultipartMimeContent {
     private List<ContentcontentList = new LinkedList<Content>();
 
 
     private String boundary;
 
     public static String BOUNDARY = "boundary";

    
Creates a default content list.
 
     public MultipartMimeContentImpl(ContentTypeHeader contentTypeHeader) {
         this. = contentTypeHeader;
         this. = contentTypeHeader.getParameter();
 
     }
 
     /*
      * (non-Javadoc)
      * 
      * @see gov.nist.javax.sip.message.MultipartMimeContentExt#add(gov.nist.javax.sip.message.Content)
      */
     public boolean add(Content content) {
         return .add((ContentImplcontent);
     }
 
     /*
      * (non-Javadoc)
      * 
      * @see gov.nist.javax.sip.message.MultipartMimeContentExt#getContentTypeHeader()
      */
         return ;
     }
 
     /*
      * (non-Javadoc)
      * 
      * @see gov.nist.javax.sip.message.MultipartMimeContentExt#toString()
      */
     @Override
     public String toString() {
         StringBuffer stringBuffer = new StringBuffer();
 
         for (Content content : this.) {
             stringBuffer.append(content.toString());
         }
         return stringBuffer.toString();
 
     }

    
unpack a multipart mime packet and return a list of content packets.

Returns:
-- an iterator of Content blocks.
 
     public void createContentList(String bodythrows ParseException {
         try {
             HeaderFactoryExt headerFactory = new HeaderFactoryImpl();
             String delimiter = this.getContentTypeHeader().getParameter();
 
             if (delimiter == null) {
                 this. = new LinkedList<Content>();
                 ContentImpl content = new ContentImpl(bodydelimiter);
                 content.setContentTypeHeader(this.getContentTypeHeader());
                 this..add(content);
                 return;
             }
 
             String[] fragments = body.split("--" + delimiter + "\r\n");
 
 
            for (String nextPart : fragments) {
                // NOTE - we are not hanlding line folding for the sip header here.
                if (nextPart == null) {
                    return;
                }
                StringBuffer strbuf = new StringBuffer(nextPart);
                while (strbuf.length() > 0
                        && (strbuf.charAt(0) == '\r' || strbuf.charAt(0) == '\n'))
                    strbuf.deleteCharAt(0);
                if (strbuf.length() == 0)
                    continue;
                nextPart = strbuf.toString();
                int position = nextPart.indexOf("\r\n\r\n");
                int off = 4;
                if (position == -1) {
                    position = nextPart.indexOf("\n");
                    off = 2;
                }
                if (position == -1)
                    throw new ParseException("no content type header found in " + nextPart, 0);
                String rest = nextPart.substring(position + off);
                if (rest == null)
                    throw new ParseException("No content [" + nextPart + "]", 0);
                // logger.debug("rest = [[" + rest + "]]");
                String headers = nextPart.substring(0, position);
                ContentImpl content = new ContentImpl(rest);
                String[] headerArray = headers.split("\r\n");
                for (String hdr : headerArray) {
                    Header header = headerFactory.createHeader(hdr);
                    if (header instanceof ContentTypeHeader) {
                        content.setContentTypeHeader((ContentTypeHeaderheader);
                    } else if (header instanceof ContentDispositionHeader) {
                        content.setContentDispositionHeader((ContentDispositionHeaderheader);
                    } else {
                        throw new ParseException("Unexpected header type " + header.getName(), 0);
                    }
                    .add(content);
                }
            }
        } catch (StringIndexOutOfBoundsException ex) {
            throw new ParseException("Invalid Multipart mime format", 0);
        }
    }
    /*
     * (non-Javadoc)
     * 
     * @see gov.nist.javax.sip.message.MultipartMimeContentExt#getContentByType(java.lang.String,
     *      java.lang.String)
     */
    public Content getContentByType(String contentTypeString contentSubtype) {
        Content retval = null;
        if ( == null)
            return null;
        for (Content content : ) {
            if (content.getContentTypeHeader().getContentType().equalsIgnoreCase(contentType)
                    && content.getContentTypeHeader().getContentSubType().equalsIgnoreCase(
                            contentSubtype)) {
                retval = content;
                break;
            }
        }
        return retval;
    }
    /*
     * (non-Javadoc)
     * 
     * @see gov.nist.javax.sip.message.MultipartMimeContentExt#setContent(java.lang.String,
     *      java.lang.String, gov.nist.javax.sip.message.Content)
     */
    public void addContent(Content content) {
        this.add(content);
    }
    public Iterator<ContentgetContents() {
        return this..iterator();
    }
    
    public int getContentCount() {
        return this..size();
    }
New to GrepCode? Check out our FAQ X