Added uitilty method to MapUtils for appending and encoding parameters

This commit is contained in:
Pablo Fernandez committed 2011-03-13 10:21:42 -03:00
1 parent 22367de553
commit 16b3475926
3 files changed
+21 -4

No files matched your search

@@ -32,11 +32,11 @@ public class BaseStringExtractorImpl implements BaseStringExtractor
private String getSortedAndEncodedParams(OAuthRequest request)
{
Map<String, String> params = new HashMap<String, String>();
params.putAll(request.getQueryStringParams());
params.putAll(request.getBodyParams());
params.putAll(request.getOauthParameters());
MapUtils.decodeAndAppendEntries(request.getQueryStringParams(), params);
MapUtils.decodeAndAppendEntries(request.getBodyParams(), params);
MapUtils.decodeAndAppendEntries(request.getOauthParameters(), params);
params = MapUtils.sort(params);
return URLUtils.percentEncode(URLUtils.formURLEncodeMap(params));
return URLUtils.percentEncode(URLUtils.concatSortedPercentEncodedParams(params));
}
private void checkPreconditions(OAuthRequest request)
@@ -33,4 +33,19 @@ public class MapUtils
Collections.sort(keys);
return keys;
}
/**
* Form-urlDecodes and appends all keys from the source {@link Map} to the
* target {@link Map}
*
* @param source Map from where the keys get copied and decoded
* @param target Map where the decoded keys are copied to
*/
public static void decodeAndAppendEntries(Map<String, String> source, Map<String, String> target)
{
for (String key: source.keySet())
{
target.put(URLUtils.percentEncode(key), URLUtils.percentEncode(source.get(key)));
}
}
}
@@ -139,6 +139,7 @@ public class URLUtils
* @param params key-value map
* @return querystring-like String
*/
// TODO Move to MapUtils
public static String concatSortedPercentEncodedParams(Map<String, String> params)
{
StringBuilder result = new StringBuilder();
@@ -156,6 +157,7 @@ public class URLUtils
* @param queryString querystring-like String
* @return a map with the form-urldecoded parameters
*/
// TODO Move to MapUtils
public static Map<String, String> queryStringToMap(String queryString)
{
Map<String, String> result = new HashMap<String, String>();