Author: norman
Date: Tue Apr 26 08:11:16 2011
New Revision: 1096693
URL: http://svn.apache.org/viewvc?rev=1096693&view=rev
Log:
Fix truncated Mailet initialization parameters which happens if the value
contains a comma. See JAMES-1232
Modified:
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetConfigImpl.java
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/MailetConfigImplTest.java
Modified:
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetConfigImpl.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetConfigImpl.java?rev=1096693&r1=1096692&r2=1096693&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetConfigImpl.java
(original)
+++
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/MailetConfigImpl.java
Tue Apr 26 08:11:16 2011
@@ -123,17 +123,29 @@ public class MailetConfigImpl implements
@SuppressWarnings("unchecked")
public void setConfiguration(Configuration newConfiguration) {
DefaultConfigurationBuilder builder = new
DefaultConfigurationBuilder();
+
+ // Disable the delimiter parsing. See JAMES-1232
+ builder.setDelimiterParsingDisabled(true);
Iterator<String> keys = newConfiguration.getKeys();
while (keys.hasNext()) {
String key = keys.next();
- String value = newConfiguration.getString(key);
+ String[] values = newConfiguration.getStringArray(key);
// See JAMES-1177
// Need to replace ".." with "."
// See
//
http://commons.apache.org/configuration/userguide-1.2/howto_xml.html
// Escaping dot characters in XML tags
key = key.replaceAll("\\.\\.", "\\.");
- builder.addProperty(key, value);
+
+ // Convert array values to a "," delimited string value
+ StringBuilder valueBuilder = new StringBuilder();
+ for (int i = 0; i < values.length; i++) {
+ valueBuilder.append(values[i]);
+ if (i + 1 < values.length) {
+ valueBuilder.append(",");
+ }
+ }
+ builder.addProperty(key, valueBuilder.toString());
}
configuration = builder;
Modified:
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/MailetConfigImplTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/MailetConfigImplTest.java?rev=1096693&r1=1096692&r2=1096693&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/MailetConfigImplTest.java
(original)
+++
james/server/trunk/mailetcontainer-library/src/test/java/org/apache/james/mailetcontainer/lib/MailetConfigImplTest.java
Tue Apr 26 08:11:16 2011
@@ -51,4 +51,17 @@ public class MailetConfigImplTest extend
assertEquals("mail.debug", param);
assertEquals("true", config.getInitParameter(param));
}
+
+ // See JAMES-1232
+ public void testParamWithComma() throws ConfigurationException {
+ DefaultConfigurationBuilder builder = new
DefaultConfigurationBuilder();
+ builder.load(new
ByteArrayInputStream("<mailet><whatever>value1,value2</whatever></mailet>".getBytes()));
+
+ MailetConfigImpl config = new MailetConfigImpl();
+ config.setConfiguration(builder);
+
+ String param = config.getInitParameterNames().next();
+ assertEquals("whatever", param);
+ assertEquals("value1,value2", config.getInitParameter(param));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]