You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by er...@apache.org on 2013/01/03 16:03:16 UTC
svn commit: r1428384 - in /james/mailbox/trunk:
maildir/src/main/java/org/apache/james/mailbox/maildir/
maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/
maildir/src/test/java/org/apache/james/mailbox/maildir/
spring/src/main/resources...
Author: eric
Date: Thu Jan 3 15:03:15 2013
New Revision: 1428384
URL: http://svn.apache.org/viewvc?rev=1428384&view=rev
Log:
Support lenian and strict file name parsing for maildir mailbox impl, patch contributed by Eike Kettner (MAILBOX-187)
Added:
james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MailderMessageNameTest.java
Modified:
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml
james/mailbox/trunk/spring/src/main/resources/mailbox-maildir.properties
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java?rev=1428384&r1=1428383&r2=1428384&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java Thu Jan 3 15:03:15 2013
@@ -72,6 +72,7 @@ public class MaildirFolder {
private int messageCount = 0;
private long uidValidity = -1;
private MailboxACL acl;
+ private boolean messageNameStrictParse = false;
private final MailboxPathLocker locker;
@@ -92,8 +93,36 @@ public class MaildirFolder {
this.locker = locker;
this.path = path;
}
-
+
+ private MaildirMessageName newMaildirMessageName(MaildirFolder folder, String fullName) {
+ MaildirMessageName mdn = new MaildirMessageName(folder, fullName);
+ mdn.setMessageNameStrictParse(isMessageNameStrictParse());
+ return mdn;
+ }
+
/**
+ * Returns whether the names of message files in this folder are parsed in
+ * a strict manner ({@code true}), which means a size field and flags are
+ * expected.
+ *
+ * @return
+ */
+ public boolean isMessageNameStrictParse() {
+ return messageNameStrictParse;
+ }
+
+ /**
+ * Specifies whether the names of message files in this folder are parsed in
+ * a strict manner ({@code true}), which means a size field and flags are
+ * expected.
+ *
+ * @param messageNameStrictParse
+ */
+ public void setMessageNameStrictParse(boolean messageNameStrictParse) {
+ this.messageNameStrictParse = messageNameStrictParse;
+ }
+
+ /**
* Returns the {@link File} of this Maildir folder.
* @return the root folder
*/
@@ -323,7 +352,7 @@ public class MaildirFolder {
}
if (line.substring(0, gap).equals(uidString)) {
- return new MaildirMessageName(MaildirFolder.this, line.substring(gap + 1));
+ return newMaildirMessageName(MaildirFolder.this, line.substring(gap + 1));
}
}
}
@@ -499,7 +528,7 @@ public class MaildirFolder {
String name = line.substring(gap + 1, line.length());
for (String recentFile : recentFiles) {
if (recentFile.equals(name)) {
- recentMessages.put(uid, new MaildirMessageName(MaildirFolder.this, recentFile));
+ recentMessages.put(uid, newMaildirMessageName(MaildirFolder.this, recentFile));
counter++;
break;
}
@@ -533,7 +562,7 @@ public class MaildirFolder {
messageCount = curFiles.length + newFiles.length;
String[] allFiles = (String[]) ArrayUtils.addAll(curFiles, newFiles);
for (String file : allFiles)
- uidMap.put(getNextUid(), new MaildirMessageName(MaildirFolder.this, file));
+ uidMap.put(getNextUid(), newMaildirMessageName(MaildirFolder.this, file));
//uidMap = new TreeMap<Long, MaildirMessageName>(uidMap);
pw = new PrintWriter(uidList);
pw.println(createUidListHeader());
@@ -580,7 +609,7 @@ public class MaildirFolder {
}
String[] allFiles = (String[]) ArrayUtils.addAll(curFiles, newFiles);
for (String file : allFiles) {
- MaildirMessageName messageName = new MaildirMessageName(MaildirFolder.this, file);
+ MaildirMessageName messageName = newMaildirMessageName(MaildirFolder.this, file);
Long uid = reverseUidMap.get(messageName.getBaseName());
if (uid == null)
uid = getNextUid();
@@ -630,7 +659,7 @@ public class MaildirFolder {
if (to != -1 && uid > to)
break;
String name = line.substring(gap + 1, line.length());
- uidMap.put(uid, new MaildirMessageName(MaildirFolder.this, name));
+ uidMap.put(uid, newMaildirMessageName(MaildirFolder.this, name));
}
}
}
@@ -859,7 +888,7 @@ public class MaildirFolder {
}
if (uid == Long.valueOf(line.substring(0, line.indexOf(" ")))) {
- deletedMessage = new MaildirMessageName(MaildirFolder.this, line.substring(gap + 1, line.length()));
+ deletedMessage = newMaildirMessageName(MaildirFolder.this, line.substring(gap + 1, line.length()));
messageCount--;
}
else {
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java?rev=1428384&r1=1428383&r2=1428384&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMessageName.java Thu Jan 3 15:03:15 2013
@@ -103,12 +103,21 @@ public class MaildirMessageName {
private Date internalDate;
private Long size;
private Flags flags;
+ private boolean messageNameStrictParse = false;
public MaildirMessageName(MaildirFolder parentFolder, String fullName) {
this.parentFolder = parentFolder;
setFullName(fullName);
}
+ public boolean isMessageNameStrictParse() {
+ return messageNameStrictParse;
+ }
+
+ public void setMessageNameStrictParse(boolean messageNameStrictParse) {
+ this.messageNameStrictParse = messageNameStrictParse;
+ }
+
/**
* Tests whether the file or directory belonging to this {@link MaildirFolder} exists.
* If the file exists, its absolute path is written to absPath.
@@ -241,16 +250,37 @@ public class MaildirMessageName {
* into its components hostname, size and flags and fills the respective variables.
*/
private void splitHostNameAndMeta() {
- int firstEnd = hostnameAndMeta.indexOf(',');
- int secondEnd = hostnameAndMeta.indexOf(':', firstEnd + 1);
- hostname = hostnameAndMeta.substring(0, firstEnd);
- // there are flags
- if (secondEnd != -1) {
- sizeString = hostnameAndMeta.substring(firstEnd, secondEnd);
- flagsString = hostnameAndMeta.substring(secondEnd, hostnameAndMeta.length());
+ String[] hostnamemetaFlags = hostnameAndMeta.split(":", 2);
+ if (hostnamemetaFlags.length >= 1) {
+ this.hostnameAndMeta = hostnamemetaFlags[0];
+ int firstEnd = hostnameAndMeta.indexOf(',');
+
+ // read size field if existent
+ if (firstEnd > 0) {
+ hostname = hostnameAndMeta.substring(0, firstEnd);
+ String attrStr = hostnameAndMeta.substring(firstEnd);
+ String[] fields = attrStr.split(",");
+ for (String field : fields) {
+ if (field.startsWith("S=")) {
+ sizeString = "," + field;
+ }
+ }
+ } else {
+ sizeString = null;
+ hostname = this.hostnameAndMeta;
+ }
}
- else {
- sizeString = hostnameAndMeta.substring(firstEnd, hostnameAndMeta.length());
+
+ if (hostnamemetaFlags.length >= 2) {
+ this.flagsString = ":" + hostnamemetaFlags[1];
+ }
+ if (isMessageNameStrictParse()) {
+ if (sizeString == null) {
+ throw new IllegalArgumentException("No message size found in message name: "+ fullName);
+ }
+ if (flagsString == null) {
+ throw new IllegalArgumentException("No flags found in message name: "+ fullName);
+ }
}
}
@@ -276,7 +306,8 @@ public class MaildirMessageName {
split();
if (flagsString == null)
return null;
- flags = decodeFlags(flagsString.substring(3)); // skip the ":2," part
+ if (flagsString.length() >= 3)
+ flags = decodeFlags(flagsString.substring(3)); // skip the ":2," part
}
return flags;
}
@@ -290,6 +321,8 @@ public class MaildirMessageName {
split();
if (sizeString == null)
return null;
+ if (!sizeString.startsWith(",S="))
+ return null;
size = Long.valueOf(sizeString.substring(3)); // skip the ",S=" part
}
return size;
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java?rev=1428384&r1=1428383&r2=1428384&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java Thu Jan 3 15:03:15 2013
@@ -33,7 +33,6 @@ import org.apache.james.mailbox.store.JV
import org.apache.james.mailbox.store.mail.ModSeqProvider;
import org.apache.james.mailbox.store.mail.UidProvider;
import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
public class MaildirStore implements UidProvider<Integer>, ModSeqProvider<Integer>{
@@ -48,7 +47,9 @@ public class MaildirStore implements Uid
private File maildirRootFile;
private final MailboxPathLocker locker;
-
+
+ private boolean messageNameStrictParse = false;
+
/**
* Construct a MaildirStore with a location. The location String
* currently may contain the
@@ -78,7 +79,9 @@ public class MaildirStore implements Uid
* @return The MaildirFolder
*/
public MaildirFolder createMaildirFolder(Mailbox<Integer> mailbox) {
- return new MaildirFolder(getFolderName(mailbox), new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), locker);
+ MaildirFolder mf = new MaildirFolder(getFolderName(mailbox), new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), locker);
+ mf.setMessageNameStrictParse(isMessageNameStrictParse());
+ return mf;
}
/**
@@ -105,7 +108,7 @@ public class MaildirStore implements Uid
public Mailbox<Integer> loadMailbox(MailboxSession session, MailboxPath mailboxPath)
throws MailboxNotFoundException, MailboxException {
MaildirFolder folder = new MaildirFolder(getFolderName(mailboxPath), mailboxPath, locker);
-
+ folder.setMessageNameStrictParse(isMessageNameStrictParse());
if (!folder.exists())
throw new MailboxNotFoundException(mailboxPath);
return loadMailbox(session, folder.getRootFile(), mailboxPath);
@@ -120,6 +123,7 @@ public class MaildirStore implements Uid
*/
private Mailbox<Integer> loadMailbox(MailboxSession session, File mailboxFile, MailboxPath mailboxPath) throws MailboxException {
MaildirFolder folder = new MaildirFolder(mailboxFile.getAbsolutePath(), mailboxPath, locker);
+ folder.setMessageNameStrictParse(isMessageNameStrictParse());
try {
return new MaildirMailbox<Integer>(session, mailboxPath, folder);
} catch (IOException e) {
@@ -261,4 +265,27 @@ public class MaildirStore implements Uid
public long lastUid(MailboxSession session, Mailbox<Integer> mailbox) throws MailboxException {
return createMaildirFolder(mailbox).getLastUid(session);
}
+
+ /**
+ * Returns whether the names of message files in this store are parsed in
+ * a strict manner ({@code true}), which means a size field and flags are
+ * expected.
+ * @return
+ */
+ public boolean isMessageNameStrictParse() {
+ return messageNameStrictParse;
+ }
+
+ /**
+ * Specifies whether the names of message files in this store are parsed in
+ * a strict manner ({@code true}), which means a size field and flags are
+ * expected.
+ *
+ * Default is {@code false}.
+ *
+ * @param messageNameStrictParse
+ */
+ public void setMessageNameStrictParse(boolean messageNameStrictParse) {
+ this.messageNameStrictParse = messageNameStrictParse;
+ }
}
Modified: james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java?rev=1428384&r1=1428383&r2=1428384&view=diff
==============================================================================
--- james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java (original)
+++ james/mailbox/trunk/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java Thu Jan 3 15:03:15 2013
@@ -18,18 +18,6 @@
****************************************************************/
package org.apache.james.mailbox.maildir.mail.model;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PushbackInputStream;
-import java.util.Date;
-import java.util.List;
-
-import javax.mail.Flags;
-import javax.mail.util.SharedFileInputStream;
-
import org.apache.commons.io.IOUtils;
import org.apache.james.mailbox.maildir.MaildirFolder;
import org.apache.james.mailbox.maildir.MaildirMessageName;
@@ -47,6 +35,12 @@ import org.apache.james.mime4j.stream.Mi
import org.apache.james.mime4j.stream.MimeTokenStream;
import org.apache.james.mime4j.stream.RecursionMode;
+import javax.mail.Flags;
+import javax.mail.util.SharedFileInputStream;
+import java.io.*;
+import java.util.Date;
+import java.util.List;
+
public class MaildirMessage extends AbstractMessage<Integer> {
private MaildirMessageName messageName;
@@ -78,6 +72,8 @@ public class MaildirMessage extends Abst
} else {
// if the message resist in the new folder its RECENT
if (file.getParentFile().getName().equals(MaildirFolder.NEW)) {
+ if (flags == null)
+ flags = new Flags();
flags.add(Flags.Flag.RECENT);
}
}
@@ -378,7 +374,16 @@ public class MaildirMessage extends Abst
*/
@Override
public long getFullContentOctets() {
- return messageName.getSize();
+ Long size = messageName.getSize();
+ if (size != null) {
+ return size;
+ } else {
+ try {
+ return messageName.getFile().length();
+ } catch (FileNotFoundException e) {
+ return -1;
+ }
+ }
}
/**
Added: james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MailderMessageNameTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MailderMessageNameTest.java?rev=1428384&view=auto
==============================================================================
--- james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MailderMessageNameTest.java (added)
+++ james/mailbox/trunk/maildir/src/test/java/org/apache/james/mailbox/maildir/MailderMessageNameTest.java Thu Jan 3 15:03:15 2013
@@ -0,0 +1,235 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.mailbox.maildir;
+
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertNull;
+import static junit.framework.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.mail.Flags;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(value = Parameterized.class)
+public class MailderMessageNameTest {
+
+ private String invalidName;
+ private String validName;
+ private Parts parts;
+
+ public MailderMessageNameTest(String invalidName, Parts parts) {
+ this.invalidName = invalidName;
+ this.validName = parts.fullName;
+ this.parts = parts;
+ }
+
+ @Parameterized.Parameters
+ public static List<Object[]> testData() {
+ List<Object[]> args = new ArrayList<Object[]>();
+ // no size, two flags
+ Parts parts = Parts.fullName("1328026049.19146_0.km1111:2,RS").timeSeconds(1328026049)
+ .baseName("1328026049.19146_0.km1111").flagAnswered().flagSeen();
+ args.add(valid(parts));
+
+ // size and flag
+ parts = Parts.fullName("1328613172.M569643P1862V0000000000000902I00EE42CE_0.km1111,S=13103:2,S")
+ .timeSeconds(1328613172).size(13103L)
+ .baseName("1328613172.M569643P1862V0000000000000902I00EE42CE_0.km1111").flagSeen();
+ args.add(valid(parts));
+
+ // size, no flags
+ parts = Parts.fullName("1340124194.M723289P3184V0000000000000902I006780E9_6.km1111,S=1344:2,")
+ .baseName("1340124194.M723289P3184V0000000000000902I006780E9_6.km1111").timeSeconds(1340124194)
+ .size(1344L);
+ args.add(valid(parts));
+
+ // three flags, no size
+ parts = Parts.fullName("1106685752.12132_0.km1111:2,FRS").baseName("1106685752.12132_0.km1111")
+ .timeSeconds(1106685752).flagFlagged().flagAnswered().flagSeen();
+ args.add(valid(parts));
+
+ // with dovecot attributes
+ parts = Parts.fullName("1035478339.27041_118.foo.org,S=1000,W=1030:2,S")
+ .baseName("1035478339.27041_118.foo.org").timeSeconds(1035478339).size(1000L).flagSeen();
+ args.add(valid(parts));
+
+ parts = parts.copy();
+ parts.fullName = "1035478339.27041_118.foo.org,W=1030,S=1000:2,S";
+ args.add(valid(parts));
+
+ // new mail, no info part at all. found in courier maildirs
+ parts = Parts.fullName("1355543030.15049_0.foo.org").baseName("1355543030.15049_0.foo.org")
+ .timeSeconds(1355543030).noFlags();
+ args.add(valid(parts));
+
+ // new mail, generated by james
+ parts = Parts.fullName("1356001301.e563087e30181513.foohost,S=629:2,")
+ .baseName("1356001301.e563087e30181513.foohost").timeSeconds(1356001301).size(629L);
+ args.add(valid(parts));
+
+ parts = Parts.fullName("1355675588.5c7e107958851103.foohost,S=654:2,S").timeSeconds(1355675588)
+ .baseName("1355675588.5c7e107958851103.foohost").size(654L).flagSeen();
+ args.add(valid(parts));
+
+ parts = Parts.fullName("1355675651.f3dd564265174501.foohost,S=661:2,")
+ .baseName("1355675651.f3dd564265174501.foohost").timeSeconds(1355675651).size(661L);
+ args.add(valid(parts));
+
+ return args;
+ }
+
+ private static Object[] valid(Parts parts) {
+ return invalidAndValid(null, parts);
+ }
+
+ private static Object[] invalid(String invalidName) {
+ return invalidAndValid(invalidName, null);
+ }
+
+ private static Object[] invalidAndValid(String invalidName, Parts validName) {
+ return new Object[] { invalidName, validName };
+ }
+
+ @Test
+ public void testParsing() throws Exception {
+ if (validName != null) {
+ try {
+ parseValidName(validName, parts);
+ } catch (Throwable e) {
+ throw new Exception("Valid name '" + validName + "' failed.", e);
+ }
+ }
+ if (invalidName != null) {
+ try {
+ parseInvalidName(invalidName);
+ fail("No error reported for invalid name: " + invalidName);
+ } catch (Exception e) {
+ // test successful
+ }
+ }
+ }
+
+ private void parseValidName(String name, Parts parts) throws Exception {
+ MaildirMessageName mn = new MaildirMessageName(null, name);
+ mn.setMessageNameStrictParse(false);
+ if (parts.time == null) {
+ assertNull("date", mn.getInternalDate());
+ } else {
+ assertEquals("date", mn.getInternalDate().getTime(), parts.time.longValue());
+ }
+ assertEquals("fullName", parts.fullName, mn.getFullName());
+ assertEquals("flags", parts.flags, mn.getFlags());
+ assertEquals("size", parts.size, mn.getSize());
+ assertEquals("baseName", parts.baseName, mn.getBaseName());
+ }
+
+ private void parseInvalidName(String name) throws Exception {
+ }
+
+ static class Parts {
+ public Long time;
+ public String fullName;
+ public String baseName;
+ public Long size;
+ public Flags flags = new Flags();
+
+ private Parts(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public static Parts fullName(String fullName) {
+ return new Parts(fullName);
+ }
+
+ public Parts noFlags() {
+ this.flags = null;
+ return this;
+ }
+
+ public Parts flagSeen() {
+ this.flags.add(Flags.Flag.SEEN);
+ return this;
+ }
+
+ public Parts flagRecent() {
+ this.flags.add(Flags.Flag.RECENT);
+ return this;
+ }
+
+ public Parts flagAnswered() {
+ this.flags.add(Flags.Flag.ANSWERED);
+ return this;
+ }
+
+ public Parts flagFlagged() {
+ this.flags.add(Flags.Flag.FLAGGED);
+ return this;
+ }
+
+ public Parts flagDeleted() {
+ this.flags.add(Flags.Flag.DELETED);
+ return this;
+ }
+
+ public Parts flagDraft() {
+ this.flags.add(Flags.Flag.DRAFT);
+ return this;
+ }
+
+ public Parts baseName(String baseName) {
+ this.baseName = baseName;
+ return this;
+ }
+
+ public Parts size(Long size) {
+ this.size = size;
+ return this;
+ }
+
+ public Parts timeSeconds(Long time) {
+ if (time != null) {
+ this.time = time * 1000;
+ } else {
+ this.time = null;
+ }
+ return this;
+ }
+
+ public Parts timeMillis(Long time) {
+ this.time = time;
+ return this;
+ }
+
+ public Parts timeSeconds(Integer time) {
+ return timeSeconds(time != null ? time.longValue() : null);
+ }
+
+ public Parts copy() {
+ Parts p = Parts.fullName(fullName).baseName(baseName).size(size).timeMillis(time);
+ p.flags = (Flags) this.flags.clone();
+ return p;
+ }
+ }
+
+}
Modified: james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml?rev=1428384&r1=1428383&r2=1428384&view=diff
==============================================================================
--- james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml (original)
+++ james/mailbox/trunk/spring/src/main/resources/META-INF/org/apache/james/spring-mailbox-maildir.xml Thu Jan 3 15:03:15 2013
@@ -49,6 +49,7 @@
</bean>
<bean id="maildirStore" class="org.apache.james.mailbox.maildir.MaildirStore">
<constructor-arg index="0" value="${maildir.folder}"/>
+ <property name="messageNameStrictParse" value="${maildir.messageNameParser.strictMode}"/>
</bean>
<alias name="jvm-locker" alias="maildir-locker"/>
Modified: james/mailbox/trunk/spring/src/main/resources/mailbox-maildir.properties
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/spring/src/main/resources/mailbox-maildir.properties?rev=1428384&r1=1428383&r2=1428384&view=diff
==============================================================================
--- james/mailbox/trunk/spring/src/main/resources/mailbox-maildir.properties (original)
+++ james/mailbox/trunk/spring/src/main/resources/mailbox-maildir.properties Thu Jan 3 15:03:15 2013
@@ -17,3 +17,4 @@
#
maildir.folder=../var/store/maildir/%domain/%user
+maildir.messageNameParser.strictMode=false
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org