Author: sbrewin
Date: Sat Nov 26 10:25:07 2011
New Revision: 1206422
URL: http://svn.apache.org/viewvc?rev=1206422&view=rev
Log:
JAMES-1349 - XML Attributes on Mailet parameters cause initialization to fail
Modified:
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/MailetConfigImpl.java
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
Modified:
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/MailetConfigImpl.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/MailetConfigImpl.java?rev=1206422&r1=1206421&r2=1206422&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/MailetConfigImpl.java
(original)
+++
james/server/trunk/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/MailetConfigImpl.java
Sat Nov 26 10:25:07 2011
@@ -27,11 +27,15 @@ import org.apache.mailet.MailetContext;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.regex.Pattern;
/**
* Implements the configuration object for a Mailet.
*/
public class MailetConfigImpl implements MailetConfig {
+
+ // A Pattern used to locate attributes
+ private static final Pattern ATTRIBUTE_REGEX =
Pattern.compile(Pattern.quote("[@") + ".+" + Pattern.quote("]"));
/** The mailet MailetContext */
private MailetContext mailetContext;
@@ -65,8 +69,6 @@ public class MailetConfigImpl implements
}
/**
- * Returns an iterator over the set of configuration parameter names.
- *
* @return an iterator over the set of configuration parameter names.
*/
@SuppressWarnings("unchecked")
@@ -75,8 +77,10 @@ public class MailetConfigImpl implements
List<String> params = new ArrayList<String>();
while (it.hasNext()) {
String param = it.next();
- if ((param.startsWith("[@") && param.endsWith("]")) == false) {
-
+ // Remove all attributes
+ param = (ATTRIBUTE_REGEX.matcher(param).replaceAll("")).trim();
+ // Store each parameter name just once with a guard that we have
not reduced the parameter name to nothing
+ if (!params.contains(param) && !param.isEmpty()) {
params.add(param);
}
}
Modified:
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java?rev=1206422&r1=1206421&r2=1206422&view=diff
==============================================================================
---
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
(original)
+++
james/server/trunk/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
Sat Nov 26 10:25:07 2011
@@ -20,10 +20,16 @@
package org.apache.james.mailetcontainer.impl;
import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.mail.MessagingException;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.mailetcontainer.impl.MailetConfigImpl;
+import org.apache.mailet.Mail;
import junit.framework.TestCase;
@@ -64,5 +70,26 @@ public class MailetConfigImplTest extend
String param = config.getInitParameterNames().next();
assertEquals("whatever", param);
assertEquals("value1,value2", config.getInitParameter(param));
+ }
+
+ public void testParamWithXmlSpace() throws ConfigurationException {
+ DefaultConfigurationBuilder builder = new
DefaultConfigurationBuilder();
+ builder.setDelimiterParsingDisabled(true);
+ builder.load(new ByteArrayInputStream("<mailet><whatever
xml:space=\"preserve\"> some text </whatever></mailet>".getBytes()));
+
+ MailetConfigImpl config = new MailetConfigImpl();
+ config.setConfiguration(builder);
+
+ String param = config.getInitParameterNames().next();
+ assertEquals("whatever", param);
+ assertEquals(" some text ", config.getInitParameter(param));
+
+ List<String> parms = new ArrayList<String>();
+ Iterator<String> iter = config.getInitParameterNames();
+ while (iter.hasNext())
+ {
+ parms.add(iter.next());
+ }
+ assertEquals(parms.size(), 1);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]