NIHVIVO-1994 Fix passing of null values in url params on delete links, causing NullPointerException
This commit is contained in:
parent
ee0c1dd5bb
commit
991c24a74c
2 changed files with 19 additions and 8 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue