NIHVIVO-1994 Fix passing of null values in url params on delete links, causing NullPointerException

This commit is contained in:
rjy7 2011-02-02 17:39:10 +00:00
parent ee0c1dd5bb
commit 991c24a74c
2 changed files with 19 additions and 8 deletions

View file

@ -240,7 +240,15 @@ public class UrlBuilder {
private static String addParams(String url, ParamMap params, String glue) { private static String addParams(String url, ParamMap params, String glue) {
for (String key: params.keySet()) { for (String key: params.keySet()) {
url += glue + key + "=" + urlEncode(params.get(key)); String value = params.get(key);
// rjy7 Some users might require nulls to be converted to empty
// string, others to eliminate params with null values.
// Here we convert to empty string to prevent an exception
// from UrlEncoder.encode() when passed a null. Callers are advised
// to remove null values or convert to empty strings, whichever
// is desired in the particular instance.
value = (value == null) ? "" : urlEncode(value);
url += glue + key + "=" + value;
glue = "&"; glue = "&";
} }
return url; return url;
@ -292,24 +300,24 @@ public class UrlBuilder {
return profileUrl; return profileUrl;
} }
public static String urlEncode(String url) { public static String urlEncode(String str) {
String encoding = "ISO-8859-1"; String encoding = "ISO-8859-1";
String encodedUrl = null; String encodedUrl = null;
try { try {
encodedUrl = URLEncoder.encode(url, encoding); encodedUrl = URLEncoder.encode(str, encoding);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
log.error("Error encoding url " + url + " with encoding " + encoding + ": Unsupported encoding."); log.error("Error encoding url " + str + " with encoding " + encoding + ": Unsupported encoding.");
} }
return encodedUrl; return encodedUrl;
} }
public static String urlDecode(String url) { public static String urlDecode(String str) {
String encoding = "ISO-8859-1"; String encoding = "ISO-8859-1";
String decodedUrl = null; String decodedUrl = null;
try { try {
decodedUrl = URLDecoder.decode(url, encoding); decodedUrl = URLDecoder.decode(str, encoding);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
log.error("Error decoding url " + url + " with encoding " + encoding + ": Unsupported encoding."); log.error("Error decoding url " + str + " with encoding " + encoding + ": Unsupported encoding.");
} }
return decodedUrl; return decodedUrl;
} }

View file

@ -111,7 +111,10 @@ public class ObjectPropertyStatementTemplateModel extends PropertyStatementTempl
"objectUri", objectUri, "objectUri", objectUri,
"cmd", "delete"); "cmd", "delete");
for ( String key : data.keySet() ) { for ( String key : data.keySet() ) {
params.put("statement_" + key, data.get(key)); String value = data.get(key);
if (value != null) {
params.put("statement_" + key, data.get(key));
}
} }
params.put("templateName", templateName); params.put("templateName", templateName);