From affdaf3c760f5f5f6929a0faf57e26d334042b20 Mon Sep 17 00:00:00 2001 From: mguessan Date: Mon, 10 Mar 2014 22:22:33 +0000 Subject: [PATCH] Fixes from audit git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2253 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/VProperty.java | 54 +++++++++++++----------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/src/java/davmail/exchange/VProperty.java b/src/java/davmail/exchange/VProperty.java index a0b5a5ad..42aca841 100644 --- a/src/java/davmail/exchange/VProperty.java +++ b/src/java/davmail/exchange/VProperty.java @@ -31,6 +31,7 @@ public class VProperty { } protected static final HashSet MULTIVALUED_PROPERTIES = new HashSet(); + static { MULTIVALUED_PROPERTIES.add("RESOURCES"); MULTIVALUED_PROPERTIES.add("LOCATION"); @@ -244,13 +245,13 @@ public class VProperty { /** * Set param value on property. * - * @param paramName param name + * @param paramName param name * @param paramValue param value */ public void setParam(String paramName, String paramValue) { Param currentParam = getParam(paramName); if (currentParam != null) { - getParams().remove(currentParam); + params.remove(currentParam); } addParam(paramName, paramValue); } @@ -258,7 +259,7 @@ public class VProperty { /** * Add param value on property. * - * @param paramName param name + * @param paramName param name * @param paramValue param value */ public void addParam(String paramName, String paramValue) { @@ -291,6 +292,11 @@ public class VProperty { return null; } + /** + * Return param value. + * @param paramName param name + * @return value + */ public String getParamValue(String paramName) { Param param = getParam(paramName); if (param != null) { @@ -386,10 +392,7 @@ public class VProperty { if (params != null) { for (Param param : params) { buffer.append(';').append(param.name); - if (param.values != null) { - buffer.append('='); - appendParamValues(buffer, param); - } + appendParamValues(buffer, param); } } buffer.append(':'); @@ -410,22 +413,25 @@ public class VProperty { } protected void appendParamValues(StringBuilder buffer, Param param) { - boolean first = true; - for (String value : param.values) { - if (first) { - first = false; - } else { - buffer.append(','); - } - // always quote CN param - if ("CN".equalsIgnoreCase(param.name) - // quote param values with special characters - || value.indexOf(';') >= 0 || value.indexOf(',') >= 0 - || value.indexOf('(') >= 0 || value.indexOf('/') >= 0 - || value.indexOf(':') >= 0) { - buffer.append('"').append(value).append('"'); - } else { - buffer.append(value); + if (param.values != null) { + buffer.append('='); + boolean first = true; + for (String value : param.values) { + if (first) { + first = false; + } else { + buffer.append(','); + } + // always quote CN param + if ("CN".equalsIgnoreCase(param.name) + // quote param values with special characters + || value.indexOf(';') >= 0 || value.indexOf(',') >= 0 + || value.indexOf('(') >= 0 || value.indexOf('/') >= 0 + || value.indexOf(':') >= 0) { + buffer.append('"').append(value).append('"'); + } else { + buffer.append(value); + } } } } @@ -441,7 +447,7 @@ public class VProperty { char c = value.charAt(i); if (c == '\n') { buffer.append("\\n"); - } else if (MULTIVALUED_PROPERTIES.contains(key) && c==',') { + } else if (MULTIVALUED_PROPERTIES.contains(key) && c == ',') { buffer.append('\\').append(','); } else { buffer.append(value.charAt(i));