INT-1662 closed a few gaps in functionality (handing arrays of certain types, comma-delimited Strings, etc)

This commit is contained in:
Mark Fisher
2010-12-10 10:06:20 -05:00
parent dddeabd717
commit 9aaf6beed5
3 changed files with 70 additions and 18 deletions

View File

@@ -346,11 +346,29 @@ public class DefaultHttpHeaderMapper implements HeaderMapper<HttpHeaders> {
target.setAcceptCharset(acceptableCharsets);
}
}
else if (value instanceof Charset[] || value instanceof String[]) {
List<Charset> acceptableCharsets = new ArrayList<Charset>();
Object[] values = ObjectUtils.toObjectArray(value);
for (Object charset : values) {
if (charset instanceof Charset) {
acceptableCharsets.add((Charset) charset);
}
else if (charset instanceof String) {
acceptableCharsets.add(Charset.forName((String) charset));
}
}
target.setAcceptCharset(acceptableCharsets);
}
else if (value instanceof Charset) {
target.setAcceptCharset(Collections.singletonList((Charset) value));
}
else if (value instanceof String) {
target.setAcceptCharset(Collections.singletonList(Charset.forName((String) value)));
String[] charsets = StringUtils.commaDelimitedListToStringArray((String) value);
List<Charset> acceptableCharsets = new ArrayList<Charset>();
for (String charset : charsets) {
acceptableCharsets.add(Charset.forName(charset.trim()));
}
target.setAcceptCharset(acceptableCharsets);
}
else {
Class<?> clazz = (value != null) ? value.getClass() : null;
@@ -383,6 +401,13 @@ public class DefaultHttpHeaderMapper implements HeaderMapper<HttpHeaders> {
if (value instanceof HttpMethod) {
target.setAllow(Collections.singleton((HttpMethod) value));
}
else if (value instanceof HttpMethod[]) {
Set<HttpMethod> allowedMethods = new HashSet<HttpMethod>();
for (HttpMethod next : (HttpMethod[]) value) {
allowedMethods.add(next);
}
target.setAllow(allowedMethods);
}
else if (value instanceof String || value instanceof String[]) {
String[] values = (value instanceof String[]) ? (String[]) value
: StringUtils.commaDelimitedListToStringArray((String) value);
@@ -497,6 +522,10 @@ public class DefaultHttpHeaderMapper implements HeaderMapper<HttpHeaders> {
if (value instanceof String) {
target.setIfNoneMatch((String) value);
}
else if (value instanceof String[]) {
String delmitedString = StringUtils.arrayToCommaDelimitedString((String[]) value);
target.setIfNoneMatch(delmitedString);
}
else if (value instanceof Collection) {
Collection<?> values = (Collection<?>) value;
if (!CollectionUtils.isEmpty(values)) {