Do not throw an exception when failed to get a header
Motivation: It is often very expensive to instantiate an exception. TextHeader should not raise an exception when it failed to find a header or when its header value is not valid. Modification: - Change the return type of the getter methods to Integer and Long so that null is returned when no header is found or its value is invalid - Update Javadoc Result: - Fixes #2758 - No unnecessary instantiation of exceptions
This commit is contained in:
parent
de724063f3
commit
60764200d7
@ -377,17 +377,21 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInt(CharSequence name) {
|
public Integer getInt(CharSequence name) {
|
||||||
CharSequence v = getUnconverted(name);
|
CharSequence v = getUnconverted(name);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
if (v instanceof AsciiString) {
|
if (v instanceof AsciiString) {
|
||||||
return ((AsciiString) v).parseInt();
|
return ((AsciiString) v).parseInt();
|
||||||
} else {
|
} else {
|
||||||
return Integer.parseInt(v.toString());
|
return Integer.parseInt(v.toString());
|
||||||
}
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -409,17 +413,21 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLong(CharSequence name) {
|
public Long getLong(CharSequence name) {
|
||||||
CharSequence v = getUnconverted(name);
|
CharSequence v = getUnconverted(name);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
if (v instanceof AsciiString) {
|
if (v instanceof AsciiString) {
|
||||||
return ((AsciiString) v).parseLong();
|
return ((AsciiString) v).parseLong();
|
||||||
} else {
|
} else {
|
||||||
return Long.parseLong(v.toString());
|
return Long.parseLong(v.toString());
|
||||||
}
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -441,13 +449,17 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getTimeMillis(CharSequence name) {
|
public Long getTimeMillis(CharSequence name) {
|
||||||
CharSequence v = getUnconverted(name);
|
CharSequence v = getUnconverted(name);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
return HttpHeaderDateFormat.get().parse(v.toString());
|
return HttpHeaderDateFormat.get().parse(v.toString());
|
||||||
|
} catch (ParseException ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -529,17 +541,21 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getIntAndRemove(CharSequence name) {
|
public Integer getIntAndRemove(CharSequence name) {
|
||||||
CharSequence v = getUnconvertedAndRemove(name);
|
CharSequence v = getUnconvertedAndRemove(name);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
if (v instanceof AsciiString) {
|
if (v instanceof AsciiString) {
|
||||||
return ((AsciiString) v).parseInt();
|
return ((AsciiString) v).parseInt();
|
||||||
} else {
|
} else {
|
||||||
return Integer.parseInt(v.toString());
|
return Integer.parseInt(v.toString());
|
||||||
}
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -561,17 +577,21 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLongAndRemove(CharSequence name) {
|
public Long getLongAndRemove(CharSequence name) {
|
||||||
CharSequence v = getUnconvertedAndRemove(name);
|
CharSequence v = getUnconvertedAndRemove(name);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
if (v instanceof AsciiString) {
|
if (v instanceof AsciiString) {
|
||||||
return ((AsciiString) v).parseLong();
|
return ((AsciiString) v).parseLong();
|
||||||
} else {
|
} else {
|
||||||
return Long.parseLong(v.toString());
|
return Long.parseLong(v.toString());
|
||||||
}
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -593,13 +613,17 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getTimeMillisAndRemove(CharSequence name) {
|
public Long getTimeMillisAndRemove(CharSequence name) {
|
||||||
CharSequence v = getUnconvertedAndRemove(name);
|
CharSequence v = getUnconvertedAndRemove(name);
|
||||||
if (v == null) {
|
if (v == null) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
return HttpHeaderDateFormat.get().parse(v.toString());
|
return HttpHeaderDateFormat.get().parse(v.toString());
|
||||||
|
} catch (ParseException ignored) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1074,7 +1098,7 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
dateFormat3.setTimeZone(tz);
|
dateFormat3.setTimeZone(tz);
|
||||||
}
|
}
|
||||||
|
|
||||||
long parse(String text) {
|
long parse(String text) throws ParseException {
|
||||||
Date date = dateFormat1.parse(text, parsePos);
|
Date date = dateFormat1.parse(text, parsePos);
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
date = dateFormat2.parse(text, parsePos);
|
date = dateFormat2.parse(text, parsePos);
|
||||||
@ -1083,7 +1107,7 @@ public class DefaultTextHeaders implements TextHeaders {
|
|||||||
date = dateFormat3.parse(text, parsePos);
|
date = dateFormat3.parse(text, parsePos);
|
||||||
}
|
}
|
||||||
if (date == null) {
|
if (date == null) {
|
||||||
PlatformDependent.throwException(new ParseException(text, 0));
|
throw new ParseException(text, 0);
|
||||||
}
|
}
|
||||||
return date.getTime();
|
return date.getTime();
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ import java.util.Collections;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.NoSuchElementException;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class EmptyTextHeaders implements TextHeaders {
|
public class EmptyTextHeaders implements TextHeaders {
|
||||||
@ -38,8 +37,8 @@ public class EmptyTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInt(CharSequence name) {
|
public Integer getInt(CharSequence name) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -48,8 +47,8 @@ public class EmptyTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLong(CharSequence name) {
|
public Long getLong(CharSequence name) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -58,8 +57,8 @@ public class EmptyTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getTimeMillis(CharSequence name) {
|
public Long getTimeMillis(CharSequence name) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -78,8 +77,8 @@ public class EmptyTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getIntAndRemove(CharSequence name) {
|
public Integer getIntAndRemove(CharSequence name) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -88,8 +87,8 @@ public class EmptyTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLongAndRemove(CharSequence name) {
|
public Long getLongAndRemove(CharSequence name) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -98,8 +97,8 @@ public class EmptyTextHeaders implements TextHeaders {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getTimeMillisAndRemove(CharSequence name) {
|
public Long getTimeMillisAndRemove(CharSequence name) {
|
||||||
throw new NoSuchElementException(String.valueOf(name));
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -35,104 +35,165 @@ public interface TextHeaders extends Iterable<Map.Entry<String, String>> {
|
|||||||
* Returns the value of a header with the specified name. If there are
|
* Returns the value of a header with the specified name. If there are
|
||||||
* more than one values for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name the name of the header to search
|
||||||
* @return The first header value or {@code null} if there is no such header
|
* @return the first header value if the header is found.
|
||||||
|
* {@code null} if there's no such header.
|
||||||
*/
|
*/
|
||||||
String get(CharSequence name);
|
String get(CharSequence name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the value of a header with the specified name. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name the name of the header to search
|
||||||
|
* @param defaultValue the default value
|
||||||
|
* @return the first header value if the header is found.
|
||||||
|
* {@code defaultValue} if there's no such header.
|
||||||
|
*/
|
||||||
String get(CharSequence name, String defaultValue);
|
String get(CharSequence name, String defaultValue);
|
||||||
int getInt(CharSequence name);
|
|
||||||
int getInt(CharSequence name, int defaultValue);
|
|
||||||
long getLong(CharSequence name);
|
|
||||||
long getLong(CharSequence name, long defaultValue);
|
|
||||||
long getTimeMillis(CharSequence name);
|
|
||||||
long getTimeMillis(CharSequence name, long defaultValue);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the value of a header with the specified name. If there are
|
* Returns the integer value of a header with the specified name. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name the name of the header to search
|
||||||
|
* @return the first header value if the header is found and its value is an integer.
|
||||||
|
* {@code null} if there's no such header or its value is not an integer.
|
||||||
|
*/
|
||||||
|
Integer getInt(CharSequence name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the integer value of a header with the specified name. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name the name of the header to search
|
||||||
|
* @param defaultValue the default value
|
||||||
|
* @return the first header value if the header is found and its value is an integer.
|
||||||
|
* {@code defaultValue} if there's no such header or its value is not an integer.
|
||||||
|
*/
|
||||||
|
int getInt(CharSequence name, int defaultValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the long integer value of a header with the specified name. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name the name of the header to search
|
||||||
|
* @return the first header value if the header is found and its value is a long integer.
|
||||||
|
* {@code null} if there's no such header or its value is not a long integer.
|
||||||
|
*/
|
||||||
|
Long getLong(CharSequence name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the long integer value of a header with the specified name. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name the name of the header to search
|
||||||
|
* @param defaultValue the default value
|
||||||
|
* @return the first header value if the header is found and its value is a long integer.
|
||||||
|
* {@code defaultValue} if there's no such header or its value is not a long integer.
|
||||||
|
*/
|
||||||
|
long getLong(CharSequence name, long defaultValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the date value of a header with the specified name as milliseconds. If there are
|
||||||
* more than one values for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name The name of the header to search
|
||||||
* @return The first header value or {@code null} if there is no such header
|
* @return the first header value in milliseconds if the header is found and its value is a date.
|
||||||
|
* {@code null} if there's no such header or its value is not a date.
|
||||||
|
*/
|
||||||
|
Long getTimeMillis(CharSequence name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the date value of a header with the specified name as milliseconds. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name The name of the header to search
|
||||||
|
* @param defaultValue default value
|
||||||
|
* @return the first header value in milliseconds if the header is found and its value is a date.
|
||||||
|
* {@code defaultValue} if there's no such header or its value is not a date.
|
||||||
|
*/
|
||||||
|
long getTimeMillis(CharSequence name, long defaultValue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns and removes the value of a header with the specified name. If there are
|
||||||
|
* more than one values for the specified name, the first value is returned.
|
||||||
|
*
|
||||||
|
* @param name the name of the header to search
|
||||||
|
* @return the first header value or {@code null} if there is no such header
|
||||||
*/
|
*/
|
||||||
String getAndRemove(CharSequence name);
|
String getAndRemove(CharSequence name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the value of a header with the specified name. If there are
|
* Returns and removes the value of a header with the specified name. If there are
|
||||||
* more than one values for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name the name of the header to search
|
||||||
* @param defaultValue default value
|
* @param defaultValue the default value
|
||||||
* @return The first header value or {@code defaultValue} if there is no such header
|
* @return the first header value or {@code defaultValue} if there is no such header
|
||||||
*/
|
*/
|
||||||
String getAndRemove(CharSequence name, String defaultValue);
|
String getAndRemove(CharSequence name, String defaultValue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the integer value of a header with the specified name. If there are
|
* Returns and removes the integer value of a header with the specified name. If there are
|
||||||
* more than one values for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name the name of the header to search
|
||||||
* @return The first header value
|
* @return the first header value if the header is found and its value is an integer.
|
||||||
* @throws java.util.NoSuchElementException
|
* {@code null} if there's no such header or its value is not an integer.
|
||||||
* if no such header
|
|
||||||
* @throws NumberFormatException
|
|
||||||
* if the value of header is not number
|
|
||||||
*/
|
*/
|
||||||
int getIntAndRemove(CharSequence name);
|
Integer getIntAndRemove(CharSequence name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the integer value of a header with the specified name. If there are more than one values for
|
* Returns and removes the integer value of a header with the specified name. If there are more than one values for
|
||||||
* the specified name, the first value is returned.
|
* the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name the name of the header to search
|
||||||
* @param defaultValue default value
|
* @param defaultValue the default value
|
||||||
* @return The first header value or {@code defaultValue} if there is no such header or the value of header is not
|
* @return the first header value if the header is found and its value is an integer.
|
||||||
* number
|
* {@code defaultValue} if there is no such header or its value of header is not an integer.
|
||||||
*/
|
*/
|
||||||
int getIntAndRemove(CharSequence name, int defaultValue);
|
int getIntAndRemove(CharSequence name, int defaultValue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the long value of a header with the specified name. If there are
|
* Returns and removes the long value of a header with the specified name. If there are
|
||||||
* more than one values for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name the name of the header to search
|
||||||
* @return The first header value
|
* @return the first header value if the header is found and its value is an integer.
|
||||||
* @throws java.util.NoSuchElementException
|
* {@code null} if there's no such header or its value is not an integer.
|
||||||
* if no such header
|
|
||||||
* @throws NumberFormatException
|
|
||||||
* if the value of header is not number
|
|
||||||
*/
|
*/
|
||||||
long getLongAndRemove(CharSequence name);
|
Long getLongAndRemove(CharSequence name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the long value of a header with the specified name. If there are more than one values for
|
* Returns and removes the long value of a header with the specified name. If there are more than one values for
|
||||||
* the specified name, the first value is returned.
|
* the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name the name of the header to search
|
||||||
* @param defaultValue default value
|
* @param defaultValue the default value
|
||||||
* @return The first header value or {@code defaultValue} if there is no such header or the value of header is not
|
* @return the first header value if the header is found and its value is an integer.
|
||||||
* number
|
* {@code defaultValue} if there's no such header or its value is not an integer.
|
||||||
*/
|
*/
|
||||||
long getLongAndRemove(CharSequence name, long defaultValue);
|
long getLongAndRemove(CharSequence name, long defaultValue);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the millisecond value of a header with the specified name. If there are
|
* Returns and removes the date value of a header with the specified name as milliseconds. If there are
|
||||||
* more than one values for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name The name of the header to search
|
||||||
* @return The first header value
|
* @return the first header value in milliseconds if the header is found and its value is a date.
|
||||||
* @throws java.util.NoSuchElementException
|
* {@code null} if there's no such header or its value is not a date.
|
||||||
* if no such header
|
|
||||||
*/
|
*/
|
||||||
long getTimeMillisAndRemove(CharSequence name);
|
Long getTimeMillisAndRemove(CharSequence name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns and Removes the millisecond value of a header with the specified name. If there are more than one values
|
* Returns and removes the date value of a header with the specified name as milliseconds. If there are
|
||||||
* for the specified name, the first value is returned.
|
* more than one values for the specified name, the first value is returned.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search
|
* @param name The name of the header to search
|
||||||
* @param defaultValue default value
|
* @param defaultValue default value
|
||||||
* @return The first header value or {@code defaultValue} if there is no such header
|
* @return the first header value in milliseconds if the header is found and its value is a date.
|
||||||
|
* {@code defaultValue} if there's no such header or its value is not a date.
|
||||||
*/
|
*/
|
||||||
long getTimeMillisAndRemove(CharSequence name, long defaultValue);
|
long getTimeMillisAndRemove(CharSequence name, long defaultValue);
|
||||||
|
|
||||||
@ -201,17 +262,20 @@ public interface TextHeaders extends Iterable<Map.Entry<String, String>> {
|
|||||||
List<Entry<CharSequence, CharSequence>> unconvertedEntries();
|
List<Entry<CharSequence, CharSequence>> unconvertedEntries();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks to see if there is a header with the specified name
|
* Returns {@code true} if and only if this collection contains the header with the specified name.
|
||||||
*
|
*
|
||||||
* @param name The name of the header to search for
|
* @param name The name of the header to search for
|
||||||
* @return True if at least one header is found
|
* @return {@code true} if at least one header is found
|
||||||
*/
|
*/
|
||||||
boolean contains(CharSequence name);
|
boolean contains(CharSequence name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of header entries in this collection.
|
||||||
|
*/
|
||||||
int size();
|
int size();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if no header exists.
|
* Returns {@code true} if and only if this collection contains no header entries.
|
||||||
*/
|
*/
|
||||||
boolean isEmpty();
|
boolean isEmpty();
|
||||||
|
|
||||||
@ -237,8 +301,8 @@ public interface TextHeaders extends Iterable<Map.Entry<String, String>> {
|
|||||||
* of {@link java.util.Date} and {@link java.util.Calendar}, which are formatted to the date
|
* of {@link java.util.Date} and {@link java.util.Calendar}, which are formatted to the date
|
||||||
* format defined in <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1">RFC2616</a>.
|
* format defined in <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1">RFC2616</a>.
|
||||||
*
|
*
|
||||||
* @param name The name of the header being added
|
* @param name the name of the header being added
|
||||||
* @param value The value of the header being added
|
* @param value the value of the header being added
|
||||||
*
|
*
|
||||||
* @return {@code this}
|
* @return {@code this}
|
||||||
*/
|
*/
|
||||||
@ -257,12 +321,29 @@ public interface TextHeaders extends Iterable<Map.Entry<String, String>> {
|
|||||||
* }
|
* }
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param name The name of the headepublic abstract rs being set
|
* @param name the name of the headepublic abstract rs being set
|
||||||
* @param values The values of the headers being set
|
* @param values the values of the headers being set
|
||||||
* @return {@code this}
|
* @return {@code this}
|
||||||
*/
|
*/
|
||||||
TextHeaders add(CharSequence name, Iterable<?> values);
|
TextHeaders add(CharSequence name, Iterable<?> values);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a new header with the specified name and values.
|
||||||
|
*
|
||||||
|
* This getMethod can be represented approximately as the following code:
|
||||||
|
* <pre>
|
||||||
|
* for (Object v: values) {
|
||||||
|
* if (v == null) {
|
||||||
|
* break;
|
||||||
|
* }
|
||||||
|
* headers.add(name, v);
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param name the name of the headepublic abstract rs being set
|
||||||
|
* @param values the values of the headers being set
|
||||||
|
* @return {@code this}
|
||||||
|
*/
|
||||||
TextHeaders add(CharSequence name, Object... values);
|
TextHeaders add(CharSequence name, Object... values);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -302,12 +383,31 @@ public interface TextHeaders extends Iterable<Map.Entry<String, String>> {
|
|||||||
* }
|
* }
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param name The name of the headers being set
|
* @param name the name of the headers being set
|
||||||
* @param values The values of the headers being set
|
* @param values the values of the headers being set
|
||||||
* @return {@code this}
|
* @return {@code this}
|
||||||
*/
|
*/
|
||||||
TextHeaders set(CharSequence name, Iterable<?> values);
|
TextHeaders set(CharSequence name, Iterable<?> values);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a header with the specified name and values.
|
||||||
|
*
|
||||||
|
* If there is an existing header with the same name, it is removed.
|
||||||
|
* This getMethod can be represented approximately as the following code:
|
||||||
|
* <pre>
|
||||||
|
* headers.remove(name);
|
||||||
|
* for (Object v: values) {
|
||||||
|
* if (v == null) {
|
||||||
|
* break;
|
||||||
|
* }
|
||||||
|
* headers.add(name, v);
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
* @param name the name of the headers being set
|
||||||
|
* @param values the values of the headers being set
|
||||||
|
* @return {@code this}
|
||||||
|
*/
|
||||||
TextHeaders set(CharSequence name, Object... values);
|
TextHeaders set(CharSequence name, Object... values);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -336,11 +436,18 @@ public interface TextHeaders extends Iterable<Map.Entry<String, String>> {
|
|||||||
* Returns {@code true} if a header with the name and value exists.
|
* Returns {@code true} if a header with the name and value exists.
|
||||||
*
|
*
|
||||||
* @param name the header name
|
* @param name the header name
|
||||||
* @param value the value
|
* @param value the header value
|
||||||
* @return {@code true} if it contains it {@code false} otherwise
|
* @return {@code true} if it contains it {@code false} otherwise
|
||||||
*/
|
*/
|
||||||
boolean contains(CharSequence name, Object value);
|
boolean contains(CharSequence name, Object value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns {@code true} if a header with the name and value exists.
|
||||||
|
*
|
||||||
|
* @param name the header name
|
||||||
|
* @param value the header value
|
||||||
|
* @return {@code true} if it contains it {@code false} otherwise
|
||||||
|
*/
|
||||||
boolean contains(CharSequence name, Object value, boolean ignoreCase);
|
boolean contains(CharSequence name, Object value, boolean ignoreCase);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user