diff --git a/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java b/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java index a567711..4449f2f 100644 --- a/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java +++ b/src/main/java/org/scribe/extractors/HeaderExtractorImpl.java @@ -8,20 +8,24 @@ import org.scribe.utils.*; public class HeaderExtractorImpl implements HeaderExtractor { - + private static final String PARAM_SEPARATOR = ", "; private static final String PREAMBLE = "OAuth "; public String extract(OAuthRequest request) { checkPreconditions(request); Map parameters = request.getOauthParameters(); - StringBuffer header = new StringBuffer(); + StringBuffer header = new StringBuffer(parameters.size() * 20); header.append(PREAMBLE); for (String key : parameters.keySet()) { - addToHeader(header, key, parameters.get(key)); + if(header.length() > PREAMBLE.length()) + { + header.append(PARAM_SEPARATOR); + } + header.append(String.format("%s=\"%s\"", key, URLUtils.percentEncode(parameters.get(key)))); } - return removeTrail(header); + return header.toString(); } private void checkPreconditions(OAuthRequest request) @@ -34,13 +38,4 @@ public class HeaderExtractorImpl implements HeaderExtractor } } - private void addToHeader(StringBuffer header, String name, String value) - { - header.append(String.format("%s=\"%s\", ", name, URLUtils.percentEncode(value))); - } - - private String removeTrail(StringBuffer header) - { - return header.toString().substring(0, header.length() - 2); - } } diff --git a/src/main/java/org/scribe/utils/URLUtils.java b/src/main/java/org/scribe/utils/URLUtils.java index 7b58b0a..2603094 100644 --- a/src/main/java/org/scribe/utils/URLUtils.java +++ b/src/main/java/org/scribe/utils/URLUtils.java @@ -24,17 +24,16 @@ public class URLUtils private static String doFormUrlEncode(Map map) { - StringBuffer encodedString = new StringBuffer(); + StringBuffer encodedString = new StringBuffer(map.size() * 20); for (String key : map.keySet()) { - encodedString.append(percentEncode(key)).append(PAIR_SEPARATOR).append(percentEncode(map.get(key))).append(PARAM_SEPARATOR); + if(encodedString.length() > 0) + { + encodedString.append(PARAM_SEPARATOR); + } + encodedString.append(percentEncode(key)).append(PAIR_SEPARATOR).append(percentEncode(map.get(key))); } - return removeTrailingSeparator(encodedString); - } - - private static String removeTrailingSeparator(StringBuffer buffer) - { - return buffer.toString().substring(0, buffer.length() - 1); + return encodedString.toString(); } public static String percentEncode(String string) @@ -43,7 +42,8 @@ public class URLUtils try { return URLEncoder.encode(string, UTF_8); - } catch (UnsupportedEncodingException uee) + } + catch (UnsupportedEncodingException uee) { throw new OAuthException(ERROR_MSG, uee); }