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]

Reply via email to