Improved string concatenation algorithm

This commit is contained in:
Pablo Fernandez committed 2010-09-17 23:09:28 -03:00
1 parent 608f56d59f
commit 8c8f26e134
2 files changed
+17 -22

No files matched your search

@@ -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<String, String> 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);
}
}
+9 -9
View File
@@ -24,17 +24,16 @@ public class URLUtils
private static String doFormUrlEncode(Map<String, String> 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);
}