FileDocCategorySizeDatePackage
MimeHeaders.javaAPI DocJava SE 6 API9025Tue Jun 10 00:27:10 BST 2008javax.xml.soap

MimeHeaders

public class MimeHeaders extends Object
A container for MimeHeader objects, which represent the MIME headers present in a MIME part of a message.

This class is used primarily when an application wants to retrieve specific attachments based on certain MIME headers and values. This class will most likely be used by implementations of AttachmentPart and other MIME dependent parts of the SAAJ API.

see
SOAPMessage#getAttachments
see
AttachmentPart

Fields Summary
private Vector
headers
Constructors Summary
public MimeHeaders()
Constructs a default MimeHeaders object initialized with an empty Vector object.

        headers = new Vector();
    
Methods Summary
public voidaddHeader(java.lang.String name, java.lang.String value)
Adds a MimeHeader object with the specified name and value to this MimeHeaders object's list of headers.

Note that RFC822 headers can contain only US-ASCII characters.

param
name a String with the name of the header to be added
param
value a String with the value of the header to be added
exception
IllegalArgumentException if there was a problem in the mime header name or value being added

        if ((name == null) || name.equals(""))
            throw new IllegalArgumentException("Illegal MimeHeader name");

        int pos = headers.size();

        for(int i = pos - 1 ; i >= 0; i--) {
            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
            if (hdr.getName().equalsIgnoreCase(name)) {
                headers.insertElementAt(new MimeHeader(name, value),
                                        i+1);
                return;
            }
        }
        headers.addElement(new MimeHeader(name, value));
    
public java.util.IteratorgetAllHeaders()
Returns all the MimeHeaders in this MimeHeaders object.

return
an Iterator object over this MimeHeaders object's list of MimeHeader objects

        return headers.iterator();
    
public java.lang.String[]getHeader(java.lang.String name)
Returns all of the values for the specified header as an array of String objects.

param
name the name of the header for which values will be returned
return
a String array with all of the values for the specified header
see
#setHeader

        Vector values = new Vector();

        for(int i = 0; i < headers.size(); i++) {
            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
            if (hdr.getName().equalsIgnoreCase(name)
                && hdr.getValue() != null)
                values.addElement(hdr.getValue());
        }

        if (values.size() == 0)
            return null;

        String r[] = new String[values.size()];
        values.copyInto(r);
        return r;
    
public java.util.IteratorgetMatchingHeaders(java.lang.String[] names)
Returns all the MimeHeader objects whose name matches a name in the given array of names.

param
names an array of String objects with the names for which to search
return
an Iterator object over the MimeHeader objects whose name matches one of the names in the given list

        return new MatchingIterator(names, true);
    
public java.util.IteratorgetNonMatchingHeaders(java.lang.String[] names)
Returns all of the MimeHeader objects whose name does not match a name in the given array of names.

param
names an array of String objects with the names for which to search
return
an Iterator object over the MimeHeader objects whose name does not match one of the names in the given list

        return new MatchingIterator(names, false);
    
public voidremoveAllHeaders()
Removes all the header entries from this MimeHeaders object.

        headers.removeAllElements();
    
public voidremoveHeader(java.lang.String name)
Remove all MimeHeader objects whose name matches the given name.

param
name a String with the name of the header for which to search

        for(int i = 0; i < headers.size(); i++) {
            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
            if (hdr.getName().equalsIgnoreCase(name))
                headers.removeElementAt(i--);
        }
    
public voidsetHeader(java.lang.String name, java.lang.String value)
Replaces the current value of the first header entry whose name matches the given name with the given value, adding a new header if no existing header name matches. This method also removes all matching headers after the first one.

Note that RFC822 headers can contain only US-ASCII characters.

param
name a String with the name of the header for which to search
param
value a String with the value that will replace the current value of the specified header
exception
IllegalArgumentException if there was a problem in the mime header name or the value being set
see
#getHeader

        boolean found = false;

        if ((name == null) || name.equals(""))
            throw new IllegalArgumentException("Illegal MimeHeader name");

        for(int i = 0; i < headers.size(); i++) {
            MimeHeader hdr = (MimeHeader) headers.elementAt(i);
            if (hdr.getName().equalsIgnoreCase(name)) {
                if (!found) {
                    headers.setElementAt(new MimeHeader(hdr.getName(),
                                                        value), i);
                    found = true;
                }
                else
                    headers.removeElementAt(i--);
            }
        }

        if (!found)
            addHeader(name, value);