📄 mimeheaders.java
字号:
}
public void addIntHeader(String name, int i) {
addHeader(name).setIntValue(i);
}
/**
* Creates a new header field whose value is the specified time.
* The encoding uses RFC 822 date format, as updated by RFC 1123.
* @param name the header name
* @param t the time in number of milliseconds since the epoch
*/
public void putDateHeader(String name, long t) {
putHeader(name).setDateValue(t);
}
public void addDateHeader(String name, long t) {
addHeader(name).setDateValue(t);
}
/**
* Returns the string value of one of the headers with the
* specified name.
* @see getHeaders
* @param name the header field name
* @return the string value of the field, or null if none found
*/
public String getHeader(String name) {
MimeHeaderField mh = find(name);
return mh != null ? mh.getValue() : null;
}
/**
* Returns the string value of all of the headers with the
* specified name.
* @see getHeader
* @param name the header field name
* @return array values of the fields, or null if none found
*/
public String[] getHeaders(String name) {
Vector values = getHeadersVector(name);
if (values.size() > 0) {
String retval[] = new String[values.size()];
for (int i = 0; i < retval.length; i++)
retval[i] = (String)values.elementAt(i);
return retval;
}
return null;
}
/** Same as getHeaders, return a Vector - avoid Vector-[]-Vector conversion
*/
public Vector getHeadersVector(String name) {
Vector values = new Vector();
for (int i = 0; i < count; i++) {
if (headers[i].nameEquals(name))
values.addElement(headers[i].getValue());
}
return values;
}
/**
* Returns the integer value of a header with the specified name.
* @param name the header field name
* @return the integer value of the header field, or -1 if the header
* was not found
* @exception NumberFormatException if the integer format was invalid
*/
public int getIntHeader(String name) throws NumberFormatException {
MimeHeaderField mh = find(name);
return mh != null ? mh.getIntValue() : -1;
}
/**
* Returns the date value of a header with the specified name.
* @param name the header field name
* @return the date value of the header field in number of milliseconds
* since the epoch, or -1 if the header was not found
* @exception IllegalArgumentException if the date format was invalid
*/
public long getDateHeader(String name) throws IllegalArgumentException {
MimeHeaderField mh = find(name);
return mh != null ? mh.getDateValue() : -1;
}
/**
* Returns the name of the nth header field where n >= 0. Returns null
* if there were fewer than (n + 1) fields. This can be used to iterate
* through all the fields in the header.
*/
public String getHeaderName(int n) {
return n >= 0 && n < count ? headers[n].getName() : null;
}
/**
* Returns the body of the nth header field where n >= 0. Returns null
* if there were fewer than (n + 1) fields. This can be used along
* with getHeaderName to iterate through all the fields in the header.
*/
public String getHeader(int n) {
return n >= 0 && n < count ? headers[n].getValue() : null;
}
/**
* Returns the number of fields using a given field name.
*/
public int getFieldCount (String name) {
int retval = 0;
for (int i = 0; i < count; i++)
if (headers [i].nameEquals (name))
retval++;
return retval;
}
/**
* Removes a header field with the specified name. Does nothing
* if such a field could not be found.
* @param name the name of the header field to be removed
*/
public void removeHeader(String name) {
// XXX
// warning: rather sticky code; heavily tuned
for (int i = 0; i < count; i++) {
if (headers[i].nameEquals(name)) {
// reset and swap with last header
MimeHeaderField mh = headers[i];
mh.reset();
headers[i] = headers[count - 1];
headers[count - 1] = mh;
count--;
i--;
}
}
}
/**
* Returns true if the specified field is contained in the header,
* otherwise returns false.
* @param name the field name
*/
public boolean containsHeader(String name) {
return find(name) != null;
}
/**
* Finds a header field given name. If the header doesn't exist,
* it will create a new one.
* @param name the header field name
* @return the new field
*/
protected MimeHeaderField putHeader(String name) {
if (containsHeader(name)) {
removeHeader(name);
}
return addHeader(name);
}
protected MimeHeaderField addHeader(String name) {
MimeHeaderField mh = putHeader();
mh.setName(name);
return mh;
}
/**
* Creates a new header with given name, and add it to the headers.
* @param name the header field name
* @param s the header value
* @return the new field
*/
public void appendHeader(String name, String s) {
MimeHeaderField mh = putHeader();
mh.setName(name);
mh.setValue(s);
}
/**
* Returns a lengthly string representation of the current header fields.
*/
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("{");
for (int i = 0; i < count; i++) {
sb.append("{");
sb.append(headers[i].toString());
sb.append("}");
if (i < count - 1) {
sb.append(",");
}
}
sb.append("}");
return sb.toString();
}
/**
* Dumps current headers to specified PrintStream for debugging.
*/
public void dump(PrintStream out) {
for (int i = 0; i < count; i++) {
out.println(headers[i]);
}
}
}
class MimeHeadersEnumerator implements Enumeration {
private static StringManager sm =
StringManager.getManager("org.apache.tomcat.util");
private Hashtable hash;
private Enumeration delegate;
MimeHeadersEnumerator(MimeHeaders headers) {
// Store header names in a Hashtable to guarantee uniqueness
// This has the side benefit of letting us use Hashtable's enumerator
hash = new Hashtable();
int size = headers.size();
for (int i = 0; i < size; i++) {
hash.put(headers.getHeaderName(i), "");
}
delegate = hash.keys();
}
public boolean hasMoreElements() {
return delegate.hasMoreElements();
}
public Object nextElement() {
try {
return delegate.nextElement();
}
catch (NoSuchElementException e) {
String msg = sm.getString("mimeHeaderEnumerator.next.nse");
throw new NoSuchElementException(msg);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -